Raspberry Pi Zero WH with external USB sound card
I recently got a Raspberry Pi Zero WH and realized it has no audio jack output. So I got this USB sound card which claims to work with Linux. I also got a OTG USB 2.0 hub so that it can connect regular-size USB to mini-USB. Once everything is put together, check to see whether Raspberry Pi Zero WH can recognize the USB sound card
$> aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Great! The USB sound card is the card number 1. There is an article detailing how to get it to work. In short, just edit the file /usr/share/alsa/alsa.conf
defaults.ctl.card 1 # change 0 to 1
defaults.pcm.card 1
That’s it. Now I can add music to mpd database and play it with sound coming out of USB sound card. But mpc volume control doesn’t work !! There is a solution.
First, check the mixer of your device, either with amixer scontrols or amixer -c 1
$> amixer scontrols
Simple mixer control 'Speaker',0
Simple mixer control 'Mic',0
Simple mixer control 'Auto Gain Control',0$> amixer -c 1
Simple mixer control 'Speaker',0
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 37
Mono:
Front Left: Playback 4 [11%] [-33.00dB] [on]
Front Right: Playback 4 [11%] [-33.00dB] [on]
Simple mixer control 'Mic',0
Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined
Playback channels: Mono
Capture channels: Mono
Limits: Playback 0 - 31 Capture 0 - 35
Mono: Playback 16 [52%] [-7.00dB] [off] Capture 20 [57%] [8.00dB] [on]
Simple mixer control 'Auto Gain Control',0
Capabilities: pswitch pswitch-joined
Playback channels: Mono
Mono: Playback [on]
The mixer is called “Speaker”. Change the mixer name in /etc/mpd.conf
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:1,0" # optional
mixer_type "hardware" # optional
mixer_device "default" # optional
# mixer_control "PCM" # optional
mixer_control "speaker" # optional
mixer_index "0" # optional
}
Now, the volume control from mpc works.