Come passare da cuffie a altoparlanti senza scollegare le cuffie


23

Quando inserisco le cuffie, il dispositivo di uscita audio passa alle cuffie dagli altoparlanti.

Invece di collegare / scollegare le cuffie tutto il tempo, il che alla fine consumerà il mio cavo / jack, vorrei semplicemente usare un interruttore software.

Quando apro Impostazioni audio e passaggio da "Cuffie -> Audio incorporato" a "Uscita linea -> Audio incorporato" non viene emesso alcun suono dall'altoparlante o dalle cuffie.

Ho aperto alsamixer per vedere cosa succede quando collego / scollego le cuffie.

Cuffie in: Cuffie in

Uscita cuffie: Cuffie fuori

Con le cuffie collegate, ho modificato manualmente tutte le impostazioni in modo che corrispondessero alle impostazioni quando le cuffie sono spente e non ho ancora ricevuto alcun suono dall'altoparlante.

Come nota a margine, la modifica del dispositivo di uscita audio tramite "Impostazioni audio" provoca le stesse modifiche ad alsamixer.


1
Per quanto ne so, è un interruttore hardware all'interno del jack delle cuffie che non consente il passaggio. Una volta attivato l'interruttore, gli altoparlanti sono disabilitati. Hai forse pensato di usare le cuffie Bluetooth?
Terrance,

Grazie @Terrance, ho avuto la sensazione che potesse essere qualcosa del genere, ho anche controllato il BIOS per vedere se c'era qualcosa dentro. Sono solo un po 'sorpreso che avrebbero una soluzione hardware per quello che dovrebbe essere un problema software.
user276318

1
Tieni presente che la scheda audio potrebbe non essere in grado di emettere più dispositivi - alcune schede audio sono codificate a livello hardware per disattivare l'uscita degli altoparlanti quando viene stabilita una connessione per cuffie e non è possibile ignorare ...
Thomas Ward

@Terrance Ho iniziato una taglia, forse vuoi approfondire ulteriormente e scrivere una risposta?
dessert,

@dessert vedi la risposta di GoodGuyNick di seguito : potrebbe non funzionare su tutto l'hardware e, nella mia esperienza, non separa le uscite (il che ti permetterebbe di inviare l'audio del programmaA agli altoparlanti e il programmaB alle cuffie contemporaneamente), ma se è sufficiente disabilitare l'auto-switch, questa è la prima cosa da provare.
donchisciottesco

Risposte:


9

Avere sia gli altoparlanti che le cuffie collegati e passare al volo il software

