LINUX.ORG.RU

Переключение звука FreeBSD

 ,


0

3

Есть ноут ThinkPad x250 c разьемом под джек, который норм работает, в device.hint написано следующее (в принципе оно само так определяется, и без хинтов:

hint.hdaa.1.nid20_config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15"
в пиндампе оно так с вставленными наушниками в ноут:
hdaa1: Dumping AFG pins:
hdaa1: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa1: 18 90a60130 3  0  Mic           Fixed Digital Internal   Unknown 1
hdaa1:     Caps: IN                 
hdaa1: 19 40000000 0  0  Line-out      None  Unknown 0x00       Unknown 0 DISA
hdaa1:     Caps: IN                 
hdaa1: 20 90170110 1  0  Speaker       Fixed Analog  Internal   Unknown 1
hdaa1:     Caps:    OUT    EAPD     
hdaa1: 21 0421101f 1  15 Headphones    Jack  1/8     Right      Black   0
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x80000000 (connected)
hdaa1: 22 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x00000000 (disconnected)
hdaa1: 24 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN OUT         VREF Sense: 0x00000000 (disconnected)
hdaa1: 25 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN                  Sense: 0x00000000 (disconnected)
hdaa1: 26 04a11020 2  0  Mic           Jack  1/8     Right      Black   0
hdaa1:     Caps: IN             VREF Sense: 0x80000000 (connected)
hdaa1: 27 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN OUT         VREF Sense: 0x00000000 (disconnected)
hdaa1: 30 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps:    OUT              Sense: 0x00000000 (disconnected)
hdaa1: NumGPIO=5 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1

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

hdaa1: Dumping AFG pins:
hdaa1: nid   0x    as seq device       conn  jack    loc        color   misc
hdaa1: 18 90a60130 3  0  Mic           Fixed Digital Internal   Unknown 1
hdaa1:     Caps: IN
hdaa1: 19 40000000 0  0  Line-out      None  Unknown 0x00       Unknown 0 DISA
hdaa1:     Caps: IN
hdaa1: 20 90170110 1  0  Speaker       Fixed Analog  Internal   Unknown 1
hdaa1:     Caps:    OUT    EAPD
hdaa1: 21 0421101f 1  15 Headphones    Jack  1/8     Right      Black   0
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x00000000 (disconnected)
hdaa1: 22 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x80000000 (connected)
hdaa1: 24 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN OUT         VREF Sense: 0x00000000 (disconnected)
hdaa1: 25 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN                  Sense: 0x80000000 (connected)
hdaa1: 26 04a11020 2  0  Mic           Jack  1/8     Right      Black   0
hdaa1:     Caps: IN             VREF Sense: 0x00000000 (disconnected)
hdaa1: 27 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps: IN OUT         VREF Sense: 0x00000000 (disconnected)
hdaa1: 30 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps:    OUT              Sense: 0x00000000 (disconnected)
hdaa1: NumGPIO=5 NumGPO=0 NumGPI=0 GPIWake=0 GPIUnsol=1

Казалось бы, делов то, пишем в device.hint так:

hint.hdaa.1.nid20_config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15"
hint.hdaa.1.nid22.config="as=1 seq=15 device=Headphones conn=Jack"
Но после этого звук не работает нигде. Что я не так делаю?

★★★★★

В OSS звук выводится напрямую. Он не может одновременно быть и там и там.

Ты можешь проверить какой звук принадлежит какому иниту:
cat /dev/sndstat

Видишь, что у тебя разьём для наушников и ноутбучные колонки принадлежат разным инитам. Дальше, например, тебе нужно вывести в pcm5, тогда

hw.snd.default_unit=5 в /etc/sysctl.conf

Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

А вот жешь нет:

$  cat /dev/sndstat
Installed devices:
pcm0: <Intel Broadwell (HDMI/DP 8ch)> (play)
pcm1: <Realtek ALC292 (Analog 2.0+HP/2.0)> (play/rec) default
pcm2: <Realtek ALC292 (Internal Analog Mic)> (rec)
No devices installed from userspace.
ну или я что-то опять не так понимаю

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

Возможно, у тебя один порт для наушников и микрофона? У тебя сейчас pcm1 используется по дефолту, попробуй pcm2

Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

Да, физически один джек для наушников и микрофона, как в телефонной гарнитуре, ну и как в ноутах делают. Так в pcm2 только микрофон есть, как я понимаю - это встроенный в ноут микрофон:

pcm0: <Intel Broadwell (HDMI/DP 8ch)> at nid 3 on hdaa0
pcm1: <Realtek ALC292 (Analog 2.0+HP/2.0)> at nid 20,21 and 26 on hdaa1
pcm2: <Realtek ALC292 (Internal Analog Mic)> at nid 18 on hdaa1

Ну и в нем каналы только про микрофон:

$ mixer -f /dev/mixer2
Mixer rec      is currently set to   0:0
Mixer monitor  is currently set to  92:92
Recording source: monitor

а в pcm1 все есть:

$ mixer -f /dev/mixer1
Mixer vol      is currently set to  39:39
Mixer pcm      is currently set to 100:100
Mixer speaker  is currently set to  59:59
Mixer mic      is currently set to  81:81
Mixer mix      is currently set to  81:81
Mixer rec      is currently set to  82:82
Mixer igain    is currently set to   0:0
Mixer ogain    is currently set to   3:3
Recording source: mic

Slack ★★★★★
() автор топика
Ответ на: комментарий от mord0d

просто как я понял - у тебя была беда с двумя входными устройствами, и на них можно было повесить seq 14. А мне получается, надо переключать между тремя аудиоустройствами - колонки ноутбука, и два джека, и если вешать на два джека seq 15 - то оно не работает

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

Ну, device.hints — чёрная магия, да.

Тебе нужно определить nid’ы, отвечающие за вход/выход (микрофоны, наушники, динамики), у меня это получилось тоже далеко не с первого раза.

Ну и насколько я понял, поле device= тоже вроде как крайне желательно прописывать (сравни моё в том треде и своё в ОП).

mord0d ★★★★★
()
Ответ на: комментарий от Slack

У меня немного более комплексная задача была:

hint.hdaa.0.nid18.config="as=2 seq=0 device=Mic"                               
hint.hdaa.0.nid20.config="as=1 seq=0 device=Speaker"                        
hint.hdaa.0.nid21.config="as=1 seq=15 device=Headphones"                       hint.hdaa.0.nid24.config="as=2 seq=14 device=Mic"
mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Да ниды то я определил, оно же когда в него джек вставляешь - становится connected:

Колонки ноута

hdaa1: 20 90170110 1  0  Speaker       Fixed Analog  Internal   Unknown 1
hdaa1:     Caps:    OUT    EAPD    

Джек на ноуте:

hdaa1: 21 0421101f 1  15 Headphones    Jack  1/8     Right      Black   0
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x80000000 (connected)

Джек на док станции:

hdaa1: 22 411111f0 15 0  Speaker       None  1/8     Rear       Black   1 DISA
hdaa1:     Caps:    OUT HP EAPD      Sense: 0x80000000 (connected)
там больше ничего connected то и нет, только
hdaa1:     Caps: IN                  Sense: 0x80000000 (connected)
hdaa1: 26 04a11020 2  0  Mic           Jack  1/8     Right      Black   0
но это микрофон, и вход.

И по идее ему надо сказать - играй звук в колонки с нидом 20, а если что-то вставлено в нид 21 или 22 - играй звук туда, да, и нид 22 - это наушники а не спикер. Я это ему говорю вот так:

hint.hdaa.1.nid20_config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15"
hint.hdaa.1.nid22.config="as=1 seq=15 device=Headphones 
conn=Jack"
после чего звука нет нигде )

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

