Raspberry PiをOAATオーディオエンドポイントにする
Raspberry PiをOAATでビットパーフェクトなオーディオエンドポイントにする

本ガイドでは、Raspberry Pi 3B+ または 4 を OAAT(Open Advanced Audio Transport)プロトコル対応のハイファイ・オーディオエンドポイントとして設定する手順を、順を追って解説します。
OAATは、RoonのプロプライエタリなRAATに対するオープンな代替として設計されたオープンソースのプロトコルです。
- ビットパーフェクト再生 — PCMは最大768 kHz / 32ビット、DSDはネイティブでDSD512まで
- マルチルーム同期 — PTPクロックにより、エンドポイント間の誤差1 ms未満
- フォーマットのネゴシエーション — コントローラーがDACの能力に自動で合わせる
- ギャップレス — フォーマットが切り替わる場合でも途切れのないトランジション
- ゼロコンフィグ — mDNS/DNS-SDによる検出、IPの入力は不要
- オープンソース — Apache 2.0、RustのコードはGitHubに
OAAT と他プロトコルの比較
- OAAT:オープンソース、ビットパーフェクト、ネイティブDSD、マルチルーム同期1 ms未満
- RAAT (Roon):ビットパーフェクト、DSD、マルチルーム対応 — ただしプロプライエタリでクローズド
- DLNA/UPnP:オープンソース — ただしマルチルーム同期なし、ギャップレスは不安定、DSDはDoPのみ
- AirPlay 2:Appleのマルチルーム — ただしビットパーフェクトではなく、DSD非対応、クローズドなエコシステム
Raspberry Piは理想的な相棒です。35〜75ユーロ、無音(ファンレス)、そしてネイティブのI2Sバスを備え、GPIOからDACへ直結できます — 最短かつ最もピュアなオーディオ経路です。
OAATのアーキテクチャ
graph LR
A["🎵 Tune Server
(contrôleur)"] -->|"TCP :9740
contrôle JSON"| B["🔊 RPi Endpoint
(DAC I2S)"]
A -->|"UDP :9741
audio PCM/FLAC"| B
A <-->|"UDP :9742
clock sync PTP"| B
B -->|"I2S GPIO"| C["🎧 DAC
ESS 9038 / HifiBerry / ..."]
C --> D["🔈 Ampli + Enceintes"]
style A fill:#4a90d9,stroke:#333,color:#fff
style B fill:#50c878,stroke:#333,color:#fff
style C fill:#f5a623,stroke:#333,color:#fff
style D fill:#e8e8e8,stroke:#333,color:#333
必要な機材
Raspberry Pi 本体
- RPi 4B(2または4 GB) — PCM最大:384 kHz / 32ビット — ✅ 推奨
- RPi 3B+ — PCM最大:192 kHz / 32ビット — 低予算・中古向け
- RPi 5 — PCM最大:384 kHz / 32ビット — こちらも動作します
RPi 3B+ はI2Sバスの制約で192 kHzまでです。それを超えるハイレゾ(352.8 / 384 kHz)にはRPi 4を選んでください。
I2S DAC(HAT)
OAATはRaspberry Pi対応のI2S DACすべてをサポートします。代表的なものは以下の通りです。
- Audiophonics ESS 9038Q2M(ESS ES9038Q2M)— 384 kHz / 32ビット — 約120ユーロ — overlay:
i-sabre-q2m— Linuxドライバ - HifiBerry DAC2 HD(PCM1796)— 192 kHz / 24ビット — 約65ユーロ — overlay:
hifiberry-dacplushd - HifiBerry DAC+ Pro(PCM5122)— 192 kHz / 32ビット — 約45ユーロ — overlay:
hifiberry-dacplus - Allo Boss(PCM5122)— 384 kHz / 32ビット — 約50ユーロ — overlay:
allo-boss-dac-pcm512x-audio - IQaudio DAC+(PCM5122)— 192 kHz / 24ビット — 約30ユーロ — overlay:
iqaudio-dacplus - JustBoom DAC HAT(PCM5122)— 384 kHz / 32ビット — 約35ユーロ — overlay:
justboom-dac
⚠️ 重要:Linuxのoverlayは使用するDACに正確に一致していなければなりません。overlayを間違えると音が出ません(ALSAエラー -121 または -22)。
アクセサリー
- microSDカード:最低8 GB(16 GB推奨)
- 電源:RPi純正、または5V/3AのUSB-C(RPi 4)/ micro-USB(RPi 3)
- Ethernetケーブル:音の安定性のために推奨(WiFiでも動作しますが、クロック同期に約50 msのジッターが加わります)
- ケース(任意):Audiophonics がPi + DAC一体型のケースを販売しています
SDカードへの書き込み
1. Raspberry Pi Imager をインストール
- macOS:
brew install --cask raspberry-pi-imager - Windows:インストーラーをダウンロード
- Linux:
sudo apt install rpi-imager
2. 設定して書き込む
- Raspberry Pi Imager を起動
- デバイスを選択:Raspberry Pi 3 または 4
- OSを選択:
Raspberry Pi OS (other)→ Raspberry Pi OS Lite (64-bit) — Desktopは不要 - ストレージを選択:お使いのmicroSDカード
- 歯車アイコン(⚙️)をクリックして設定:
- ホスト名:
oaat-endpoint - SSHを有効化:はい(パスワード認証)
- ユーザー名 / パスワード:お好みで
- WiFi:Ethernetがない場合は設定
- タイムゾーン:
Europe/Paris
- ホスト名:
- 書き込み — 2〜3分程度
3. 初回起動
- SDカードをPiに挿入
- DAC HATをGPIOに接続(未装着の場合)
- Ethernetと電源を接続
- 1〜2分待つ(初回ブートは少し長め)
- SSHで接続:
ssh pi@oaat-endpoint.local
ヒント:PiのIPを調べるには、ルーターの管理画面を確認するか、arp -a | grep raspberry を使ってください。
インストール
手順の全体像
flowchart LR
A["📥 Flash SD
RPi Imager"] --> B["🔌 Boot + SSH"]
B --> C["⚙️ setup.sh
choix du DAC"]
C --> D["🔄 Reboot"]
D --> E["✅ Endpoint actif
visible sur le réseau"]
style A fill:#e8e8e8,stroke:#333
style B fill:#e8e8e8,stroke:#333
style C fill:#f5a623,stroke:#333,color:#fff
style D fill:#e8e8e8,stroke:#333
style E fill:#50c878,stroke:#333,color:#fff
自動インストール(推奨)
1つのコマンドですべてがインストールされます。
curl -sL https://raw.githubusercontent.com/renesenses/oaat/main/dist/rpi/setup.sh | sudo bash
スクリプトはサポート対象6機種の中からDACを選ぶよう促し、その後、次の処理を行います。
- システム依存パッケージのインストール(ALSA、ビルドツール)
/boot/config.txtにDACのoverlayを設定- ALSAの設定(
/etc/asound.conf) - Rustのインストールとソースからのビルド
- systemdサービスのインストール
コンパイル時間:
- RPi 4:releaseビルドで約8分
- RPi 3B+:releaseビルドで約20分(スクリプトがswapを自動で扱います)
インストール後:
sudo reboot
DACのoverlayを有効化するために再起動が必要です。再起動後、OAATサービスは自動的に起動します。
手動インストール(ステップごと)
各ステップを自分で管理したい場合:
1. システム依存パッケージ
sudo apt-get update
sudo apt-get install -y libasound2 libasound2-dev alsa-utils curl git build-essential pkg-config
2. DACの設定
/boot/firmware/config.txt(OSのバージョンによっては /boot/config.txt)を編集します。
# Désactiver l'audio embarqué
#dtparam=audio=on
# Votre DAC — décommentez UNE SEULE ligne :
dtoverlay=i-sabre-q2m # Audiophonics ESS 9038Q2M
#dtoverlay=hifiberry-dacplus # HifiBerry DAC+ / DAC+ Pro
#dtoverlay=hifiberry-dacplushd # HifiBerry DAC2 HD
#dtoverlay=allo-boss-dac-pcm512x-audio # Allo Boss
#dtoverlay=iqaudio-dacplus # IQaudio DAC+
#dtoverlay=justboom-dac # JustBoom DAC HAT
3. ALSAの設定
sudo tee /etc/asound.conf << 'EOF'
pcm.!default {
type hw
card 0
device 0
format S32_LE
}
ctl.!default {
type hw
card 0
}
EOF
4. Rustのインストールとビルド
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source ~/.cargo/env
sudo mkdir -p /opt/oaat
sudo chown $USER:$USER /opt/oaat
git clone https://github.com/renesenses/oaat.git /opt/oaat/src
cd /opt/oaat/src
cargo build --release --bin oaat
cp target/release/oaat /opt/oaat/oaat
cp dist/rpi/endpoint.toml /opt/oaat/endpoint.toml
5. systemdサービスと再起動
sudo cp dist/oaat-endpoint.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable oaat-endpoint
sudo reboot
設定
設定ファイルは /opt/oaat/endpoint.toml にあります。
[endpoint]
# Nom affiché dans Tune et lors de la découverte mDNS
name = "Salon DAC"
port = 9740
[capabilities]
# Adapter à votre DAC :
pcm_max_rate = 384000 # Hz (384000, 192000...)
pcm_max_bits = 32 # bits (32, 24)
channels_max = 2
dsd = false
flac = true # Recommandé : réduit la bande passante de ~50%
[logging]
level = "info"
アドバイス:
pcm_max_rate:DACが実際に対応している以上の値を申告しないこと。ソースがそれを超える場合、OAATは自動的に下方へネゴシエートします。flac = true:特にWiFi環境では推奨。FLACはロスレスで音質劣化はゼロ、帯域を約50〜60%削減します。name:分かりやすい名前を付けましょう。これがTune上の再生ゾーン名として表示されます。
DACごとの設定例
Audiophonics ESS 9038Q2M:
[endpoint]
name = "Audiophonics ESS 9038"
[capabilities]
pcm_max_rate = 384000
pcm_max_bits = 32
channels_max = 2
flac = true
HifiBerry DAC+ Pro / DAC2 HD:
[endpoint]
name = "HifiBerry DAC"
[capabilities]
pcm_max_rate = 192000
pcm_max_bits = 24
channels_max = 2
flac = true
Allo Boss / JustBoom:
[endpoint]
name = "Allo Boss DAC"
[capabilities]
pcm_max_rate = 384000
pcm_max_bits = 32
channels_max = 2
flac = true
Audiophonics ESS 9038Q2M — 技術的な詳細
ES9038Q2MはS16_LEとS32_LEのフォーマット、最大384 kHz(DSDモードでは1.536 MHzまで)のサンプリングレートに対応し、高度なALSAコントロールを備えています。
- デジタルボリューム:0〜100(-100 dB〜0 dB)
- FIRフィルター:7種類(brick wall、minimum phase、linear phase など)
- 入力選択:I2S / SPDIF
LinuxドライバはI2Cアドレス 0x48 を使用します。最近のRaspberry Pi OS Bookwormでは、overlay i-sabre-q2m は通常カーネルに含まれています。より古いカーネルの場合は、Audiophonicsのリポジトリからモジュールをビルドしてください。
sudo apt-get install -y raspberrypi-kernel-headers
git clone https://github.com/audiophonics/I-Sabre_9038Q2M.git /tmp/i-sabre
cd /tmp/i-sabre
make
sudo make install
sudo reboot
動作確認と最初の音出し
1. DACが認識されているか確認:
aplay -l
# Doit afficher votre DAC comme carte 0
2.(OAATを介さず)直接音を出してテスト:
speaker-test -D hw:0,0 -c 2 -t sine -f 440
# Vous devez entendre un la 440 Hz — Ctrl+C pour arrêter
3. OAATサービスの確認:
sudo systemctl status oaat-endpoint
# Active: active (running)
4. mDNS検出の確認(別の端末から):
# macOS
dns-sd -B _oaat._tcp
# Linux
avahi-browse -r _oaat._tcp
5. OAAT経由での最初の音出し!
お使いのPCから(oaat CLIをインストール済みの状態で):
# Sinusoïde 440 Hz pendant 5 secondes
oaat controller --target IP_DU_PI:9740 --freq 440 --duration 5
440 Hzのラの音が聞こえれば、OAATエンドポイントは正常に動作しており、ビットパーフェクトです! 🎉
6. 完全な適合性テスト:
oaat-test IP_DU_PI:9740
# OAAT Conformance Test
# [Handshake] 4 PASS
# [Capabilities] 4 PASS
# [Format Nego] 3 PASS (accept, counter, reject)
# [Clock Sync] 1 PASS
# [Audio] 1 PASS
# [Gapless] 2 PASS (same format, diff format)
# [Volume] 3 PASS
# [Reconnect] 2 PASS
# 20 tests: 20 passed — Endpoint is CONFORMANT
Tuneでの利用
Tune はOAATをネイティブに統合したセルフホスト型の音楽サーバーです。
TuneがRPiと同じローカルネットワーク上で動作していれば、OAATエンドポイントはWebインターフェース上の再生ゾーンとして自動的に表示されます。追加設定は一切不要です。
Tuneでは、OAATエンドポイントはDLNAやAirPlayより優先されます。最も直接的で忠実なオーディオ経路を提供するからです。
フォーマットのネゴシエーションは完全に透過的です。
- ソースが24/96、DACが384/32対応 → 24/96のネイティブ再生(無駄なアップサンプリングなし)
- ソースが24/192、DACは最大96 → Tuneが24/96へダウンサンプル(同じ48 kHz系)
- ソースがDSD、DACがDSD非対応 → 透過的にPCM変換
トラブルシューティング
音が出ない
aplay -lにカードが一つも表示されない → DACのoverlayが未設定または誤り。/boot/firmware/config.txtを確認し、overlayを修正して再起動。speaker-testが-121エラーを返す → そのDACに対してoverlayが誤っています。別のoverlayを試してください(上記のリスト参照)。speaker-testは動くがOAATでは音が出ない → サービスが未起動、または設定に誤り。systemctl status oaat-endpointとjournalctl -u oaat-endpoint -fで確認。- 音がノイズ混じり、または途切れる → WiFiが不安定。Ethernetに切り替えてください。
Tuneがエンドポイントを検出しない
- TuneとRPiが同じサブネットにあることを確認
- VPN(NordVPNなど)を使っている場合:
nordvpn set lan-discovery onを有効化 - ファイアウォールを確認:ポート9740(TCP)、9741(UDP)、9742(UDP)、5353(mDNS)が開いている必要があります
- mDNS検出を手動でテスト(「動作確認」の節を参照)
サービスが起動しない
# Voir les logs détaillés
journalctl -u oaat-endpoint -f
# Erreurs courantes :
# "No such device" → DAC pas détecté, vérifier overlay + reboot
# "Address already in use" → un autre processus utilise le port 9740
# "Permission denied" → vérifier le User dans le fichier service
RPi 3 と RPi 4 の比較
- I2S経由のPCM最大:RPi 3B+ = 192 kHz / RPi 4 = 384 kHz
- コンパイル時間:RPi 3 約20分 / RPi 4 約8分
- RAM:RPi 3 = 1 GB(swap推奨)/ RPi 4 = 2〜8 GB
- Ethernet:RPi 3 = 100 Mbps(USB経由)/ RPi 4 = ネイティブGigabit
RPi 3B+ は16/44.1(CD)から24/192(ハイレゾ)まで問題なく動作します。主にCDリップのFLACやQobuzの24/96を聴くなら、25ユーロの中古RPi 3で十分こなせます。
Audiophonics ESS 9038Q2M:overlayが見つからない
Raspberry Pi OSの一部のバージョンでは、overlay i-sabre-q2m がカーネルに含まれていません。症状:
dtoverlay: failed to apply overlay 'i-sabre-q2m'
解決策:ソースからドライバをビルドする(上記「設定」の節を参照)。
さらに先へ
エンドポイントの更新
cd /opt/oaat/src
git pull
cargo build --release --bin oaat
cp target/release/oaat /opt/oaat/oaat
sudo systemctl restart oaat-endpoint
同期マルチルーム
同一ネットワーク上の2台(以上)のRaspberry Piを、1 ms未満で同期させることができます。
graph TD
A["🎵 Tune Server"] -->|"même PTS"| B["🔊 RPi #1 — Salon
ESS 9038Q2M"]
A -->|"même PTS"| C["🔊 RPi #2 — Cuisine
HifiBerry DAC+"]
A -->|"même PTS"| D["🔊 RPi #3 — Chambre
Allo Boss"]
B <-->|"clock sync
PTP"| A
C <-->|"clock sync
PTP"| A
D <-->|"clock sync
PTP"| A
E["⏱️ Sync < 1 ms
entre tous les endpoints"]
style A fill:#4a90d9,stroke:#333,color:#fff
style B fill:#50c878,stroke:#333,color:#fff
style C fill:#50c878,stroke:#333,color:#fff
style D fill:#50c878,stroke:#333,color:#fff
style E fill:#fff3cd,stroke:#f5a623,color:#333
各エンドポイントは、同じプレゼンテーションタイムスタンプ(PTS)を持つ同一のオーディオパケットを受け取ります。PTP同期がPi間のクロック差を自動的に補正します。
Tuneでは、複数のエンドポイントをまとめたゾーンを作成するだけでマルチルームが有効になります。
ネットワーク帯域
- PCM 16/44.1 ステレオ:1.41 Mbps
- PCM 24/192 ステレオ:9.22 Mbps
- PCM 32/384 ステレオ:24.58 Mbps
- FLAC 24/192 ステレオ:約4 Mbps(圧縮率約50%)
同期マルチルームにはEthernetを推奨します。単独のエンドポイントならWiFiでも十分です。
完全ヘッドレス
ここで説明したセットアップはすでに100%ヘッドレスです。書き込んで起動させれば、Piは自律的に動作します。
- OAATサービスはブート時に起動
- クラッシュ時は自動再起動(systemdの
Restart=always) - コントローラーが切断された場合も自動再接続
- 更新はSSHから可能
関連リンク:
- OAATのソースコード(Apache 2.0)
- OAAT RFC仕様
- Audiophonics ESS 9038Q2M ドライバ
- Audiophonics — I2S DACとRPi用ケース
本ガイドの執筆:MozAIk Labs — 2026年5月