Столкнулся со странным эффетком: при начале записи кодек рандомно переставляет правый и левый канал. Сталкивался ли кто-нибудь, и может подскажете, куда копать?
Вопрос в этом разделе, так как утилита arecord тоже путает от запуска к запуску.
Насчет именно ALC203 не знаю, но вообще проблема известная: гуглить по "atmel channel swap". Я сталкивался на своей плате при работе кодека в I2S режиме.
Проистекает она из-за того, что атмеловский SSC в линуксе синхронизируется по перепаду FS, при этом момент старта может попасть как на левый, так и на правый канал.
Существует несколько методов лечения:
1. Синхронизироваться по спаду, читать сразу 32 бита и потом распихивать куда надо. Требует SCLK = 32*FS и перелопачивания драйвера.
2. Ждать нужной полярности FS при старте. Костыль, конечно, но работает.
3. Уйти на DSP режим, если кодек позволяет.
ADobrynin, а подробней можно? Буду признателен, так как на таком уровне не копал.
PS: попробовал обновить систему на плате - так пишет, что не находит /dev/null и ещё там же кучу. Понимаю, что дело в rootfs, но это всё, что понимаю. Пока только ядро обновил чудом...
Появилась идея. Если кто-нибудь подскажет, где и что поменять для смены кодека при сборке ядра, и какие поддерживаются в сборке софта для этой платы - я могу на другом полуубитом экземпляре поменять саму микросхему, и тогда будет однозначно известно, проблема железа кодека или ядра. Останется только неопределённость с железом Atmel.
В ядре - если оно собрано специфично под ALC203, но вроде бы это не так. Потому что в этом же файле есть другие кодеки, и они не обрамлены условной компиляцией или комментариями.
"Подсмотрено" в файле linux-2.6.36-rc6/sound/pci/ac97/ac97_codec.c
Народ, у кого есть платы с аудиокодеком на Атмеле, можете запустить скрипт шела?
Скрипт создаст 20 wav-ок, их прослушать.
И отписать здесь, что на плате, и результат.
Я один такой везучий, или это проблемма, на которую не обратили внимание?
UPD 26-04-14
Включить источник записи и усиление. Для линейного входа так на моей плате:
-i 100 устанавливает максимальное усиление на запись,
-l R выбирает в качестве источника сигнала линейный вход
-l 100 максимальная громкость при прослушивании линейного входа
-q вывести, что получилось.
После этого даже без записи должны быть слышны наводки, если касаемся каналов линейного входа.