本文紀錄實作 Diretta DDS (Diretta Digital Stream) 的過程。測試環境以 PC 作為 Host,並將 Holo Red (內建 RPi4) 設定為 Diretta Target。內容包含「雙網卡直連」的網路架構設定,以及透過 NAT 和 SOCKS Proxy 管理後端 Target 的方法。
1. Diretta DDS 原理與架構簡介
Diretta 採用「Host-Target」架構。Host 負責運算與處理,Target 負責接收與輸出。透過預測性傳輸與負載恆定機制,旨在降低 Target 端(播放端)的 CPU 負載。
根據Diretta 官網說明,實作 DDS 需兩台電腦:
- Diretta-Host:負責運算、升頻、檔案處理(如 Roon Core / HQPlayer)。更進階的作法是再拿一台專門的RPI做Host, Roon跟hqpe另外跑在dirty PC上
- Diretta-Target:負責接收封包與 I/O 輸出。
測試環境配置:
- Host:x86 PC 運行 AudioLinux (Roon Core + HQPlayer Embedded)。
- Target:Holo Red (Raspberry Pi 4) 運行 GentooPlayer。
2. 準備工作:設定 RPi4 (Holo Red) 為 Diretta-Target
本例使用 GentooPlayer 系統作為 Target 的作業系統。
2.1 下載與安裝
- 前往 GentooPlayer 下載頁面。
- 下載 Rpi4 64bit version 映像檔。
- 寫入 SD 卡:建議使用 Raspberry Pi Imager 以確保寫入過程順利。
2.2 初次開機與連線
- 將 SD 卡插入 Holo Red,接上網路線(暫時連接至一般區域網路 Switch),開啟電源。
- 使用 IP Scanner 軟體確認 RPi4 的 IP 位址。
- 開啟瀏覽器輸入
http://[Rpi4_IP]:5000進入管理介面。
2.3 申請試用序號
- 進入選單
00.Register取得系統 Info。 - 參考官網說明,申請 Trial License。
- 收到回信後,依照指示啟用 License。
- 啟用後需重新啟動裝置。
3. 系統設定與核心升級
參考 Quick Start Guide 進行基礎設定:
- 執行 GP-Update 更新 script。
- 修改 Root 密碼。
- Disabling the hotspot:關閉 Wi-Fi 熱點。
- Disable SD-Card Polling:減少對 SD 卡的輪詢。
- 移除軟體:
- 移除不需要的 Audio Software (如 RoonBridge, NAA, Spotify 等)。
- 移除不需要的 System Software。
- Select DAC:Holo Red 透過 USB 輸出,系統通常可自動偵測 USB DAC。
3.7 更新 Kernel
Rpi image 9.00 預設核心版本較舊,為確保 Diretta DDS 運作穩定,建議進行更新。本例中將核心更新至 6.12.55-GentooPlayer-ST+ 版本。
4. 安裝 Diretta-Target
在 GentooPlayer 介面左側選單選擇 Diretta:
- 依序安裝 Diretta-Target 與 Diretta DDS。
- Config 維持預設值 (Default)。
5. 網路架構:雙網卡直連與 NAT 設定
為區隔 Diretta 傳輸流量與一般區域網路流量,採用「雙網卡直連」架構。
5.1 架構說明
將 Holo Red 直接連接至 Host PC 的第二張網卡(enp9s0u6)。此配置可減少廣播封包干擾,但 Target 將無法直接連線至網際網路進行更新。
5.2 AudioLinux NAT 與 DHCP 設定
需在 Host (AudioLinux) 上設定 NAT。網卡配置如下:
- enp6s0 (WAN):連接家中網路,負責對外連線。
- enp9s0u6 (LAN):專門連接 Holo Red。
Host (AudioLinux) 設定範例:
1. 主網卡設定 (enp6s0):
2. 副網卡設定 (enp9s0u6):
設定完成後重啟網路服務。將 Holo Red 連接至該網卡並開機,確認 Host 可 Ping 通 192.168.100.10。
5.3 SOCKS Proxy 連線技巧
由於 Target 位於 Host 後端的內網,需透過 SSH Tunneling 存取其管理介面。
- 建立通道:使用 Bitvise SSH Client 連接 AudioLinux。
- 啟用 SOCKS/HTTP Proxy Forwarding。
- Listen Interface:
127.0.0.1, Port:1080。
- 瀏覽器設定:(以 Firefox 為例)
- 進入 Connection Settings -> Manual proxy configuration。
- SOCKS Host:
127.0.0.1, Port:1080。 - 勾選 Proxy DNS when using SOCKS v5。
- 連線:輸入
http://192.168.100.10:5000即可進入 GentooPlayer 管理介面。
6. Diretta-Host 安裝與設定
在 AudioLinux (Host) 進行設定:
- Menu 路徑:
MAIN → AUDIO extra menu → DIRETTA host。 - 選擇 Install/update last version。
- Set Ethernet interface:選擇
enp9s0u6。 - Enable Diretta daemon。
成功啟動後的狀態顯示:
註:試用版 (limited) 限制只能播放 44.1KHz,超過44.1KHz會有播放時間限制。
7. 驗證與測試心得
設定完成後,Roon 或 HQPlayer 的 Audio Device 清單中將出現 ALSA: DIRETTA 裝置。
聽感測試
在 44.1KHz PCM 播放條件下進行測試,相較於原有配置,聲音表現有可辨識的差異:
- 低頻:控制力與反應速度有所提升。
- 人聲:結像更為清晰,細節還原度提高。
- 整體:背景雜訊聽感降低,聲音線條更為滑順。
基於上述測試結果,個人計畫購入正式授權以進行長期使用。
8. 成本分析與方案選擇
針對已持有 RPi4/5 的使用者,OS 與 License 方案分析如下:
- AudioLinux RPi 版 (€79 / 1年支援):
- 包含 Realtime Kernel 與客製化工具。
- 一年後無法更新 Kernel,但軟體可持續更新。
- GentooPlayer RPi 版 (€69 / Unlimited):
- 終身授權。
- 不含 Realtime Kernel,部分進階功能需額外訂閱。
- Diretta Target License:約 €100 (一次性費用)。
總結: 考量到對 AudioLinux 系統架構的熟悉度與 Realtime Kernel 的需求,預計採用 AudioLinux RPi 版 + Diretta Target License 的組合。
筆記更新日期:2026/02/03
實作後記:Audiolinux RPi 版與架構反思
最後由於熟悉度的關係,我還是買了 Audiolinux RPi 版本裝在我的 Holo Red 上。由於 Audiolinux 不提供試用,我之前也只有買 V4 版裝來給 HQPe 用,沒辦法裝在 RPi 上。
沒想到 Audiolinux 在 RPi 上若要跑 ramroot,作者 Piero 建議要 8GB RAM,也就是要 RPi5 8GB 才行。實際上 4GB 應該能跑但 ramsave 可能會遇到問題,但可憐的 Holo Red 內的 RPi 只有區區 2GB,想都不用想,買都買了,就這樣吧。Piero 甚至建議我可以考慮直接拆機換 RPi 板子,但我不想破壞保固因此作罷。
不能在 Holo Red 上跑 ramroot 這點,讓我有點後悔沒買 GentooPlayer,我用 Trial 時是可以順利跑起來的,說真的設定也是滿簡易的。
聽感比較與架構優化構想
我目前的配置是:一台 Audiolinux 電腦裝 HQPe + Roonbridge + Diretta Host。配備兩張網卡,一張負責收 Roon 串流,另一張與 Diretta Target (Holo Red) 直連。
在這個配置下,目前是 Roon + Roonbridge + Diretta 完勝。聲音的光澤感跟細節清晰度贏了 Roon + HQPe + Diretta 不少。我試過 HQPlayer 不同 filter 以及 PCM/SDM 切換,就是少了點細節。
透過這次測試,我才了解為何網路討論 Diretta 都是建議「三層式架構」。我應該再拿一台 RPi 來跑 Diretta Host,藉此隔離 HQPe 高強度運算電腦內的噪聲。預計規劃的架構如下:
剛好手上有幾片 RPi4 4GB,過幾天再來試試看這個三層式架構的威力。


沒有留言:
張貼留言