LoginSignup
2
1
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

RPi3BにAlmaLinux + PulseAudio+ Spotifydでサウンドサーバを構築

Last updated at Posted at 2024-01-13

目的

Volumioほどの機能はいらず、PulseAudioとSpotifydが動くラズパイの構築

環境

  • Raspberry Pi 3 Model B
  • AlmaLinux release 9.3 (aarch64)
  • DAC(HiFiBerry DAC+)

前提

AlmaLinxuをRPiに入れるところは省略します
DACを有効にするため、/boot/config.txtは下記を設定してください

dtparam=i2c_arm=on
dtparam=i2s=on

force_eeprom_read=0
dtoverlay=hifiberry-dacplus
dtoverlay=disable-wifi
dtoverlay=disable-bt

設定

$ sudo dnf install cargo openssl-devel git pulseaudio alsa-lib-devel alsa-utils alsa-plugins-pulseaudio

$ cd /usr/local/src
$ git clone https://github.com/Spotifyd/spotifyd.git
$ cd spotifyd

# buildは時間かかるよ
$ cargo build --release
$ sudo mv ./target/release/spotifyd /usr/local/bin/

$ mkdir -p ~/.config/systemd/user

$ cat << '_EOL_' > ~/.config/systemd/user/pulseaudio.socket
[Unit]
Description=Sound Service

Requires=pulseaudio.socket
ConditionUser=!root

[Service]
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
Restart=on-failure
RestrictNamespaces=yes
SystemCallArchitectures=native
SystemCallFilter=@system-service
# Note that notify will only work if --daemonize=no
Type=notify
UMask=0077
Slice=session.slice

[Install]
Also=pulseaudio.socket
WantedBy=default.target
_EOL_

$ cat << '_EOL_' > ~/.config/systemd/user/pulseaudio.socket
[Unit]
Description=Sound System
ConditionUser=!root

[Socket]
Priority=6
Backlog=5
ListenStream=%t/pulse/native

[Install]
WantedBy=sockets.target
_EOL_

$ sudo usermod -aG audio `whoami`

$ sudo loginctl enable-linger `whoami`

$ systemctl --user daemon-reload
$ systemctl --user  status pulseaudio.service
$ systemctl --user  enable --now pulseaudio.service
$ systemctl --user  status pulseaudio.service
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HiFiBerry DAC+ HiFi pcm512x-hifi-0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ sudo vi /etc/pulse/default.pa
load-module module-stream-restore restore_device=false
# 末尾に restore_device=false を追記

$ pacmd list-sinks  | grep name:
        name: <alsa_output.platform-soc_sound.stereo-fallback>

$ pacmd set-default-sink alsa_output.platform-soc_sound.stereo-fallback

spotifydでALSAを指定するのでasound.confでPulseに向けてやります

sudo su -
cat << '_EOL_' > /etc/asound.conf
pcm.!default {
        type pulse
}
_EOL_
$ mkdir -p ~/.config/spotifyd/
$ cat << _EOL_ > ~/.config/spotifyd/spotifyd.conf
[global]
username = "***USERNAME***"
password = "***PASSWORD***"
use_keyring = false

backend = "alsa"

device_name = "Alma-Pi"
device_type = "speaker"

mixer = "Digital"
bitrate = 320

cache_path = "/tmp/spotifyd/"
max_cache_size = 1024000000
no_audio_cache = false

volume_normalisation = true
normalisation_pregain = -6
_EOL_

cat << _EOL_ > ~/.config/systemd/user/spotifyd.service
[Unit]
Description=A spotify playing daemon
Documentation=https://github.com/Spotifyd/spotifyd
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/spotifyd --no-daemon
Restart=always
RestartSec=10

[Install]
WantedBy=default.target
_EOL_

$ systemctl --user daemon-reload
$ systemctl --user  status spotifyd.service
$ systemctl --user  enable --now spotifyd.service
$ systemctl --user  status spotifyd.service

参考記事

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1