ALSA и вечная занятость микрофона [не совсем решено] (ALSA видит микрофон, но он не работает — кто виноват и что делать? И другие приключения с ALSA...)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
entada
Сообщения: 223
ОС: Debian stable, IceWM

ALSA и вечная занятость микрофона [не совсем решено]

Сообщение entada »

Пожалуйста, подскажите, из-за чего может быть такая проблема.

Есть компьютер Intel NUC8i3BEH. На нём Debian Buster (правда, не установленный, а перенесённый на диске из Intel NUC5i3RYH).
Установлен alsa-utils.
В какой-то момент (уже когда обнаружилась неработоспособность микрофона) была попытка поставить поверх этого pulseaudio и pavucontrol — в результате звук вообще пропал; после удаления и перезагрузки восстановился.

Есть звуковая карта:

Код: Выделить всё

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc0a20000 irq 132
Есть круглое гнездо на передней панели — не только для динамиков, но и для гарнитуры с микрофоном:

Код: Выделить всё

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC233 Analog [ALC233 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Вроде как к микрофону из гарнитуры можно обратиться всякими способами:

Код: Выделить всё

$ arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
jack
    JACK Audio Connection Kit
pulse
    PulseAudio Sound Server
default:CARD=PCH
    HDA Intel PCH, ALC233 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC233 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Front speakers
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Hardware device with all software conversions
usbstream:CARD=PCH
    HDA Intel PCH
    USB Stream Output
В alsamixer есть устройства (в разделе Capture) Mic Boost, Capture, Internal Mic Boost. Включить/отключить их нельзя — только регулировать уровень.

Но при попытке записать arecord говорит, что микрофон занят:

Код: Выделить всё

$ arecord -D plughw:0,0  record.wav
arecord: main:828: audio open error: Устройство или ресурс занято
Если обратиться к заведомо несуществующему устройству, ошибка будет другая:

Код: Выделить всё

$ arecord -D plughw:1,0  record.wav
ALSA lib pcm_hw.c:1822:(_snd_pcm_hw_open) Invalid value for card
arecord: main:828: audio open error: Нет такого файла или каталога
$ arecord -D plughw:0,1  record.wav
arecord: main:828: audio open error: Нет такого файла или каталога
То есть микрофон 0,0 всё-таки есть. Но не работает, потому что занят.
А более высокоуровневые программы (audacity или актуальные сейчас Zoom и Discord) говорят, что у меня микрофона в принципе нет. В консоль обычно выводится примерно такой комментарий

Код: Выделить всё

ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
По совету знакомого была куплена USB-камера с микрофоном. Камера работает без всякой настройки, а микрофон ведёт себя так же, как и из гарнитуры: он есть

Код: Выделить всё

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc0a20000 irq 132
 1 [Camera         ]: USB-Audio - A4Tech Full HD 720P PC Camera
                      Sonix Technology Co., Ltd. A4Tech Full HD 720P PC Camera at usb-0000:00:14.0-4,

Код: Выделить всё

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC233 Analog [ALC233 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Camera [A4Tech Full HD 720P PC Camera], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Код: Выделить всё

$ arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
jack
    JACK Audio Connection Kit
pulse
    PulseAudio Sound Server
default:CARD=PCH
    HDA Intel PCH, ALC233 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC233 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Front speakers
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC233 Analog
    Hardware device with all software conversions
usbstream:CARD=PCH
    HDA Intel PCH
    USB Stream Output
default:CARD=Camera
    Default Audio Device
sysdefault:CARD=Camera
    Default Audio Device
front:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    Front speakers
surround21:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    Direct sample mixing device
dsnoop:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    Direct sample snooping device
hw:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    Direct hardware device without any conversions
plughw:CARD=Camera,DEV=0
    A4Tech Full HD 720P PC Camera, USB Audio
    Hardware device with all software conversions
usbstream:CARD=Camera
    A4Tech Full HD 720P PC Camera
    USB Stream Output
но не работает, ибо занят:

Код: Выделить всё

$ arecord -D plughw:1,0  record.wav
arecord: main:828: audio open error: Устройство или ресурс занято
Что это может быть и что в таком случае делать?

Файл /etc/asound.conf:

Код: Выделить всё

defaults.pcm.card 0
defaults.pcm.device 3
defaults.ctl.card 0
defaults.pcm.subdevice 1
Последний раз редактировалось entada 11.05.2020 22:58, всего редактировалось 4 раза.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона

Сообщение Hephaestus »

entada
А как Вы определили, что микрофон - это именно plughw, а не default, например?

Попробуйте не указывать устройство совсем:
arecord record.wav
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

Вы правы, может быть что угодно...

Код: Выделить всё

$ arecord record.wav
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
arecord: main:828: audio open error: Нет такого файла или каталога
P. S. А если всё же указывать устройство — из всего выдаваемого arecord -L списка откликается только null:

Код: Выделить всё

$ arecord -D null  record.wav
Recording WAVE 'record.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
^CAborted by signal Прерывание...

$ arecord -D jack  record.wav
Cannot connect to server socket err = Нет такого файла или каталога
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D pulse  record.wav
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

arecord: main:828: audio open error: В соединении отказано

$ arecord -D default  record.wav
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D sysdefault  record.wav
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D front  record.wav
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.HDA-Intel.pcm.front.3:CARD=0'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога
ALSA lib conf.c:5047:(snd_config_expand) Evaluate error: Нет такого файла или каталога
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM front
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D dmix  record.wav
ALSA lib pcm_dmix.c:1043:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
arecord: main:828: audio open error: Недопустимый аргумент

$ arecord -D dsnoop  record.wav
ALSA lib pcm_dsnoop.c:638:(snd_pcm_dsnoop_open) unable to open slave
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D hw  record.wav
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D plughw  record.wav
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D usbstream  record.wav
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
arecord: main:828: audio open error: Недопустимый аргумент
P. P. S.
А, нет, ещё же номер надо...

Код: Выделить всё

$ arecord -D front:0,0 record.wav
Recording WAVE 'record.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1339: Sample format non available
Available formats:
- S16_LE
- S32_LE

$ arecord -D dmix:0,0 record.wav
ALSA lib pcm_dmix.c:1043:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
arecord: main:828: audio open error: Недопустимый аргумент

$ arecord -D dsnoop:0,0 record.wav
Recording WAVE 'record.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
arecord: set_params:1339: Sample format non available
Available formats:
- S32_LE

$ arecord -D hw:0,0  record.wav
arecord: main:828: audio open error: Устройство или ресурс занято

$ arecord -D usbstream:0,0 record.wav
ALSA lib pcm_usb_stream.c:508:(_snd_pcm_usb_stream_open) Unknown field hint
arecord: main:828: audio open error: Недопустимый аргумент
Последний раз редактировалось entada 06.05.2020 21:22, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона

Сообщение Hephaestus »

entada
Кстати, возможно (и даже скорее всего), что микрофон - это, 0,1, а не 0,0.

Тогда будет так:
arecord -D plughw:0,1 record.wav
ну или так
arecord -D default:0,1 record.wav

Но вообще, конечно, команда без указания устройства должна использовать, скажем так, первое доступное.
И с pulseaudio не всё ясно. В Debian оно сейчас рулит вроде бы, как там без него будет работать, не знаю.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

Кажется, 0,1 совсем нет:

Код: Выделить всё

$ arecord -D plughw:0,1  record.wav
arecord: main:828: audio open error: Нет такого файла или каталога

$ arecord -D default:0,1  record.wav
ALSA lib conf.c:4898:(parse_args) Unknown parameter 1
ALSA lib conf.c:5031:(snd_config_expand) Parse arguments error: Нет такого файла или каталога
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM default:0,1
arecord: main:828: audio open error: Нет такого файла или каталога
С pulseaгdio в pavucontrol вообще нет ни одного устройства. Не только микрофона, но и вывода звука.

P. S.
Кажется, те устройства, которые ругались на неопределённый формат и количество каналов, на самом деле работают:

Код: Выделить всё

$ arecord -D front:0,0 -f S32_LE -c 2  record.wav
Recording WAVE 'record.wav' : Signed 32 bit Little Endian, Rate 8000 Hz, Stereo
Warning: rate is not accurate (requested = 8000Hz, got = 44100Hz)
         please, try the plug plugin 
^CAborted by signal Прерывание...

$ arecord -D dsnoop:0,0 -f S32_LE -c 2  record.wav
Recording WAVE 'record.wav' : Signed 32 bit Little Endian, Rate 8000 Hz, Stereo
Warning: rate is not accurate (requested = 8000Hz, got = 48000Hz)
         please, try the plug plugin 
^CAborted by signal Прерывание...
Причём даже при отключённой гарнитуре — то есть в Intel NUC8i3BEH есть встроенный микрофон.

Теперь надо понять, как сделать его доступным audacity и т. д. (которые, наверное, тоже запрашивают устройство по умолчанию).
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона

Сообщение Hephaestus »

entada писал(а):
06.05.2020 21:24
Кажется, 0,1 совсем нет:
Да. Сейчас у себя проверил. И ввод, и вывод на одном устройстве hw:0,0.
И arecord -D default rec.wav нормально работает (без указания номера).
Кстати, в audacity при выборе устройств раскрывается нехилый такой список (ну, собственно, тот же, что и по arecord -L). В моём случае это проще: все устройства имеют обозначения (Front Mic, Rear Mic, Front Speaker и т.д.).
У Вас в audacity совсем ничего нет?
entada писал(а):
06.05.2020 21:24
С pulseaгdio в pavucontrol вообще нет ни одного устройства. Не только микрофона, но и вывода звука.
Вообще-то регуляторы там появляются в момент активности (пока плеер играет, к примеру).
Но два общих регулятора и список устройств всё-таки должны быть.
Если совсем ничего нет - это как-то странно.

А в alsamixer по клавише F6 список устройств есть? Одно там устройство или больше?
Есть подозрение, что не то устройство выбрано.
Добавлено (21:49):
entada писал(а):
06.05.2020 21:24
Теперь надо понять, как сделать его доступным audacity и т. д. (которые, наверное, тоже запрашивают устройство по умолчанию).
По идее, в audacity устройство можно выбрать, нажав на кнопку со значком микрофона.
А прописывать default надо в asound.conf, насколько я понимаю, но у меня он пустой. Так сразу не соображу.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

В alsamixer по F6:

Код: Выделить всё

-  (default) 
0  HDA Intel PCH      
enter device name...
Одно устройство, насколько я понимаю (если подключена и камера — то, соответственно, два, но все тесты, где явно не сказано иное — без камеры).

В audacity совсем ничего нет — пустой список микрофонов.
В списке колонок audacity четыре пункта: sysdefault, hdmi, default, dmix.

С пустым asound.conf на Intel NUC8i3BEH (который сейчас) у меня даже alsamixer не запускался...
Последний раз редактировалось entada 06.05.2020 22:00, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: ALSA и вечная занятость микрофона

Сообщение Bizdelnick »

Может быть, это jack шалит? Он Вам нужен?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

А jack (который подсистема, а не круглый штекер гарнитуры) у меня и вовсе нет — только ALSA и, может, невычищенные остатки Pulse...

Была идея поставить и jack на всякий случай, но отговорили — не для жизни, мол, оно, а только для писания музыки. И на обращение к одноимённому устройству arecord возвращает ошибку.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона

Сообщение Hephaestus »

entada писал(а):
06.05.2020 20:27
defaults.pcm.card 0
defaults.pcm.device 3
defaults.ctl.card 0
defaults.pcm.subdevice 1
А вот эти настройки откуда взяты?
Почему именно device 3 и subdevice 1?

Просто, исходя из arecord -l, должно быть

Код: Выделить всё

defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0
defaults.pcm.subdevice 0
если не ошибаюсь.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

Устройство 3 — для вывода в HDMI:

Код: Выделить всё

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC233 Analog [ALC233 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Почему подустройство 1 — не помню.

Сейчас defaults.pcm.subdevice было исправлено на 0 — воспроизведение не прекратилось, микрофон в audacity появился (в количестве одной штуки: HDA Intel PCH: ALC233 Analog (hw:0,0)).
Огромное спасибо!

То есть defaults.pcm.device — это воспроизведение, но defaults.pcm.subdevice — запись?
Последний раз редактировалось entada 06.05.2020 22:37, всего редактировалось 2 раза.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона

Сообщение Hephaestus »

entada писал(а):
06.05.2020 22:26
То есть defaults.pcm.device — это воспроизведение, но defaults.pcm.subdevice — запись?
Точно не скажу.
Но вроде бы у Вас card 0 имеет device 0, в котором всего одно subdevice - с индексом 0.
И если указать subdevice 1 (которого в card0, device0 нет), то работать не будет. А уж звук это или воспроизведение, я не знаю.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона

Сообщение entada »

Ну, device 3 у card 0 точно есть. И если указать не его, то звук не будет воспроизводиться (не в имеющиеся колонки, во всяком случае)...

Во всяком случае с /etc/asound.conf:

Код: Выделить всё

defaults.pcm.card 0
defaults.pcm.device 3
defaults.ctl.card 0
defaults.pcm.subdevice 0
всё работает.
Ещё раз спасибо!
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона [решено]

Сообщение entada »

Эх, рано мне было радоваться, надо было сначала совсем всё-всё проверить...

В audacity с такой настройкой микрофон работает. И в arecord, если устройство указать. И в vlc вроде.
Но не в chromium, Zoom и, как выяснилось, в arecord без указания устройства (хотя вроде бы в первый момент после изменения asound.conf работал...).

Если, действительно, поставить в /etc/asound.conf:

Код: Выделить всё

defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0
defaults.pcm.subdevice 0
то микрофон работает во всех этих программах, но ожидаемо не работает вывод звука (точнее, звук формально выводится без ошибок, но не попадает в колонки). То есть поговорить в Jitsi Meet или Zoom всё равно не получится.

То есть на микрофон и на динамики нужно назначать разные устройства по умолчанию.

P. S.
Вроде работает так (/etc/asound.conf):

Код: Выделить всё

pcm.!default {
  type asym
  playback.pcm
  {
    type hw
    card 0
    device 3
  }
  capture.pcm
  {
    type hw
    card 0
    device 0
  }
}
Асимметрия!
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и новые неприятности

Сообщение entada »

Что-то у меня никак не получается закончить эту эпопею...

При вышеописанном содержании /etc/asound.conf действительно есть и звук, и микрофон.
Но громкость этого звука не регулируется традиционными alsamixer'овскими ползунками Master и PCM! Рявк плеера, не ограничивающего громкость программно, до сих пор отдаётся у меня в ушах (и, наверное, у всех соседей на три квартиры по всем направлениям — а ведь мне всегда казалось, что у меня очень хилые колонки).

Опытным путём выяснилось, что из всех регуляторов alsamixer на воспроизведение звука влияет только галочка S/PDIF, без номера. Причём ползунка при ней нет — можно только или включить, или выключить.

1. На https://bbs.archlinux.org/viewtopic.php?id=136790 предлагали примерно такое (с поправкой на мои карту и устройство) решение для привязки регулятора громкости к HDMI:

Код: Выделить всё

pcm.hdmi_hw {
  type hw
  card 0 
  device 3
}

pcm.hdmi_complete {
   type softvol
   slave.pcm hdmi_hw 
   control.name hdmi_volume
   control.card 0
 }

pcm.!default hdmi_complete 
В конце alsamixer'овского списка Playback действительно появился регулятор hdmi_volume, связанный с громкостью звука (но без галочки отключения), зато уже ожидаемо перестал работать микрофон, который устройство 0.
Да и имя hdmi_volume ни один плеер не угадает, а при замене его на Master alsamixer и вовсе не запустился, обругав устаревший или ошибочный asound.conf.

2. При попытке совместить это решение с предыдущим, а ползунок с одним из стандартных получилось как-то так:

Код: Выделить всё

pcm.hdmi_hw {
  type hw
  card 0 
  device 3
}

pcm.!default {
  type asym
  playback.pcm
  {
    type softvol
    slave.pcm hdmi_hw 
    control.name PCM
    control.card 0
  }
  capture.pcm
  {
    type hw
    card 0
    device 0
  }
}
На PCM в роли имени ползунка alsamixer вроде не ругается.
Кажется, работает (звук есть, микрофоны есть, громкость звука регулируется PCM), но я уже боюсь утверждать это определённо...

Ползунок Master и галочка отключения под ним теперь и вовсе ни на что не влияют.
А ещё в alsamixer так и висит регулятор hdmi_volume, тоже ни на что уже не влияющий. И ведь без микрофона всё само работало!..

Интересно, как же сделать асимметричную настройку правильно?!.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение Hephaestus »

entada писал(а):
11.05.2020 22:55
Опытным путём выяснилось, что из всех регуляторов alsamixer на воспроизведение звука влияет только галочка S/PDIF, без номера.
Это явно куда-то не туда. У меня на материнской плате, вроде есть S/PIDF,
только вот даже не помню, выведен он куда-нибудь или нет.
entada писал(а):
11.05.2020 22:55
Ползунок Master и галочка отключения под ним теперь и вовсе ни на что не влияют.
Возможно, что всё-таки влияют. На вывод звука через "не HDMI".
entada писал(а):
11.05.2020 22:55
А ещё в alsamixer так и висит регулятор hdmi_volume, тоже ни на что уже не влияющий.
Этот, скорее всего, пропадет после перезапуска alsa.
entada писал(а):
11.05.2020 22:55
И ведь без микрофона всё само работало!..
Без микрофона не было такого, что выход через одно устройство, а вход через другое, "часть звуков - туда, часть звуков - сюда".
У Вас есть возможность проверить работу звука и микрофона без использования HDMI?
Весьма вероятно, что это будет работать с дефолтными настройками.
А, кстати, зачем Вам именно HDMI? Особенно, если колонки "очень хилые".
entada писал(а):
11.05.2020 22:55
Интересно, как же сделать асимметричную настройку правильно?!.
Для начала, придется глубже изучить внутренности alsa. В частности, потроха конфигов.
Чтобы не крутить настройки наугад, копируя с форумов.

Я сам глубоко не копал, мне просто не на чем всё это проверять в таких сочетаниях.
Единственное, что ковырял - это вывод через блютуз на ноутбуке.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение entada »

Hephaestus писал:
12.05.2020 08:59
Это явно куда-то не туда.
Ага. Но факт.
Hephaestus писал:
12.05.2020 08:59
Возможно, что всё-таки влияют. На вывод звука через "не HDMI".
Наверное, Вы правы. Но на слух это непонятно.
Hephaestus писал:
12.05.2020 08:59
Этот, скорее всего, пропадет после перезапуска alsa.
Даже после перезагрузки не пропал.
Он прописался в /var/lib/alsa/asound.state, так что я сейчас думаю — то ли отредактировать этот файл вручную, не очень понимая его смысл, то ли пусть будет лишний регулятор.
Hephaestus писал:
12.05.2020 08:59
У Вас есть возможность проверить работу звука и микрофона без использования HDMI?
Весьма вероятно, что это будет работать с дефолтными настройками.
А, кстати, зачем Вам именно HDMI? Особенно, если колонки "очень хилые".
Колонки у меня сейчас встроенные в монитор — большие на рабочем столике не помещаются — поэтому хилые по определению, но могут работать через один HDMI-кабель собственно с монитором.
Правда, там (на мониторе) и отдельный круглый аудиовход есть (а на Intel NUC8i3BEH — круглый аудиовыход), так что можно и без HDMI, если связать интелокубик с монитором двумя кабелями и переключить в меню монитора источник звука.

Когда этот GNU/Linux стоял в предыдущем похожем компьютере, Intel NUC5i3RYH — так и было, и вывод звука работал вообще без asound.conf (а микрофон ни разу не понадобился, так что о нём ничего сказать не могу).
Но при этом, когда звук выводился через аудиоразъём:
— два кабеля «системный блок-монитор», к тому же торчащие из противоположных граней этого крошечного системного блока, увеличивали энтропию на столике и вокруг него (проходя мимо — уж за один из них точно зацепишься);
— звук даже при выкрученных на максимум и в ALSA, и в меню монитора настройках громкости был очень тихим — громкие записи нужно было слушать, наклонившись к монитору, а тихие — только с программным усилением на более чем 1000% (третий ноль — не опечатка).

Тем не менее, такая возможность есть, и я попробую подключить Intel NUC8i3BEH к колонкам через звуковой кабель.
Hephaestus писал:
12.05.2020 08:59
Для начала, придется глубже изучить внутренности alsa. В частности, потроха конфигов.
Чтобы не крутить настройки наугад, копируя с форумов.
А не посоветуете ли Вы мне хорошее руководство?
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение entada »

Hephaestus писал:
12.05.2020 08:59
У Вас есть возможность проверить работу звука и микрофона без использования HDMI?
Весьма вероятно, что это будет работать с дефолтными настройками.
Вы абсолютно правы.
Если колонки подключать в круглый разьём (устройство 0), то при пустом /etc/asound.conf и звук есть, и микрофон, и громкость звука регулируется ползунками Master (и галочка на Master звук отключает) и PCM, а посторонние галочки ни на что не влияют. И звук даже нормальный — не такой тихий, что был из NUC5i3RYH на тех же колонках.
Только лишний провод смущает...
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение Hephaestus »

entada писал(а):
12.05.2020 13:29
Даже после перезагрузки не пропал.
Он прописался в /var/lib/alsa/asound.state
Ну, так-то asound.state сохраняется посредством alsactl store
и в дальнейшем считывается alsactl restore (в моей системе это происходит при каждой загрузке), что позволяет восстанавливать не только состав регуляторов, но и уровень громкости.
Так что здесь нет ничего удивительного.
entada писал(а):
12.05.2020 13:29
то ли отредактировать этот файл вручную, не очень понимая его смысл
Можно. Но лучше всё-таки осмысленно.
Возможно, есть какой-то способ "сброса" всего этого дела в default, но не уверен.
На моей системе при отсутствии файла asound.state производится установка регуляторов
при помощи amixer с последующим сохранением. И происходит это прямо в скрипте инициализации.

В порядке эксперимента Вы можете попробовать временно "спрятать" файл asound.state (переименовать, например)
и перезапустить alsa. По идее, должно запуститься с теми параметрами, которые есть в asound.conf.
После этого придется выставить настройки для всех регуляторов. И сохранить их новое состояние.
Но это всё теория. Как сработает на ВАШЕЙ системе, предсказать не берусь.
С учётом наличия в Вашем дистре PulseAudio и systemd по умолчанию, всё, сказанное выше, может быть неактуальным. Вообще.
entada писал(а):
12.05.2020 13:29
Колонки у меня сейчас встроенные в монитор — большие на рабочем столике не помещаются — поэтому хилые по определению, но могут работать через один HDMI-кабель собственно с монитором.
Всё понятно.
entada писал(а):
12.05.2020 13:29
А не посоветуете ли Вы мне хорошее руководство?
Увы. Сам ничего толком не нашёл.
Довольно много чего написано на АрчВики с отсылками на официальный сайт alsa.
На самом официальном сайте есть раздел с документацией, но там по большей части для разработчиков.
Для пользователей могла бы быть интересна ссылка на "Linux Audio Users Guide", но там она дохлая.
Если не ошибаюсь, Linux Audio Users Guide теперь вроде бы здесь и далее по ссылкам.
Кроме этого, смотрите вики Вашего дистра.
И до кучи есть файл asoundrc.txt (упоминается в АрчВики), в Вашем случае этот файл входит в пакет libasond2.
Не знаю, насколько всё это поможет Вам с конкретной задачей... пробуйте. Но опять-таки с оглядкой на systemd и PA.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение entada »

Hephaestus писал:
12.05.2020 18:19
В порядке эксперимента Вы можете попробовать временно "спрятать" файл asound.state (переименовать, например)
и перезапустить alsa. По идее, должно запуститься с теми параметрами, которые есть в asound.conf.
После этого придется выставить настройки для всех регуляторов. И сохранить их новое состояние.
Но это всё теория. Как сработает на ВАШЕЙ системе, предсказать не берусь.
Как выяснилось — никак.
После отката asound.conf к состоянию, описанному 11 мая (с асимметрией 3/0 и без hdmi_volume, а с PCM), переименования asound.state и перезагрузки — asound.state воскрес в прежнем виде.
Либо оно всё глубже прописывается, либо надо было останавливать alsa-state.service перед тем, как...
Hephaestus писал:
12.05.2020 18:19
С учётом наличия в Вашем дистре PulseAudio и systemd по умолчанию, всё, сказанное выше, может быть неактуальным. Вообще.
Systemd — это действительно та ещё радость... Вот теперь перезагружаюсь почём зря — ибо с systemd я теперь, к своему стыду, не знаю точно, как перезапустить ALSA, чтобы она в самом деле перезапустилась (ну и отчасти из-за того, что кнопка питания NUC8i3BEH находится рядом с аудиовыходом и до безобразия легко нажимается).
Есть службы alsa-state.service и alsa-restore.service; в каких-то приложениях изменения asound.conf отражаются сразу после сохранения, в каких-то сохраняются до выключения компьютера, что ты ни делай с этими службами...

А вот PulseAudio в Debian, к счастью, по умолчанию нет. Возможно, он идёт в комплекте к какому-либо DE, но в минимальной системе без DE с последующей установкой xorg icewm nodm alsa-utils и т. д. — не появляется.
Так что у меня его нет: несколько раз ставился (после чего звук вообще пропадал) и удалялся, но сейчас не установлен.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение Hephaestus »

entada писал(а):
12.05.2020 19:50
А вот PulseAudio в Debian, к счастью, по умолчанию нет.
Я не имел в виду, что PA ставится по умолчанию (при минимальной установке, наверное его не будет).
Я имел в виду, что PA присутствует в дистре и когда установлен, то используется по умолчанию (в alsamixer в этом случае будет ровно один регулятор - PulseAudio).
Кроме того, PA указан в зависимостях у многих пакетов.
А я сталкивался даже с таким пакетом (редактором звука), у которого PA в зависимостях не было (и поэтому он не подтянулся при установке), но по факту PA требовался для работы программы (без PA был сегфолт). Это, конечно, всего лишь криво прописанные зависимости, но вообще это как бы намекает, что наличие PA само собой разумеется (сопровождающему этого звукового редактора даже в голову не пришло, что PA в системе может не быть).
Добавлено (20:17):
entada писал(а):
12.05.2020 19:50
надо было останавливать alsa-state.service перед тем, как...
Это больше похоже на правду.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
entada
Сообщения: 223
ОС: Debian stable, IceWM

Re: ALSA и вечная занятость микрофона [не совсем решено]

Сообщение entada »

Hephaestus писал:
12.05.2020 20:17
Это больше похоже на правду.
Вы абсолютно правы: после останова alsa-state.service и, на всякий случай, alsa-restore.service, переименования asound.state и перезагрузки:
— в первый момент после загрузки файла /var/lib/alsa/asound.state не было, а в alsamixer отображался только регулятор Master, за ним сразу шёл Mic и т. д., и никакого hdmi_volume;
— где-то через минуту-две между Master и Mic воздвигся ползунок PCM со 100% значением, а файл /var/lib/alsa/asound.state появился уже с новым содержимым (и всё ещё никакого hdmi_volume!).

Таким образом: звук есть, микрофон есть, hdmi_volume удалён, громкость в alsamixer (а также в mocp/mplayer) регулируется при помощи PCM и заглушается в alsamixer при помощи S/PDIF.
Но, судя по содержимому asound.state, созданный мною PCM

Код: Выделить всё

        control.52 {
                iface MIXER
                name PCM
                value.0 89
                value.1 89
                comment {
                        access 'read write user'
                        type INTEGER
                        count 2
                        range '0 - 255'
                        tlv '0000000100000008ffffec1400000014'
                        dbmin -5100
                        dbmax 0
                        dbvalue.0 -3320
                        dbvalue.1 -3320
                }
        }
не есть настоящий PCM

Код: Выделить всё

        
	control.15 {
		iface PCM
		name 'Playback Channel Map'
		value.0 0
		value.1 0
		comment {
			access read
			type INTEGER
			count 2
			range '0 - 36'
		}
	}
...
control.51 {
                iface PCM
                device 10
                name 'Playback Channel Map'
                value.0 0
                value.1 0
                value.2 0
                value.3 0
                value.4 0
                value.5 0
                value.6 0
                value.7 0
                comment {
                        access 'read write'
                        type INTEGER
                        count 8
                        range '0 - 36'
                }
        }
хотя пока и работает под его именем...
А может, я опять чего-то путаю.
Hephaestus писал:
12.05.2020 20:17
Я имел в виду, что PA присутствует в дистре и когда установлен, то используется по умолчанию (в alsamixer в этом случае будет ровно один регулятор - PulseAudio).
Кроме того, PA указан в зависимостях у многих пакетов.
А я сталкивался даже с таким пакетом (редактором звука), у которого PA в зависимостях не было (и поэтому он не подтянулся при установке), но по факту PA требовался для работы программы (без PA был сегфолт). Это, конечно, всего лишь криво прописанные зависимости, но вообще это как бы намекает, что наличие PA само собой разумеется (сопровождающему этого звукового редактора даже в голову не пришло, что PA в системе может не быть).
Обалдеть... Прогресс неостановим и беспощаден.

И огромное спасибо за ссылки!
Буду изучать.
Спасибо сказали:
Ответить