18.04, 16.04 Auriculares detectados, pero no se encienden automáticamente después del inicio

26

Editar: el problema parece afectar también a 18.04.

Tengo este problema desde la 15.10, pero realmente comenzó a rechinar mis engranajes después de hacer una actualización a 16.04.

Digamos que tengo los auriculares enchufados. Reinicio \ relog en \ boot en ubuntu y reproduzco la música. Sale de los altavoces integrados en lugar de los auriculares .

Puedo ver que los auriculares se detectan dentro del menú de configuración de audio , pero solo después de cambiar el dispositivo o volver a enchufarlos funcionan.

Esto fue más fácil de ignorar en 15.10, porque en aquel entonces, después de un inicio, todo estaba silenciado. Auriculares y altavoces, si los auriculares estaban presentes antes de dicha puesta en marcha.

Agregaría registros a la pregunta, pero realmente no sé cuál o cómo obtenerlos (estoy abierto a sugerencias). El problema ocurre en una computadora portátil Dell Inspiron 3537 , tiene una tarjeta de sonido Realtek dentro.

Tiene un conector de salida en el lateral, que actúa como entrada y como salida.


Salida de pacmd listcards

2 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_03.0>
    driver: <module-alsa-card.c>
    owner module: 6
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel HDMI"
        alsa.long_card_name = "HDA Intel HDMI at 0xc0810000 irq 49"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:03.0"
        sysfs.path = "/devices/pci0000:00/0000:00:03.0/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "0a0c"
        device.product.name = "Haswell-ULT HD Audio Controller"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Wbudowany dźwięk"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        output:hdmi-stereo: Wyjście Digital Stereo (HDMI) (priority 5400, available: unknown)
        output:hdmi-surround: Wyjście Digital Surround 5.1 (HDMI) (priority 300, available: unknown)
        output:hdmi-surround71: Wyjście Digital Surround 7.1 (HDMI) (priority 300, available: unknown)
        output:hdmi-stereo-extra1: Wyjście Digital Stereo (HDMI 2) (priority 5200, available: unknown)
        output:hdmi-surround-extra1: Wyjście Digital Surround 5.1 (HDMI 2) (priority 100, available: unknown)
        output:hdmi-surround71-extra1: Wyjście Digital Surround 7.1 (HDMI 2) (priority 100, available: unknown)
        output:hdmi-stereo-extra2: Wyjście Digital Stereo (HDMI 3) (priority 5200, available: unknown)
        output:hdmi-surround-extra2: Wyjście Digital Surround 5.1 (HDMI 3) (priority 100, available: unknown)
        output:hdmi-surround71-extra2: Wyjście Digital Surround 7.1 (HDMI 3) (priority 100, available: unknown)
        off: Wyłączone (priority 0, available: unknown)
    active profile: <output:hdmi-stereo>
    sinks:
        alsa_output.pci-0000_00_03.0.hdmi-stereo/#0: Wbudowany dźwięk Digital Stereo (HDMI)
    sources:
        alsa_output.pci-0000_00_03.0.hdmi-stereo.monitor/#0: Monitor of Wbudowany dźwięk Digital Stereo (HDMI)
    ports:
        hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
        hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "video-display"
    index: 1
    name: <alsa_card.pci-0000_00_1b.0>
    driver: <module-alsa-card.c>
    owner module: 7
    properties:
        alsa.card = "1"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xc0814000 irq 48"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card1"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9c20"
        device.product.name = "8 Series HD Audio Controller"
        device.form_factor = "internal"
        device.string = "1"
        device.description = "Wbudowany dźwięk"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        input:analog-stereo: Wejście Analogowe stereo (priority 60, available: unknown)
        output:analog-stereo: Wyjście Analogowe stereo (priority 6000, available: unknown)
        output:analog-stereo+input:analog-stereo: Analogowy dupleks stereo (priority 6060, available: unknown)
        off: Wyłączone (priority 0, available: unknown)
    active profile: <output:analog-stereo+input:analog-stereo>
    sinks:
        alsa_output.pci-0000_00_1b.0.analog-stereo/#1: Wbudowany dźwięk Analogowe stereo
    sources:
        alsa_output.pci-0000_00_1b.0.analog-stereo.monitor/#1: Monitor of Wbudowany dźwięk Analogowe stereo
        alsa_input.pci-0000_00_1b.0.analog-stereo/#2: Wbudowany dźwięk Analogowe stereo
    ports:
        analog-input-internal-mic: Wewnętrzny mikrofon (priority 8900, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-headphone-mic: Mikrofon (priority 8700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-headset-mic: Mikrofon na słuchawkach (priority 8700, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-output-speaker: Głośniki (priority 10000, latency offset 0 usec, available: unknown)
            properties:
                device.icon_name = "audio-speakers"
        analog-output-headphones: Słuchawki (priority 9000, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-headphones"
Błażej Michalik
fuente
1
Esto parece incorrecto (en el sentido de que PulseAudio lo fastidia): los auriculares enchufados deben elegirse incluso en el primer intento. Haz un rm -rf ~/.pulse ~/.config/pulseantes que todo lo demás. Esto hace que PA use la configuración predeterminada. ¿El problema persiste?
emk2203
Si lo hace. Todo está como estaba, los auriculares aún detectados. Me aseguré dos veces de que rm funcionó: ninguno de los directorios anteriores estaba presente. Luego reinicié.
Błażej Michalik
¿Podrías publicar pacmd list-cards?
emk2203
@ emk2203 Hecho. Algunas palabras clave están en polaco, por lo que: "wyjście" == "output", "wejście" == "input", "wewnętrzny mikrofon" == "micrófono interno".
Błażej Michalik
¿Qué reproductor de música estás usando?
userDepth

Respuestas:

7

Mi opinión sobre esto sería la siguiente aprovechando PulseAudio. Suponiendo que cuando inicie sesión en Ubuntu, siempre tenga sus auriculares conectados, lo siguiente se asegurará de que cuando inicie Ubuntu se establezca automáticamente como Entrada y Salida predeterminadas (suponiendo que desee ambas).

En Ubuntu, vaya a la terminal y escriba lo siguiente, del cual solo reunirá el Número de índice:

Para sus DISPOSITIVOS DE SALIDA :

pacmd list-sinks - Habrá mucha información, pero busque los números de índice y el dispositivo correspondiente que será su nuevo dispositivo de salida predeterminado.

Para sus DISPOSITIVOS DE ENTRADA :

pacmd list-sink-inputsO BIEN pacmd list-samples: habrá mucha información, pero busque los números de índice y el dispositivo correspondiente que será su nuevo dispositivo de entrada predeterminado. Use las muestras de lista en el caso de las entradas de sumidero de lista que no muestra.

Hasta este punto, en Ubuntu, con los auriculares conectados, debe tener 2 números de índice. Uno para su entrada y salida. Ahora iremos y editaremos la configuración predeterminada de pulseaudio:

sudo nano /etc/pulse/default.pa

Vaya a la última línea y simplemente agregue lo siguiente:

set-default-sink 1 - Esto corresponde a la Fuente de salida después de mirar el índice de pacmd list-sinks. El 1 es el índice, así que cámbielo por el que tiene.

set-default-source 5- Esto corresponde a las fuentes de entrada después de mirar el índice de pacmd list-sink-inputso pacmd list-samples. El número 5 es el índice, así que cámbielo por el que tiene.

Guarde el archivo y reinicie la computadora para probar. La prueba implica verificar si obtuvo el valor de índice correcto, ya que algunos dispositivos tienen nombres similares (como fuentes de audio NVIDIA o INTEL).

Si todo está configurado correctamente, cada vez que inicie su computadora, debería ver que Ubuntu establece la entrada / salida predeterminada en sus auriculares. Como está hablando de auriculares, para la reducción de ruido puede usar mi otra respuesta para ayudarlo con eso: ¿ eliminación de ruido en tiempo real con PulseAudio?

NOTA: También puede usar pacmd list-sourcespara ver todos los dispositivos y también, en lugar de usar el número de índice, puede usar el nombre del dispositivo asignado, que se parece a esto:

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancelpara darte una idea de qué nombres buscar (Super largo lo sé). Los nombres son más precisos de usar pero más difíciles de recordar, por lo que tiene una opción aquí para usar uno u otro. El resultado final usando un nombre, sería así:

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel en el archivo default.pa, solo para darle una idea.

Para una opción de GUI, recomiendo pavucontrolPulseAudio Volume Control. Ofrece una opción para configurar un dispositivo como predeterminado / alternativo para dispositivos de entrada y salida. Usar ambas técnicas puede darte lo que quieres.

Luis Alvarado
fuente
No creo que funcione, pero podrías estar en algo. El caso es que en mi máquina tengo dos dispositivos de sonido: Intel HDMI y Realtek analógico. Los índices son: 0 - HDMI, 1 - analógico. El dispositivo Realtek tiene dos puertos: altavoces y auriculares (con prioridades de 10k y 9k respectivamente, ¿estos números tienen que ver con la prioridad de conmutación?). Hasta donde puedo ver, estos puertos no se pueden indexar en el default.paarchivo de la manera que usted ha presentado.
Błażej Michalik
Hola @ BłażejMichalik, en realidad esto fue probado en la computadora de mi esposa y en la mía antes de publicarlo aquí. Para la confusión del índice, puede usar el nombre completo como se menciona al final con la NOTA.
Luis Alvarado
2
Bueno, está bien, funciona, pero también desactiva los altavoces de forma predeterminada, incluso si no hay auriculares. Este es el comportamiento que experimenté con 15.10. No es una solución per se.
Błażej Michalik
Sí, como mencioné, debe tener los auriculares conectados, ya que Ubuntu no asumirá que si los conecta, debería usarlos de forma predeterminada. Para los altavoces que se apagan, no tengo idea, ya que esto solo establece los predeterminados, no deshabilita los demás. Esto suele suceder si usa una computadora portátil con un conector jack (entrada / salida al mismo tiempo). Preguntaría si su computadora portátil tiene 2 conexiones (una para micrófono, otra para salida) o si tiene una. Si su respuesta es una, entonces ahora tiene una idea de por qué aparecen los problemas.
Luis Alvarado
Sí, ese es exactamente el caso, no sabía que eso es importante.
Błażej Michalik
3

Si sus dispositivos de sonido son 0 - HDMI y 1 - analógico, puede cambiar a auriculares con

$ pacmd set-sink-port 1 analog-output-headphones

Para hacerlo permanente, edite /etc/pulse/default.pay en la parte inferior debajo de ### Make some devices defaultput:

set-default-sink 1
set-sink-port 1 analog-output-headphones

Todo debería funcionar ahora como se desee. Asegúrese de volver a comentar esto cuando esté cansado de usar los auriculares.

emk2203
fuente
1
Esto solo hace que ubuntu cambie a auriculares al inicio, pase lo que pase. No hay sonido en los altavoces ahora al inicio, incluso si los auriculares están desconectados. Este es el comportamiento que experimenté con 15.10.
Błażej Michalik
No hay nada mejor que eso, me temo. Enlaces: bbs.archlinux.org/viewtopic.php?id=175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010 como el estado actual de la técnica . Realmente espero que alguien pueda encontrar una solución mejor ...
emk2203
Meh ... podría hacer una solución alternativa. Puedo cocinar uno yo mismo, no hay problema. Pero simplemente arruina las cosas. Cada 6 meses, tengo que revisar los registros de cambios de Ubuntu y mi lista de personal para ver dónde se rompieron las cosas debido a mi negligencia o la de otra persona, o simplemente debido a una actualización de alguna API o interfaz. Es por eso que ya no hago esto: hace un desastre, y no vale la pena el tiempo que probablemente perderé, después de encontrar una inevitable actualización de algo.
Błażej Michalik
1
Si puede hacer una solución alternativa que 1) selecciona los auriculares solo si están enchufados, de lo contrario, los altavoces son predeterminados y 2) cambia automáticamente a auriculares y silencia los altavoces cuando los conecta, me interesaría mucho.
emk2203
Esto funcionó para mí en Debian Stretch, aunque tengo que usar 0 en lugar de 1, que es el índice devuelto por pacmd list-sinks.
Rodrigo
0

Lo siguiente debería ayudarlo a solucionar el problema hasta que encuentre una solución a su problema.

Los siguientes son algunos scripts que no hacen lo que quieres, pero que probablemente contienen todas las piezas para lo que necesitas.

El segundo contiene un montón de cosas de pulseaudio que funcionan, pero que realmente no entiendo. Me disculpo de antemano. ;)

Aquí hay un script que solía usar para volver a encender mis altavoces después del arranque. Debería ser fácil de modificar para configurar su salida de audio como lo desee.

#!/bin/bash
## temporary kludge to turn the speakers back on at login

SOUND=1
if [ "${1}" == "-q" ]
then
  shift
  SOUND=0
fi

amixer set Speaker unmute > /dev/null
amixer set Speaker 100 > /dev/null
(( SOUND )) && mplayer -quiet /usr/lib/libreoffice/basis3.4/share/gallery/sounds/kongas.wav > /dev/null 2>&1

Este cambia automáticamente mi salida de sonido entre HDMI y salida analógica dependiendo de si HDMI está conectado o no. No es lo que desea, pero detecta a dónde va la salida de audio y sabe cómo cambiarla a otro lugar.

#!/bin/bash
## audio_select
## Copyleft 08/11/2014 - JPmicrosystems
## Last modified 05/14/2015
## Added code to detect ramdass vs halo to handle older pactl version
## Added code to tell if the audio was already selected
## If HDMI is connected, audio output is channelled to HDMI
## Otherwise it's channelled to internal audio

## From: /ubuntu/458194/switching-to-hdmi-audio-when-hdmi-is-plugged-into-a-laptop-14-04
## Script needs to be triggered by a udev rule
## Works manually now

## udevadm monitor produces the following output

## Plug in HDMI udev events
##KERNEL[11363.720327] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
##UDEV  [11363.722979] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)

## Unplug HDMI udev events
##KERNEL[11392.043367] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
##UDEV  [11392.046155] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)

## Make a script name in SCRIPT_NAME
function script_name {
  ## See if the calling script has a name string defined
  if [ -n "${NAME}" ]
  then
    SCRIPT_NAME="${NAME}"
  else
    SCRIPT_NAME="$(basename $0)"
  fi
}

## Get active audio port type
function get_active_audio_port {
  ## first very rough cut
  local ACTIVE_AUDIO_PORT_NAME
  RC=0 ## Success
  ACTIVE_AUDIO_PORT_NAME="$(pactl list | grep 'Active Port:' | awk '{print $3}')"
  case "${ACTIVE_AUDIO_PORT_NAME}" in
    "analog-output-speaker")
      ACTIVE_AUDIO_PORT="Speakers"
      ;;
     "analog-output-headphones")
      ACTIVE_AUDIO_PORT="Headphones"
      ;;
    "hdmi-output-0")
      ACTIVE_AUDIO_PORT="HDMI"
    ;;
    *)
      ACTIVE_AUDIO_PORT="Unknown"
      RC=1 ## Failure
    ;;
  esac

  return $RC
 }

