Kulaklıkları çıkarmadan kulaklık ve hoparlörler arasında nasıl geçiş yapılır


23

Kulaklıklarımı taktığımda, ses çıkış aygıtı hoparlörlerimden kulaklıklara geçiyor.

Her zaman kulaklıkları takmak / çıkarmak yerine, sonunda kabloyu / jakımı yıpranacak bir yazılım anahtarı kullanmak istiyorum.

Ses Ayarları'nı açtığımda ve "Kulaklıklar -> Dahili Ses" den "Hat Çıkışı -> Dahili Ses" ayarına geldiğimde hoparlörümden veya kulaklıklarımdan ses gelmiyor.

Kulaklığı taktığımda / taktığımda ne olacağını görmek için alsamixer'ı açtım.

Kulaklıklar: Kulaklıklar

Kulaklık çıkışı: Kulaklık çıkışı

Kulaklıklar takılıyken, kulaklıklar çıktığında ve hoparlörden ses gelmediyse ayarlara uyacak şekilde tüm ayarları manuel olarak değiştirdim.

Bir yandan not olarak, ses çıkış cihazının "Ses Ayarları" üzerinden değiştirilmesi aynı değişikliklerin aynı şekilde alsamixer'de yapılmasına neden olur.


1
Bildiğim kadarıyla, bu Kulaklık jakı içinde geçişe izin vermeyecek bir donanım anahtarı. Anahtar devreye girdiğinde, hoparlörler devre dışı bırakılır. Bluetooth kulaklık kullanmayı düşündün mü?
Terrance

Thanks @Terrance, bunun gibi bir şey olabileceğini düşündüm, orada bir şey olup olmadığını görmek için BIOS'u bile kontrol ettim. Biraz yazılım problemi olması için bir donanım çözümüne sahip olmalarına şaşırdım.
user276318

1
Ses kartının birden fazla cihaz çıkışı yapamayabileceğini aklınızda bulundurun - bazı ses kartları, kulaklık bağlantısı yapıldığında hoparlör çıkışını kapatmak için donanım düzeyinde zor kodlanmıştır, ve bu geçersiz kılınamaz ...
Thomas Ward

@Terrance Bir ödül almaya başladım, belki daha fazla kazmak ve bir cevap yazmak istersiniz?
tatlı

@dessert GoodGuyNick'in cevabını aşağıya bakın - tüm donanımlarda çalışmayabilir ve deneyimlerime göre çıkışları ayırmaz (bu, programA'nın sesini hoparlörlere ve programB'leri aynı anda kulaklıklara göndermenize izin verir), ancak otomatik geçişi devre dışı bırakmak yeterlidir, denenecek ilk şey budur.
quixotic

Yanıtlar:


9

Hoparlörleri ve kulaklıkları takılı ve hareket halindeyken yazılımı devreye sokma

Tasarım olarak, kulaklık takılı olduğunda Pulseaudio otomatik olarak Hat Çıkışı'nı kapatır ve bunun yerine Kulaklık kaydırıcısını kullanır. Bu davranışı alsamixer'de gözlemleyebilirsiniz. İstediğimiz, Kulaklık ve Hat Çıkışı kaydırıcılarının ayrı ve aynı anda çalışmasını sağlamak. Realtek'in jaklarını, örneğin kulaklıklar için Arka Yeşil ve hoparlörler için Mavi (alsa-tools'dan hdajackretask yardımı ile) olarak yeniden eşleştirmek isterseniz, bu son derece yararlıdır.

Bunu başarmak için, Pulseaudio mikserinin konfigürasyonunu doğrudan düzenlemeniz gerekir.

1. Pulseaudio'ya kulaklıkların daima takılı olduğunu söyleriz.

Düzenle:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

bul:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

Değişim noiçin yes.

Bilgisayarınızın kasasındaki jakları kullanıyorsanız [Jack Front Headphone]bunun yerine değiştirin .

2. Varsayılan olarak, Line Out'un sesi Lineer kaydırıcısının kendisi tarafından değil yalnızca Master tarafından kontrol edilir.

Line Out'u Master ile birleştirmek istiyoruz. Bu kod parçasını dosyanın sonuna ekleyin:

[Element Line Out]
switch = mute
volume = merge