Ещё раз посмотри на мой рабочий пример. Это seq=14 может быть несколько, а seq=15 должен быть только один (ну или на один меньше чем переключаемых устройств). То есть дефолтный спикер в ноуте seq=0, а все его замены уже seq=15, тогда должно работать.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Слушай, ну вот в man сказано, что

                        The sequence number 15 has a special meaning for
                        output associations.  Output pins with this number and
                        device type “Headphones” will duplicate (with
                        automatic mute if jack detection is supported) the
                        first pin in that association.

                        The sequence numbers 14 and 15 has a special meaning
                        for input associations.  Their presence in association
                        defines it as multiplexed or mixed respectively.  If
                        none of them are present and there are more than one
                        pin in association, the association will provide
                        multichannel input.

как я понимаю seq14 - это вообще только для инпут устройств, не?

Slack ★★★★★
() автор топика
Последнее исправление: Slack (всего исправлений: 1)
Ответ на: комментарий от Slack

Судя по всему да. У меня seq=14 на device=Mic и всё работает, НО у обоих primary стоит seq=0 и работает автопереключение.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

я же правильно понимаю, что все устройства, между которыми предполагается свитчить - должны быть в одной группе as ?

Slack ★★★★★
() автор топика
Ответ на: комментарий от mord0d

То есть дефолтный спикер в ноуте seq=0, а все его замены уже seq=15, тогда должно работать.

Ну вроде я так и написал, не?

hint.hdaa.1.nid20_config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15"
hint.hdaa.1.nid22.config="as=1 seq=15 device=Headphones 
conn=Jack"
дефолтный спикер - 20, 21 и 22 - разьемы

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

я же правильно понимаю, что все устройства, между которыми предполагается свитчить - должны быть в одной группе as ?

Именно так.

Ну вроде я так и написал, не?

hint.hdaa.1.nid20_config="as=1 seq=0"
hint.hdaa.1.nid21.config="as=1 seq=15"
hint.hdaa.1.nid22.config="as=1 seq=15 device=Headphones 
conn=Jack"

дефолтный спикер - 20, 21 и 22 - разьемы

Во-первых пропиши всем device=, а вот без conn= у меня вполне себе работает (может не работать если оно неверно определяет Internal/Jack).
Во-вторых input и output не могут быть в одной as= (смотри мой пример).

А ещё у тебя там лишний перенос (или ты криво скопировал).

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Во-вторых input и output не могут быть в одной as= (смотри мой пример).

у меня так и есть, nid20 nid21 и nid22 - это все output

А ещё у тебя там лишний перенос (или ты криво скопировал).

криво скопировал

Вообще интересно, что если сказать так:

hint.hdaa.1.nid20_config="as=1 seq=0 device=Speaker"
hint.hdaa.1.nid21.config="as=2 seq=15 device=Headphones conn=Jack"
hint.hdaa.1.nid22.config="as=1 seq=15 device=Headphones conn=Jack"
- то есть убрать из as=1 nid21, который разьем в нотбуке, то внезапно начинает работать разьем в доке nid22 но оба разьема nid21 и nid22 на seq=15 работать не хотят

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

Пока нет идей. Если что-нибудь надумаю — отпишусь.

mord0d ★★★★★
()
Ответ на: комментарий от Slack

hint.hdaa.1.nid20_config

Вместо ‘_’ должна быть ‘.’
Или снова криво скопировал?

Minona ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.