- 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».
Ну и прочие удобства навести. Ключевой момент, надеюсь, понятен.