3. Kulaklık kullanırken Hat Çıkışı'nı tamamen kesmemiz gerekir.

Düzenle:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

Bu kod parçasını dosyanın sonuna ekleyin:

[Element Line Out]
switch = off
volume = off

Bazı sistemlerde, bu pasajı ekleyerek Front özelliğini de devre dışı bırakmanız gerekebilir:

[Element Front]
switch = off
volume = off

4. Pulseaudio gibi, Alsa da kulaklıklar takılıyken hoparlörleri kapatır.

Alsamixer’ı açın: alsamixer -c0veyaalsamixer -c1

Otomatik-Sessiz modu için / kullanın . İle Otomatik Sessiz Modu'nu devre dışı bırakın . Alsamixer ile kapatın Esc.

Değişikliklerinizi şununla kaydedin: alsactl store

5. Pulseaudio'yu yeniden başlatın

$ pulseaudio -k
$ pulseaudio --start

Artık pulseaudio'da aynı lavaboda iki ayrı bağlantı noktanız var. Birbirlerini susturuyorlar, böylece kulaklıklara geçebiliyorsunuz, bu da Line Out'u kapatacak ve bunun tersi de geçerli olacak. Bağlantı noktaları arasında geçiş yapmak için Gnome veya Plasma ses karıştırıcısını kullanabilir veya uygun bir masaüstü uzantısı kullanabilirsiniz.


Kaynak


2
Dosyaları doğrudan içeride düzenlememelisiniz /usr/share. Pulseaudio bir güncelleme alırsa (örneğin, hataları düzeltmek için), değişiklikleriniz silinir. Genelde dosyaları geçersiz kılma /etcveya benzeri dosya oluşturma mekanizmaları vardır , ancak özellikle pulseaudio'ları bilmiyorum.
Robie Basak,

@RobieBasak Bu bilgilerin kaynağı Arch Linux web sitesidir. Ne yazık ki, ben bir Arch Linux kullanıcısı değilim, bu yüzden kendi yorumunuzu sitemize gönderemiyorum. Umarım, buralarda dolaşan Arch Linux kullanıcılarından biri yorumunuzu okur ve orada tekrar gönderir.
WinEunuuchs2Unix

1
@RobieBasak, peki, biri bunu yapan ve giriş yaptıktan sonra onu çağıran bir sarmalayıcı komut dosyası yazabilir
Robert Riedl

1
Ne yazık ki benim için işe yaramadı, ama cevabınız için teşekkür ederim!
tatlı

1
@dessert Benim zevkim. Bu alanı araştırmak ilginçti. Ne arıyorsan onu bulmanı umarım.
WinEunuuchs2Unix

9

Hoparlörler ve kulaklıklar arasında geçiş yapmayı mümkün kılmak için aşağıdaki adımları izleyin:

  1. Run alsamixer.
  2. Gerekirse, ses kartınızı ile seçin F6.
  3. Sağ ok ile “Otomatik Sessiz” seçeneğine gidin .
  4. Aşağı okla devre dışı bırakın .
  5. Çıkmak Esciçin tuşuna basın .

Veya tüm bu adımları tek bir komutla yapabilirsiniz:

  1. Açık terminal
  2. koşmak amixer -c 1 set 'Auto-Mute Mode' Disabled

Artık PulseAudio Ses Kontrolündeki hoparlörler ve kulaklıklar arasında geçiş yapabilirsiniz.

Bu talimatları uyguladıktan sonra , kulaklık ve hoparlörler arasında hızla geçiş yapmak için Ses Değiştirme Göstergesini kullanarak hayatınızı kolaylaştırabilirsiniz .


2
Bunun tüm donanım kombinasyonları için işe yarayacağını sanmıyorum - bazı sistemler (benimki gibi) bazı bilinmeyen bir donanım anahtarını kullanıyor gibi görünüyor. Örneğin, bir kulaklığı bir gitar amperine takarsanız, amperdeki hoparlörler genellikle kapanır - ve bu cihazlarda bilgisayar olmaz ....
Charles Green

Bu benim için Realtek ALC887-VD'de çalıştı
Paul Praet

Teşekkür ederim. Benim için çalıştı. Bunu bash betiği ile başarmanın bir yolu var mı?
ka3ak

