18.04, 16.04 Cuffie rilevate, ma non accese automaticamente dopo l'avvio


26

Modifica: il problema sembra interessare anche il 18.04.

Ho questo problema dal 15.10, ma ha iniziato a macinare le mie marce dopo aver effettuato l'aggiornamento a 16.04.

Diciamo che ho le cuffie collegate. Riavvio \ relog on \ boot su ubuntu e suono la musica. Esce dagli altoparlanti integrati anziché dalle cuffie .

Vedo che le cuffie vengono rilevate nel menu delle impostazioni audio , ma solo dopo aver cambiato il dispositivo o aver ricollocato le cuffie funzionano.

Questo è stato più facile da ignorare il 15.10, perché allora, dopo un avvio, tutto è stato disattivato. Cuffie e altoparlanti, se le cuffie erano presenti prima di tale avvio.

Vorrei aggiungere i log alla domanda, ma non so davvero quale o come ottenerli (sono aperto a suggerimenti). Il problema si verifica su un laptop Dell Inspiron 3537 , al suo interno è presente una scheda audio Realtek.

Ha un jack di uscita sul lato, che funge sia da input che da output.


Uscita di 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"

1
Questo sembra sbagliato (nel senso di PulseAudio che si rovina): le cuffie collegate dovrebbero essere scelte anche al primo tentativo. Fai un rm -rf ~/.pulse ~/.config/pulseprima di tutto. In questo modo PA utilizza le impostazioni predefinite. Il problema persiste?
emk2203,

Sì, lo fa. Tutto è come prima, le cuffie sono state ancora rilevate. Mi sono assicurato due volte che rm funzionasse - nessuna delle precedenti directory era presente. Ho fatto un riavvio in seguito.
Błażej Michalik,

Potresti pubblicare pacmd list-cards?
emk2203,

@ emk2203 Fatto. Alcune parole chiave sono in polacco, quindi: "wyjście" == "output", "wejście" == "input", "wewnętrzny mikrofon" == "microfono interno".
Błażej Michalik,

Quale lettore musicale stai usando?
userDepth

Risposte:


7

La mia opinione su questo sarebbe il seguente sfruttando PulseAudio. Supponendo che quando si accede a Ubuntu, si hanno sempre le cuffie collegate, quindi quanto segue si assicurerà che quando si avvia su Ubuntu lo imposterà automaticamente come Input e Output predefiniti (Supponendo che si desideri entrambi).

Su Ubuntu vai al terminale e digita quanto segue dal quale raccoglierai solo il numero indice:

Per i tuoi DISPOSITIVI DI USCITA :

pacmd list-sinks - Ci saranno molte informazioni ma cerca i numeri indice e il dispositivo corrispondente che sarà il tuo nuovo dispositivo di output predefinito.

Per i tuoi DISPOSITIVI DI INGRESSO :

pacmd list-sink-inputsOPPURE pacmd list-samples- Ci saranno molte informazioni ma cerca i numeri indice e il dispositivo corrispondente che sarà il tuo nuovo dispositivo di input predefinito. Usa gli esempi-list nel caso in cui gli input-sink-list non mostrino.

Fino a questo punto, su Ubuntu, con le cuffie collegate, dovresti avere 2 numeri di indice. Uno per input e output. Ora andremo a modificare la configurazione predefinita di pulseaudio:

sudo nano /etc/pulse/default.pa

Vai all'ultima riga e aggiungi semplicemente quanto segue:

set-default-sink 1 - Ciò corrisponde alla sorgente di output dopo aver esaminato l'indice di pacmd list-sinks. 1 è l'indice, quindi cambialo con quello che hai.

set-default-source 5- Ciò corrisponde alle fonti di input dopo aver esaminato l'indice di pacmd list-sink-inputso pacmd list-samples. Il numero 5 è l'indice, quindi cambialo con quello che hai.

Salvare il file e riavviare il computer per testare. Il test prevede la verifica se hai ottenuto il valore di indice corretto, poiché alcuni dispositivi hanno nomi simili (come le fonti audio NVIDIA O INTEL).

