Перейти к основному содержимому

Работа с аудио

На 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'