1
@ ka3ak senin için cevap güncelledik
GoodGuyNick

4

hdajackretask, jaklarınızı farklı giriş, çıkış veya devre dışı bırakma fonksiyonlarına yeniden atamak için bir araçtır - örneğin, Mic jakını ekstra bir Kulaklıka mı çevirin, ya da neden her ikisini de dışarı çıkarıp surround alıcınıza bağlamıyorsunuz?

Alsa-tools-gui'yi yükleyin

sudo apt-get update
sudo apt-get install alsa-tools-gui

hdajackretaskKrikolardan birini geçersiz kılmak için Sonra Koş :

  1. Bir kodek seçin
  2. Bu pin için "Geçersiz Kıl" onay kutusunu tıklayın ve istediğiniz yeni işlevi seçin
  3. "Şimdi uygula" yı tıklayın.

    Not: Kulaklık jakı, sesi yeniden yönlendiren yerleşik bir donanım anahtarına sahipse, siz SOL'sunuzdur (Maalesef şansınız yok). Ancak, işletim sistemi kulaklık jakına ne zaman bir hat takıldığını tespit ederse, ses muhtemelen mekanik olarak değiştirilmez.

Hem kulaklıkları hem de hoparlörleri geçersiz kılmak aynı anda en iyi sonucu buldum.


Kulaklığı hoparlörlere çevirmek için ekran görüntüsü:

görüntü tanımını buraya girin


"Şimdi uygula" yı tıkladıktan sonra, değişiklikleri yapmak ve süper kullanıcı şifresinin çalıştırılmasını isteyen bir komut dosyası oluşturulur. Komut dosyası, /tmpkopyalanabilen ve daha sonra komut satırından sudo ile çalıştırılabilecek şekilde kaydedilir .

görüntü tanımını buraya girin

Komut satırı yürütme

Daha önce de belirtildiği gibi, hdajackretaskbir komut dosyası oluşturur script.shiçinde /tmpbenzer /tmp/hda-jack-retask-QW1EEZ/arzu jak işlevleri için:

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


Bu betiği sisteminizde başka bir yere kopyalayın (/ tmp dışında)

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

Ardından speaker.sh dosyasını düzenleyin

cd ~username
nano speaker.sh

killall pulseaudio &Dosyanın en üstüne satırı ekleyin . Bu gereklidir, çünkü kriko işlevi pulseaudioçalışırken değiştirilemez . Varsayılan olarak pulseaudiorespawn olacaktır. Ayrıca errors.logdosya yolunu istediğiniz /tmpyere veya istediğiniz yere değiştirin :

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


Komut dosyasını çalıştırmak için:

sudo ./speaker.sh



Gönderen alsa-araçlar-1.1.5 / hdajackretask / README belgeleri:

Hdajackretask belgeleri

Çoğu HDA Intel ses kartı bir dereceye kadar yeniden takılabilir, yani birden fazla şey için kullanılabilir. Bu araç, jaklarınızı yeniden takmayı kolaylaştırmak için bir GUI'dir; örneğin, Mic jakınızı ekstra bir Kulaklığa çevirin veya neden her ikisini de dışarı çekmiyor ve surround alıcınıza bağlamıyorsunuz?

Hızlı başlangıç

"Hdajackretask" uygulamasını komut satırından başlatın. Üst çubuktan bir kodek seçin; bazı insanlar sadece bir tanesine sahiptir - birden fazla varsa, biri "ana" dır ve gerisi muhtemelen HDMI kodekidir.

Tüm jaklar (ve diğer girişler / çıkışlar) "Pin konfigürasyonu" altında gösterilmiştir. Krikolarınızdan birini geçersiz kılmak için, o pin için "Geçersiz Kıl" onay kutusunu işaretleyin ve istediğiniz işlevi seçin. Not: "Hat çıkışı (geri)" geçersiz kılmayı seçtiyseniz, ayrıca bir "Hat çıkışı (ön)" geçersiz kılmanız gerekir. Bir "Hat çıkışı (Merkez / LFE)" geçersiz kılma yalnızca önceki iki geçersiz kılma ile çalışır, vb.

