- Ubuntu 8.10-almost-release (Intrepid Ibex).
- Dell XPS M1530.
- HDA-intel, STAC9228.
Проблема: встроенный микрофон записывает очень слабо, даже когда все контролы и миксеры вкручены по максимуму. При этом MicBoost отсутствует как класс.
Решение: использовать софтварный аналог boost’а.
Вводная ссылка: http://www.terdmonk.com/Using+ALSA’s+softvol+plugin+and+max_dB
Делаем микрофон рабочим
Для начала, надо чтобы микрофон вообще хотя бы работал. Для этого дописываем в /etc/modprobe.d/alsa-base:
options snd-hda-intel model=genric
Ещё есть модели auto,ref,dell-3stack, но genric достаточно общая и включает всё что работает. Вроде как это работало и с dell-3stack.
Перезагружаемся.
Заходим в гном. Запускаем:
gnome-volume-control
Жмём «Параметры», включаем всё что видно. Жмём ОК.
Теперь на закладке запись выкручиваем в максимум уровни Capture, Digital, Mux. На закладке «Параметры» ставим первый «Input Source» в «Front Mic». Теперь, для работы с внешним подключемым микрофоном ставим Digital Input Source в Analog Inputs, а для работы со встроенным – Digital Mic 1. Нас интересует встроенный (то есть Digital Mic 1).
Запускаем
gnome-sound-properties
И в поле «Запись звука» выставляем HDA Intel STAC92xx (ALSA). Да, именно прямую ссылку на карту в аналоговом режиме, а не на алса как таковую. Для теста. Потом, когда всё заработает, можно и надстраивать что пожелается. Жмём ОК.
Запускаем:
gnome-sound-recorder
Поле с выбором источника должно пропасть, если оно было; теперь источник один и выбирать незачем. Пробуем записать пару-другую секунд, причём надо обязательно посмотреть на уровень: он должен прыгать. Желательно постучать по микрофону (находится возле вебкамеры, две мелкие дырочки по обе стороны). Проигрываем что записалось; если не слышно – выкручиваем все громкости на максимум. Хоть что-то записаться да должно. Иначе ещё долго мучимся чтобы оно вообще работало.
Создаём мик-бустер
Теперь у нас есть встроенный микрофон, он работает, но очень слабо. Теперь самое главное. Создаём псевдо-микрофон.
В файле /etc/asound.conf (вероятно, можно и ~/.asoundrc) пишем:
pcm.pseudobooster { type asym playback.pcm { type softvol slave.pcm "hw:0,0" control.name "Master" control.card 0 } capture.pcm { type softvol slave.pcm "hw:0,0" control.name "MicPseudo" control.card 0 max_dB 50.0 } } #pcm.pseudobooster { # type softvol # slave.pcm "hw:0,0" # control.name "Mic2 PseudoBoost" # control.card 0 # max_dB 50.0 #} ctl.pseudobooster { type hw card 0 }
Закомментированный кусок — это попытка сделать только микрофон. Обернулась тем, что буст применился и к проигрыванию звука. Просто чтобы помнить, что так делать не надо. Ключевой момент здесь — max_dB. Он расширяет границы миксера. Сохраняем. Теперь надо сделать так, чтобы ALSA учла эти новые миксеры. Тут я не уловил как их ввести в строй. amixer их не видит даже после ребута. Но если запустить skype, то он там что-то обновляет, а эти миксеры становятся видны по
amixer | grep -i pseudo
либо
amixer -c Intel | grep -i pseudo
Желательно найти нормальный способ, которым можно обновить ALSA (это не alsactl names, не amixer list, не amixer info, не arecord -l; вообще фиг знает как).
Когда этот псевдо-миксер появился к выводе, вызываем
gnome-volume-control
В «параметрах» (кнопка) включаем все миксеры, и на закладке «Воспроизведение» (да, увы, не «Запись») выкручиваем этот миксер на 75-100%.
Настраиваем скайп на устройство pseudobooster (появится в списке аудио-устройств). Пробуем тестовый звук (должен быть). Звоним в echo123. Должно работать.
Включаем по умолчанию
Теперь надо сделать чтобы и все прочие приложения тоже обращались к нашему псевдо-устройству.
asound.conf OR ~/.asoundrc:
pcm.!default { type plug slave.pcm "pseudobooster" } ctl.!default { type hw card 0 }
Далее,
gnome-sound-properties
Включаем «Запись звука» на «ALSA bla-bla-bla»; воспроизведение тоже можно на него поставить.
То есть теперь у нас будет цепочка
- Приложение (например, gnome-sound-recorder)
- ALSA library
- берёт pcm.default
- попадает на pcm.pseudobooster
- который берёт из железячного ALSA driver с прогоном по softvol, который теперь в amixer’ах
С тем же успехом можно зарулить через pulseaudio, а не через ALSA library. Тут главное не путать что есть железячный слой ALSA, а есть универсализирующая библиотека ALSA, и это две разные вещи.
В gnome-sound-recorder, соответственно, в поле источника выбрать Digital (это наш «default»), или явно «pseudobooster».
Ну и прочие удобства навести. Ключевой момент, надеюсь, понятен.