##source "$HOME/bin/bash_trace" ## debug
script_name
HOST="$(hostname)"
HDMI_STATUS=$(cat /sys/class/drm/card0/*HDMI*/status)
INPUTS=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
DSPTIME=10            # yad message persistence time
YOPT="--center --on-top --title ${SCRIPT_NAME}"  # yad common options

get_active_audio_port ## Find out where audio is going now
if ((RC))
then
  yad ${YOPT} --info --button=gtk-ok:0 --text="Failed to detect current audio source" --width 250 --timeout=${DSPTIME}
  exit 1
fi

if [ $HDMI_STATUS = "connected" ]
then
  if [ "${ACTIVE_AUDIO_PORT}" == "HDMI" ]
  then
    yad ${YOPT} --info --button=gtk-ok:0 --text="Audio already set to HDMI" --width 250 --timeout=${DSPTIME}
    exit 1
  fi
  pactl set-card-profile 0 output:hdmi-stereo
  if [ "$HOST" == "ramdass" ]  ## Using newer version of pactl
  then
    pactl set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
  else
    pactl set-sink-port alsa_output.pci-0000_00_1b.0.hdmi-stereo hdmi-output-0
  fi
  for i in ${INPUTS[*]}
  do
    pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.hdmi-stereo  &> /dev/null
  done

  yad ${YOPT} --info --button=gtk-ok:0 --text="Audio directed to HDMI" --width 250 --timeout=${DSPTIME}
