Работа с аудио
На ELTAY RM88S, установленном на Orange Pi CM5 Tablet Base Board, аналоговое аудио работает через кодек ES8388/ES8323 и ALSA-карту:
card 2: rockchip,es8388
Проверить наличие playback/capture:
aplay -l
arecord -l
В обоих списках должна присутствовать карта:
card 2: rockchip,es8388
Для выполнения приведённых ниже тестов в Buildroot рекомендуется включить следующие пакеты:
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y
BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
Динамики
Подключение
На плате установлены два усилителя AW87391:
0x59 → dev_index=0 → SPK2 → Right
0x5a → dev_index=1 → SPK1 → Left
Аудиотракт:
Left PCM → ES8388 LOUT2 → AW87391 @ 0x5a → SPK1
Right PCM → ES8388 ROUT2 → AW87391 @ 0x59 → SPK2
ES8388 LOUT1/ROUT1 → PHONE JACK
Для проверки использовались динамики сопротивлением 8 Ом.
Каждый разъём SPK1/SPK2 двухконтактный и имеет контакты + и -. Динамик необходимо подключать только между + и - своего разъёма.
Проверка драйвера после загрузки
В системе используется официальный драйвер Awinic AW87XXX v4.0.9 и официальный stereo-профиль AW87391:
/lib/firmware/aw87xxx_acf.bin
Проверить загрузку:
lsmod | grep aw87
Ожидается:
snd_soc_aw87xxx
Проверить ALSA-карты:
cat /proc/asound/cards
Ожидается:
2 [rockchipes8388 ]: rockchip_es8388 - rockchip,es8388
Проверить наличие Awinic controls:
amixer -c 2 controls | grep -i aw87
Должны присутствовать, в частности:
aw87xxx_profile_switch_0
aw87xxx_profile_switch_1
Проверить загруженные профили:
cat /sys/bus/i2c/devices/1-0059/profile
cat /sys/bus/i2c/devices/1-005a/profile
Должны присутствовать:
Music
Receiver
Off
После загрузки оба усилителя специально остаются в профиле Off.
Включение динамиков
После перезагрузки mixer-переключатели playback-тракта необходимо открыть явно:
amixer -c 2 cset name='Left Mixer Left Playback Switch' on
amixer -c 2 cset name='Right Mixer Right Playback Switch' on
amixer -c 2 cset name='OUT2 Switch' on
amixer -c 2 cset name='Speaker Switch' on
Включить оба усилителя:
amixer -c 2 cset name='aw87xxx_profile_switch_0' Music
amixer -c 2 cset name='aw87xxx_profile_switch_1' Music
Для умеренной тестовой громкости выставить:
amixer -c 2 cset name='PCM Volume' 160,160
amixer -c 2 cset name='Output 2 Playback Volume' 25,25
Проверка stereo:
speaker-test -D hw:2,0 -c 2 -t sine -f 1000 -l 1
Ожидается:
Front Left → разъем SPK1
Front Right → разъем SPK2
PHONE JACK / выход на наушники
Наушники/гарнитура подключаются в разъем PHONE JACK.
Наушники
Детект наушников
dmesg при вставке/извлечении наушников может ничего не показывать.
Проверять состояние jack удобнее через ALSA:
amixer -c 2 cget numid=37
наушники вставлены → Headphone Jack = on
наушники вынуты → Headphone Jack = off
При необходимости можно дополнительно использовать input event.
Для определения номера нужного event:
grep -E 'Name=|Handlers=.*event' /proc/bus/input/devices
В выводе найти устройство:
N: Name="rockchip,es8388 Headset"
H: Handlers=event6
Номер event из строки Handlers использовать для теста:
evtest /dev/input/event6
event6 приведён как пример - фактический номер может отличаться.
При вставке/извлечении наушников должны появляться события:
SW_HEADPHONE_INSERT = 1 # вставлены
SW_HEADPHONE_INSERT = 0 # извлечены
Работа с наушниками
Открыть headphone-тракт:
amixer -c 2 cset name='Left Mixer Left Playback Switch' on
amixer -c 2 cset name='Right Mixer Right Playback Switch' on
amixer -c 2 cset name='OUT1 Switch' on
amixer -c 2 cset name='Headphone Switch' on
amixer -c 2 cset name='PCM Volume' 160,160
amixer -c 2 cset name='Output 1 Playback Volume' 20,20
Если до этого использовались динамики, рекомендуется выключить оба AW87391:
amixer -c 2 cset name='aw87xxx_profile_switch_0' Off
amixer -c 2 cset name='aw87xxx_profile_switch_1' Off
Проверка:
speaker-test -D hw:2,0 -c 2 -t sine -f 1000 -l 1
Ожидается поочередное воспроизведение тона сначала в одном наушнике, затем в другом.
Микрофон гарнитуры
При вставленной гарнитуре evtest должен дополнительно показывать:
SW_MICROPHONE_INSERT = 1
Выбрать микрофон гарнитуры:
amixer -c 2 sset 'Main Mic' off
amixer -c 2 sset 'Headset Mic' on
amixer -c 2 sset 'Capture Digital' 100%
amixer -c 2 sset 'Left Channel' 0
amixer -c 2 sset 'Right Channel' 4
amixer -c 2 sset 'ADC Data Select' 'Right Right'
Right Channel = 4 соответствует примерно +12 dB.
При необходимости можно увеличить до:
amixer -c 2 sset 'Right Channel' 6
Запись звука:
arecord -D hw:2,0 \
-f S16_LE \
-r 48000 \
-c 2 \
-d 5 \
/tmp/headset-mic.wav
Прослушать полученный файл на плате:
aplay -D hw:2,0 /tmp/headset-mic.wav
или передать WAV на ПК.
Микрофон гарнитуры физически приходит в правый ADC-канал. Настройка ADC Data Select = Right Right дублирует его в оба канала WAV.
Проверка встроенного микрофона
Гарнитуру лучше извлечь.
Выбрать встроенный микрофон:
amixer -c 2 sset 'Headset Mic' off
amixer -c 2 sset 'Main Mic' on
amixer -c 2 sset 'Capture Digital' 100%
amixer -c 2 sset 'ADC Data Select' 'Left Right'
amixer -c 2 sset 'Left Channel' 4
amixer -c 2 sset 'Right Channel' 4
Запись звука:
arecord -D hw:2,0 \
-f S16_LE \
-r 48000 \
-c 2 \
-d 5 \
/tmp/main-mic.wav
Прослушать полученную запись на плате:
aplay -D hw:2,0 /tmp/main-mic.wav
или передать WAV на ПК.
Ожидается различимая речь/постукивание рядом со встроенным микрофоном.
Встроенный микрофон преимущественно записывается в левый ADC-канал.
Полезная диагностика
Показать ALSA-карты:
cat /proc/asound/cards
Показать playback-устройства:
aplay -l
Показать capture-устройства:
arecord -l
Показать controls ES8388:
amixer -c 2 controls
Проверить AW87391:
lsmod | grep aw87
dmesg | grep -iE 'aw87|awinic'
Проверить профили:
amixer -c 2 cget name='aw87xxx_profile_switch_0'
amixer -c 2 cget name='aw87xxx_profile_switch_1'