ガジェットとして最近あまりかまってあげられていない手元のClockworkPi uConsole Kit RPI-CM4 Liteを、Spotifyの再生先デバイス (Spotify Connect Client) に指定できると面白いかも、とふと思いついて実際にやってみたメモ。本記事の内容は基本的にRaspberry Piにも適用可能なはず。
Debian系OSを対象にしている次のSpotify Connectクライアント「raspotify」を、Raspberry Pi OSがベースであろうuConsole RPI-CM4のOSへ導入する。
Spotify Connectの利用にはSpotify Premiumのサブスクリプションが必要とのこと (当方はサブスク中)。また、uConsoleにはHyBi FC5というUSB-DACを接続し、Spotifyで再生する音源をヘッドホンで聴く前提である。
【国内正規品】HiByMusic FC5 小型 DAC AMP
HiByMusic
記事執筆時点でのuConsoleのOSとkernelは次の通り。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
$ uname -a
Linux uconsole 5.10.17-v8+ #5 SMP PREEMPT Thu Jun 29 13:36:01 CST 2023 aarch64 GNU/Linux
上記の公式ドキュメントに沿って、次のコマンドでraspotifyのインストールを行う。
$ sudo apt-get -y install curl && curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
認識されているサウンドデバイスを次のコマンドで一覧表示する。
$ librespot -d ?
(省略)
Device:
hw:CARD=FC5,DEV=0
Description:
HiBy FC5, USB Audio
Direct hardware device without any conversions
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
--------------------------------------------------------------------
Device:
plughw:CARD=FC5,DEV=0
Description:
HiBy FC5, USB Audio
Hardware device with all software conversions
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S32 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: F32 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: F64 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
--------------------------------------------------------------------
Device:
sysdefault:CARD=FC5
Description:
HiBy FC5, USB Audio
Default Audio Device
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S32 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: F32 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: F64 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
--------------------------------------------------------------------
Device:
front:CARD=FC5,DEV=0
Description:
HiBy FC5, USB Audio
Front output / input
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
--------------------------------------------------------------------
Device:
iec958:CARD=FC5,DEV=0
Description:
HiBy FC5, USB Audio
IEC958 (S/PDIF) Digital Audio Output
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
Format: S24_3 Sample Rate(s): 44.1kHz, 48kHz, 88.2kHz, 96kHz
--------------------------------------------------------------------
Device:
dmix:CARD=FC5,DEV=0
Description:
HiBy FC5, USB Audio
Direct sample mixing device
Supported Format & Sample Rate Combinations:
Format: S16 Sample Rate(s): 48kHz
--------------------------------------------------------------------
/etc/raspotify/conf
を編集して、次の4行を表の状態にする。
変数名 (左辺) | 値 (右辺) |
---|---|
LIBRESPOT_DISABLE_AUDIO_CACHE | ※行自体を「#」でコメントアウトする |
LIBRESPOT_BITRATE | “320” |
LIBRESPOT_CACHE_SIZE_LIMIT | “16G” |
LIBRESPOT_DEVICE | “hw:CARD=FC5,DEV=0” |
※LIBRESPOT_DISABLE_AUDIO_CACHE
は、この行の存在自体が変数名のフラグ状態を示し、行が存在することがLIBRESPOT_DISABLE_AUDIO_CACHE=Trueを意味する。今回はAUDIO_CACHEを使用したいので、この行を存在させないことが必要である。
/etc/raspotify/conf
の編集前と編集後の差分は次のようになる。
# diff /etc/raspotify/conf.original /etc/raspotify/conf
33c33
< LIBRESPOT_DISABLE_AUDIO_CACHE=
---
> #LIBRESPOT_DISABLE_AUDIO_CACHE=
58a59
> LIBRESPOT_BITRATE="320"
82a84
> LIBRESPOT_CACHE_SIZE_LIMIT="16G"
96a99
> LIBRESPOT_DEVICE="hw:CARD=FC5,DEV=0"
raspotifyのサービスはインストール時から自動起動しているが、Step-3で設定を変更したのでサービスを再起動し、状態を確認する。
# systemctl restart raspotify.service
# systemctl status raspotify.service
● raspotify.service - Raspotify (Spotify Connect Client)
Loaded: loaded (/lib/systemd/system/raspotify.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-04-27 12:01:48 JST; 52s ago
Docs: https://github.com/dtcooper/raspotify
https://github.com/librespot-org/librespot
https://github.com/dtcooper/raspotify/wiki
https://github.com/librespot-org/librespot/wiki/Options
Main PID: 39964 (librespot)
Tasks: 2 (limit: 4088)
CPU: 2.081s
CGroup: /system.slice/raspotify.service
└─39964 /usr/bin/librespot
Apr 27 12:01:48 uconsole systemd[1]: Started Raspotify (Spotify Connect Client).
raspotifyの起動状態に問題がなければ、uConsoleと同一のLAN内でSpotifyのアプリを起動すると、uConsole上で起動しているraspotifyが、アプリのデバイス一覧に「raspotify (uconsole)」という名前で現れる。そのデバイスを選択してからアプリで音源を再生し、uConsoleに接続したUSB-DAC経由で音源が再生されれば目的達成だ。