18.04, 16.04 Casque détecté, mais pas allumé automatiquement après le démarrage

26

Edit: le problème semble également affecter le 18.04.

J'ai ce problème depuis le 15.10, mais il a vraiment commencé à grincer des dents après avoir effectué une mise à niveau vers 16.04.

Disons que j'ai des écouteurs branchés. Je redémarre \ relog on on \ boot sur ubuntu et joue la musique. Il sort des haut-parleurs intégrés au lieu des écouteurs .

Je peux voir que les écouteurs sont détectés dans le menu des paramètres audio , mais ce n'est qu'après avoir changé l'appareil ou rebranché mes écouteurs qu'ils fonctionnent.

C'était plus facile à ignorer le 15.10, car à l'époque, après un démarrage, tout était muet. Écouteurs et haut-parleurs, si des écouteurs étaient présents avant ladite mise en service.

J'ajouterais des journaux à la question, mais je ne sais pas vraiment lesquels ni comment les obtenir (je suis ouvert aux suggestions). Le problème se produit sur un ordinateur portable Dell Inspiron 3537 , il contient une carte son Realtek.

Il possède une prise de sortie sur le côté, qui sert à la fois d'entrée et de sortie.


Sortie 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
la source
1
Cela semble faux (dans le sens du vissage de PulseAudio) - vos écouteurs branchés doivent être choisis même au premier essai. Faites rm -rf ~/.pulse ~/.config/pulseavant tout le reste. Cela fait que PA utilise les paramètres par défaut. Le problème persiste-t-il?
emk2203
Oui. Tout est comme ça, les écouteurs sont toujours détectés. Je me suis assuré à deux reprises que rm fonctionnait - aucun des répertoires ci-dessus n'était présent. J'ai ensuite redémarré.
Błażej Michalik
Pourriez-vous poster pacmd list-cards?
emk2203
@ emk2203 Terminé. Certains mots clés sont en polonais, donc: "wyjście" == "output", "wejście" == "input", "wewnętrzny mikrofon" == "microphone interne".
Błażej Michalik
Quel lecteur de musique utilisez-vous?
userDepth

Réponses:

7

Mon point de vue serait le suivant en tirant parti de PulseAudio. En supposant que lorsque vous vous connectez à Ubuntu, vous avez toujours vos écouteurs connectés, les éléments suivants vous assureront que lorsque vous démarrez sur Ubuntu, il les définira automatiquement comme entrée et sortie par défaut (en supposant que vous souhaitiez les deux).

Sur Ubuntu, accédez au terminal et tapez ce qui suit à partir duquel vous ne récupérerez que le numéro d'index:

Pour vos DISPOSITIFS DE SORTIE :

pacmd list-sinks - Il y aura beaucoup d'informations mais recherchez les numéros d'index et le périphérique correspondant qui sera votre nouveau périphérique de sortie par défaut.

Pour vos DISPOSITIFS D'ENTRÉE :

pacmd list-sink-inputsOU pacmd list-samples- Il y aura beaucoup d'informations mais recherchez les numéros d'index et le périphérique correspondant qui sera votre nouveau périphérique d'entrée par défaut. Utilisez les exemples de liste au cas où dans les entrées de récepteur de liste il ne montrerait pas.

Jusqu'à ce point, sur Ubuntu, avec vos écouteurs connectés, vous devriez avoir 2 numéros d'index. Un pour vos entrées et sorties. Nous allons maintenant éditer votre configuration par défaut pulseaudio:

sudo nano /etc/pulse/default.pa

Allez à la dernière ligne et ajoutez simplement ce qui suit:

set-default-sink 1 - Cela correspond à la source de sortie après avoir examiné l'indice de pacmd list-sinks. Le 1 est l'indice, alors changez-le en celui que vous avez.

set-default-source 5- Cela correspond aux sources d'entrée après avoir regardé l'indice de pacmd list-sink-inputsou pacmd list-samples. Le nombre 5 est l'indice, alors changez-le en celui que vous avez.

Enregistrez le fichier et redémarrez l'ordinateur pour tester. Le test consiste à vérifier si vous avez obtenu la valeur d'index correcte, car certains appareils ont des noms similaires (comme les sources audio NVIDIA OU INTEL).

Si tout est correctement configuré, chaque fois que vous démarrez votre ordinateur, vous devriez voir Ubuntu définir l'entrée / sortie par défaut sur votre casque. Puisque vous parlez d'écouteurs, pour la réduction du bruit, vous pouvez utiliser mon autre réponse pour vous aider avec cela: élimination du bruit en temps réel avec PulseAudio?