Se tutto è configurato correttamente, ogni volta che avvii il computer, dovresti vedere Ubuntu che imposta l'ingresso / uscita predefinito sulla tua cuffia. Dato che stai parlando di Cuffie, per la riduzione del rumore puoi usare la mia altra risposta per aiutarti in questo: la rimozione del rumore in tempo reale con PulseAudio?

NOTA: puoi anche usare pacmd list-sourcesper vedere tutti i dispositivi e anche invece di usare il numero indice, puoi usare il nome del dispositivo assegnato, che assomiglia a questo:

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancelper darti un'idea di quali nomi cercare (Super long lo so). I nomi sono più precisi da usare ma più difficili da ricordare, quindi qui hai un'opzione per usare l'uno o l'altro. Il risultato finale usando un nome sarebbe come questo:

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel nel file default.pa, solo per darti un'idea.

Per un'opzione GUI, consiglio pavucontrolo Controllo del volume PulseAudio. Offre un'opzione per impostare un dispositivo come predefinito / fallback per i dispositivi di input e output. L'uso di entrambe le tecniche potrebbe darti quello che vuoi.


Non penso che funzionerà, ma potresti essere coinvolto in qualcosa. Il fatto è che sulla mia macchina ho due dispositivi audio: Intel HDMI e Realtek analog. Gli indici sono: 0 - HDMI, 1 - analogico. Il dispositivo Realtek ha due porte: altoparlanti e cuffie (con priorità 10k e 9k rispettivamente - questi numeri hanno a che fare con la priorità di commutazione?). Per quanto posso vedere, queste porte non possono davvero essere indicizzate nel default.pafile nel modo che hai presentato.
Błażej Michalik,

Ciao @ BłażejMichalik in realtà questo è stato testato sul mio computer di mia moglie e sul mio prima di pubblicarlo qui. Per la confusione dell'indice è possibile utilizzare il nome completo come indicato alla fine con la NOTA.
Luis Alvarado,

2
Bene, ok, funziona, ma rende anche gli altoparlanti disattivati ​​di default, anche se le cuffie non sono presenti. Questo è il comportamento che ho riscontrato con il 15.10. Non è una soluzione di per sé.
Błażej Michalik,

Sì, come ho già detto, è necessario che le cuffie siano collegate poiché Ubuntu non suppone che se si collegano le cuffie, dovrebbero essere utilizzate per impostazione predefinita. Per gli altoparlanti che si spengono, non ne ho idea dato che si tratta solo di impostare quelli predefiniti, non di disabilitare gli altri. Ciò si verifica in genere se si utilizza un laptop con un connettore jack (Input / Output contemporaneamente). Vorrei chiedere se il tuo laptop ha 2 connessioni (una per il microfono, un'altra per l'uscita) o se ne ha una. Se la tua risposta è una, allora hai un'idea del perché compaiono i problemi.
Luis Alvarado,

Sì, è esattamente così, non sapevo che fosse importante.
Błażej Michalik,

3

Se i dispositivi audio sono 0 - HDMI e 1 - analogico, è possibile passare alle cuffie con

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

Per renderlo permanente, modifica /etc/pulse/default.pae in fondo sotto ### Make some devices defaultmetti:

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

Ora tutto dovrebbe funzionare come desiderato. Assicurati di commentarlo di nuovo quando sei stanco di usare le cuffie.


1
Questo fa sì che Ubuntu passi alle cuffie all'avvio, non importa quale. All'inizio non viene emesso alcun suono dagli altoparlanti, anche se le cuffie sono scollegate. Questo è il comportamento che ho riscontrato con il 15.10.
Błażej Michalik,

Non starai meglio di così, temo. Link: bbs.archlinux.org/viewtopic.php?id=175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010 come lo stato dell'arte attuale . Spero davvero che qualcuno possa trovare una soluzione migliore ...
emk2203,

Meh ... Potrei fare una soluzione bash. Posso cucinarne uno da solo - nessun problema. Ma rovina semplicemente le cose. Ogni 6 mesi devo scorrere i log delle modifiche di Ubuntu e la mia lista personale per vedere dove le cose si sono rotte a causa della mia negligenza di qualcun altro o semplicemente a causa di un aggiornamento ad alcune API o frontend. Ecco perché non li faccio più - fa un casino, e non vale la pena il tempo che probabilmente perderò, dopo che avrò avuto un'inevitabile interruzione dell'aggiornamento a qualcosa.
Błażej Michalik,

