Як перемикатися між навушниками та динаміками без відключення навушників


23

Коли я підключаю навушники, пристрій аудіовиходу переходить до навушників із моїх колонок.

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

Коли я відкриваю Налаштування звуку та перемикаюсь із "Навушники -> Вбудований аудіо" на "Лінійний вихід -> Вбудований аудіо", з мого динаміка чи навушників не виходить звук.

Я відкрив alsamixer, щоб побачити, що станеться, коли я підключаю / відключаю навушники.

Навушники в: Навушники в

Вихідні навушники: Навушники вийшли

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

Як бічна примітка, зміна пристрою виведення аудіо через "Налаштування звуку" викликає ті ж зміни, що й у alsamixer.


1
Наскільки я знаю, це апаратний перемикач всередині роз'єму для навушників, який не дозволить перемикатися. Після включення комутатора гучномовці вимкнено. Чи задумалися ви, можливо, використовувати навушники Bluetooth?
Терранс

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

1
Майте на увазі, що звукова карта може не мати змогу виводити декілька пристроїв - деякі звукові карти жорстко кодуються на апаратному рівні, щоб вимкнути вихід динаміків, коли встановлено з'єднання для навушників, і це неможливо перекрити ...
Thomas Ward

@Terrance Я розпочав щедрість, можливо, ви хочете зануритися далі і написати відповідь?
десерт

@dessert дивіться відповідь GoodGuyNick нижче - він може працювати не на всьому апаратному забезпеченні, і, на мій досвід, він не відокремлює виходи (що дозволило б вам одночасно надсилати аудіо програми на динаміки та programB на навушники), але якщо просто потрібно відключити автоматичний перемикач, це перше, що потрібно спробувати.
кіхот

Відповіді:


9

Підключення як динаміків, так і навушників та включення програмного забезпечення на ходу

Конструктивно Pulseaudio автоматично вимикає Line Out, коли підключаються навушники та використовує повзунок навушників. Ви можете спостерігати таку поведінку в альсаміксері. Ми хочемо, щоб повзунки для навушників та ліній виходили окремо і одночасно. Це надзвичайно корисно, якщо ви хочете перезавантажувати гнізда Realtek, щоб, скажімо, Rear Green для навушників та Blue для динаміків (за допомогою hdajackretask від alsa-tools).

Для цього слід безпосередньо відредагувати конфігурацію змішувача Pulseaudio.

1. Ми повідомляємо pulseaudio, що навушники завжди підключаються.

Редагувати:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

Знайти:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

Змінити noна yes.

Якщо ви використовуєте гнізда на передній панелі корпусу комп'ютера, [Jack Front Headphone]замість цього змініть .

2. За замовчуванням гучність Line Out контролюється лише Master, а не самим повзунком Line Out.

Ми хочемо об'єднати Line Out з Master. Додайте цей фрагмент до кінця файлу:

[Element Line Out]
switch = mute
volume = merge

3. Нам потрібно повністю відключити Line Out під час використання навушників.

Редагувати:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

Додайте цей фрагмент до кінця файлу:

[Element Line Out]
switch = off
volume = off

У деяких системах вам також може знадобитися відключити Front, додавши цей фрагмент:

[Element Front]
switch = off
volume = off

4. Як і Pulseaudio, Alsa сама відключає колонки, коли підключаються навушники.

Відкрити alsamixer: alsamixer -c0абоalsamixer -c1

Використовуйте / для автоматичного відключення звуку. Вимкнути режим автоматичного відключення звуку за допомогою . Закрийте alsamixer с Esc.

Збережіть свої зміни за допомогою: alsactl store

5. Перезапустіть Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

Тепер у вас є два окремих порту на тому ж мийці в pulseaudio. Вони заглушають один одного, тому ви можете переключитися на навушники, і це відключить Line Out, і навпаки. Для перемикання між портами можна використовувати мікшер звуку Gnome або Plasma або встановити відповідне розширення для робочого столу.


Джерело