REMARQUE: Vous pouvez également utiliser pacmd list-sourcespour voir tous les périphériques et également au lieu d'utiliser le numéro d'index, vous pouvez utiliser le nom du périphérique attribué, qui ressemble à ceci:

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancelpour vous donner une idée des noms à rechercher (super long je sais). Les noms sont plus précis à utiliser mais plus difficiles à retenir, vous avez donc ici la possibilité d'utiliser l'un ou l'autre. Le résultat final en utilisant un nom, serait comme ceci:

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel dans le fichier default.pa, juste pour vous donner une idée.

Pour une option GUI, je recommande pavucontrolou PulseAudio Volume Control. Il offre une option pour définir un périphérique comme défaut / repli pour les périphériques d'entrée et de sortie. L'utilisation des deux techniques peut vous donner ce que vous voulez.

Luis Alvarado
la source
Je ne pense pas que cela fonctionnera, mais vous pourriez être sur quelque chose. Le fait est que sur ma machine, j'ai deux périphériques audio: Intel HDMI et Realtek analog. Les indices sont: 0 - HDMI, 1 - analogique. Le périphérique Realtek a deux ports - haut-parleurs et casque (avec des priorités de 10k et 9k respectivement - ces chiffres ont-ils à voir avec la priorité de commutation?). Pour autant que je puisse voir, ces ports ne peuvent pas vraiment être indexés dans le default.pafichier de la manière que vous avez présentée.
Błażej Michalik
Salut @ BłażejMichalik en fait, cela a été testé sur l'ordinateur de ma femme et le mien avant de le publier ici. Pour la confusion d'index, vous pouvez utiliser le nom complet comme mentionné à la fin avec la REMARQUE.
Luis Alvarado
2
Eh bien, ça marche, mais cela désactive également les haut-parleurs par défaut, même si aucun casque n'est présent. C'est le comportement que j'ai vécu avec 15.10. Ce n'est pas une solution en soi.
Błażej Michalik
Oui, comme je l'ai mentionné, vous devez avoir les écouteurs connectés car Ubuntu ne supposera pas que si vous connectez les écouteurs, ils devraient les utiliser par défaut. Pour les haut-parleurs qui s'éteignent, je n'en ai aucune idée, car il s'agit uniquement de définir ceux par défaut, et non de désactiver les autres. Cela se produit généralement si vous utilisez un ordinateur portable avec un connecteur jack (entrée / sortie en même temps). Je demanderais si votre ordinateur portable a 2 connexions (une pour le micro, une autre pour la sortie) ou si elle en a une. Si votre réponse est une, alors vous avez maintenant une idée de la raison pour laquelle les problèmes apparaissent.
Luis Alvarado
Ouaip, c'est exactement le cas, je ne savais pas que c'était important.
Błażej Michalik
3

Si vos périphériques audio sont 0 - HDMI et 1 - analogique, vous pouvez passer aux écouteurs avec

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

Pour le rendre permanent, éditez /etc/pulse/default.paet en bas sous ### Make some devices defaultput:

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

Tout devrait fonctionner maintenant comme vous le souhaitez. Assurez-vous de le commenter à nouveau lorsque vous en avez assez d'utiliser les écouteurs.

emk2203
la source
1
Cela ne fait que passer ubuntu aux écouteurs au démarrage, quoi qu'il arrive. Aucun son n'est émis par les haut-parleurs au début, même si les écouteurs sont débranchés. C'est le comportement que j'ai vécu avec 15.10.
Błażej Michalik
Tu n'iras pas mieux que ça, je le crains. Liens: bbs.archlinux.org/viewtopic.php?id=175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010 comme état de l'art actuel . J'espère vraiment que quelqu'un pourra trouver une meilleure solution ...
emk2203
Meh ... je pourrais faire une solution de contournement bash. Je peux en préparer un moi-même - pas de problème. Mais cela gâche tout simplement les choses. Tous les 6 mois, je dois parcourir les journaux de modifications d'Ubuntu et ma liste de corps personnelle pour voir où les choses se sont brisées en raison de ma négligence ou de la négligence de quelqu'un d'autre, ou simplement en raison d'une mise à niveau vers une API ou une interface. C'est pourquoi je ne fais plus cela - cela fait un gâchis et ne vaut pas le temps que je vais probablement perdre, après avoir rencontré une pause de mise à jour inévitable pour quelque chose.
Błażej Michalik
1
Si vous pouvez faire une solution bash qui 1) sélectionne les écouteurs uniquement s'ils sont branchés, sinon les haut-parleurs sont par défaut et 2) bascule automatiquement sur les écouteurs et coupe les haut-parleurs lorsque vous branchez les écouteurs, je serais très intéressé.
emk2203
Cela a fonctionné pour moi sur Debian Stretch, bien que je doive utiliser 0 au lieu de 1, qui est l'index retourné par pacmd list-sinks.
Rodrigo
0

