Cómo cambiar entre auriculares y altavoces sin desconectar los auriculares

23

Cuando conecto mis auriculares, el dispositivo de salida de audio cambia a los auriculares desde mis altavoces.

En lugar de enchufar / desenchufar los auriculares todo el tiempo, lo que eventualmente desgastará mi cable / conector, me gustaría usar un interruptor de software.

Cuando abro la Configuración de sonido y cambio de "Auriculares -> Audio incorporado" a "Salida de línea -> Audio incorporado" no sale sonido de mi altavoz o auriculares.

Abrí alsamixer para ver qué sucede cuando enchufo / desconecto los auriculares.

Auriculares en: Auriculares en

Auriculares fuera: Auriculares fuera

Con los auriculares enchufados, cambié manualmente todas las configuraciones para que coincidan con las configuraciones cuando los auriculares están apagados y todavía no recibí ningún sonido a través del altavoz.

Como nota al margen, cambiar el dispositivo de salida de audio a través de la "Configuración de sonido" provoca los mismos cambios en alsamixer.

usuario276318
fuente
1
Hasta donde sé, es un interruptor de hardware dentro del conector para auriculares que no permitirá el cambio. Una vez que se activa el interruptor, los altavoces se desactivan. ¿Has pensado en usar auriculares Bluetooth?
Terrance
Gracias @Terrance, tuve la sensación de que podría ser algo así, incluso revisé el BIOS para ver si había algo allí. Estoy un poco sorprendido de que tengan una solución de hardware para lo que debería ser un problema de software.
user276318
1
Tenga en cuenta que la tarjeta de sonido puede no ser capaz de generar múltiples salidas de dispositivos: algunas tarjetas de sonido están codificadas en el nivel de hardware para apagar la salida de los altavoces cuando se realiza una conexión de auriculares, y eso no se puede anular ...
Thomas Ward
@Terrance Empecé una recompensa, ¿tal vez quieres profundizar más y escribir una respuesta?
postre
@dessert vea la respuesta de GoodGuyNick a continuación : puede que no funcione en todo el hardware y, en mi experiencia, no separa las salidas (lo que le permitiría enviar el audio del programa A a los altavoces y el programa B a los auriculares al mismo tiempo), pero si simplemente deshabilitar el cambio automático es necesario, eso es lo primero que debe intentar.
quijotesco

Respuestas:

9

Tener los altavoces y los auriculares conectados y cambiar el software sobre la marcha

Por diseño, Pulseaudio apaga automáticamente la salida de línea cuando se conectan los auriculares y en su lugar usa el control deslizante de auriculares. Puede observar este comportamiento en alsamixer. Lo que queremos es que los controles deslizantes de auriculares y salida de línea funcionen por separado y al mismo tiempo. Esto es extremadamente útil si desea reasignar los conectores de Realtek para tener, por ejemplo, Rear Green para auriculares y Blue para altavoces (con la ayuda de hdajackretask de alsa-tools).

Para lograr esto, debe editar directamente la configuración del mezclador Pulseaudio.

1. Le decimos a pulseaudio que los auriculares siempre están enchufados.

Editar:

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

Encontrar:

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

Cambiar noa yes.

Si está utilizando las tomas en la parte frontal de la carcasa de su computadora, cambie en su [Jack Front Headphone]lugar.

2. De manera predeterminada, el volumen de salida de línea está controlado solo por el maestro y no por el control deslizante de salida de línea.

Queremos fusionar Line Out con Master. Agregue este fragmento al final del archivo:

[Element Line Out]
switch = mute
volume = merge

3. Necesitamos cortar completamente Line Out cuando usamos auriculares.

Editar:

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

Agregue este fragmento al final del archivo:

[Element Line Out]
switch = off
volume = off

En algunos sistemas, es posible que también necesite deshabilitar Front agregando este fragmento:

[Element Front]
switch = off
volume = off

4. Al igual que Pulseaudio, Alsa corta los altavoces cuando se enchufan los auriculares.

Abra alsamixer: alsamixer -c0oalsamixer -c1

Use / para el modo Auto-Mute. Desactiva el modo de silencio automático con . Cierre alsamixer con Esc.

Guarde sus cambios con: alsactl store

