Add new Raspberry Pi documentation for ALSA settings

master
Noah 2019-01-31 17:04:49 -08:00
parent 3e8b817796
commit 76808df865
1 changed files with 132 additions and 0 deletions

132
README.md
View File

@ -147,6 +147,138 @@ A default config file looks like this, annotated:
}
```
## ALSA Driver HOW-TO on Raspberry Pi
The default config above is generated assuming a PulseAudio setup, but the
current Raspbian images for Raspberry Pi prefer ALSA by default. Here are some
steps to identify your sound card and edit sonar.json accordingly.
### List ALSA Devices
The `alsa-utils` package provides a handful of commands you might already
have pre-installed.
In my use case, I had a USB audio device attached to my Raspberry Pi that
shows up in ALSA as a separate hardware device:
```bash
$ 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 [USB2.0 Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
```
The `aplay -l` command lists your ALSA devices.
Another command to know is `alsamixer` which presents a graphical CLI
program to adjust the volume and show sound card details.
### Volume Control with ALSA
The `amixer` command can adjust volume settings. For simple setups you
can use commands like:
```bash
# Increase or decrease volume by 10% at a time, respectively
$ amixer set Master 10%+
$ amixer set Master 10%-
# Toggle mute on or off
$ amixer set Master toggle
# Get the current volume setting
$ awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
100%
```
In my case I needed to also specify the sound card device
(`-c 1`) because I'm not using the default, and my output channel is named
PCM instead of Master on that device:
```bash
$ amixer -c 1 set PCM 10%+
$ amixer -c 1 set PCM 10%-
$ amixer -c 1 set PCM toggle
$ awk -F"[][]" '/dB/ { print $2 }' <(amixer -c 1 sget PCM)
```
### MPlayer with ALSA Devices
I also needed to sort out the `mplayer` command to tell it to use my
ALSA device:
```bash
$ mplayer -ao alsa:device=hw=1.0 <filename>
```
### Example ALSA Config File
My sonar.json config now looks like:
```json
{
"cookieName": "session",
"mediaPath": "/home/kirsle/Music/watts",
"mediaCommand": [
"mplayer",
"-ao",
"alsa:device=hw=1.0",
"%s"
],
"volUpCommand": [
"amixer",
"-c",
"1",
"set",
"PCM",
"10%+"
],
"volDnCommand": [
"amixer",
"-c",
"1",
"set",
"PCM",
"10%-"
],
"volMuteCommand": [
"amixer",
"-c",
"1",
"set",
"PCM",
"toggle"
],
"volStatusCommand": [
"bash",
"-c",
"awk -F\"[][]\" '/dB/ { print $2 }' \u003c(amixer -c 1 sget PCM) egrep -o '([0-9]+)%' | head -1"
],
"hour": 6,
"minute": 30,
"days": [
"1",
"2",
"3",
"4",
"5"
]
}
```
## Cross Compile for Raspberry Pi
Use the `make pi` command to build a distribution for Raspberry Pi.