Jak przełączać się między słuchawkami i głośnikami bez odłączania słuchawek


23

Po podłączeniu słuchawek urządzenie wyjściowe audio przełącza się na słuchawki z głośników.

Zamiast podłączać / odłączać słuchawki przez cały czas, co ostatecznie zużyje mój przewód / gniazdo, chciałbym po prostu użyć przełącznika programowego.

Po otwarciu Ustawień dźwięku i przełączeniu z „Słuchawki -> Wbudowane audio” na „Wyjście liniowe -> Wbudowane audio” z mojego głośnika lub słuchawek nie wydobywa się żaden dźwięk.

Otworzyłem alsamixer, aby zobaczyć, co się stanie po podłączeniu / odłączeniu słuchawek.

Słuchawki w: Słuchawki w

Wyjście słuchawkowe: Słuchawki wyszły

Po podłączeniu słuchawek ręcznie zmieniłem wszystkie ustawienia, aby pasowały do ​​ustawień, gdy słuchawki są wyłączone i nadal nie słychać dźwięku przez głośnik.

Na marginesie, zmiana urządzenia wyjściowego audio w „Ustawieniach dźwięku” powoduje te same zmiany w alsamixerze.


1
O ile mi wiadomo, jest to przełącznik sprzętowy wewnątrz gniazda słuchawkowego, który nie pozwala na przełączanie. Po włączeniu przełącznika głośniki są wyłączane. Czy myślałeś o użyciu słuchawek Bluetooth?
Terrance,

Dzięki @Terrance miałem wrażenie, że to może być coś takiego, nawet sprawdziłem BIOS, aby zobaczyć, czy coś tam jest. Jestem tylko trochę zaskoczony, że mieliby sprzętowe rozwiązanie problemu oprogramowania.
user276318,

1
Należy pamiętać, że karta dźwiękowa może nie być zdolna do wyjścia z wielu urządzeń - niektóre karty dźwiękowe są na stałe zakodowane na poziomie sprzętowym, aby wyłączyć wyjście głośników po podłączeniu słuchawek, a tego nie można zastąpić ...
Thomas Ward

@Terrance Rozpocząłem nagrodę, może chcesz w niej zagłębić się i napisać odpowiedź?
deser

@dessert patrz odpowiedź GoodGuyNick poniżej - może nie działać na wszystkich urządzeniach, a z mojego doświadczenia wynika, że ​​nie rozdziela ona wyjść (co pozwoliłoby na jednoczesne wysyłanie dźwięku programu A do głośników i programu B do słuchawek), ale jeśli wystarczy po prostu wyłączyć automatyczne przełączanie, to jest pierwsza rzecz, którą należy wypróbować.
donkiszot

Odpowiedzi:


9

Podłączanie głośników i słuchawek oraz włączanie oprogramowania w locie

Z założenia Pulseaudio automatycznie wyłącza wyjście liniowe po podłączeniu słuchawek i zamiast tego używa suwaka Słuchawki. Możesz zaobserwować to zachowanie w alsamixer. Chcemy, aby suwaki słuchawek i wyjścia liniowego działały osobno i jednocześnie. Jest to niezwykle przydatne, jeśli chcesz zmienić mapowanie gniazd Realtek, aby mieć, powiedzmy, Rear Green dla słuchawek i Blue dla głośników (za pomocą hdajackretask od alsa-tools).

Aby to osiągnąć, należy bezpośrednio edytować konfigurację miksera Pulseaudio.

1. Mówimy pulseaudio, że słuchawki są zawsze podłączone.

Edytować:

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

Odnaleźć:

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

Zmień nona yes.

Jeśli korzystasz z gniazd z przodu obudowy komputera, zmień [Jack Front Headphone].

2. Domyślnie głośność wyjścia liniowego jest kontrolowana tylko przez suwak Master, a nie przez sam suwak wyjścia liniowego.