2
Не слід редагувати файли безпосередньо в /usr/share. Якщо pulseaudio отримає оновлення (наприклад, для виправлення помилок), ваші зміни будуть видалені. Зазвичай існує механізм надання перезапису файлів у /etcподібних або подібних, але я не знаю конкретно про pulseaudio.
Робі Басак

@RobieBasak Джерелом цієї інформації є веб-сайт Arch Linux. На жаль, я не користувач Arch Linux, тому не можу опублікувати ваш коментар на їхньому сайті. Сподіваємось, хтось із плаваючих тут архівів Linux читає ваш коментар і розміщує його там.
WinEunuuchs2Unix

1
@RobieBasak, ну, можна написати сценарій обгортки, який робить це, і викликати його після входу
Роберт Ридл

1
На жаль, у мене це не вийшло, але дякую за вашу відповідь!
десерт

1
@dessert Моє задоволення. Було цікаво досліджувати цю сферу. Сподіваюся, ви знайдете те, що шукаєте.
WinEunuuchs2Unix

9

Щоб переключитися між динаміками та навушниками, виконайте наступні дії:

  1. Біжи alsamixer.
  2. Якщо потрібно, виберіть свою звукову карту за допомогою F6.
  3. Перейдіть до пункту "Автоматичне вимкнення звуку" правою стрілкою .
  4. Вимкніть його стрілкою вниз .
  5. Натисніть, Escщоб вийти.

Або ви можете виконати всі ці дії за допомогою однієї команди:

  1. Відкритий термінал
  2. бігати amixer -c 1 set 'Auto-Mute Mode' Disabled

Тепер ви можете переходити між колонками та навушниками в PulseAudio Volume Control.

Застосувавши ці вказівки, ви можете полегшити своє життя за допомогою перемикача звуку для швидкого переключення між навушниками та динаміками.


2
Я не думаю, що це спрацює для всіх апаратних комбінацій - деякі системи (як моя), здається, використовують апаратний комутатор певної різноманітності, що невідомо. Наприклад, якщо ви підключите навушники до гітарного підсилювача, гучномовці цього підсилювача зазвичай будуть вимкнені - і в цих пристроях немає комп'ютера ....
Чарльз Грін,

Це працювало для мене на Realtek ALC887-VD
Пол Прает

Дякую. Це працювало для мене. Чи є спосіб здійснити це за допомогою bash script?
ka3ak

1
@ ka3ak Я оновив відповідь за вас
GoodGuyNick

4

hdajackretask - це інструмент для переназначення функції ваших гнізда на різний вхід, вихід або відключення - наприклад, перетворити мікрофонний роз'єм на додатковий навушник, а чому б не зробити їх обома лініями виходу та підключити їх до вашого об'ємного приймача?

Встановіть alsa-tools-gui

sudo apt-get update
sudo apt-get install alsa-tools-gui

hdajackretaskПотім запустіть, щоб замінити один з ваших гніздів:

  1. Виберіть кодек
  2. Установіть прапорець "Замістити" для цього штифта та виберіть нову потрібну функцію
  3. Клацніть "Застосувати зараз"

    Примітка. Якщо у роз'ємі для навушників є вбудований апаратний комутатор, який перенаправляє звук, то ви SOL (Вибачте, не пощастило). Однак якщо ОС виявляє, коли в роз'єм для навушників підключена лінія, то, швидше за все, аудіо не перемикається механічно.

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


Знімок екрана hdajackretask для переключення навушників на колонки:

введіть тут опис зображення


Після натискання кнопки "Застосувати зараз" створюється скрипт оболонки, щоб внести зміни та запропонувати виконання суперкористувацького пароля. Також зберігається сценарій, /tmpякий можна скопіювати та пізніше виконати за допомогою sudo з командного рядка.

введіть тут опис зображення

Виконання командного рядка

Як уже згадувалося раніше, hdajackretaskстворює сценарій, script.shв /tmpаналогічний /tmp/hda-jack-retask-QW1EEZ/для функцій домкратів ви бажаєте:

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


Скопіюйте цей скрипт де-небудь в іншій системі (крім / tmp)

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

Потім відредагуйте спікер.sh

cd ~username
nano speaker.sh

