Spotify Connect音箱,多喇叭同步
緣起
三年前整的樹莓派做Spotify Connect音箱,還有這篇,體感差強人意,藍芽連線不穩常斷線,一次只能推一顆喇叭
2026 臺灣光復節趁著颱風假,跟AI一起解這兩題。現在手機 Spotify 會出現三個設備:紅、黑、紅加黑(全屋同步)!
單顆喇叭(不管是水母、齊柏林還是 BOSE)覆蓋有極限;把兩顆快10歲的 UE Megaboom 放客廳與餐廳,聲音完全同步,走到哪都飽滿均勻,舒服!這篇紀錄架構,核心設計,和關鍵採坑點。音效底層改用Linux PipeWire
系統設定
主控端採用Proxmox架構,拆分虛擬機與容器
- 公播主控(LXC / Ubuntu 26.04 LTS / music)
- 音訊源:spotifyd(GRP-ALL-PLAYER)
- 輸出:snapcast server,對全網廣播
- 節點 1(VM / Ubuntu 26.04 LTS / musicRed)
- 硬體:直通USB藍牙Dongle連線紅喇叭
- 輸入:spotifyd(UE-RED)與snapcast client(廣播)
- 輸出:PipeWire 混音後送進藍牙
- 節點 2(VM / Ubuntu 26.04 LTS / musicBlack)
- 硬體:直通專屬 USB 藍牙 Dongle 連線黑喇叭
- 輸入:spotifyd(UE-BLACK)與snapcast client(廣播)
- 輸出:PipeWire混音後送進藍牙
關鍵設定:藍芽連線
避免無腦重連,藍芽音箱斷線才重新連線
WirePlumber Headless 藍牙關鍵設定(關閉 Seat 偵測)
預設的 WirePlumber 會監聽桌面登入狀態(Seat 偵測),在無螢幕的 Server 環境下,沒有實體使用者登入而拒絕啟用藍牙 Audio Sink
Snapcast server/client
snapcast會讓server/client彼此對時,持續追蹤;會把1秒的聲音灌入client,足夠穿越網路,應付藍芽重傳;時間差不大就resample追上,差很大就快速跳躍追趕
實測重新開機,或是喇叭中途開關,都能在幾秒內追上
每新增一顆喇叭,就是多一台電腦(虛擬機或是pi),裡面執跑snapclient連接喇叭,可以擴展
單機雙藍芽Dongle翻車
原本曾嘗試在同一台 Linux 接兩顆藍牙 Dongle 同時推兩顆喇叭
- 便宜的Realtek RTL8761B燒錄的MAC位址完全一樣,Linux 底層(hci0, hci1)直接衝突
- 嘗試改寫韌體組態(rtl8761b_config.bin.zst)注入指令更換MAC Addr,維護性極差放棄
- 無線通道遇到封包碰撞重傳,幾乎無法保證時鐘對齊
保持簡單:一台機器配一個dongle連一顆喇叭。聲音同步靠snapcast處理,乾淨漂亮
AIRPLAY(失敗)
現在這對喇叭只能用Spotify唱歌,我想用shairport-sync對接蘋果airplay,讓手機的聲音串聯到紅,黑,或是紅加黑喇叭。實際搞起來到處都是坑,投降
結語
- 折騰樂無窮:雙喇叭漫遊的包覆感超乎預期,一套設備用10年還很讚
- Apple生態系在AirPlay 2上下了極大功夫(播放YouTube時畫面向後延遲等聲音),蘋果公司鐵定都搞過這些事,直接買HomePod才是正解



留言