Chcemy połączyć Line Out z Master. Dodaj ten fragment kodu na końcu pliku:

[Element Line Out]
switch = mute
volume = merge

3. Musimy całkowicie odciąć Line Out, kiedy używamy słuchawek.

Edytować:

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

Dodaj ten fragment kodu na końcu pliku:

[Element Line Out]
switch = off
volume = off

W niektórych systemach może być konieczne wyłączenie Front przez dodanie tego fragmentu:

[Element Front]
switch = off
volume = off

4. Podobnie jak Pulseaudio, Alsa sama odcina głośniki po podłączeniu słuchawek.

Otwórz alsamixer: alsamixer -c0lubalsamixer -c1

Użyj / do trybu Auto-Mute. Wyłącz tryb automatycznego wyciszania za pomocą . Zamknij alsamixer za pomocą Esc.

Zapisz zmiany za pomocą: alsactl store

5. Uruchom ponownie Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

Teraz masz dwa osobne porty na tym samym zlewie w pulseaudio. Wyciszają się nawzajem, więc możesz przełączyć się na słuchawki, a to wyciszy wyjście liniowe i odwrotnie. Aby przełączać się między portami, możesz użyć miksera dźwięku Gnome lub Plazmy lub zainstalować odpowiednie rozszerzenie pulpitu.


Źródło


2
Nie należy edytować plików bezpośrednio w /usr/share. Jeśli pulseaudio otrzyma aktualizację (na przykład w celu naprawienia błędów), twoje zmiany zostaną usunięte. Zwykle istnieje mechanizm zapewniający zastępowanie plików w /etclub podobny, ale nie wiem konkretnie o pulseaudio.
Robie Basak

@RobieBasak Źródłem tych informacji jest strona Arch Linux. Niestety nie jestem użytkownikiem Arch Linux, więc nie mogę ponownie opublikować Twojego komentarza na ich stronie. Mam nadzieję, że jeden z użytkowników Arch Linux pływających tutaj czyta twój komentarz i tam go publikuje.
WinEunuuchs2Unix

1
@RobieBasak, no cóż, można napisać skrypt, który to robi i wywołać go po zalogowaniu
Robert Riedl

1
Niestety nie zadziałało to dla mnie, ale dziękuję za odpowiedź!
deser

1
@dessert Cała przyjemność po mojej stronie. Ciekawe było zbadanie tego obszaru. Mam nadzieję, że znajdziesz to, czego szukasz.
WinEunuuchs2Unix

9

Aby umożliwić przełączanie między głośnikami i słuchawkami, wykonaj następujące kroki:

  1. Uruchom alsamixer.
  2. W razie potrzeby wybierz kartę dźwiękową za pomocą F6.
  3. Przejdź do „Auto-Mute” za pomocą prawej strzałki .
  4. Wyłącz go za pomocą strzałki w dół .
  5. Naciśnij, Escaby wyjść.

Lub możesz wykonać wszystkie te kroki za pomocą jednego polecenia:

  1. Otwórz terminal
  2. biegać amixer -c 1 set 'Auto-Mute Mode' Disabled

Teraz możesz zmieniać głośniki i słuchawki w PulseAudio Volume Control.

Po zastosowaniu tych instrukcji możesz ułatwić sobie życie, używając wskaźnika przełącznika dźwięku, aby szybko przełączać się między słuchawkami i głośnikami.


2
Nie sądzę, że to zadziała dla wszystkich kombinacji sprzętowych - niektóre systemy (takie jak mój) wydają się używać przełącznika sprzętowego o różnych odmianach, co nie jest nieznane. Na przykład, jeśli podłączysz słuchawki do wzmacniacza gitarowego, głośniki w tym wzmacniaczu będą zwykle wyłączone - i nie będzie w nich żadnych komputerów ....
Charles Green

To zadziałało dla mnie na Realtek ALC887-VD
Paul Praet

