Прочитал о том, что в 8ке много чего поправили в snd_hda (да и вообще в восьмерке много чего поправили...) и решил обновиться. Этот пост собственно о возможных проблемах при переходе на FreeBSD 8, их решениях и радости относительно изменений с 7кой.
Обновление делал стандартно - cvsup'нулся, настроил ядро, собрал ядро, поставил ядро. Вот тут возникла первая небольшая проблема: пересборку мира я решил отложить на пару часов и просто перезагрузился с новым ядром. X.org не запустился - ну тут все просто, переустановил драйвера nvidia (x11/nvidia-driver) и загрузил новый модуль nvidia.ko (можно просто еще раз перезагрузить компьютер). Вторая проблема - WiFi карточка Intel 3945, wpa_supplicant не хотел цепляться к моей сетке - решение описано
на форуме FreeBSD. И в продолжении второй проблемы - у меня по прежнему не работал WiFi. Это сказалось моё нежелание обновить мир в самом начале, ifconfig/wpa_supplicant существенно обновились (либо что-то одно, но это в общем-то неважно). После обновления мира получил рабочую nvidia и wifi.
И наконец самое вкусное - звук. После покупки ноутбука Lenovo Y510 (летом 2008го) и установки FreeBSD я довольно долго провозился со звуком, но получил лишь два из 5 работающих динамика + не отключение динамиков при подключении наушников. В дальнейшем были опубликованы патчи, которые многим людям с аналогичными проблемами на ноутбуках других производителей помогли, но у меня все осталось по-прежнему. Только с тех пор у меня в /boot/loader.conf появились следующие строчки:
snd_hda_load="YES"
hint.hdac.0.cad0.nid20.config="as=1 seq=0"
hint.hdac.0.cad0.nid21.config="as=1 seq=1"
hint.hdac.0.cad0.nid22.config="as=1 seq=2"
hint.hdac.0.cad0.nid23.config="as=1 seq=3"
hint.hdac.0.cad0.nid26.config="as=1 seq=4"
hint.hdac.0.cad0.nid29.config="as=1 seq=5"
hint.hdac.0.cad0.nid31.config="as=1 seq=6"
Ядро естественно было собрано без включения в него snd_hda (подгружается модулем, видно из листинга выше). Если честно, точно рассказать, почему у меня прописаны именно эти значения я сейчас не смогу - помню лишь, что тогда была переписка с автором патча, попытка разобрать исходный код патча и просто куча экспериментов - в результате всего этого и родились эти записи.
Так вот, дело в том, что после обновления до FreeBSD 8 эти записи стали работать именно так, как мне хотелось! Все 4 динамика + сабвуфер одновременно и их отключение при подключении наушников. Без этих хинтов работают только два динамика.
И так, подведя итог:
1) При обновлении до FreeBSD 8 сразу после обновления ядра обновите и мир
2) Если у вас Lenovo Y510, то пропишите в /boot/loader.conf указанные выше строки, соберите ядро БЕЗ snd_hda и радуйтесь работающему без проблем звуку!