Yeni yapılandırmanızı "Şimdi uygula" düğmesine tıklayarak deneyebilirsiniz. Yeni yapılandırmanızı önyüklemeyi varsayılan yapmak için, "Önyüklemeyi geçersiz kılmayı yükle" seçeneğini tıklayın. Bunlardan herhangi birini yapmak, kök ayrıcalıklarını gerektirir, bu yüzden muhtemelen şifreniz istenecektir.

Quickend

Batırdın mı? "Önyüklemeyi geçersiz kılmayı kaldır" düğmesini tıklayın ve işlem tamamlandıktan sonra bilgisayarınızı kapatın, bir süre bekleyin ve yeniden açın. Şimdi başladığın yere dönmelisin.

İşe yaradı mı?

Olursa, mutlu olun, sevincinizi paylaşın, güzel şeyler yapın!

Olmadıysa, işte denenecek bazı şeyler:

  • Alsamixer'a gidin ve yeni ses seviyesi kontrolleri olup olmadığına bakın ve bunların birleştirilmemiş ve makul bir değere ayarlanmış olup olmadıklarına bakın.

  • Bazen sürücü bağlı olmayan pinleri kapatmaz (eğer bağlı değilse neden endişelenelim?). Bir süredir bilgisayarınızı tamamen kapatarak bu sorunu çözebilirsiniz.

  • Aşağıdaki "model = otomatik" seçeneğine bakın

Bu işe yaramazsa, bir sürücü ya da donanım sınırlamasıyla karşı karşıya kalmanız ihtimali yüksektir. Sürücü hatalarına maruz kalabilirsiniz (belki de daha önce hiç kimse dört kulaklığı test etmedi!). Bunu yaparsanız, bunları alsa-devel e-posta listesine bildirmekten çekinmeyin: ancak, insan gücü eksikliği nedeniyle, şansın çok düşük bir öncelikte ele alınacağı (standart bir konfigürasyon için kutudan çıkan sesin kullanılması gibi) garip yapılandırmaları desteklemekten daha önemlidir). Ancak, bir çekirdek korsanıysanız ve sorununuzu başka bir şeyi batırmadan çözen bir yama ile karşılaşırsanız, şanslar oldukça yüksektir, birleştirilir.

Sorunun çekirdek sürücüsü yerine bu GUI uygulamasından kaynaklandığından şüpheleniyorsanız, bana bir e-posta yazmaktan çekinmeyin (ve isterseniz bir yama ekleyin!). Eğer öyleyse, diwic@ubuntu.com adresine yazın.

Seçenekler

  • Bağlantısız pinleri gösterme BIOS'unuz, kodek üzerindeki hangi pinlerin gerçekte bir şeylere bağlı olduğunu ve hangilerinin bağlı olmadığını ayarlamaktan sorumludur. Bazen BIOS buggydir ve tüm jaklarınızı göstermez. Eğer bir jack'iniz varsa BIOS'unuz yapmadığınızı söylüyorsa, rasgele pinleri etkinleştirmeyi deneyebilir ve çalışıp çalışmadığını görebilirsiniz.

  • Model Ayarla = otomatik Bazı kod çözücüler, özellikle eski olanlar ve 3.8 ve daha sonraki çekirdeklerde, belirli bir model kullanmak için kodlanmıştır ve bu nedenle geçersiz kılmalarınızı önemsemez. Birçok durumda ve oldukça yeni bir çekirdeğe sahip olan otomatik ayrıştırıcı artık bu kodekler için de iyi çalışıyor. Otomatik ayrıştırıcıyı bu kutuyu işaretleyerek kullanılmaya zorlayabilirsiniz. Bazı durumlarda, açık model bir nedenden ötürü oradadır, eğer öyleyse sıkışmışsınızdır.

  • Gelişmiş geçersiz kılma Bu sadece uzmanlar içindir. Mantıklı olan önceden tanımlanmış birkaç değer yerine, her bir konfigürasyon alanını ayrı ayrı seçmenizi sağlar. Buradaki kombinasyonların çoğunun bir şekilde veya diğerinde geçersiz olduğuna dikkat edin, bu nedenle HD Ses spesifikasyonunun "Yapılandırma Varsayılanı" bölümünü okumadıysanız ve anlayamadığınız sürece muhtemelen bununla uğraşmamanız gerekir. (Bu yazının yazıldığı tarihte burada bulunabilir: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Ayrıştırıcı ipuçları Bu, ayrıştırmanın farklı davranmasına neden olan sürücüye özel "ipuçları" göndermenizi sağlar. Sürücü belgelerini okumadıysanız, bunları "varsayılan" ayarda bırakın. (Bu yazının yazıldığı tarihte şu adresten erişilebilir: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - "İpucu dizeleri" bölümüne bakın.)


1
Ne yazık ki benim için işe yaramadı, ama cevabınız için teşekkür ederim! Sizlerin umduğum şeye çok yaklaştığı ve hedefe ulaşmak için en iyi yolu sağladığı görülüyor (mümkünse) size ödül - tebrikler! :)
tatlı

