Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

ปัญหาที่ผู้ใช้ Ubuntu พบบ่อยหลังติดตั้ง Ubuntu หรืออัปเกรดเวอร์ชันใหม่ คือ ปัญหาเสียง หรือเฉพาะเจาะจง "no-sound" เกิดจากหลายเหตุผล บางครั้งเกี่ยวกับ misconfiguration ใน speaker settings หรือ hardware ไม่ได้รับการ support ดี

สำหรับคนส่วนใหญ่ มักเป็นปัญหาง่ายที่แก้ได้ เพราะส่วนใหญ่มาจาก issue กับ services ที่รันบนระบบ บทความนี้ผ่าน fixes ง่ายๆ ที่ลองได้ ไม่จำเป็นลองทั้งหมด เริ่มจากบนสุดรายการลงมา

ติดตั้ง Volume Control สำหรับ PulseAudio

PulseAudio เป็น default sound service สำหรับ Ubuntu และอื่นๆ Open source และน่าเชื่อถือ ทำงานกับ ALSA และ OSS drivers ให้แน่ใจว่าสัญญาณเสียงที่ระบบสร้าง ส่งไปยังสเปกเกอร์

วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

แตแอปพลิเคชันและ desktop environments มาพร้อม volume controls ของ PulseAudio เอง ไม่ได้ granular และไม่ให้ควบคุม playback streams แต่ละอัน Pavucontrol ให้ control มากกว่าบน audio devices แต่ละตัวบน PC เล่นกับ sliders ให้แน่ใจว่า speaker หรือ headphone volume ตั้งค่าที่ควร

ติดตั้ง pavucontrol เปิด Terminal ใส่คำสั่ง:

pulseaudio --start sudo apt install pavucontrol

หลังจากนั้น รัน pavucontrol จาก terminal หรือหา "PulseAudio Volume Control" ใน launch menu ของ desktop environment ไปที่ tab "Output Devices" ตรวจสอบว่า default speakers ถูกเลือก

ตรวจสอบ Speaker Settings

เวลาเจอปัญหาเสียงบน Ubuntu ต้องเช็ค headphones และ speakers ก่อน สำหรับปัญหา connection อาจเป็น audio cable เสียบ port ผิด หรือไม่ได้เสียบเลย

ถ้าใช้ Bluetooth device เช็คว่า paired ถูกต้อง อย่าลืมดู volume controls ของอุปกรณ์ ให้อยู่ที่ระดับที่ยอมรับได้ ควร verify ว่า output volume ไม่ได้ mute บนคอมพิวเตอร์ และ output device ที่ถูกต้องถูกเลือก

วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

ตรวจสอบ ALSA Mixer

ใต้ฝาครอบ PulseAudio ใช้ ALSA kernel module ที่ควบคุม sound devices โดยตรง ถ้าต้องการ control ALSA-level volume แบบละเอียด ตามขั้นตอน:

  1. เปิด terminal
  2. พิมพ์ alsamixer กด Enter จะเห็น output ใน terminal
วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu
  1. เลือก sound card ที่ถูกต้อง กด F6 สำหรับผม defaults ใช้ได้ แตลอง options อื่นถ้าไม่ได้
  2. ใช้ left arrow และ right arrow เลือก volume control item ที่เลือกแสดงสีแดงด้านล่าง
  3. ใช้ up arrow และ down arrow เพิ่ม/ลด volume levels สำหรับแต่ละ control
  4. ตอน mixer control ถูก mute "MM" จะปรากฏใต้ volume bar สังเกต: bar อาจเต็ม 100% แต่ยัง muted อยู่ เช็คให้ดี Unmute control ด้วยการกด m จะเปลี่ยน "MM" เป็น "OO"
  5. ออกจาก alsamixer กด Esc

หมายเหตุ: เวลา mute/unmute control pulseaudio อาจจับมันและ mute/unmute controls อื่นด้วย ต้อง confirm ว่า relevant controls และ master control unmute ก่อนออก

