แจ็คหูฟังหยุดทำงานหลังจากหยุดชั่วคราว / รีบูต


4

ฉันมีปัญหาที่น่ารำคาญจริง ๆ ซึ่งช่องเสียบหูฟังจะทำงานได้ดีหลังจากเริ่มเย็น แต่หลังจากหยุดชั่วคราวหรือรีบูตเครื่องใหม่ (รีสตาร์ทคอมพิวเตอร์โดยไม่ปิดเครื่อง) ช่องเสียบหูฟังจะหยุดทำงาน

ระบบตรวจจับเมื่อมีการเสียบหูฟังเข้าและออก แต่ไม่มีเสียงออกมาจากหูฟังอีกต่อไป

ฉันพบสิ่งนี้เฉพาะใน Ubuntu 14.04 (ภายใต้พาร์ติชัน Windows ของฉันทำงานได้ดี) บนแล็ปท็อป XMG A305 ดูเหมือนว่าปัญหานี้เกี่ยวข้องกับไดรเวอร์ที่ใช้กับการ์ดเสียงของฉัน (การ์ด: HDA Intel PCH, Chip: VIA VT1802) หรือการโต้ตอบระหว่างไดรเวอร์ที่แตกต่างกัน

นอกจากนี้ยังมีอีกหลายคนที่ประสบปัญหานี้ในเครื่องอื่น: Bugreport สำหรับแล็ปท็อป Clevo

คำตอบ:


5

หลังจากค้นหามาพักหนึ่งแล้วฉันก็ได้พบกับวิธีแก้ปัญหาที่ใช้งานได้ดีสำหรับฉันและอาจช่วยคุณได้เช่นกัน:

รหัสส่วนใหญ่มาจาก ที่นี่ .

รับรหัส

มีสคริปต์ไพ ธ อนที่สามารถเปิดใช้งานแจ็คหูฟังใหม่ได้ รหัสนี้นำมาจาก ektor5 บน GitHub . คุณต้องดาวน์โหลดสคริปต์วางไว้ในตำแหน่งที่ระบบของคุณพบและทำให้สามารถเรียกใช้งานได้ คุณสามารถทำสิ่งนี้กับสายนี้:

sudo wget https://raw.githubusercontent.com/ektor5/init-headphone/master/init-headphone -O /usr/local/sbin/init-headphone && sudo chmod +x /usr/local/sbin/init-headphone

ติดตั้งการพึ่งพา

init-headphone สคริปต์ต้องการการพึ่งพาที่สามารถติดตั้งได้กับ:

sudo apt-get install python-smbus

เพิ่มธงด้วง

นอกจากนี้เคอร์เนลของคุณจะต้องเริ่มต้นเมื่อเปิดใช้งานการตั้งค่าสถานะเพิ่มเติม คุณสามารถทำได้โดยแก้ไขไฟล์ '' / etc / default / grub '' แก้ไขบรรทัดนี้

GRUB_CMDLINE_LINUX=""

สำหรับสิ่งนี้

GRUB_CMDLINE_LINUX="acpi_enforce_resources=lax"

หลังจากนั้นก็วิ่ง

sudo update-grub

โหลดโมดูลเมื่อเริ่มต้น

นอกจากนี้สคริปต์จะต้องโหลดโมดูล คือ´i2c_dev´ และ´i2c_i801´ เหล่านี้สามารถโหลดได้ในขณะทำงานด้วย

modprobe i2c_dev
modprobe i2c_i801

ตอนนี้คุณสามารถทดสอบว่าใช้งานได้หรือไม่โดยเรียกใช้ udosudo init-headphones ´

ในการโหลดโมดูลโดยอัตโนมัติเมื่อเริ่มต้นให้เพิ่มบรรทัดต่อไปนี้ใน '' / etc / modules '':

i2c_dev
i2c_i801

สร้างสคริปต์เริ่มต้น

ขั้นสุดท้ายเราต้องการให้สคริปต์ทำงานโดยอัตโนมัติเมื่อคอมพิวเตอร์ของเราเริ่มระบบใหม่หรือกลับมาจากการหยุดทำงานชั่วคราว หากต้องการทำเช่นนั้นให้วางสคริปต์ต่อไปนี้ใน ´/ etc / pm / sleep.d /´