Додайте рядок killall pulseaudio &у верхній частині файлу. Це необхідно, тому що функцію гнізда не можна змінити під час pulseaudioроботи. За замовчуванням pulseaudioвідновиться. Також змініть шлях до errors.logфайлу до /tmpабо де завгодно:

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


Для запуску сценарію:

sudo ./speaker.sh



З документації alsa-tools-1.1.5 / hdajackretask / README :

Документація для hdajackretask

Більшість звукових карт HDA Intel до певної міри можна продати, тобто їх можна використовувати для більш ніж одного. Цей інструмент є графічним інтерфейсом, щоб полегшити повторне використання гнізда - наприклад, перетворити мікрофон в додатковий навушник, а чому б не зробити їх обома лінійними виходами і підключити їх до вашого об'ємного приймача?

Швидкий старт

Запустіть додаток "hdajackretask" з командного рядка. Виберіть кодек у верхній панелі; у деяких людей є лише один - якщо у вас їх більше, один є "головним", а решта - це, мабуть, кодеки HDMI.

Всі гнізда (та інші входи / виходи) відображаються у розділі "Конфігурація контактів". Щоб замінити один з ваших гнізда, натисніть прапорець "Замістити" для цього штифта та виберіть потрібну функцію. Примітка. Якщо ви вибрали переопределення "Вихід лінії (ззаду)", у вас також повинна бути переопрацьована лінія "Вихід лінії (вперед)". Перевизначення "Вихід лінії (центр / LFE)" працюватиме лише з попередніми двома переопрацюваннями тощо.

Ви можете спробувати нову конфігурацію, натиснувши "Застосувати зараз". Щоб зробити вашу нову конфігурацію завантажувачем за замовчуванням, натисніть "Встановити заміна завантаження". Для виконання будь-якого з них потрібні привілеї root, тож вам, швидше за все, запитають пароль.

Швидкий вихідний

Ви закрутили? Натисніть кнопку "Видалити перезапуск завантаження", і після завершення процесу вимкніть комп'ютер, зачекайте трохи часу і знову увімкніть його. Тепер ви повинні повернутися там, де ви почали.

Це спрацювало?

Якщо це сталося, будьте щасливі, поділіться своєю радістю, зробіть щось приємне!

Якщо це не сталося, ось що спробувати:

  • Зайдіть у alsamixer і перевірте, чи є нові елементи регулювання гучності, і перевірте, чи вони не вмикаються та встановлені на розумне значення.

  • Іноді драйвер не відключає від'єднані штифти (якщо вони не підключені, чому турбуватися?). Ви можете це виправити, якщо на деякий час повністю вимкнути комп’ютер.

  • Дивіться варіант "модель = авто" нижче

Якщо це не допомагає, велика ймовірність, що ви зіткнетеся з драйвером або обмеженням обладнання. Ви можете зіткнутися з помилками драйверів (можливо, раніше ніхто не перевіряв чотири навушники!). Якщо ви це зробите, не соромтеся повідомляти про них у списку розсилки alsa-devel: однак, через брак робочої сили, швидше за все, це буде вирішуватися з дуже низьким пріоритетом (наявність звуку, що працює в коробці для стандартної конфігурації, є важливіше, ніж підтримка дивних конфігурацій). Однак якщо ви хакер ядра і придумали патч, який вирішує вашу проблему, не викручуючи нічого іншого, шанси досить високі, вона буде об'єднана.

Якщо ви підозрюєте, що проблема пов’язана з цим додатком GUI, а не драйвером ядра, сміливо напишіть мені електронний лист (і якщо вам подобається, додайте патч!). Якщо так, пишіть на адресу diwic@ubuntu.com.