5. Reinicie Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

Ahora tiene dos puertos separados en el mismo receptor en pulseaudio. Se silencian entre sí, por lo que puede cambiar a auriculares y esto silenciará Line Out y viceversa. Para cambiar entre puertos, puede usar el mezclador de sonido Gnome o Plasma, o instalar la extensión de escritorio adecuada.


Fuente

WinEunuuchs2Unix
fuente
2
No debe editar archivos directamente en /usr/share. Si pulseaudio recibe una actualización (por ejemplo, para corregir errores), sus cambios se borrarán. Por lo general, hay un mecanismo para proporcionar archivos de anulación en /etco similar, pero no sé específicamente sobre pulseaudio.
Robie Basak
@RobieBasak La fuente de esta información es el sitio web de Arch Linux. Desafortunadamente, no soy un usuario de Arch Linux, así que no puedo volver a publicar tu comentario en su sitio. Esperemos que uno de los usuarios de Arch Linux que flota por aquí lea su comentario y lo vuelva a publicar allí.
WinEunuuchs2Unix
1
@RobieBasak, bueno, uno podría escribir un script de envoltura que haga esto e invocarlo después de iniciar sesión
Robert Riedl
1
Lamentablemente no funcionó para mí, pero gracias por tu respuesta.
postre
1
@dessert Un placer. Fue interesante investigar esta área. Espero que encuentres lo que estás buscando.
WinEunuuchs2Unix
9

Para hacer posible cambiar entre altavoces y auriculares, siga estos pasos:

  1. Ejecutar alsamixer.
  2. Si es necesario, seleccione su tarjeta de sonido con F6.
  3. Navegue hasta "Auto-Mute" con la flecha hacia la derecha .
  4. Desactívelo con la flecha hacia abajo .
  5. Presione Escpara salir.

O puede hacer todos estos pasos con un solo comando:

  1. Terminal abierta
  2. correr amixer -c 1 set 'Auto-Mute Mode' Disabled

Ahora puede cambiar entre altavoces y auriculares en el control de volumen PulseAudio.

Después de aplicar estas instrucciones, puede hacer su vida más fácil utilizando el Indicador de conmutador de sonido para cambiar rápidamente entre auriculares y altavoces.

GoodGuyNick
fuente
2
No creo que esto funcione para todas las combinaciones de hardware: algunos sistemas (como el mío) parecen usar un interruptor de hardware de cierta variedad, lo que no se desconoce. Por ejemplo, si se conecta un auricular en un amplificador de guitarra, los altavoces de amplificador que por lo general se apagan - y no hay ningún equipo en esos dispositivos ....
Verde Charles
Esto funcionó para mí en un Realtek ALC887-VD
Paul Praet
Gracias. Funcionó para mi. ¿Hay alguna manera de lograrlo a través del script bash?
ka3ak
1
@ ka3ak He actualizado la respuesta para usted
GoodGuyNick
4

hdajackretask es una herramienta para reasignar la función de sus enchufes para diferentes entradas, salidas o deshabilitados, por ejemplo, convertir su conector de micrófono en un auricular adicional, o ¿por qué no hacer que ambas salidas de línea y conectarlos a su receptor de sonido envolvente?

Instalar alsa-tools-gui

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

Ejecutar hdajackretaskluego para anular uno de tus conectores

  1. Selecciona un códec
  2. Haga clic en la casilla de verificación "Anular" para ese pin y seleccione la nueva función deseada
  3. Haga clic en "Aplicar ahora".

    Nota: Si la toma de auriculares tiene un interruptor de hardware incorporado que redirige el audio, entonces usted es SOL (perdón por suerte). Sin embargo, si el sistema operativo detecta cuando se conecta una línea en la toma de auriculares, lo más probable es que el audio no se cambie mecánicamente.

Descubrí que anular los auriculares y los altavoces al mismo tiempo funciona mejor.


Captura de pantalla de hdajackretask para cambiar los auriculares a los altavoces:

ingrese la descripción de la imagen aquí


Después de hacer clic en "Aplicar ahora", se crea un script de shell para realizar los cambios y solicita la ejecución de la contraseña de superusuario. El script también se guarda en el /tmpque se puede copiar y luego ejecutar con sudo desde la línea de comandos.