Dziękuję Ci. To zadziałało dla mnie. Czy jest jakiś sposób, aby to osiągnąć za pomocą skryptu bash?
ka3ak

1
@ ka3ak Zaktualizowałem odpowiedź dla ciebie
GoodGuyNick

4

hdajackretask to narzędzie do zmiany przypisania funkcji gniazd do różnych sygnałów wejściowych, wyjściowych lub wyłączonych - np. zmień gniazdo mikrofonu w dodatkowe słuchawki lub dlaczego nie sprawisz, aby oba wyjścia liniowe były podłączone do odbiornika surround?

Zainstaluj alsa-tools-gui

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

Uruchom hdajackretasknastępnie Aby zastąpić jeden ze swoich gniazd:

  1. Wybierz kodek
  2. Kliknij pole wyboru „Zastąp” dla tego pinu i wybierz nową żądaną funkcję
  3. Kliknij „Zastosuj teraz”.

    Uwaga: Jeśli gniazdo słuchawkowe ma wbudowany przełącznik sprzętowy, który przekierowuje dźwięk, oznacza to, że jesteś SOL (przepraszam, niestety powodzenia). Jeśli jednak system operacyjny wykryje podłączenie linii do gniazda słuchawkowego, dźwięk najprawdopodobniej nie zostanie przełączony mechanicznie.

Przekonałem się, że jednoczesne przesłonięcie zarówno słuchawek, jak i głośników działa najlepiej.


Zrzut ekranu z hdajackretask, aby przełączyć słuchawki na głośniki:

wprowadź opis zdjęcia tutaj


Po kliknięciu przycisku „Zastosuj teraz” tworzony jest skrypt powłoki, który wprowadza zmiany i monituje o podanie hasła superużytkownika. Skrypt jest również zapisywany, w /tmpktórym można go skopiować i później wykonać za pomocą sudo z wiersza poleceń.

wprowadź opis zdjęcia tutaj

Wykonanie linii poleceń

Jak wspomniano wcześniej, hdajackretasktworzy scenariusz, script.shw /tmppodobnym celu /tmp/hda-jack-retask-QW1EEZ/dla funkcji jack ty pragnienie:

#!/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


Skopiuj ten skrypt gdzie indziej w twoim systemie (inny niż / tmp)

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

Następnie edytuj speaker.sh

cd ~username
nano speaker.sh

Dodaj linię killall pulseaudio &u góry pliku. Jest to konieczne, ponieważ funkcji jack nie można zmienić podczas pulseaudiodziałania. Domyślnie pulseaudioodrodzi się. Zmień także ścieżkę do errors.logpliku /tmplub gdziekolwiek chcesz:

#!/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


Aby uruchomić skrypt:

sudo ./speaker.sh



Z dokumentacji alsa-tools-1.1.5 / hdajackretask / README :

Dokumentacja dla hdajackretask

Większość kart dźwiękowych Intel HDA można w pewnym stopniu odzyskać, tzn. Można ich używać do więcej niż jednej rzeczy. To narzędzie jest graficznym interfejsem użytkownika, aby ułatwić ponowne przypisanie gniazd - np. Zmień wtyczkę Mic w dodatkowe słuchawki, albo dlaczego nie połączyć ich z obydwoma wyjściami liniowymi i podłączyć do odbiornika surround?

Szybki start

Uruchom aplikację „hdajackretask” z wiersza poleceń. Wybierz kodek na górnym pasku; niektóre osoby mają tylko jeden - jeśli masz więcej niż jeden, jeden jest „główny”, a reszta to prawdopodobnie kodeki HDMI.

Wszystkie gniazda (i inne wejścia / wyjścia) są pokazane w „Konfiguracja pinów”. Aby zastąpić jeden ze swoich gniazd, kliknij pole wyboru „Zastąp” dla tego pinu i wybierz żądaną funkcję. Uwaga: Jeśli wybierzesz przesłonięcie „Wyjście liniowe (z tyłu)”, powinieneś również mieć przesłonięcie „Wyjście liniowe (z przodu)”. Przesłonięcie „Wyjście liniowe (środkowe / LFE)” będzie działać tylko z dwoma poprzednimi zastąpieniami i tak dalej.