else
  if [ "${ACTIVE_AUDIO_PORT}" == "Speakers" ] || [ "${ACTIVE_AUDIO_PORT}" == "Headphones" ]
  then
    yad ${YOPT} --info --button=gtk-ok:0 --text="Audio already set to Analog Output" --width 250 --timeout=${DSPTIME}
    exit 1
  fi
  pactl set-card-profile 0 output:analog-stereo
  if [ "$HOST" == "ramdass" ]  ## Using newer version of pactl
  then
    pactl set-default-sink alsa_output.pci-0000_00_1b.0.analog-stereo
  else
    pactl set-sink-port alsa_output.pci-0000_00_1b.0.analog-stereo analog-output-speaker                
  fi

  for i in ${INPUTS[*]}
  do
    pacmd move-sink-input $i alsa_output.pci-0000_00_1b.0.analog-stereo  &> /dev/null
  done

  yad ${YOPT} --info --button=gtk-ok:0 --text="Audio directed to Analog Output" --width 250 --timeout=${DSPTIME}
fi
Joe
fuente
La cuestión es que ningún script que se ejecute después de lightgm (administrador de inicio de sesión) será suficiente. Se están reproduciendo efectos de sonido antes de iniciar sesión. ¿Podrían ejecutarse después de init?
Błażej Michalik
Si esos sonidos "iniciales" son importantes para usted, entonces no, probablemente no funcionarían. En el momento del arranque, hay muy poco disponible / en su RUTA, justo lo que se necesita para que todo funcione. El resto, como las cosas que usan estos scripts, se agrega a la RUTA más tarde, cuando su usuario inicia sesión. No sé cuándo se inicia pulseaudio. Si necesita arrancar sin despertar a alguien, etc., no sé cómo abordar eso.
Joe
Otra solución alternativa aleatoria sería buscar los archivos de sonido que se reproducen (probablemente algo.ogg) y reemplazarlos con archivos silenciosos. Todavía no soluciona el problema, pero tal vez ayuda. También depende de si algo más quiere usar esos archivos de sonido más adelante. Si es así, puede guardar los originales y volver a colocarlos después del arranque. Pero luego debes comenzar a jugar con systemd para hacer las cosas bien cada vez.
Joe
@DavidFoerster: si bien es técnicamente correcto (cualquiera de mis respuestas comienza con "esto no es una respuesta"), darle a alguien un lugar para comenzar a buscar o herramientas que podrían contribuir a una solución es mucho mejor que silenciar a mi humilde opinión. Cuando publiqué, no había otras respuestas. Mi contenido no encajaría en un comentario o cadena de comentarios y el código tendría que haber sido vinculado o ilegible. Si los comentarios de SE admitieran el formato completo, habría puesto la publicación en uno.
Joe
@DavidFoerster: Al mirar la página de ayuda a la que se vinculó, parece una respuesta parcial a la pregunta. Puede que no sea una muy buena respuesta, pero incluso intentar proporcionar una solución parcial la convierte en una "respuesta" válida según la definición SE del término.
Ilmari Karonen
0

Muy bien, creo que tengo algo que puedes probar.
Si busca sistemas multimedia, seleccione en el tablero. Ábralo y vaya a la Audiopestaña, donde puede seleccionar los dispositivos de entrada y salida de audio predeterminados.

Esto debe instalarse por defecto. Si no es así, siempre puedes correr sudo apt-get install gnome-media. Si no se muestra en el tablero, ejecute:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop. En el archivo de texto resultante, vaya a la línea que comienza con NoDisplay=.Change the NoDisplay=trueto NoDisplay=false Hope que ayuda.

James
fuente
Tuve que cambiarme a Ubuntu Gnome hace unos días, y de este lado el paquete gnome-media no tiene candidato.
Błażej Michalik
Bien. Veré qué puedo desenterrar para ti entonces. ¡Buena suerte!
James