/var/log/life.log
Блог программиста из солнечной Бурятии

звук в колонках и наушниках

Вот такая вот фигня, захотел фильм посмотреть, воткнул наушники запустил xine, а мне кричат, звук выключи, я снимаю наушники, а звук то и из колонок идёт, поискал в инете, спросил на форуме, посоветовали в рассылке поискать если нету, то туда написать. Там был вопрос годичной давности и Ariff челу специально дописывал /usr/src/sys/dev/sound/pci/hda/hdac.c и давал ему, так что кроме изменения hdac.c ничто не поможет как я понял, написал аналогичный вопрос, но пока ответ не пришёл, решил заглянуть, а что там такого интересного то? Как оказалось ничего страшного там нет) нашёл объявления констант с именами моделей, нашёл и для ACER :

1
2
3
4
5
6
#define ACER_VENDORID 0x1025
#define ACER_A5050_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0x010f)
#define ACER_A4520_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0x0127)
#define ACER_A4710_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0x012f)
#define ACER_3681WXM_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0x0110)
#define ACER_ALL_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0xffff)

ну я добавил строку

1
#define ACER_E5220_SUBVENDOR HDA_MODEL_CONSTRUCT(ACER, 0x011f)

0x011f взято из типа катры

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

потом поискал где используются эти константы, оказывается только в одном месте

в роне 690 строки, для всех асеров строки одинаковые, значит добавляем такуюже для только что созданой константы

1
{ ACER_E5220_SUBVENDOR, HDA_CODEC_ALC268, HDAC_HP_SWITCH_CTL,0, 0, -1, 20, { 21, -1 }, -1 },

 сохраняем, и компилим всё это дело

1
2
3
# cd /usr/src/sys/modules/sound/; make clean cleandir; make && make install
# kldunload snd_hda
# kldload snd_hda

Вот и всё, у меня заработало)