Możesz wypróbować nową konfigurację, klikając „Zastosuj teraz”. Aby ustawić domyślną konfigurację uruchamiania jako nową, kliknij „Zainstaluj zastąpienie rozruchu”. Wykonanie któregokolwiek z tych wymaga uprawnień administratora, więc prawdopodobnie zostaniesz poproszony o podanie hasła.

Quickend

Spieprzyłeś? Kliknij przycisk „Usuń zastąpienie rozruchu”, a po zakończeniu procesu zamknij komputer, poczekaj chwilę i włącz go ponownie. Powinieneś teraz wrócić tam, gdzie zacząłeś.

Zadziałało?

Jeśli tak, bądź szczęśliwy, dziel się radością, zrób coś miłego!

Jeśli nie, oto kilka rzeczy do wypróbowania:

  • Wejdź do alsamixer i sprawdź, czy są nowe elementy sterujące głośnością, i sprawdź, czy nie są one wyciszone i ustawione na rozsądną wartość.

  • Czasami sterownik nie odcina niepodłączonych styków (jeśli nie są podłączone, po co się martwić?). Możesz to naprawić, wyłączając komputer na chwilę.

  • Zobacz opcję „model = auto” poniżej

Jeśli to nie pomoże, istnieje duże prawdopodobieństwo, że napotkasz sterownik lub ograniczenie sprzętowe. Możesz napotkać błędy sterowników (być może nikt wcześniej nie testował czterech słuchawek!). Jeśli to zrobisz, możesz zgłosić je na liście dyskusyjnej alsa-devel: jednak z powodu braku siły roboczej istnieje szansa, że ​​zostanie to potraktowane z bardzo niskim priorytetem (dźwięk działający po wyjęciu z pudełka dla standardowej konfiguracji to ważniejsze niż obsługa dziwnych konfiguracji). Jednak jeśli jesteś hakerem jądra i opracujesz łatkę, która rozwiązuje twój problem bez zepsucia czegokolwiek innego, istnieje duże prawdopodobieństwo, że zostanie on scalony.

Jeśli podejrzewasz, że problem dotyczy tej aplikacji GUI, a nie sterownika jądra, napisz do mnie e-mail (a jeśli chcesz, dołącz łatkę!). Jeśli tak, napisz na adres diwic@ubuntu.com.

Opcje

  • Pokaż niepodłączone piny Twój BIOS jest odpowiedzialny za ustawienie, które piny kodeka są faktycznie podłączone do czegoś, a które nie. Czasami BIOS jest wadliwy i nie wyświetla wszystkich twoich gniazd. Jeśli masz gniazdo, twój BIOS mówi, że nie masz, możesz spróbować włączyć losowe piny i sprawdzić, czy to działa.

  • Ustaw model = auto Niektóre kodeki, szczególnie starsze i na jądrach 3.8 i niższych, są zakodowane na sztywno w celu użycia określonego modelu, a zatem nie będą dbać o twoje przesłonięcia. W wielu przypadkach i przy całkiem nowym jądrze auto parser działa teraz dobrze również dla tych kodeków. Możesz wymusić użycie automatycznego parsera, zaznaczając to pole. Jednak w niektórych przypadkach jawny model istnieje z jakiegoś powodu, jeśli tak, to utkniesz.

  • Zaawansowane zastąpienie To jest tylko dla ekspertów. Umożliwia wybranie każdego pola konfiguracji osobno, zamiast tylko kilku wstępnie zdefiniowanych wartości, które mają sens. Zauważ, że większość kombinacji tutaj jest nieprawidłowa w taki czy inny sposób, więc prawdopodobnie nie powinieneś z tym zadzierać, chyba że przeczytałeś i zrozumiałeś sekcję „Konfiguracja domyślna” specyfikacji HD Audio. (Który w momencie pisania tego tekstu jest dostępny tutaj: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Wskazówki dotyczące analizatora składni Umożliwia wysyłanie specjalnych „wskazówek” do sterownika, które powodują, że parsowanie zachowuje się inaczej. Pozostaw je w ustawieniu „domyślnym”, chyba że przeczytałeś dokumentację sterownika. (Który w chwili pisania tego tekstu jest dostępny tutaj: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - patrz sekcja „Ciągi podpowiedzi”.)


1
Niestety nie zadziałało to dla mnie, ale dziękuję za odpowiedź! Ponieważ twój zbliża się bardzo do tego, na co liczyłem, i wydaje się, że zapewnia najlepszy sposób na osiągnięcie celu (jeśli to możliwe), otrzymujesz nagrodę - gratulacje! :)
deser

