18.04, 16.04 Навушники виявлені, але не включаються автоматично після запуску


26

Редагувати: проблема, здається, також зачіпає 18.04.

У мене це питання з 15.10, але воно почало справді шліфувати мої передачі після оновлення до 16.04.

Скажімо, у мене підключені навушники. Перезавантажую \ переглядаю \ boot на ubuntu та відтворюю музику. Він виходить із вбудованих динаміків замість навушників .

Я бачу, що навушники виявляються в меню налаштувань аудіо , але лише після того, як я зміню пристрій або відключую навушники, вони працюють.

Це було легше ігнорувати 15.10, оскільки тоді після запуску все було відключено. Навушники та динаміки, якщо перед вказаним запуском були навушники.

Я б додав журнали до запитання, але я не знаю насправді, які або як їх отримати (я відкритий для пропозицій). Проблема виникає на ноутбуці Dell Inspiron 3537 , в ньому є звукова карта Realtek.

У нього є один вихідний гніздо на боці, який виступає як входом, так і вихідним.


Вихід 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
Це здається неправильним (в сенсі PulseAudio викручується) - підключені навушники слід вибирати навіть при першій спробі. Зробіть rm -rf ~/.pulse ~/.config/pulseперед усіма іншими. Це змушує ПА використовувати налаштування за замовчуванням. Проблема зберігається?
emk2203

Так. Все як було, навушники все-таки виявляли. Я двічі переконався, що rm працює - жоден із перерахованих вище каталогів не був. Після цього я перезавантажився.
Błażej Michalik

Чи можете ви опублікувати pacmd list-cards?
emk2203

@ emk2203 Готово. Деякі ключові слова є польською мовою, так що: "wyjście" == "вихід", "wejście" == "введення", "wewnętrzny mikrofon" == "внутрішній мікрофон".
Błażej Michalik

Який музичний плеєр ви використовуєте?
userDepth

Відповіді:


7

Моє взяти на себе це було б наступним перевагою PulseAudio. Якщо припустити, що під час входу в Ubuntu ви завжди маєте підключені навушники, то наступне переконається, що при завантаженні Ubuntu він автоматично встановить його як введення та вихід за замовчуванням (якщо вважати, що вам потрібно обидва).

На Ubuntu перейдіть до терміналу і введіть наступне, з якого ви лише зіберете номер індексу:

Для ваших вихідних пристроїв :

pacmd list-sinks - Буде багато інформації, але шукайте індексні номери та відповідний пристрій, який стане вашим новим пристроєм виводу за замовчуванням.

Для ваших вхідних пристроїв :

pacmd list-sink-inputsАБО pacmd list-samples- Буде багато інформації, але шукайте індексні номери та відповідний пристрій, який стане вашим новим пристроєм вводу за замовчуванням. Використовуйте зразки списку у випадку, якщо на списках-потоках-входах він не відображається.

До цього моменту на Ubuntu з підключеними навушниками ви повинні мати два індекси. Один для вашого вводу та виводу. Тепер ми перейдемо до редагування вашої конфігурації за замовчуванням pulseaudio:

sudo nano /etc/pulse/default.pa

Перейдіть на останній рядок і просто додайте наступне:

set-default-sink 1 - Це відповідає вихідному джерелу після перегляду індексу pacmd list-sinks. 1 - це індекс, тому змініть його на отриманий.

set-default-source 5- Це відповідає джерелам введення після перегляду індексу pacmd list-sink-inputsабо pacmd list-samples. Число 5 - це індекс, тому змініть його на отримане.

Збережіть файл для перезавантаження комп'ютера. Тестування передбачає перевірку, чи отримали ви правильне значення індексу, оскільки деякі пристрої мають схожі назви (наприклад, джерела аудіо NVIDIA OR INTEL).

Якщо все налаштовано правильно, щоразу, коли ви завантажуєте комп'ютер, ви повинні побачити, що Ubuntu встановлює стандартний вхід / вихід для навушників. Оскільки ви говорите про навушники, для зменшення шуму ви можете скористатися моєю іншою відповіддю, щоб допомогти вам у цьому: Зняття шуму в режимі реального часу за допомогою PulseAudio?