ingrese la descripción de la imagen aquí

Ejecución de línea de comando

Como se mencionó anteriormente, hdajackretaskcrea un guión, script.shen /tmpsimilar a la /tmp/hda-jack-retask-QW1EEZ/de las funciones que desee jack:

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


Copie este script en otro lugar de su sistema (que no sea / tmp)

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

Luego edite Speaker.sh

cd ~username
nano speaker.sh

Agregue la línea killall pulseaudio &en la parte superior del archivo. Esto es necesario porque la función jack no se puede cambiar mientras se pulseaudioestá ejecutando. Por defecto pulseaudioreaparecerá. Cambie también la ruta al errors.logarchivo /tmpo donde desee:

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


Para ejecutar el script:

sudo ./speaker.sh



De la documentación de alsa-tools-1.1.5 / hdajackretask / README :

Documentación para hdajackretask

La mayoría de las tarjetas de sonido Intel HDA son, en cierto grado, reprogramables, es decir, se pueden usar para más de una cosa. Esta herramienta es una GUI para facilitar la tarea de volver a realizar la toma de sus tomas, por ejemplo, convertir su toma de micrófono en un auricular adicional, o ¿por qué no hacer que ambas salidas de línea y conectarlas a su receptor de sonido envolvente?

Inicio rápido

Inicie la aplicación "hdajackretask" desde la línea de comandos. Seleccione un códec en la barra superior; algunas personas solo tienen uno: si tiene más de uno, uno es el "principal", y el resto probablemente sean códecs HDMI.

Todos los conectores (y otras entradas / salidas) se muestran en "Configuración de pines". Para anular uno de sus conectores, haga clic en la casilla de verificación "Anular" para ese pin y seleccione la función deseada. Nota: Si selecciona una anulación de "Salida de línea (posterior)", también debe tener una anulación de "Salida de línea (frontal)". Una anulación "Line out (Center / LFE)" solo funcionará con las dos anulaciones anteriores, y así sucesivamente.

Puede probar su nueva configuración haciendo clic en "Aplicar ahora". Para hacer que su nueva configuración sea el arranque predeterminado, haga clic en "Instalar anulación de arranque". Hacer cualquiera de estos requiere privilegios de root, por lo que es probable que se le solicite su contraseña.

Quickend

¿Te equivocaste? Haga clic en el botón "Eliminar anulación de arranque" y, una vez que el proceso se haya completado, apague la computadora, espere un momento y vuelva a encenderla. Ahora debería estar de vuelta donde comenzó.

¿Funcionó?

Si fue así, sé feliz, comparte tu alegría, ¡haz algo lindo!

Si no fue así, aquí hay algunas cosas para probar:

  • Vaya a alsamixer y vea si hay nuevos controles de volumen, y vea si están sin silenciar y configurados en un valor razonable.

  • A veces, el controlador no apaga los pines desconectados (si no están conectados, ¿por qué preocuparse?). Es posible que pueda solucionar esto apagando la computadora por un tiempo.

  • Vea la opción "modelo = auto" a continuación

Si esto no ayuda, es muy probable que se encuentre con un controlador o una limitación de hardware. Es posible que se encuentre con errores del controlador (¡tal vez nadie haya probado cuatro auriculares antes!). Si lo hace, no dude en informarlos en la lista de correo de alsa-devel: sin embargo, debido a la falta de mano de obra, es probable que esto se resuelva con una prioridad muy baja (tener un sonido que funcione de forma predeterminada para una configuración estándar, es más importante que admitir configuraciones extrañas). Sin embargo, si eres un pirata informático del kernel y se te ocurre un parche que resuelve tu problema sin arruinar nada más, es muy probable que se fusionen.

Si sospecha que el problema es con esta aplicación GUI en lugar del controlador del kernel, no dude en escribirme un correo electrónico (y si lo desea, ¡incluya un parche!). Si es así, escriba a [email protected].

