Kulaklık fişinde ses yok mu?


10

Sesi durdurmak ve hoparlörlerimden çalmak için kulaklıklarımı her çıkardığımda (telefonun yaptığı gibi) bilgisayarımdan sesi kısmanın bir yolu var mı?




- Burada sonsuz döngüler kullanmadan bir yanıt gönderdiniz askubuntu.com/a/1005144/470017
Al.G.

Yanıtlar:


10

Fişi prizden çıkarma

Temelde benim için işe yarayan şuydu:

# When plugged in:
cat /proc/asound/card0/codec#0 > pluggedin.txt

# When not plugged in:
cat /proc/asound/card0/codec#0 > notplugged.txt

# Then compare the differences
diff pluggedin.txt notplugged.txt

Benim için fark 'Amp-Out vals' altındaki 'Node 0x16' idi:

Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out             Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1         Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]                                    |    Amp-Out vals:  [0x00 0x00]

Bu yüzden tespit edilen farkı buldum.

Nasıl susturulur

Bu bilgi ile arka planda çalışan bir komut dosyası olabilir. Çıkarılmışsa, komut dosyaları hoparlörlerinizi amixer sset Master playback 0%(veya başka bir komutu) kullanmak üzere kapatır .

#!/bin/bash
# This scripts detecs unplugging headphones.

oldstatus="unrelated string"
while [ 1 ]; do
    # The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0'
    status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' |  grep 'Amp-Out vals:  \[0x80 0x80\]')
    if [ "$status" != "$oldstatus" ]; then
        if [ -n "$status" ]; then
            echo "Plugged in"
             amixer sset Master playback 80% # Set volume to 80%
            oldstatus="$status"
        else
            echo "Unplugged"
            amixer sset Master playback 0%  # Mute
            oldstatus="$status"
        fi
    fi
done

İle çalıştırılabilir hale getirebilir chmod +x scriptname.shve başlangıç ​​uygulamalarına koyabilirsiniz. Fiş algılamasını kendi farkınızı bularak ayarlamanız gerekecektir /proc/asound/card0/codec#0(hatta birden fazla ses kartı için buradaki sayıları değiştirebilirsiniz).

İlgili Bağlantılar:

https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

/unix/25776/detecting-headphone-connection-disconnection-in-linux

Kulaklıkları çıkarırken / çıkarırken ses seviyesi otomatik olarak nasıl değiştirilir?


Bu, Mint 17.3'te mükemmel çalışır. Teşekkürler!
Briscoooe

4
whileArka planda sürekli çalışan sonsuz döngülü (az bir uyku talimatı olmadan) bir senaryoya sahip olmak ideal bir çözümden uzaktır; cpu ve pil katili olmanın yanı sıra çirkin ve çirkin bir çözüm. Denedim ve sürekli% 5 cpu kullanımı (tarayıcı, spotify, terminal, IDE, Telegram ve diğer uygulamalar açıkken) normal bir durumdan% 45 sabit cpu kullanımına geçtim.
LeartS

@LearlS'ın işaret ettiği gibi, bu çözüm çok kötü bir vatandaş. Lütfen bunu asla yapma. İyi bir vatandaş çözümü için, acpi_listenbu yanıttaki bağlantılardan birinde önerildiği gibi kullanın .
Don Hatch


0

Ubuntu-16.10 için bu cevapta çok az değişiklik yaptım .

oldresult="Some Random String"

while [ 1 ]; do
        # incase of plugged out result will contain some data
        result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0)

        # checking for oldresult if not same then only go inside
        if [ "$oldresult" != "$result" ]; then
                oldresult=$result
                if [[ -z "$result" ]]; then
                        notify-send "Plugged In"
                        amixer sset Master playback 80% # Set volume to 80%
                 else
                        notify-send "Plugged Out"
                        amixer sset Master playback 0% # Set volume to 0%
                 fi
        fi
done

Hem bu cevap hem de gelen cevap kötü vatandaşlar. Çalışıyor gibi görünüyorlar, ancak aynı anda böyle birkaç program çalıştırmayan ölçeklenmeyen sistem kaynaklarını barındırıyorlar ve sistemi mahvediyorlar. Lütfen bunu asla yapma. Bunun yerine acpi_listen veya benzeri bir çözümden birini kullanabilirsiniz.
Don Hatch

0

Eğer varsa olaylarla sorunları içinde alıcı /etc/acpi/handler.shbenim bkz cevabı . Ayrıca bu cihaz kodları olmadan olarak Node 0x16.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.