Add new Raspberry Pi documentation for ALSA settings
This commit is contained in:
parent
3e8b817796
commit
76808df865
132
README.md
132
README.md
|
@ -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
|
## Cross Compile for Raspberry Pi
|
||||||
|
|
||||||
Use the `make pi` command to build a distribution for Raspberry Pi.
|
Use the `make pi` command to build a distribution for Raspberry Pi.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user