ПРИМІТКА: Ви також pacmd list-sourcesможете бачити всі пристрої, а також замість індексу, ви можете використовувати ім'я призначеного пристрою, яке виглядає приблизно так:

alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancelщоб дати вам уявлення про те, які імена шукати (Супер довго я знаю). Імена більш точні у використанні, але їх складніше запам’ятати, тому у вас тут є можливість використовувати те чи інше. Кінцевий результат із використанням імені буде таким:

set-default-source alsa_input.usb-Logitech_Logitech_USB_Headset-00.analog-mono.echo-cancel у файлі default.pa, просто щоб дати вам уявлення.

Для параметра GUI я рекомендую pavucontrolабо PulseAudio Volume Control. Він пропонує можливість встановити пристрій як типовий / запасний для пристроїв вводу та виводу. Використання обох методів може дати вам те, що ви хочете.


Я не думаю, що це спрацює, але ти можеш зайнятися чимось. Вся справа в тому, що на моїй машині у мене є два звукових пристрої: Intel HDMI та аналог Realtek. Показники: 0 - HDMI, 1 - аналогові. Пристрій Realtek має два порти - динаміки та навушники (з пріоритетами 10 к та 9 к відповідно - чи мають ці цифри стосуватися пріоритету комутації?). Наскільки я можу бачити, ці порти насправді не можна індексувати у default.paфайлі за представленою вами модою.
Блажей Михалик

Привіт @ BłażejMichalik насправді це було перевірено на комп'ютері моєї дружини і на моєму, перш ніж публікувати його тут. Для плутанини в індексі ви можете використовувати повне ім'я, як згадувалося в кінці в примітці.
Луїс Альварадо

2
Ну добре, це працює, але він також вимикає колонки за замовчуванням, навіть якщо навушників немає. Таку поведінку я зазнав з 15.10. Це не виправлення самі по собі.
Błażej Michalik

Так, як я вже згадував, вам потрібно підключити навушники, оскільки Ubuntu не вважатиме, що якщо ви підключите навушники, вони повинні використовувати їх за замовчуванням. Що стосується вимкнення гучномовців, я там не маю уявлення, оскільки це лише встановлення стандартних, а не відключення інших. Зазвичай це відбувається, якщо ви використовуєте ноутбук з одним роз'ємом гнізда (вхід / вихід одночасно). Я б запитав, чи має ваш ноутбук 2 підключення (один для мікрофона, інший для виходу) або якщо він має. Якщо ваша відповідь одна, то тепер у вас є уявлення, чому виникають проблеми.
Луїс Альварадо

Так, саме так, не знав, що це важливо.
Błażej Michalik

3

Якщо ваші звукові пристрої 0 - HDMI та 1 - аналогові, ви можете перейти до навушників за допомогою

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

Щоб зробити його постійним, відредагуйте /etc/pulse/default.paта внизу внизу ### Make some devices default:

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

Зараз все повинно працювати, як бажано. Не забудьте прокоментувати це ще раз, коли вам набридло користуватися навушниками.


1
Це лише змушує ubuntu переходити на навушники при запуску, незважаючи ні на що. З динаміків зараз немає звуку, навіть якщо навушники відключені. Таку поведінку я зазнав з 15.10.
Błażej Michalik

Боюсь, ти не станеш кращим за це. Посилання: bbs.archlinux.org/viewtopic.php?id=175951 bbs.archlinux.org/viewtopic.php?pid=1250505#p1250505 bbs.archlinux.org/viewtopic.php?id=212010 як сучасний стан техніки . Я дуже сподіваюся, що хтось може придумати краще рішення ...
emk2203

Мех ... Я міг би зробити обхідний шлях. Я можу приготувати сам - немає проблем. Але це просто псує речі. Кожні 6 місяців мені доводиться бігати через журнали змін Ubuntu та мого особистого бодгеліста, щоб побачити, де все порушилось через мою чи чужу недбалість, або просто через оновлення до API чи фронтанд. Ось чому я більше цього не роблю - це створює безлад, і не варто того часу, який я, мабуть, втрачу, після того, як зіткнуся з неминучим перервою на оновлення до чогось.
Błażej Michalik

