ติดตั้ง Steam ใน Linux แล้ว ติดตั้งเกมจาก library แล้ว เล่นต่อ เปิดเกมโปรด เปิดสปีกเกอร์หรือหูฟัง แล้วเร่งปิดเสียงเพราะเสียงแตกรบกวน นี่คือประสบการณ์ของคุณกับเกม Steam สำหรับ Windows รันบน Linux ไหม?
ต้นทางปัญหาคือพารามิเตอร์ที่ตั้งค่าผิดใน Pulseaudio และอาจเกิดใน Linux distributions ใดๆ โชคดีที่มีวิธีแก้ง่าย อ่านต่อเพื่อดูวิธีแก้ไขปัญหาเสียงแตกในเกม Steam บน Linux ด้วยการปรับแต่งง่ายๆ
ปรับแต่ง PulseAudio Daemon
วิธีแก้เป็น 2 ส่วน พร้อม troubleshooting บ้างเพื่อดีกว่า เริ่มจากปรับ daemon ของ PulseAudio
เปิดเทอร์มินัล และพิมพ์:
sudo nano /etc/pulse/daemon.conf
ค้นหาพารามิเตอร์ "default-fragments" และ "default-fragment-size-msec" ทั้งคู่ควรมีอยู่แล้ว ถ้าไม่มี เพิ่มเองได้ ตั้งค่าเป็น 2 และ 4 ตามลำดับ ควรเป็นแบบนี้:
default-fragments = 2 default-fragment-size-msec = 4
เซฟไฟล์ที่อัปเดต และรีสตาร์ท PulseAudio 套用การเปลี่ยนแปลง:
pulseaudio -k
จบส่วนแรก ส่วนต่อไปง่ายกว่านี้!
ปรับแต่ง Sound Server
เปิด text editor อีกครั้ง แตครั้งนี้แก้ไขไฟล์ที่กำหนดว่า PulseAudio sound server ควรเริ่มอย่างไร:
sudo nano /etc/pulse/default.pa
หาส่วนที่บอก PulseAudio โหลด driver modules ด้วย udev จะเป็นแบบนี้:
### Automatically load driver modules depending on the hardware available .ifexists module-udev-detect.so load-module module-udev-detect .else ### Use the static hardware detection module (for systems that lack udev support) load-module module-detect .endif
อัปเดตโดยเพิ่ม tsched=0 ท้าย "load-module module-udev-detect" ให้อ่านเป็น:
### Automatically load driver modules depending on the hardware available .ifexists module-udev-detect.so load-module module-udev-detect tsched=0 .else ### Use the static hardware detection module (for systems that lack udev support) load-module module-detect .endif
เซฟการเปลี่ยนแปลง และรีสตาร์ท PulseAudio อีกครั้ง:
pulseaudio -k
เสร็จแล้ว - หวังว่าปัญหาจะหาย
Troubleshoot
ถ้าการปรับข้างต้นปรับปรุงสถานการณ์แตยังไม่หายสมบูรณ์ แก้ไขไฟล์แรกอีกครั้ง เพิ่มค่า "default-fragments" และ "default-fragment-size-msec" ลองค่า "3" และ "5" หรือ "4" และ "8" ตามลำดับ อย่าเพิ่มมากเกินไปทีเดียว เพิ่มค่าค่อยๆ จนปัญหาหาย
แต่ถ้าการปรับทำให้แย่ลง ลองทางตรงข้าม ลดค่าพารามิเตอร์ทั้งสอง แล้วกลับไปแก้ไขไฟล์ที่สอง เปลี่ยนเป็น tsched=1
รีสตาร์ท PulseAudio อีกครั้ง และเช็คว่าปัญหาแก้ไขได้หรือไม่ ถ้ายังไม่ได้ กลับไปแก้ไขทั้งสองไฟล์ ยกเลิกการเปลี่ยนแปลงทั้งหมด น่าเสียดายที่ในกรณีนี้ ต้นทางปัญหาอยู่ที่อื่น
คุ้มค่าลอง drivers ต่างๆ สำหรับ audio subsystem แต่เพราะมักรวมอยู่ใน kernel จะหมายถึงการสลับ kernel ของ distro ไปเป็นอันอื่น เช็คว่ามี kernel ใหม่กว่าหรือไม่ ถ้าไม่มี กลับไป kernel ก่อนหน้าหรือติดตั้ง alternative kernel อย่าง Liquorix
Drivers, Buffers, Scheduling
อาจสงสัยว่าทำไมพารามิเตอร์เหล่านี้ (อาจ) แก้ปัญหาได้ ทั้งหมดเกี่ยวกับ audio subsystem hardware, drivers และ PulseAudio ใช้มันอย่างไร
พารามิเตอร์แรกและสอง แบ่ง buffer ของ audio device เป็น fragments ขึ้นอยู่กับ audio subsystem อาจช่วย OS สตรีมข้อมูลไป audio subsystem ซึ่งจะกลายเป็นเสียง
พารามิเตอร์ที่สอง เปลี่ยน scheduling approach ของ PulseAudio ตั้งแต่ version 0.9.11 PulseAudio ใช้ system-timer-based model แตต้องการ hardware และ driver คืนค่า timing ที่แม่นยำ บางตัวทำได้ เช่น Intel solutions นี้เป็น modern และ better approach บางตัว เช่น soundcards หลายตัวของ Creative ไม่ทำได้ ขึ้นอยู่กับ hardware และ drivers การเปิด/ปิด timer scheduler (พารามิเตอร์ tsched ที่เพิ่ม) ด้วยค่า 1 หรือ 0 ทำให้ต่างกันมาก
ถ้ามีปัญหา no-sound ใน Ubuntu นี่คือวิธีแก้