3

W KDE można to zrobić:

ustawienia systemowe -> multimedia -> ustawienia audio i wideo -> karta konfiguracji sprzętu audio> wybierz odpowiednią kartę dźwiękową> w polu Złącze zobaczysz opcję słuchawek i głośników.

Ustawienia systemowe


3
Nie używam KDE, ale Unity ma podobne „Ustawienia dźwięku”. Zmiana wyjściowego urządzenia audio ze słuchawek na głośniki spowoduje jedynie wyciszenie słuchawek. Po podłączeniu słuchawek wydaje się być przełącznikiem sprzętowym.
276318,

1

Przełącznik gnome-shell Extension Audio-Output-Switcher

najprostszym sposobem jest zainstalowanie rozszerzenia przełącznika wyjścia audio

lub możesz sklonować bezpośrednio za pomocą git:

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

zrzut ekranu

To rozszerzenie dodaje mały wpis do menu statusu, które pokazuje aktualnie wybrane urządzenie wyjściowe pulsującego dźwięku. Kliknięcie tego spowoduje otwarcie podmenu ze wszystkimi dostępnymi urządzeniami wyjściowymi i pozwala wybrać, którego z nich użyć.


Niestety nie zadziałało to dla mnie, ale dziękuję za odpowiedź!
deser

0

Możesz użyć Sound Switcher Indicator , jeśli nie masz nic przeciwko dodaniu PPA.

To da ci wskaźnik w zasobniku systemowym, który możesz kliknąć, aby zmienić wejściowe lub wyjściowe źródła dźwięku. Możesz przeczytać więcej na http://yktoo.com/en/software/indicator-sound-switcher .

Metoda terminalowa

Aby zainstalować, za pomocą terminala wprowadź następujące dane.

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

Metoda GUI

Aby zainstalować, używając GUI, wykonaj następujące kroki:

  1. Uruchom aplikację Oprogramowanie i aktualizacje z Unity Dash.

  2. Kliknij na zakładkę „Inne oprogramowanie”. Następnie dodaj następujące nowe źródło:

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

    (Pamiętaj, aby zastąpić „vivid” wersją Ubuntu. Obsługiwane wersje są wymienione na stronie http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ ).

  3. Uruchom Centrum oprogramowania Ubuntu z Unity Dash.

  4. Wyszukaj „Wskaźnik wyboru wejścia / wyjścia dźwięku” i zainstaluj go.

Uwaga: To rozwiązanie nie będzie działać, jeśli system ma przełącznik sprzętowy w gnieździe słuchawkowym, jak sugeruje Terrance powyżej.


Właściwie już to zainstalowałem. Jak w notatce, wygląda na to, że jest przełącznik sprzętowy.
user276318,

0

Stworzyłem ten skrypt dla tego problemu:

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

Wystarczy uruchomić polecenia podane w pliku README repozytorium w swoim terminalu. Spowoduje to pobranie i uruchomienie skryptu.

Te polecenia to:

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.