Решил я вчера прикрутить к пека валяющийся у меня динамический микрофон, типа тех, что для караоке.
Но микрофон выдавал дикий шум и при записи/мониторинге звучал только в левом канале. Долго ебался я с ручечками, крутилочками и дрочилочками в alsamixer'е, но успеха не достиг. Решил уже, что микрофон мой убог и переходник с 6,35 на 3,5 убог.
Но попробовал всё же счастья попытать напрямую теребя HDA'шечку, благо опыт был.
Запустил HDA Analyzer, и начал играться с микрофоном в alsamixer'е.
Нашел пин ответственный за микрофон, нашел микшер ответственный за микрофон. Обнаружил, что управление этим микшером почему-то не показывает состояние, изменяемое alsamixer'ом, а показывает будто он отовсюду отключен. Контролы как будто write only.
И обнаружил я у пина (не один пин конечно, разъем, но HDA называет их пинами) много крутилочек и теребил их, пока не обнаружил крутилку с названием VREF, у которой были положения 50, 80, 100, HIZ и GRD. И вот при положениях HIZ и GRD и шум пропадал и правый канал появлялся.
И решил я, что 50, 80, 100 это напряжения, что подаются как референсные для АЦП, но что такое HIZ и GRD не понял. Пришлось здесь найти даташит по кодеку своему - Realtek ALC 887. Из даташита я узнал, что 50, 80, 100 это значения напряжения в процентах от AVDD, а HIZ это оказывается Hi-Z, положение с высоким импедансом, а GRD это 0%, GND. Высокий импеданс у референсного напряжения? ШТО? И вообще оказывается VREF это какой-то ВЫХОД.
Тут пришлось отправиться курить как же подключаются микрофоны к пека. Оказалось, что на контакт для правого канала подается питание для электретных микрофонов. И вот этот самый VREF это оно и есть. Неудивительно, что всё распидорашивало, когда моно-джек динамического микрофона замыкал этот контакт на землю.
И вот тут почти всё заебись, я уже могу приводить карточку в правильное состояние одной командой,
hda-verb /dev/snd/hwC0D0 0x19 SET_PIN_WIDGET_CONTROL 32
но тут обнаруживается, что уровни левого канала выше чем правого процентов на 60. Оказывается, чтобы они стали почти ровно одинаковыми, у правого канала нужно включить буст.
И вот теперь всё работает, заебись и божественно.
Здесь я понимаю, что микрофон я в основном использую в ШИНДОШС, для забегов с друзяшками в Battlefield 4.
И вот там-то ХУЙ МНЕ КТО ДАСТ ВЫКЛЮЧИТЬ ПИТАНИЕ МИКРОФОНА И НАСТРОИТЬ НЕСИММЕТРИЧНЫЙ БУСТ ДЛЯ НЕГО. На часах 05:19.