sudo gedit /etc/pm/sleep.d/init-headphone

เพิ่มบรรทัดต่อไปนี้

#!/bin/sh

if [ ! -x /usr/local/sbin/init-headphone ]; then
    exit 0
fi

case $1 in
     resume|thaw)
        /usr/local/sbin/init-headphone
       ;;
esac

และอย่าลืมทำให้ไฟล์นั้นทำงานได้

sudo chmod +x /etc/pm/sleep.d/init-headphone

ฉันหวังว่านี่จะช่วยได้โปรดแจ้งให้เราทราบหากคุณมีปัญหาใด ๆ

cbandera


ยอดเยี่ยม! ทำงานได้อย่างสมบูรณ์ในแล็ปท็อป Avell ของฉัน!
Lucas Teske

0

คุณอาจลองตรวจสอบแผงควบคุมระดับเสียงเพื่อดูว่ามันเพิ่งรีเซ็ตเป็นลำโพงมาตรฐาน ถ้าเป็นเช่นนั้นคุณสามารถสคริปต์เพื่อรีสตาร์ทหรือตั้งค่ากลับเป็นหูฟังด้วยตนเอง


ขอบคุณสำหรับคำใบ้ ฉันลองแล้วและมันจะให้ฉันเลือกแจ็คหูฟังอย่างแน่นอน แต่ไม่มีเสียงออกมาจากหูฟัง ระบบตรวจจับได้แม้เมื่อเสียบหูฟังเข้าและออก ...

0

ฉันไม่แน่ใจว่าคุณใช้ Linux รุ่นใด แต่ลองลองใช้เทียบเท่าที่เกี่ยวข้องกับ sudo apt-get install gstreamer ตามด้วยการเรียกใช้คุณสมบัติ gstreamer ผ่านทางบรรทัดคำสั่งและดูว่ามีการตั้งค่าผิดปกติระหว่างเสียงชีพจรและ alsa เกี่ยวกับหูฟังของคุณหรือไม่ เป็นต้น

(ฉันเคยใช้สิ่งนี้กับระบบเก่าที่ใช้ Ubuntu เพื่อรับการตั้งค่าหูฟังเพื่อใช้งานกับ skype ฯลฯ )


มันคือ Ubuntu 14.04 แพคเกจสามารถติดตั้งได้ด้วย "ติดตั้ง apt-get gstreamer-tools" ฉันวิ่งแล้ว แต่ทุกอย่างดูดี อาจเป็นเพราะการเปลี่ยนแปลงที่ฉันสมัครไปแล้ว ยากที่จะบอกตอนนี้

หากนี่คือหูฟัง usb คุณอาจมองว่าเคอร์เนลที่คุณใช้รองรับอยู่หรือไม่ มิฉะนั้นเมื่อระบบของคุณรับรู้ได้ว่าเสียบเข้ากับคุณคุณสามารถลองเปลี่ยนระบบเสียงเป็นพัลส์หรืออัลซาเพื่อดูว่าอะไรทำงานได้ดีขึ้นจากประวัติย่อ (โดยทั่วไปฉันจะเดาเสียงพัลส์ แต่ Alsa มีการตรวจจับฮาร์ดแวร์ที่ดีพอสมควร)

ฉันใช้หูฟังธรรมดาที่แจ็ค 3.5 มม. ฉันคิดว่าฉันได้ลองสลับไปมาระหว่างชีพจรและอัลซ่าแล้วฉันจำไม่ได้ตอนนี้เลย ฉันลองใช้วิธีแก้ปัญหาที่แตกต่างกันของ X ที่พบทั่วเน็ตในช่วง 3 เดือนที่ผ่านมา คำตอบที่โพสต์ข้างต้นเป็นทางออกเดียวที่ทำงานได้

0

การเพิ่มคำตอบที่ยอดเยี่ยมจาก @cbandera: สำหรับระบบที่ใช้ systemd (เช่น Ubuntu 15.04 หรือใหม่กว่า) สคริปต์เริ่มต้นควรเป็น /lib/systemd/system-sleep/init-headphone และมีลักษณะเช่นนี้:

#!/bin/sh

[ -x /usr/local/sbin/init-headphone ] || exit 0

[ "$1" = "post" ] && /usr/local/sbin/init-headphone
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.