3

KDE'de bu yapılabilir:

sistem ayarları -> multimedya -> ses ve video ayarları -> ses donanım ayarları sekmesi> uygun ses kartını seçin> Konektör altında kulaklık ve hoparlör seçeneğini göreceksiniz.

sistem ayarları


3
Kde kullanmıyorum ama Unity'nin benzer bir "Ses Ayarları" var. Ses çıkış cihazını kulaklıklardan hoparlörlere değiştirmek yalnızca kulaklıkların sesini kısar. Kulaklık takılı iken donanım bir anahtar gibi görünüyor.
user276318 23:01

1

GNOME Kabuk Uzatma Ses Çıkışı-Switcher

en basit yol sadece ses çıkışı değiştirici eklentisini yüklemektir

veya doğrudan git ile klonlayabilirsiniz:

git clone https://github.com/adaxi/audio-output-switcher.git ~/.local/share/gnome-shell/extensions/audio-output-switcher@anduchs

ekran görüntüsü

Bu uzantı, seçili olan pulse-audio çıkış cihazını gösteren durum menüsüne küçük bir giriş yapar. Bunun üzerine tıklamak mevcut tüm çıkış cihazlarının bulunduğu bir alt menü açacak ve hangisini kullanacağınızı seçelim.


Ne yazık ki benim için işe yaramadı, ama cevabınız için teşekkür ederim!
tatlı

0

PPA eklemeyi sakıncası yoksa, Ses Değiştirici Göstergesini kullanabilirsiniz .

Bu, giriş veya çıkış ses kaynaklarını değiştirmek için sistem tepsisinde tıklayabileceğiniz bir gösterge verecektir. Http://yktoo.com/en/software/indicator-sound-switcher adresinden daha fazla bilgi edinebilirsiniz .

Terminal Yöntemi

Kurmak için, bir terminal kullanarak aşağıdakileri girin.

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

GUI Yöntemi

Yüklemek için, GUI'yi kullanarak şu adımları izleyin:

  1. Yazılım ve Güncellemeleri BaşlatınUnity Dash'den uygulamasını .

  2. "Diğer Yazılımlar" sekmesine tıklayın. Sonra aşağıdaki yeni kaynağı ekleyin:

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    ("Canlı" ifadesini Ubuntu sürümünüzle değiştirmeyi unutmayın. Desteklenen sürümler http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ adresinde listelenmiştir ).

  3. Ubuntu Software Center'ı Unity Dash'den başlatın .

  4. "Ses giriş / çıkış seçici göstergesi" arayın ve yükleyin.

Not: Yukarıda Terrance'ın önerdiği gibi, sisteminizde Kulaklık jakı içinde bir donanım anahtarı varsa, bu çözüm işe yaramaz.


Aslında bunu çoktan kurdum. Notunuzda olduğu gibi, bir donanım anahtarı varmış gibi görünüyor.
user276318 23:15

0

Bu komut dosyasını bu sorun için yaptım:

https://github.com/biplobsd/Fixing-front-panel-audio

Terminalinizdeki depodaki README dosyasında verilen komutları çalıştırın. Bu komut dosyasını indirir ve çalıştırır.

Bu komutlar:

git clone https://github.com/biplobsd/Fixing-front-panel-audio.git
cd Fixing-front-panel-audio
chmod +x Fixing-front-panel-audio.sh
./Fixing-front-panel-audio.sh
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.