1
Se riesci a fare una soluzione bash che 1) seleziona le cuffie solo se sono collegate, altrimenti gli altoparlanti sono predefiniti e 2) passa automaticamente alle cuffie e disattiva gli altoparlanti quando si collegano le cuffie, sarei molto interessato.
emk2203,

Questo ha funzionato per me su Debian Stretch, anche se devo usare 0 invece di 1, che è l'indice restituito dai sink di elenco pacmd.
Rodrigo,

0

Di seguito dovrebbe aiutarti a risolvere il problema fino a quando non trovi una soluzione al tuo problema.

Quelli che seguono sono un paio di script che non fanno quello che vuoi, ma probabilmente contengono tutti i pezzi per quello che ti serve.

Il secondo contiene un sacco di roba pulseaudio che funziona, ma che non capisco davvero. Mi scuso in anticipo. ;)

Ecco uno script che usavo per riaccendere gli altoparlanti dopo l'avvio. Dovrebbe essere facile da modificare per impostare l'uscita audio come desiderato.

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

Questo commuta automaticamente la mia uscita audio tra HDMI e uscita analogica a seconda che HDMI sia collegato o meno. Non quello che vuoi, ma rileva dove sta andando l'uscita audio e sa come spostarlo da qualche altra parte.

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

Il fatto è che nessuno script che viene eseguito dopo lightgm (gestore degli accessi) sarà sufficiente. Ci sono effetti sonori in riproduzione prima del login. Saranno in grado di funzionare dopo init?
Błażej Michalik,

Se quei suoni "iniziali" sono importanti per te, allora no, probabilmente non funzionerebbero. Al momento dell'avvio c'è ben poco disponibile / nel tuo PERCORSO - proprio quello che serve per far andare le cose. Il resto, come le cose che usano questi script, viene aggiunto al PERCORSO in seguito, quando l'utente accede. Non so nemmeno quando pulseaudio viene avviato. Se devi avviare senza svegliare qualcuno, ecc., Non so come risolverlo.
Joe,

Un'altra soluzione casuale sarebbe quella di cercare i file audio che vengono riprodotti (probabilmente qualcosa.ogg) e sostituirli con file silenziosi. Non risolve ancora il problema, ma forse aiuta. Dipende anche se qualcos'altro vuole usare quei file audio in un secondo momento. In tal caso, è possibile salvare gli originali e rimetterli dopo l'avvio. Ma poi devi iniziare a scherzare con systemd per ottenere le cose giuste ogni volta.
Joe,

@DavidFoerster - mentre sei tecnicamente corretto (qualsiasi mia risposta inizia con "questa non è una risposta"), dare a qualcuno un posto per iniziare a cercare o strumenti che potrebbero contribuire a una soluzione è molto meglio del silenzio IMHO. Quando ho pubblicato, non c'erano altre risposte. Il mio contenuto non si sarebbe inserito in un commento o in una serie di commenti e il codice avrebbe dovuto essere collegato o illeggibile. Se i commenti SE avessero supportato la formattazione completa, avrei inserito il post in uno.
Joe,

@DavidFoerster: guardando la pagina di aiuto a cui ti sei collegato, sembra una risposta parziale alla domanda. Potrebbe non essere una risposta molto buona , ma anche il tentativo di fornire una soluzione parziale la rende una "risposta" valida dalla definizione SE del termine.
Ilmari Karonen,

0

Bene, penso di avere qualcosa che puoi provare.
Se cerchi sistemi multimediali, seleziona nella Dash. Aprilo e vai alla Audioscheda, dove puoi selezionare i dispositivi di input e output audio predefiniti.

Questo dovrebbe essere installato di default. Altrimenti, puoi sempre correre sudo apt-get install gnome-media. Se non è visualizzato nel Dash, esegui:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop. Nel file di testo risultante, passare alla riga inizia con NoDisplay=.Modificare l' NoDisplay=truea NoDisplay=false Speranza che aiuta!


Ho dovuto passare a Ubuntu Gnome qualche giorno fa, e da questo lato il pacchetto gnome-media non ha candidati.
Błażej Michalik,

Tutto apposto. Vedrò cosa posso scavare per te allora. In bocca al lupo!
James,
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.