18.04, 16.04 Наушники обнаружены, но не включаются автоматически после запуска

26

Изменить: проблема, кажется, также влияет на 18.04.

У меня есть эта проблема с 15.10, но она начала по-настоящему ломать мои шестерни после обновления до 16.04.

Допустим, у меня подключены наушники. Я перезагружаюсь \ перезагружаюсь \ загружаюсь в 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прежде всего. Это заставляет PA использовать настройки по умолчанию. Проблема сохраняется?
emk2203
Да, это так. Все как было, наушники все-таки обнаружены. Я дважды убедился, что rm работает - ни один из вышеперечисленных каталогов не присутствовал. Я сделал перезагрузку после этого.
Блажей Михалик
Не могли бы вы опубликовать pacmd list-cards?
emk2203
@ emk2203 Готово. Некоторые ключевые слова на польском языке, поэтому: "wyjście" == "output", "wejście" == "input", "wewnętrzny mikrofon" == "внутренний микрофон".
Bła Michej Michalik
Какой музыкальный проигрыватель вы используете?
userDepth

Ответы:

7

Мое мнение об этом будет следующим: использование PulseAudio. Предполагая, что когда вы входите в Ubuntu, у вас всегда подключены наушники, то следующее будет гарантировать, что при загрузке в Ubuntu он автоматически установит его как вход и выход по умолчанию (Предполагая, что вы хотите оба варианта).

В Ubuntu зайдите в терминал и введите следующее, из которого вы будете собирать только индексный номер:

Для ваших ВЫХОДНЫХ УСТРОЙСТВ :

pacmd list-sinks - Будет много информации, но ищите номера индексов и соответствующее устройство, которое будет вашим новым устройством вывода по умолчанию.

Для ваших ВХОДНЫХ УСТРОЙСТВ :

pacmd list-sink-inputsИЛИ pacmd list-samples- Будет много информации, но ищите номера индекса и соответствующее устройство, которое будет вашим новым устройством ввода по умолчанию. Используйте list-samples в случае, если в list-sink-input он не отображается.

Вплоть до этого момента в Ubuntu с подключенными наушниками у вас должно быть 2 номера индекса. Один для вашего ввода и вывода. Теперь мы пойдем и отредактируем вашу конфигурацию по умолчанию 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 ИЛИ 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, просто чтобы дать вам представление.

Для графического интерфейса я рекомендую pavucontrolили PulseAudio регулятор громкости. Он предлагает возможность установить устройство по умолчанию / резервный для устройств ввода и вывода. Использование обоих методов может дать вам то, что вы хотите.

Луис Альварадо
источник
Я не думаю, что это сработает, но вы можете быть на что-то. Дело в том, что на моей машине установлены два звуковых устройства: Intel HDMI и Realtek аналог. Индексы: 0 - HDMI, 1 - аналоговый. Устройство Realtek имеет два порта - динамики и наушники (с приоритетами 10k и 9k соответственно - связаны ли эти цифры с приоритетом переключения?). Насколько я вижу, эти порты не могут быть проиндексированы в default.paфайле так, как вы представили.
Bła Michej Michalik
Привет @ BłażejMichalik на самом деле это было проверено на компьютере моей жены и мой, прежде чем опубликовать его здесь. Для путаницы в указателе вы можете использовать полное имя, указанное в конце ПРИМЕЧАНИЕ.
Луис Альварадо
2
Ну, ладно, работает, но по умолчанию динамики тоже отключаются, даже если нет наушников. Такое поведение я испытал с 15.10. Это не исправление само по себе.
Bła Michej 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

Все должно работать сейчас, как хотелось бы. Убедитесь, что вы прокомментируете это снова, когда вы устали от использования наушников.

emk2203
источник
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
Мех ... Я мог бы сделать обходное решение для bash. Я могу приготовить один сам - без проблем. Но это просто все портит. Каждые 6 месяцев мне приходится проходить через журналы изменений Ubuntu и мой личный список задач, чтобы увидеть, где что-то сломалось из-за моей или чьей-либо халатности или просто из-за обновления какого-либо API или интерфейса. Вот почему я больше этим не занимаюсь - это создает беспорядок и не стоит того времени, которое я, вероятно, потеряю после того, как столкнусь с неизбежным разрывом обновления до чего-либо.
Błażej Michalik
1
Если вы можете сделать обходной путь bash, который 1) выбирает наушники только в том случае, если они подключены, иначе динамики по умолчанию и 2) автоматически переключаются на наушники и отключают звук при подключении наушников, я был бы очень заинтересован в этом.
emk2203
Это сработало для меня в Debian Stretch, хотя я должен использовать 0 вместо 1, что является индексом, возвращаемым списочными приемниками pacmd.
Родриго
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?
Блажей Михалик
Если эти «начальные» звуки важны для вас, то нет, они, вероятно, не сработают. Во время загрузки очень мало доступно / в вашем PATH - только то, что нужно, чтобы все заработало. Остальные, подобные этим сценариям, добавляются в PATH позже, когда ваш пользователь входит в систему. Я не знаю, когда pulseaudio даже запускается. Если вам нужно загрузиться, не разбудив кого-то и т. Д., Я не знаю, как с этим справиться.
Джо
Другой случайный обходной путь - поиск звуковых файлов, которые воспроизводятся (вероятно, что-то .ogg), и замена их на немые файлы. Все еще не решает проблему, но, возможно, это помогает. Также зависит от того, хочет ли кто-нибудь еще использовать эти звуковые файлы позже. Если это так, вы можете сохранить оригиналы и положить их обратно после загрузки. Но тогда вы должны начать возиться с systemd, чтобы каждый раз делать все правильно.
Джо
@DavidFoerster - хотя вы технически правы (любой мой ответ начинается с «это не ответ»), дать кому-то место, где можно начать поиск, или инструменты, которые могут внести вклад в решение, намного лучше, чем замолчать ИМХО. Когда я писал, других ответов не было. Мой контент не поместился бы в комментарии или в строке комментариев, и код должен был быть связан или не читаем. Если бы комментарии SE поддерживали полное форматирование, я бы поместил пост в один.
Джо
@DavidFoerster: Глядя на страницу справки, на которую вы ссылаетесь, это выглядит как частичный ответ на вопрос. Это может быть не очень хороший ответ, но даже попытка предоставить частичное решение делает его действительным «ответом» по определению термина SE.
Ильмари Каронен
0

Хорошо, я думаю, у меня есть кое-что, что вы можете попробовать.
Если вы ищете мультимедийные системы, выберите на приборной панели. Откройте его и перейдите на Audioвкладку, где вы можете выбрать устройства ввода и вывода звука по умолчанию.

Это должно быть установлено по умолчанию. Если это не так, вы всегда можете бежать sudo apt-get install gnome-media. Если это не показано в Dash, запустите:

gksudo gedit /usr/share/applications/gstreamer-properties.desktop, В появившемся текстовом файле, перейдите начинается с линией NoDisplay=.изменения в NoDisplay=trueк NoDisplay=false Надежде , что помогает!

Джеймс
источник
Мне пришлось переключиться на Ubuntu Gnome несколько дней назад, и на этой стороне пакетного gnome-media нет кандидата.
Блажей Михалик
Хорошо. Я посмотрю, что я могу выкопать для вас тогда. Удачи!
Джеймс