Les informations suivantes devraient vous aider à contourner le problème jusqu'à ce que vous trouviez une solution à votre problème.

Voici quelques scripts qui ne font pas ce que vous voulez, mais contiennent probablement tous les éléments dont vous avez besoin.

Le second contient un tas de trucs pulseaudio qui fonctionnent, mais que je ne comprends pas vraiment. Je m'excuse d'avance. ;)

Voici un script que j'ai utilisé pour réactiver mes haut-parleurs après le démarrage. Il devrait être facile à modifier pour régler votre sortie audio comme vous le souhaitez.

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

Celui-ci bascule automatiquement ma sortie audio entre HDMI et sortie analogique selon que HDMI est connecté ou non. Pas ce que vous voulez, mais il détecte où va la sortie audio et sait comment la basculer ailleurs.

#!/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
la source
Le fait est qu'aucun script qui s'exécute après lightgm (gestionnaire de connexion) ne sera suffisant. Des effets sonores sont lus avant que vous ne vous connectiez. Seraient-ils capables de s'exécuter après l'init?
Błażej Michalik
Si ces sons "initiaux" sont importants pour vous, alors, non, ils ne fonctionneraient probablement pas. Au démarrage, il y a très peu de disponible / dans votre PATH - juste ce qu'il faut pour faire avancer les choses. Le reste - comme les choses que ces scripts utilisent est ajouté au PATH plus tard - lorsque votre utilisateur se connecte. Je ne sais pas quand pulseaudio est même démarré. Si vous devez démarrer sans réveiller quelqu'un, etc., je ne sais pas comment résoudre ce problème.
Joe
Une autre solution de contournement aléatoire consisterait à rechercher les fichiers audio lus (probablement quelque chose.ogg) et à les remplacer par des fichiers silencieux. Ne résout toujours pas le problème, mais peut-être que cela aide. Cela dépend aussi si quelque chose d'autre veut utiliser ces fichiers audio plus tard. Si tel est le cas, vous pouvez enregistrer les originaux et les remettre après le démarrage. Mais ensuite, vous devez commencer à jouer avec systemd pour que les choses se passent bien à chaque fois.
Joe
@DavidFoerster - alors que vous êtes techniquement correct (toute ma réponse commence par "ce n'est pas une réponse"), donner à quelqu'un un endroit pour commencer à chercher ou des outils qui pourraient contribuer à une solution est bien mieux que faire taire IMHO. Quand j'ai posté, il n'y avait pas d'autre réponse. Mon contenu n'aurait pas pu entrer dans un commentaire ou une chaîne de commentaires et le code aurait dû être lié ou illisible. Si les commentaires SE soutenaient la mise en forme complète, j'aurais mis le message en un.
Joe
@DavidFoerster: En regardant la page d'aide à laquelle vous avez lié, cela semble être une réponse partielle à la question. Ce n'est peut-être pas une très bonne réponse, mais même essayer de fournir une solution partielle en fait une "réponse" valable selon la définition SE du terme.
Ilmari Karonen
0

D'accord, je pense que j'ai quelque chose que vous pouvez essayer.
Si vous recherchez des systèmes multimédias, sélectionnez sur le tableau de bord. Ouvrez-le et accédez à l' Audioonglet, où vous pouvez sélectionner les périphériques d'entrée et de sortie audio par défaut.

Cela devrait être installé par défaut. Si ce n'est pas le cas, vous pouvez toujours courir sudo apt-get install gnome-media. S'il n'est pas affiché dans le tableau de bord, exécutez:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop. Dans le fichier texte résultant, allez à la ligne commence par le NoDisplay=.changement du NoDisplay=trueà NoDisplay=false Hope that helps!

James
la source
J'ai dû passer à Ubuntu Gnome il y a quelques jours, et de ce côté le paquet gnome-media n'a pas de candidat.
Błażej Michalik
Bien. Je verrai alors ce que je pourrai trouver pour toi. Bonne chance!
James