Opciones

  • Mostrar pines no conectados Su BIOS es responsable de configurar qué pines en el códec que están realmente conectados a algo y cuáles no. A veces, el BIOS tiene errores y no mostrará todas sus tomas. Si tiene un conector que su BIOS dice que no tiene, puede intentar habilitar pines aleatorios y ver si funciona.

  • Establecer modelo = automático Algunos códecs, especialmente los más antiguos y en los núcleos 3.8 y posteriores, están codificados para usar un modelo específico y, por lo tanto, no se preocuparán por sus anulaciones. En muchos casos y con un kernel razonablemente nuevo, el analizador automático ahora también funciona bien para estos códecs. Puede forzar el uso del analizador automático marcando esta casilla. Sin embargo, en algunos casos, el modelo explícito está ahí por una razón, si es así, estás atascado.

  • Anulación avanzada Esto es solo para expertos. Te hace seleccionar cada campo de configuración individualmente, en lugar de solo unos pocos valores predefinidos que tienen sentido. Tenga en cuenta que la mayoría de las combinaciones aquí no son válidas de una forma u otra, por lo que probablemente no debería meterse con esto a menos que haya leído y entendido la sección "Configuración predeterminada" de la especificación de HD Audio. (Que, en el momento de escribir este artículo, está disponible aquí: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Sugerencias del analizador Esto le permite enviar "sugerencias" especiales al controlador que hacen que el análisis se comporte de manera diferente. Déjelos en la configuración "predeterminada" a menos que haya leído la documentación del controlador. (Que, en el momento de escribir este artículo, está disponible aquí: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt : consulte la sección "Sugerencias de cadenas").

abejorro
fuente
1
Lamentablemente no funcionó para mí, ¡pero gracias por tu respuesta! Como el suyo se acerca mucho a lo que esperaba y parece proporcionar la mejor manera de lograr el objetivo (si es posible), se le otorga la recompensa: ¡felicidades! :)
postre
3

En KDE esto se puede hacer:

configuración del sistema -> multimedia -> configuración de audio y video -> pestaña de configuración de hardware de audio> seleccione la tarjeta de sonido adecuada> en Conector verá la opción de auriculares y altavoces.

ajustes del sistema

haytham-med haytham
fuente
3
No estoy usando kde pero Unity tiene una "Configuración de sonido" similar. Cambiar el dispositivo de salida de audio de auriculares a altavoces solo silenciará los auriculares. Parece haber un cambio de hardware cuando los auriculares están conectados.
user276318
1

Gnome-Shell Extension Audio-Output-Switcher

la forma más simple es simplemente instalar la extensión del conmutador de salida de audio

o puedes clonar con git directamente:

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

captura de pantalla

Esta extensión agrega una pequeña entrada al menú de estado que muestra el dispositivo de salida de audio de pulso seleccionado actualmente. Al hacer clic en eso, se abrirá un submenú con todos los dispositivos de salida disponibles y le permite elegir cuál usar.

Jastria Rahmat
fuente
Lamentablemente no funcionó para mí, pero gracias por tu respuesta.
postre
0

Puede usar el Indicador de conmutador de sonido , si no le importa agregar un PPA.

Esto le dará un indicador en la bandeja del sistema en el que puede hacer clic para cambiar las fuentes de audio de entrada o salida. Puede leer más en http://yktoo.com/en/software/indicator-sound-switcher .

Método terminal

Para instalar, usando un terminal, ingrese lo siguiente.

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

Método GUI

Para instalar, utilizando la GUI, siga estos pasos:

  1. Inicie la aplicación Software & Updates desde Unity Dash.

  2. Haga clic en la pestaña "Otro software". Luego agregue la siguiente nueva fuente:

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

    (Recuerde reemplazar "vívido" con su versión de Ubuntu. Las versiones compatibles se enumeran en http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ ).

  3. Inicie el Centro de software de Ubuntu desde Unity Dash.

  4. Busque "Indicador selector de entrada / salida de sonido" e instálelo.

Nota: Esta solución no funcionará si su sistema tiene un interruptor de hardware dentro del conector para auriculares, como Terrance sugirió anteriormente.

PJ Singh
fuente
De hecho, ya tenía esto instalado. Como en su nota, parece que hay un interruptor de hardware.
user276318
0

He creado este script para este problema:

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

Simplemente ejecute los comandos dados en el archivo README del repositorio en su terminal. Esto descarga y ejecuta el script.

Esos comandos son:

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
Biplob SD
fuente