Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Шелезяки —> snd_hda

Патчим snd_hda для корректной работы с наушниками

Автор: manefesto.


Вместе с выходом FreeBSD 6.3,7.0 в состав дистрибутива был включен драйвер snd_hda.
Купив ноутбук и обнаружев звуковуху HDA, была обнаружен один недочет в драйвере. А именно при втыкании наушников, встроенные динамики продолжали играть.Немного поискав на просторах интернета наткнулся на блог http://acer-freebsd.blogspot.com/2008/02/sound-in-both-speaker-and-headphones.html. По аналогии у меня почему то получилось.
Собственно говоря решение проблемы.

Подгружаем модуль snd_hda
$kldload snd_hda

В нулевой консоли наблюдаем нечто вроде

pcm0: <HDA Codec: Realtek ALC888>
pcm0: <HDA Driver Revision: 20071129_0050>

Из этого делаем вывод что используется кодек ALC888.

Теперь смотри вывод pciconf -lv о нашей бездушной железке, а именно :

$pciconf -lv | grep -A2 pcm
pcm0@pci0:0:27:0:       class=0x040300 card=0x17651043 chip=0x284b8086 rev=0x03 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82801H &SUBSYS_81EC1043&REV_02\3&11583659&0&D8'

на интересует card=0x17651043

Лезем в /usr/src/sys/dev/sound/pci/hda/ и правим hdac.c

Здесь указываем идентификатор карты(первые четыре цифры после 0х) и вносим изменения:
219 #define ASUS_X55SV_SUBVENDOR    HDA_MODEL_CONSTRUCT(ASUS, 0x1765)

Привязываем кодек ALC888 к карте

{ LG_LW20_SUBVENDOR, HDA_CODEC_ALC880, HDAC_HP_SWITCH_CTL,
0, 0, -1, 27, { 20, -1 }, -1 },
+ { ASUS_X55SV_SUBVENDOR, HDA_CODEC_ALC888, HDAC_HP_SWITCH_CTL,
+ 0, 0, -1, 27, { 20, -1 }, -1 },
{ ACER_A5050_SUBVENDOR, HDA_CODEC_ALC883, HDAC_HP_SWITCH_CTL,
0, 0, -1, 20, { 21, -1 }, -1 },

Включаем в ядро:
device snd_hda

пересобираем ядро и любуемся звуком в наушниках.
==============================================
PS: По аналогии делаем для других ноутбуков.
PPS: Особая благодарность paradox



размещено: 2008-07-02,
последнее обновление: 2008-07-02,
автор: manefesto


hint, 2008-07-08 в 15:24:13

По ссылке на блог - Страница не найдена. За заметку спасибо, попробую, сам столкнулся буквально неделю назад с такой проблемой после приобритения ноута.

sjava, 2008-07-13 в 12:23:00

http://acer-freebsd.blogspot.com/2008/02/sound-in-both-speaker-and-headphones.html

(в ссылке точку надо убрать :) )

Pattern, 2008-08-01 в 0:25:43

Добавочка с поправочкой. Для тех, кому не понятно, откуда взят поток цифр
0, 0, -1, 20, { 21, -1 }, -1 },
При запуске в нуль консоли пишется модель кодека, с которой опозналась карта. В данном случае ALC888. Через поиск в файле hdac.c ищем этот кодек, который описан для другой модели карты и смело копируем их для своей модели.
ЗЫЖ Просто я голову сломал, пока сообразил откуда они взялись.

paradox, 2008-08-01 в 1:49:24

вообще на форуме все рассписано
просто manefesto не поправил статью

а то можно потоком цифр ошибиться
а они там могут быть очень даже разные

Time , 2008-08-26 в 11:39:13

Подскажите пожалуисто как включить микрофон, хочу пользоваться скаипом а он выдает мол не наидины наушники

VampiRUS, 2008-09-14 в 11:42:47

Был был бы очень благодарен еслиб линк заменили на http://vampirus.ru/2008/02/02/sound-in-both-speaker-and-headphones/
т.к. с того блога я перехал, ну и ссылка была бы не лишней ;)
зы: спасибо, за этот сайт и инфу на нём

DimanNe, 2009-10-25 в 11:51:49

Хз конечно к какой версии snd_hda была написана эта статья, но во FreeBSD 8 beta4 решать проблему так - глупо, всё можно настроить без изменения исходников и перекомпиляции.
1)Verbose boot:
hdac0:  nid 27 0x02214c20 as  2 seq  0    Headphones  Jack jack  1 loc  2 color   Green misc 12
видим что Headphones соответсвует nid 27 (нам надо знать только это число), дальше пишем лишь одну строчку в /boot/device.hints
hint.hdac.0.cad0.nid27.config="as=1 seq=15" и перезагружаемся. Всё работает.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0355 секунд
Из них PHP: 19%; SQL: 81%; Число SQL-запросов: 77 шт.
Исходный размер: 19123; Сжатая: 5966