Параметри

  • Показати непоєднані штифти Ваша BIOS несе відповідальність за налаштування пін на кодеці, які насправді підключені до чогось, а які ні. Іноді BIOS баггі і не показує всі ваші гнізда. Якщо у вас є гніздо, у вашому BIOS сказано, що його немає, ви можете спробувати включити випадкові штифти і побачити, чи працює він.

  • Встановити модель = auto Деякі кодеки, особливо старіші та на ядрах 3.8 і нижче, важко кодують для використання конкретної моделі, і тому вони не піклуються про ваші зміни. У багатьох випадках і з досить новим ядром автоматичний парсер зараз добре працює і для цих кодеків. Ви можете змусити використовувати автоматичний аналізатор, встановивши цей прапорець. Однак у деяких випадках явна модель є з якоїсь причини, якщо так, то ви застрягли.

  • Розширене переоцінка Це лише для експертів. Це змушує вибирати кожне поле конфігурації окремо, а не лише кілька заздалегідь заданих значень, які мають сенс. Зауважте, що більшість комбінацій тут є недійсними в тій чи іншій мірі, тому вам, мабуть, не слід зіпсувати це, якщо ви не прочитали та не зрозуміли розділ "Конфігурація за замовчуванням" специфікації HD Audio. (Що на момент написання цього повідомлення доступне тут: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Підказки парсера Це дозволяє вам надсилати спеціальні "підказки" драйверу, які спричиняють поведінку синтаксичного розбору. Залиште їх у налаштуваннях за замовчуванням, якщо ви не прочитали документацію на драйвер. (Що на момент написання цього документа доступне тут: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - див. Розділ "Підказки".)


1
На жаль, у мене це не вийшло, але дякую за вашу відповідь! Оскільки ваша людина дуже близька до того, на що я сподівався, і, здається, забезпечить найкращий спосіб досягти мети (якщо це можливо), що вам нагороджено щедрості - Подяки! :)
десерт

3

У KDE це можна зробити:

системні налаштування -> мультимедіа -> налаштування аудіо та відео -> вкладка налаштування аудіо обладнання> виберіть відповідну звукову карту> в розділі Роз'єм ви побачите опцію навушників та динаміків.

налаштування системи


3
Я не використовую kde, але Unity має подібні "Налаштування звуку". Зміна пристрою аудіовиходу з навушників на динаміки приглушує лише навушники. Здається, апаратний перемикач під час підключення навушників.
user276318

1

Gnome-Shell Extension Audio-Output-Switcher

найпростіший спосіб - просто встановити розширення аудіовиключення

або ви можете клонувати безпосередньо з git:

git clone https://github.com/adaxi/audio-output-switcher.git ~/.local/share/gnome-shell/extensions/audio-output-switcher@anduchs

скріншот

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


На жаль, у мене це не вийшло, але дякую за вашу відповідь!
десерт

0

Ви можете використовувати індикатор перемикача звуку , якщо ви не проти додати PPA.

Це дасть вам індикатор на системному треї, який ви можете натиснути, щоб змінити вхідні або вихідні джерела звуку. Більше ви можете прочитати на веб-сайті http://yktoo.com/en/software/indicator-sound-switcher .

Термінальний метод

Для встановлення за допомогою терміналу введіть наступне.

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

Метод GUI

Щоб встановити, користуючись графічним інтерфейсом, виконайте наступні дії:

  1. Запустіть додаток Software & Updates від Unity Dash.

  2. Клацніть на вкладці "Інше програмне забезпечення". Потім додайте наступне нове джерело:

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    (Не забудьте замінити "vivid" на реліз Ubuntu. Підтримувані випуски перелічені на сторінці http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ ).

  3. Запустіть програмний центр Ubuntu від Unity Dash.

  4. Знайдіть "Індикатор вибору вводу / виводу звуку" та встановіть його.

Примітка. Це рішення не працюватиме, якщо ваша система має апаратний перемикач всередині гнізда для навушників, як запропонував Terrance вище.


У мене насправді це вже було встановлено. Як і у Вашій записці, схоже, є апаратний перемикач.
користувач276318

0

Я створив цей сценарій для цієї проблеми:

https://github.com/biplobsd/Fixing-front-panel-audio

Просто запустіть команди, подані у файлі README репозиторію у своєму терміналі. Це завантажує та запускає сценарій.

Ці команди:

git clone https://github.com/biplobsd/Fixing-front-panel-audio.git
cd Fixing-front-panel-audio
chmod +x Fixing-front-panel-audio.sh
./Fixing-front-panel-audio.sh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.