1
Якщо ви можете зробити обхідний шлях, який 1) вибирає навушники, лише якщо вони підключені, інакше динаміки за замовчуванням і 2) автоматично перемикаються на навушники та вимикають динаміки, коли ви підключаєте навушники, мене це дуже зацікавить.
emk2203

Це працювало для мене на Debian Stretch, хоча мені доводиться використовувати 0 замість 1, що є індексом, поверненим pacmd list-sinks.
Родріго

0

Далі слід допомогти вирішити проблему, поки ви не знайдете виправлення проблеми.

Далі наведено кілька сценаріїв, які не роблять те, що ви хочете, але, ймовірно, містять усі фрагменти для того, що вам потрібно.

Другий містить купу пульс-аудіо матеріалів, які працюють, але які я не дуже розумію. Прошу вибачення заздалегідь. ;)

Ось сценарій, який я використовував для ввімкнення мовців після завантаження. Це може бути легко змінити, щоб налаштувати свій аудіовихід за бажанням.

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

Цей автоматично перемикає мій звуковий сигнал між HDMI та аналоговим виходом залежно від того, підключений HDMI чи ні. Не те, що ви хочете, але він виявляє, куди йде аудіовихід і знає, як переключити його кудись ще.

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

Вся справа в тому, що жоден сценарій, який запускається після lightgm (менеджера входу), не буде достатньо. Перед входом у систему відтворюються звукові ефекти. Чи змогли б вони працювати з init?
Błażej Michalik

Якщо ці "початкові" звуки для вас важливі, то ні, вони, ймовірно, не спрацюють. Під час завантаження в вашому PATH доступно дуже мало - саме те, що потрібно для того, щоб іти. Решта - як і речі, якими користуються ці сценарії, пізніше додаються до PATH - коли ваш користувач входить у систему. Я не знаю, коли навіть запущено pulseaudio. Якщо вам потрібно завантажитися, не розбудивши когось, тощо, я не знаю, як це вирішити.
Джо

Іншим випадковим вирішенням буде пошук пошукових звукових файлів, які відтворюються (можливо, щось.ogg) та заміни їх на безшумні файли. Досі проблема не виправляється, але, можливо, це допомагає. Також залежить від того, чи хоче щось пізніше використовувати ці звукові файли. Якщо так, ви можете зберегти оригінали та повернути їх після завантаження. Але тоді вам потрібно починати возитися з systemd, щоб кожен раз все виправляти.
Джо

@DavidFoerster - поки ви технічно правильні (будь-яка моя відповідь починається з "це не відповідь"), давати комусь місце, щоб почати шукати або інструменти, які можуть сприяти вирішенню, набагато краще, ніж мовчати IMHO. Коли я публікував, інших відповідей не було. Мій вміст не вписується в коментар чи рядок коментарів, і код повинен був би бути пов’язаним чи нечитабельним. Якби коментарі SE підтримували повне форматування, я б поставив публікацію в одному.
Джо

@DavidFoerster: Переглядаючи сторінку довідки, на яку ви пов’язали, це здається частковою відповіддю на питання. Це може бути не дуже хорошою відповіддю, але навіть спроба надати часткове рішення робить його дійсним "відповіддю" за визначенням терміна SE.
Ільмарі Каронен

0

Добре, я думаю, у мене є щось, що можна спробувати.
Якщо ви шукаєте мультимедійні системи, виберіть на тире. Відкрийте його та перейдіть доAudio вкладку, де ви можете вибрати пристрої аудіо введення та виводу за замовчуванням.

Це має бути встановлено за замовчуванням. Якщо це не так, ви завжди можете запустити sudo apt-get install gnome-media. Якщо він не відображається на тире, запустіть:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop. У текстовому файлі, що виходить, перейдіть до рядка, який починається із NoDisplay=.Змінити NoDisplay=trueна NoDisplay=false Надію, що допомагає!


Мені довелося перейти на Ubuntu Gnome кілька днів тому, і з цього боку у пакету gnome-media немає кандидата.
Błażej Michalik

Добре. Я побачу, що я тоді зможу викопати для тебе. Удачі!
Джеймс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.