Reload ALSA

อีกวิธีถ้าปัญหาเสียงยังคงอยู่ คือ reload ALSA ด้วยคำสั่งใน terminal:

sudo alsa force-reload

Output 长这样:

วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

เสร็จแล้ว ถ้ายังมีปัญหาเสียง ลอง

pulseaudio -k && pulseaudio -D

อาจมีปัญหาหลัง reload ALSA ถ้า pulseaudio ไม่ register ว่า modules ถูก reload แล้ว

ถ้ายังไม่ได้ audio ลอง one-shot ALSA command โดยตรง:

alsactl restore

ติดตั้ง ALSA และ PulseAudio ใหม่

ถ้าวิธีข้างบนไม่แก้ปัญหา ลอง reinstall ALSA และ PulseAudio เปิด terminal ใส่คำสั่ง:

sudo apt remove --purge alsa-base pulseaudio sudo apt install alsa-base pulseaudio

Reload ALSA อีกครั้ง และ reboot คอมพิวเตอร์

Advanced Troubleshooting

Troubleshoot audio อย่างถูกต้องหลังลองหมดแล้ว ต้องลงมือทำลึกลงไป advanced troubleshooting:

Output ของคุณอาจ Trigger ALSA แต่ไม่ใช่ PulseAudio

ที่จริง ถ้า PulseAudio mute output ไม่สำคัญว่า ALSA พูดอะไร เสียงออกไปยังอุปกรณ์จะผ่าน ALSA แต่ไม่ได้ served ให้พวกเขาผ่าน PulseAudio

เพื่อแก้ บังคับ ALSA พูดกับ PulseAudio เวลา master volume เปลี่ยน เพื่อให้ PulseAudio ตามไปด้วย

amixer -D pulse sset Master toggle

Devices ที่ volume โต้ตอบได้แค่ ALSA ด้วยเหตุผลแปลกๆ จะโต้ตอบกับ PulseAudio ด้วย

แน่ใจไหมว่าไม่ใช่แค่แอปพลิเคชันเดียว?

Application ที่ทำงานผิดปกติ อาจทำปัญหามากกว่าคิด ในแบบที่ทำให้ประหลาด อาจเป็นแอปที่คุณไม่ได้เปิด!

ดูทุกอย่างที่ใช้ audio control พิมพ์:

pacmd list-sink-inputs

อยาก surgical มากกว่านั้น พิมพ์:

pacmd list-sink-inputs | grep application.name
วิธีแก้ปัญหา No Sound (ไม่มีเสียง) ใน Ubuntu

ในกรณีของผม ตามรูป Firefox คือสิ่งเดียวที่กำลังฟัง ถ้าใช้ grep narrow output ใน terminal ใช้คำสั่งเดิมอีกครั้ง สังเกต values "muted:", "index:" และ "volume:"

อาจมี volume ในแอป แต่มัน muted หรือ volume เป็นศูนย์!

แก้ muted application พิมพ์ (แทนที่ application_index ด้วย index number จาก "index:"):

pacmd set-sink-input-mute application_index false

แก้ applications ที่ volume ต่ำผิดปกติ พิมพ์:

pacmd set-sink-input-volume application_index 0x10000

No Audio เมื่อ Resume หลัง Suspend/Sleep

บางครั้ง PulseAudio ไม่อยาก wake up กับคอมพิวเตอร์ ในกรณีนี้ รัน

pasuspender /bin/true

ดึง audio กลับจากตาย แต่别太开心 ไม่รอด reboot หรือ suspend/sleep อีก ตาม mini-guide นี้ให้ระมัดระวัง เพื่อแก้ปัญหาตลอดกาล:

  1. ใน terminal พิมพ์
sudo touch /etc/systemd/system/pulseaudio-sleep-fix@.service

