Waveshare WM8960 Audio HAT
Product Overview
The WM8960 Audio HAT is an audio adapter board produced by Waveshare Electronics, featuring the WM8960 Codec. It supports dual-channel microphone recording and audio playback. The board is shown below:
For more details, refer to the WM8960 Audio HAT Wiki.
Installation
-
Hardware Setup
Connect the audio HAT to the 40-pin header of the RDK X5 as shown below:
-
Software Configuration
-
Use
srpi-config
to configure the audio board.
Go to3 Interface Options
->I5 Audio
SelectWM8960 Audio Driver HAT
: -
Follow the prompt to reboot, or run
sync && reboot
to restart the board. Ifcat /proc/asound/cards
shows aduplexaudioi2s1
sound card, the installation was successful.
root@ubuntu:~# cat /proc/asound/cards
0 [duplexaudioi2s1]: simple-card - duplex-audio-i2s1
duplex-audio-i2s1
1 [duplexaudio ]: simple-card - duplex-audio
duplex-audio
-
Uninstallation
-
Use
srpi-config
to configure the audio board.
Go to3 Interface Options
->I5 Audio
SelectUNSET
to uninstall the audio driver and related configurations. -
Remove the HAT from the board.
Usage
Check if the sound card exists and verify the device number.
To confirm the sound card is registered (as mentioned above):
root@ubuntu:~# cat /proc/asound/cards
0 [duplexaudioi2s1]: simple-card - duplex-audio-i2s1
duplex-audio-i2s1
1 [duplexaudio ]: simple-card - duplex-audio
duplex-audio
To check logical devices:
root@ubuntu:~# cat /proc/asound/devices
2: [ 0- 0]: digital audio playback
3: [ 0- 1]: digital audio capture
4: [ 0] : control
5: [ 1- 0]: digital audio playback
6: [ 1- 0]: digital audio capture
7: [ 1] : control
33: : timer
To check user-space device files:
root@ubuntu:~# ls /dev/snd/
by-path controlC0 controlC1 pcmC0D0p pcmC0D1c pcmC1D0c pcmC1D0p timer
From the above, and with reference to the Onboard Earphone Audio Port, you can confirm that sound card 0 corresponds to the WM8960 Audio Driver HAT
node. The devices exist, with device numbers 0-0
and 0-1
. The actual devices to operate are pcmC0D0p
and pcmC0D1c
.
The onboard sound card is card 1, device number 1-0
, which is not used here.
This audio HAT requires audio routing configuration before each function. The following commands must be run before each scenario.
-
Recording
- Dual-channel microphone recording:
tinymix -D 0 set 'Left Input Boost Mixer LINPUT1 Volume' 3
tinymix -D 0 set 'Right Input Boost Mixer RINPUT1 Volume' 3
tinymix -D 0 set 'Left Input Boost Mixer LINPUT1 Volume' 1
tinymix -D 0 set 'Right Input Boost Mixer RINPUT1 Volume' 1
tinymix -D 0 set 'Capture Volume' 40,40
tinymix -D 0 set 'ADC PCM Capture Volume' 200,200
tinymix -D 0 set 'Left Boost Mixer LINPUT1 Switch' 1
tinymix -D 0 set 'Right Boost Mixer RINPUT1 Switch' 1
tinymix -D 0 set 'Left Input Mixer Boost Switch' 1
tinymix -D 0 set 'Right Input Mixer Boost Switch' 1
tinymix -D 0 set 'Capture Switch' 1,1
tinycap ./2chn_test.wav -D 0 -d 0 -c 2 -b 16 -r 48000 -p 512 -n 4 -t 5
-
Playback
-
Dual-channel speaker playback
tinymix -D 0 set 'Left Output Mixer PCM Playback Switch' 1
tinymix -D 0 set 'Right Output Mixer PCM Playback Switch' 1
tinymix -D 0 set 'Speaker DC Volume' 3
tinymix -D 0 set 'Speaker AC Volume' 3
tinymix -D 0 set 'Speaker Playback Volume' 127,127
tinymix -D 0 set 'Playback Volume' 255,255
tinymix -D 0 set 'Left Output Mixer PCM Playback Switch' 1
tinymix -D 0 set 'Right Output Mixer PCM Playback Switch' 1
tinyplay ./2chn_test.wav -D 0 -d 0
- Simultaneous headphone and speaker playback
tinymix -D 0 set 'Headphone Playback Volume' 80,80
tinymix -D 0 set 'Playback Volume' 220,220
tinymix -D 0 set 'Speaker DC Volume' 4
tinymix -D 0 set 'Left Output Mixer PCM Playback Switch' 1
tinymix -D 0 set 'Right Output Mixer PCM Playback Switch' 1
tinyplay ./2chn_test.wav -D 0 -d 0
- Headphone playback only (speaker muted)
tinymix -D 0 set 'Headphone Playback Volume' 115,115
tinymix -D 0 set 'Speaker Playback Volume' 0,0
tinymix -D 0 set 'Playback Volume' 244,244
tinymix -D 0 set 'Speaker DC Volume' 4
tinymix -D 0 set 'Left Output Mixer PCM Playback Switch' 1
tinymix -D 0 set 'Right Output Mixer PCM Playback Switch' 1
tinyplay ./2chn_test.wav -D 0 -d 0
FAQ
Q1: Hardware and software are working, audio path is normal, speakers have sound, but headphones are silent.
A1: The headphone volume may be too low. Increase the headphone volume, for example:
tinymix -D 0 set 'Headphone Playback Volume' 115,115