Per impostazione predefinita, Pulseaudio disattiva automaticamente Line Out quando le cuffie sono collegate e utilizza invece il cursore Cuffie. Puoi osservare questo comportamento in alsamixer. Quello che vogliamo è che i cursori Cuffie e Line Out funzionino separatamente e allo stesso tempo. Ciò è estremamente utile se si desidera rimappare le prese di Realtek per avere, per esempio, Rear Green per cuffie e Blue per altoparlanti (con l'aiuto di hdajackretask di alsa-tools).

Per raggiungere questo obiettivo, è necessario modificare direttamente la configurazione del mixer Pulseaudio.

1. Diciamo a pulseaudio che le cuffie sono sempre collegate.

Modificare:

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

Trova:

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

Cambia noin yes.

Se stai usando le prese nella parte anteriore della custodia del computer, cambia [Jack Front Headphone]invece.

2. Per impostazione predefinita, il volume di Line Out è controllato solo dal Master e non dal cursore Line Out stesso.

Vogliamo unire Line Out con Master. Aggiungi questo snippet alla fine del file:

[Element Line Out]
switch = mute
volume = merge

3. Dobbiamo interrompere completamente l'allineamento quando usiamo le cuffie.

Modificare:

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

Aggiungi questo snippet alla fine del file:

[Element Line Out]
switch = off
volume = off

Su alcuni sistemi potresti anche dover disabilitare Front aggiungendo questo snippet:

[Element Front]
switch = off
volume = off

4. Come Pulseaudio, Alsa stessa interrompe gli altoparlanti quando le cuffie sono collegate.

Apri alsamixer: alsamixer -c0oalsamixer -c1

Utilizzare / per disattivare automaticamente la modalità. Disabilitare la modalità di silenziamento automatico con . Chiudi alsamixer con Esc.

Salva le modifiche con: alsactl store

5. Riavvia Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

Ora hai due porte separate sullo stesso sink in pulseaudio. Si disattivano a vicenda, quindi è possibile passare alle cuffie e questo disattiverà Line Out e viceversa. Per passare da una porta all'altra è possibile utilizzare il mixer audio Gnome o Plasma o installare l'estensione desktop appropriata.


fonte


2
Non dovresti modificare i file direttamente in /usr/share. Se pulseaudio riceve un aggiornamento (ad esempio per correggere i bug), le modifiche verranno cancellate. Di solito c'è un meccanismo per fornire file di override /etco simili, ma non conosco specificamente pulseaudio.
Robie Basak,

@RobieBasak La fonte di queste informazioni è il sito Web Arch Linux. Sfortunatamente non sono un utente Arch Linux, quindi non posso ripubblicare il tuo commento sul loro sito. Spero che uno degli utenti Arch Linux che fluttua qui legga il tuo commento e lo riponga lì.
WinEunuuchs2Unix

1
@RobieBasak, beh, si potrebbe scrivere uno script wrapper che lo fa e invocarlo dopo il login
Robert Riedl

1
Purtroppo non ha funzionato per me, ma grazie per la tua risposta!
dessert,

1
@dessert Il mio piacere. È stato interessante ricercare in quest'area. Spero che trovi quello che stai cercando.
WinEunuuchs2Unix

9

Per rendere possibile il passaggio tra altoparlanti e cuffie, attenersi alla seguente procedura:

  1. Corri alsamixer.
  2. Se necessario, selezionare la scheda audio con F6.
  3. Passare a "Silenziamento automatico" con la freccia destra .
  4. Disabilitalo con la freccia giù .
  5. Premere Escper uscire.

Oppure puoi fare tutti questi passaggi con un solo comando:

  1. Terminale aperto
  2. correre amixer -c 1 set 'Auto-Mute Mode' Disabled

Ora puoi cambiare tra altoparlanti e cuffie nel controllo del volume PulseAudio.

Dopo aver applicato queste istruzioni puoi semplificarti la vita usando l' indicatore Sound Switcher per passare rapidamente da cuffie a altoparlanti.


2
Non penso che funzionerà per tutte le combinazioni hardware - alcuni sistemi (come il mio) sembrano usare un interruttore hardware di una certa varietà, che non è sconosciuto. Ad esempio, se si collega una cuffia a un amplificatore per chitarra, gli altoparlanti in quell'amplificatore di solito verranno spenti - e non ci sono computer in quei dispositivi ....
Charles Green

Questo ha funzionato per me su un Realtek ALC887-VD
Paul Praet

Grazie. Ha funzionato per me. C'è un modo per realizzarlo tramite lo script bash?
ka3ak,

1
@ ka3ak Ho aggiornato la risposta per te
GoodGuyNick,

4

hdajackretask è uno strumento per riassegnare la funzione dei tuoi jack per diversi input, output o disabilitati - ad esempio, trasformare il tuo jack Mic in una cuffia aggiuntiva, o perché non renderli entrambi in uscita e collegarli al ricevitore surround?

Installa alsa-tools-gui

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

Esegui hdajackretaskquindi Per ignorare uno dei tuoi jack:

  1. Seleziona un codec
  2. Fare clic sulla casella di controllo "Sostituisci" per quel pin e selezionare la nuova funzione desiderata
  3. Fai clic su "Applica ora"

    Nota: se il jack per cuffie ha un interruttore hardware incorporato che reindirizza l'audio, allora sei SOL (mi dispiace per fortuna). Tuttavia, se il sistema operativo rileva quando una linea è collegata al jack delle cuffie, è molto probabile che l'audio non venga commutato meccanicamente.

Ho scoperto che l'override sia delle cuffie che degli altoparlanti funziona allo stesso tempo.


Screenshot di hdajackretask per passare dalle cuffie agli altoparlanti:

inserisci qui la descrizione dell'immagine


Dopo aver fatto clic su "Applica ora" viene creato uno script di shell per apportare le modifiche e richiede l'esecuzione della password del superutente. Lo script viene anche salvato in /tmpcui può essere copiato e successivamente eseguito con sudo dalla riga di comando.

inserisci qui la descrizione dell'immagine

Esecuzione dalla riga di comando

Come accennato in precedenza, hdajackretaskcrea uno script, script.shin modo /tmpsimile alle /tmp/hda-jack-retask-QW1EEZ/funzioni jack che desideri:

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


Copia questo script da qualche altra parte sul tuo sistema (diverso da / tmp)

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

Quindi modifica speaker.sh

cd ~username
nano speaker.sh

Aggiungi la riga killall pulseaudio &nella parte superiore del file. Ciò è necessario perché la funzione jack non può essere modificata mentre pulseaudioè in esecuzione. Per impostazione predefinita pulseaudioverrà rigenerata. Cambia anche il percorso del errors.logfile /tmpo dove preferisci:

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


Per eseguire lo script:

sudo ./speaker.sh



Dalla documentazione alsa-tools-1.1.5 / hdajackretask / README :

Documentazione per hdajackretask

La maggior parte delle schede audio Intel HDA sono in qualche modo recuperabili, ovvero possono essere utilizzate per più di una cosa. Questo strumento è una GUI che semplifica il recupero dei jack: ad esempio, trasformare il jack del microfono in una cuffia aggiuntiva, o perché non renderli entrambi in uscita e collegarli al ricevitore surround?

Avvio veloce

Avviare l'applicazione "hdajackretask" dalla riga di comando. Seleziona un codec nella barra in alto; alcune persone ne hanno solo uno - se ne hai più di uno, uno è quello "principale", e il resto sono probabilmente codec HDMI.

Tutti i jack (e altri ingressi / uscite) sono mostrati in "Configurazione dei pin". Per sovrascrivere uno dei tuoi jack, fai clic sulla casella di controllo "Sostituisci" per quel pin e seleziona la funzione desiderata. Nota: se si seleziona un override "Line out (retro)", si dovrebbe anche avere un override "Line out (fronte)". Un override "Line out (Center / LFE)" funzionerà solo con i due override precedenti e così via.

Puoi provare la tua nuova configurazione facendo clic su "Applica ora". Per rendere la tua nuova configurazione predefinita all'avvio, fai clic su "Installa sostituzione di avvio". Fare uno di questi richiede i privilegi di root, quindi probabilmente ti verrà chiesta la password.

Quickend

Hai sbagliato? Fai clic sul pulsante "Rimuovi boot override" e, una volta completato il processo, spegni il computer, attendi qualche istante e riaccendilo. Ora dovresti tornare da dove hai iniziato.

Ha funzionato?

Se lo ha fatto, sii felice, condividi la tua gioia, fai qualcosa di bello!

In caso contrario, ecco alcune cose da provare:

  • Andare su alsamixer e vedere se ci sono nuovi controlli del volume, e vedere se non sono silenziati e impostati su un valore ragionevole.

  • A volte il driver non spegne i pin non collegati (se non sono collegati, perché preoccuparsi?). Potresti riuscire a risolvere questo problema spegnendo completamente il computer per un po '.

  • Vedi l'opzione "model = auto" di seguito

Se ciò non aiuta, è molto probabile che si verifichi un driver o una limitazione hardware. Potresti imbatterti in bug nel driver (forse nessuno ha mai testato quattro cuffie prima!). Se lo fai, sentiti libero di segnalarli sulla mailing list di alsa-devel: tuttavia, a causa della mancanza di manodopera, è probabile che questo verrà trattato con una priorità molto bassa (avere un suono pronto all'uso per una configurazione standard, è più importante che supportare strane configurazioni). Tuttavia, se sei un hacker del kernel e ti viene in mente una patch che risolve il tuo problema senza rovinare qualcos'altro, le probabilità sono piuttosto alte che verranno unite.

Se sospetti che il problema sia con questa applicazione GUI piuttosto che con il driver del kernel, sentiti libero di scrivermi una e-mail (e se vuoi, includi una patch!). In tal caso, scrivi a diwic@ubuntu.com.

Opzioni

  • Mostra pin non collegati Il BIOS è responsabile della configurazione dei pin sul codec che sono effettivamente connessi a qualcosa e quali non lo sono. A volte il BIOS è difettoso e non mostra tutti i tuoi jack. Se hai un jack il tuo BIOS dice di no, puoi provare ad abilitare i pin casuali e vedere se funziona.

  • Imposta modello = auto Alcuni codec, specialmente quelli più vecchi e sui kernel 3.8 e precedenti, sono hardcoded per usare un modello specifico, e quindi non si preoccuperanno dei tuoi override. In molti casi e con un kernel ragionevolmente nuovo, il parser automatico ora funziona bene anche con questi codec. È possibile forzare l'utilizzo del parser automatico selezionando questa casella. In alcuni casi, tuttavia, il modello esplicito è lì per un motivo, in tal caso, sei bloccato.

  • Sostituzione avanzata Questo è solo per gli esperti. Ti consente di selezionare ogni campo di configurazione singolarmente, anziché solo alcuni valori predefiniti che hanno senso. Nota che la maggior parte delle combinazioni qui non sono valide in un modo o nell'altro, quindi probabilmente non dovresti scherzare con questo a meno che tu non abbia letto e compreso la sezione "Configurazione predefinita" della specifica Audio HD. (Che, al momento della stesura di questo documento, è disponibile qui: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Suggerimenti del parser Ciò consente di inviare "driver" speciali al driver che causano un comportamento diverso dell'analisi. Lasciateli sull'impostazione "predefinita" a meno che non abbiate letto la documentazione del driver. (Che, al momento della stesura di questo articolo, è disponibile qui: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - vedere la sezione "Stringhe di suggerimenti").


1
Purtroppo non ha funzionato per me, ma grazie per la tua risposta! Dato che il tuo si avvicina molto a quello che speravo e sembra fornire il modo migliore per raggiungere l'obiettivo (se possibile) ti viene assegnato il premio: congratulazioni! :)
dessert

3

In KDE questo può essere fatto:

impostazioni di sistema -> multimedia -> impostazioni audio e video -> scheda di configurazione hardware audio> seleziona la scheda audio appropriata> sotto Connettore vedrai l'opzione cuffie e altoparlanti.

Impostazioni di sistema


3
Non sto usando kde ma Unity ha una "Impostazioni audio" simile. La modifica del dispositivo di uscita audio dalle cuffie agli altoparlanti disattiverà le cuffie. Sembra essere un interruttore hardware quando le cuffie sono collegate.
user276318

1

Switcher di uscita audio con estensione Gnome-Shell

il modo più semplice è installare l'estensione dello switcher di uscita audio

oppure puoi clonare direttamente con git:

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

immagine dello schermo

Questa estensione aggiunge una piccola voce al menu di stato che mostra il dispositivo di uscita audio ad impulsi attualmente selezionato. Facendo clic su di esso si aprirà un sottomenu con tutti i dispositivi di output disponibili e sceglierai quale utilizzare.


Purtroppo non ha funzionato per me, ma grazie per la tua risposta!
dessert,

0

Se non ti dispiace aggiungere un PPA, potresti usare l' indicatore del commutatore audio .

Ciò fornirà un indicatore nella barra delle applicazioni su cui è possibile fare clic per modificare le fonti audio di input o output. Puoi leggere di più su http://yktoo.com/en/software/indicator-sound-switcher .

Metodo terminale

Per installare, usando un terminale inserire quanto segue.

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

Metodo GUI

Per installare, utilizzando la GUI, attenersi alla seguente procedura:

  1. Avvia l' app Software e aggiornamenti da Unity Dash.

  2. Fare clic sulla scheda "Altro software". Quindi aggiungere la seguente nuova fonte:

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

    (Ricorda di sostituire "vivid" con la tua versione di Ubuntu. Le versioni supportate sono elencate su http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ ).

  3. Avviare Ubuntu Software Center da Unity Dash.

  4. Cerca "Indicatore selettore ingresso / uscita audio" e installalo.

Nota: questa soluzione non funzionerà se il sistema ha un interruttore hardware all'interno del jack per cuffie, come suggerito da Terrance sopra.


In realtà l'avevo già installato. Come nella tua nota, sembra che ci sia un interruttore hardware.
user276318

0

Ho creato questo script per questo problema:

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

Basta eseguire i comandi dati nel file README del repository nel proprio terminale. Questo scarica ed esegue lo script.

Questi comandi sono:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.