สร้าง systemd service manager file

  1. เปิดไฟล์แก้ไข:
sudo nano /etc/systemd/system/pulseaudio-sleep-fix.service

Paste (Ctrl + Shift + V สำหรับ terminal paste) นี้เข้าไป:

[Unit] Description=Fix PulseAudio after resume from suspend After=suspend.target [Service] User=%I Type=oneshot Environment="XDG_RUNTIME_DIR=/run/user/%U" ExecStart=/usr/bin/pasuspender /bin/true [Install] WantedBy=suspend.target
  1. กด Ctrl + X ออก และ Y ใน prompt ถามว่าจะ save modified buffer ไหม
  2. พิมพ์คำสั่ง register เป็น systemd service
sudo systemctl enable pulseaudio-sleep-fix@your_username.service

จำได้ว่าแทนที่ your_username ด้วยค่าที่เหมาะสม

คุณรัน Timidity อยู่ไหม?

ถ้ารัน timidity package ใน Ubuntu (เช็คด้วย apt search timidity ดู [installed] ท้าย entry ที่เหมาะสม) อาจมีปัญหารัน PulseAudio กับมัน เพราะวิธีจัดการ audio processing ที่แปลก

ให้ timidity ทำงานถูก เริ่มเพิ่มใน autostart (บางครั้งเรียก Startup Applications ใน desktop environments เช่น GNOME) แก้คำสั่งที่รันแอปพลิเคชันเป็น:

timidity -iA -Os

ไปไกลกว่านั้น พิมพ์คำสั่งเพิ่ม root เข้า pulse-access group

sudo usermod -a -G pulse-access root

Reboot แล้ว audio ควรทำงาน ถ้ายัง fail วิธีแก้อีกอย่างคือลบ timidity จาก Ubuntu

ตอนนี้มี service ที่รันตอน resume หลัง suspend ทันทีปิดตัวเองหลังทำงานเสร็จ หลีกเลี่ยง bloat

คำถามที่พบบ่อย

1. ลบ ALSA และเก็บ PulseAudio ได้ไหม?

ระวังมาก! PulseAudio ต้องการ kernel-level audio module ถ้าวางแผนแทนที่ ALSA ด้วยอย่างอื่นที่ทำงานใน kernel (อย่าง Open Sound System) ไปข้างหน้า กระบวนการซับซ้อนกว่าแทนที่ Realtek kernel module สำหรับ networking จงระวังว่าอาจนั่งนานมากแก้ปัญหา

2. PulseAudio มี alternatives ไหม?

มี! Alternative ยอดนิยมและ viable สำหรับ desktop คือ PipeWire รองรับ Bluetooth devices ดีกว่า และปรับปรุง sampling และ post-processing ของ PulseAudio ที่ wonky หลาย distros ทำให้มีใน official repositories และ stability ดีขึ้นมากในไม่กี่ปี

ถ้าอยาก professional audio setup อย่างไรก็ตาม อาจเลือก JACK

3. รัน PulseAudio ควบคู่กับ services อื่นได้ไหม?

แม้ services บางอย่างมี libraries และ setup options ให้ PulseAudio ทำงานกับพวกเขา แตแนะนำอย่างยิ่ง stick to one service บนระบบ tạiเวลาเดียว Services ส่วนใหญ่จะแค่แข่งกับ PulseAudio สำหรับ applications ของระบบ และทำให้ unpredictable behavior อื่นๆ จะไม่ทำงานเลยโดยไม่ได้ลบ PulseAudio ทั้งหมด (PipeWire ใช้ pipewire-pulse service แทน pulseaudio)

หวังว่าคำแนะนำที่ให้มา ทำให้เสียงบน Ubuntu ทำงานอีกครั้ง เริ่มเพลิดเพลินกับ OS อีกครั้ง เคยลองทำ website เป็น app ใน Linux และ cast หน้าจอ Android ไป Linux ไหม?