主要就把以前巴哈寫得文轉過來
剛好最近把壞掉的圖補完且重新潤一下文章
十多年沒用過ptt po文,
我只好當成用markdown寫公司文件了
---
0x01 前言
此篇主要是講 Moode、Roon 和 UPNP播放。
0x02 何謂樹莓派
首先你要一塊樹莓派,目前出到 Raspberry pi 4,
主要就速度更快,記憶體更大,
由於我有其他需求,所以我直接買頂規 Raspberry pi 4 8G ram版。
https://i.imgur.com/TcNuRzH.jpg
樹莓派簡單說就是台便宜小電腦,
跟你用電腦播音樂或是用台電腦裝 Daphile 一樣。
但樹莓派簡單的電路設計,
可以讓各種干擾減少到最小。
當然還是無法跟專業數播相比,
專業數播不只是它系統有多強大,
而是它硬體電路有做各種優化和保護,
不然賣你這麼貴要幹嘛。
然後就是因為樹莓派本身沒有內建硬碟,更專業說法是沒有內建 eMMC 或 Flash,
所以你要買片 micro SD卡給它用,這時有兩種玩法,
之後會慢慢提到,建議先從 micro SD 卡入門,熟悉後再用我最終玩法。
0x03 安裝Moode
這段我就不廢話,快速帶過,
我主要推薦安裝 Moode 系統,
https://moodeaudio.org/
主要是它沒有大改樹莓派系統,介面設計操作簡單方便,
驅動支援多,維護者更新快,在論壇上回覆更快。
最簡單的安裝系統方法是使用 belenaEther 燒錄 Moode 映像檔,
https://www.balena.io/etcher/
燒錄完後放進樹莓派 SD 槽插上網線,
上電就可以連上你家網路,
你就可以用你電腦或手機控制它。
0x04 如何設定 Moode 系統
先在你電腦或手機使用 http://moode.local 登入系統,
右上角點 m 選 Configure
https://i.imgur.com/VLoK8c2.png
然後選 System,我們先設定比較麻煩的
https://i.imgur.com/ArklQIj.png
請選台北和按SET,謝謝,雖然根本不影響功能和聲音。
https://i.imgur.com/iXWjImI.png
先關閉這兩個,以後要確定系統有沒有開完,
只要看兩個 LED 燈有沒有熄滅就知道了
https://i.imgur.com/bQfivyv.png
先把CPU調到最高效能。
https://i.imgur.com/gvFjXHg.png
這個 32bit 和 64bit 都可以,為什麼要用64bit,因為我爽。
但記得上面有寫 64bit只支援 Pi-4, Pi-3, Pi-2B 1.2版本以上,
https://i.imgur.com/zd8Mp3K.png
這個設定完,會叫你要重開機,如下方法重開機即可。
按 Power,再按RESTART即可。
https://i.imgur.com/RDezbt4.png
https://i.imgur.com/PvY52kr.png
然後把以下設定成我這樣,把所有可能干擾的來源都關掉,
WiFi、BT 和 HDMI 關閉記得也要重開機,只要它有提醒你的話。
https://i.imgur.com/spIrTIH.png
然後設定 DAC,選 Configure -> Audio
https://i.imgur.com/QEOe8wy.png
如果你選擇用USB接DAC,
請到 MPD Settings 選 EDIT
https://i.imgur.com/6XmAchD.png
在這應該會找到你的 DAC 名字,例如我的DAC叫TT2。
https://i.imgur.com/9CPDJ4T.png
把 Moode 系統軟體音量關閉,以後都由你 DAC 或 AMP 調音量
https://i.imgur.com/eiUKZNP.png
這種要看你板子記憶體,我是全設定到上限,
主要看 Input Cache,
它會在播放前把音檔放在記憶體緩存,
這可以提升音質,也是很多播放軟體提升音質的方式之一。
https://i.imgur.com/kXmBEW8.png
然後按下SAVE
https://i.imgur.com/9OFt1rc.png
回到上一層Audio設定,
7.3.0 支援跳過ALSA轉換,建議選擇 Direct(hw)
https://i.imgur.com/wTSOb91.png
如果你有 iPhone 或 MacBook 或 iPad,肯定需要開啟 Airplay 功能,
你就可以用樹莓派播放音樂或 YouTube
https://i.imgur.com/bFJgZVF.png
如果你有買 Spotify 帳號,就可以用這個功能,因為付費版支援 Spotify Connect,就
可以用手機或電腦 Spotify 軟體找到 Moode Spotify
https://i.imgur.com/cMJHlX6.png
然後 Spotify 要設定一下,才可以把音質提升,按下EDIT,設定完按下SAVE。
https://i.imgur.com/nWEGAF5.png
如果你播放軟體支援 UPnP 播放,可以使用這功能,像我有買 Audirvana,
我就可以把音檔放在我電腦,然後一樣使用我習慣的播放軟體,
但透過 UPnP 傳送到樹莓派播放音樂。
https://i.imgur.com/A1lVNjD.png
0x05 深度優化
我的優化方法不會影響到 Moode 系統升級,
當有新版本發佈,你一樣可以按下系統更新,
升級完也不會影響到我們的設定。
先開啟 ssh 登入
https://i.imgur.com/ArklQIj.png
按ON和SET。
https://i.imgur.com/vJuOHgs.png
按 OPEN Web SSH terminal
login 輸入 pi,Password 輸入 moodeaudio
應該就會看到這種很酷(復古)的東西
https://i.imgur.com/sHohsKg.png
先教大家如何看 CPU 當前溫度吧
輸入 moodeutl -m
可以看到系統各種資訊,按 Ctrl + C 可以結束顯示
https://i.imgur.com/vbDy0vG.png
我們來把 USB 孔電源關掉吧,為什麼要做這件事,
因為多隻香爐多隻鬼,把沒用到的孔電關閉,可以減少干擾,
對聲音有正面幫助。
輸入 git clone https://github.com/mvp/uhubctl.git
我知道打這一長串太累了,
你可以選擇複製貼上,方法如下,
按下右鍵,
https://i.imgur.com/xv5SDn3.png
https://i.imgur.com/e3jKaGL.png
這時會看到多出一個資料夾
https://i.imgur.com/I5WUcha.png
先安裝一些編譯需要用的套件
輸入 sudo apt install -y libusb-1.0-0-dev
https://i.imgur.com/gRmwQDb.png
開始編譯吧
依次輸入
cd uhubctl
make
sudo make install
cd
https://i.imgur.com/twN59up.png
我們來看看 USB 接了什麼東西,
輸入 sudo uhubctl
由於我沒有接 USB DAC,所以可以發現四個孔,顯示只有一個隨身碟,
我們目標是把沒用到的USB孔的電都像我一樣關閉,而且每次重開機都可以自動關閉。
https://i.imgur.com/Nc7z8LO.png
那樹莓派四個孔硬體上 Port 1 - Port 4 怎麼判斷呢
下圖已經標記USB孔編號。
https://i.imgur.com/qNU6TR1.jpg
我們先學習如何手動關閉 USB 孔的電,
如果不打算關機或是覺得學到這就好了,可以就此打住。
由於大家都是樹莓派,所有板子硬體都差不多,USB設計是一樣的
例如現在我想把 Port 1的電關閉,
輸入 sudo uhubctl -l2 -p1 -a 0
-l2 表示 Bus 2,這個大家都一樣,不需要修改
-p1 表示 Port 1
-a 0 表示把電關閉,要打開就改輸入 -a 1
https://i.imgur.com/gF2ILXx.png
0x6 設定自動關閉 USB 電源
我們來學習寫程式吧,其實只是把剛才手動輸入,再重新設定一遍,之後會讓系統自動執
行它。
記得從這步開始,要先手動確定沒輸入錯誤,
不然你可能會發生一直找不到USB裝置,例如你的USB DAC,
選定好你USB DAC之後會用的孔,以後只有那個孔可以用。
輸入 nano uhubctl.sh
https://i.imgur.com/I2bnZXV.png
輸入你想關閉的USB孔,可以看到我把Port1, Port2, Port4電都關閉,你一定一定一定要
依照自己設定。
想關閉的孔,可以把前面的 # 去除,要打開就再加上 #
#!/bin/bash
# uhubctl -l2 -p1 -a 0
# uhubctl -l2 -p2 -a 0
# uhubctl -l2 -p3 -a 0
# uhubctl -l2 -p4 -a 0
https://i.imgur.com/uu5bDXO.png
輸入完,我們把檔案儲存,
按下 Ctrl + X
會問你要不要儲存,按下 y
https://i.imgur.com/6PejhBO.png
出現這個按 Enter 就好了
https://i.imgur.com/5NFfFQR.png
把這程式變成可執行
輸入 chmod +x uhubctl.sh
建立成一個服務,讓它每次開機都自動關閉USB
輸入 sudo nano /etc/systemd/system/usb.service
輸入如下設定,如果你都依照我的流程,應該一行都不用改,儲存方法跟上面一樣喔,我
就不重覆了。
[Unit]
Description=USB hub utitly
After=network.target
[Service]
ExecStart=/home/pi/uhubctl.sh
WorkingDirectory=/home/pi
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=uhubctl
User=root
Group=root
Restart=always
[Install]
WantedBy=multi-user.target
https://i.imgur.com/ZM0uiHi.png
然後把它儲存好。
把剛才的東西,啟動每次開機都自動執行
輸入 sudo systemctl enable usb.service
0x07 深度優化 Part 2
來買個讀卡機吧,因為我們要做些細微的優化,
我們要把 micro SD卡放在讀卡機開機。
以下就不一定有效,聽不出來,我可不負責。
我的讀卡機和超級大卡,朋友說他爬文,用 CF 卡有差,我就隨他了。
我們先來升級樹莓派韌體,專業說是升級eeprom韌體
輸入 sudo rpi-eeprom-update
https://i.imgur.com/GPzaBua.png
像我已經是最新,所以到這步就好了。
不然請輸入 sudo rpi-eeprom-update -a
然後回到 Moode 系統重開機,方法請拉回上面喔。
然後我們要改一下開機順序,希望優先從USB讀卡機開機。
輸入 sudo -E rpi-eeprom-config --edit
預設 BOOT_ORDER應該會是 0xf41,把它修改成 0xf14,修改完記得儲存起來。
https://i.imgur.com/1JAQ9ss.png
它會要求你重開機,記得先重開機。
然後我們又要修改 USB 電源了,剛才我們不是把三個孔電源都關了嗎?
記得修改 uhubctl.sh 檔案,把讀卡機準備用的孔電源打開,
修改完,把樹莓派電斷掉,把micro SD卡插入讀卡機,然後開機吧,如果開成功,兩個
LED燈都熄滅,我就為你安心了。因為我就可以教你最後一步了。
是不是我們還有個地方電源沒關閉,沒錯,就是 micro SD卡槽的電。
輸入 sudo nano /boot/config.txt
修改一下檔案,在最後一行加上
dtparam=sd_poll_once
https://i.imgur.com/463smo7.png
然後儲存它,重開機,如果又成功了,我...目前真沒什麼可以教你了。我還在想有什麼
比較簡單的優化,重編系統我覺得會影響到 Moode更新,所以我丟掉這想法了。
0x08 安裝帽子 HAT
差點忘記推廣使用同軸輸出了,如果想要同軸輸出可以買這塊版子,
最重點來了喔,它可以接 DC 5V,所以你可以上開關電或線電,這又是個大提升音質的方
法。
我是買這塊,AK4118就是SPDIF晶片名,應該所有(不敢保証)廠商都是用這顆晶片做SPDIF
,所以買這個晶片來接同軸光纖相容性是最高的。
如果要用SPDIF要修改一下 Moode 設定,
因為我們不用USB啦,
https://i.imgur.com/g4XuAvT.png
其實很多可以正常使用這塊HAT的同軸,
像是
HiFiBerry DAC
HiFiBerry DAC+ Light
設定好重開機,你一放音樂,應該就會發現DAC同軸抓到播放中了。
我喜歡走同軸有兩個原因啦,
第一是我喜歡同軸這種有點類比的聲音
第二是不用處理麻煩的USB雜訊等
對了,記得呀,不要老師在講沒有在聽呀,
如果用同軸不就空了一個 USB 孔,記得把USB電源關掉呀。
0x09 CPU 超頻
突然又想到新招,我們來超頻吧,Raspberry Pi 4 CPU是1.5GHz,
我們目標是超到極限 2.147GHz。
由於我只在 Raspberry Pi 4測試過,其他舊板子不建議或是私訊問我。
為什麼要超頻或為什麼要高速的CPU,這我沒有個理論基礎,
今天剛好帶DAC過去找朋友玩,就幫他把樹莓派超頻給他聽聽看,
測試結束有點出乎意料,我們結論是速度越快,解析太高導致聲音太刺且低頻被吃掉不少
。
因為我帶TT2過去,而他又是聽金屬,所以銀線銀頭全加滿,
再加上他耳機是TH900mk2也是高解析。
結果就是測到1.75GHz最剛好,聲音集中,低頻少一點。
測試結果是速度越快,解析越好(會帶來刺激和吃掉低頻),但不表示在你系統是好聽。
所以大家就各自調整到自己滿意的聲音就好,不一定是超到極限才好聽。
以下操作,請一定要遵守幾個規則,
1. 有安裝散熱片和良好的對流,最好一定要台小風扇
2. 每超頻上去一階,要檢查CPU溫度有沒有超過65度(前面有教)
3. 一步步超頻上去,不要想一步超到極限,燒掉我不負責
輸入 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
檢查一下當前CPU頻率,這數字表示1.5GHz
https://i.imgur.com/D6f0A05.png
開始超頻到 1.75GHz吧
輸入 sudo nano /boot/config.txt
最後一行加上
over_voltage=2
arm_freq=1750
https://i.imgur.com/qXgVpgA.png
再把Moode系統重開機,如果開機成功,
我們來檢查一下是否超頻成功和CPU溫度
輸入 moodeutl -m
再來我們超頻到2GHz吧,
輸入 sudo nano /boot/config.txt
修改成
over_voltage=6
arm_freq=2000
修改完一樣把 Moode重開機,再重新檢查CPU頻率和CPU溫度,我就不重覆了。
再來超頻到極限 2.147GHz吧
輸入 sudo nano /boot/config.txt
修改成
over_voltage=6
arm_freq=2147
gpu_freq=750
再重開機,然後檢查CPU頻率和溫度是否都正常。
0x10 增加 SD 卡使用壽命 (老舊方法)
教大家一個系統設定,可以增加SD卡的使用壽命
輸入 sudo nano /etc/fstab
在最後一行加上
tmpfs /var/cache tmpfs defaults,size=500m,noatime
0 0
按 Ctrl + X 離開儲存吧
修改完重開機才會套用設定
0x11 支援 RAM開機
開啟這個可以很大提升聲音,但缺點就是會把系統設定鎖住,
之後如果想修改設定,記得要先把RAM開機關閉,
不然每次下電重開,設定都會恢復。
ssh 進入系統,輸入 sudo raspi-config,修改數莓派設定
https://i.imgur.com/7oQp3by.png
依序選擇,Performance Options -> Overlay File System -> Yes
https://i.imgur.com/SPHfisI.png
回到這畫面,按 Tab 一直選到 Finish,離開這個程式
https://i.imgur.com/sRPK6nf.png
這時一樣重開機即可,以後每次開機都會是乾淨的系統。
0x12 支援 Roon Bridge
現在 Roon 很火,大家可以安裝 Roon Bridge 在樹莓派,
然後用電腦控制樹莓派播放音樂,跟UPNP播放是同樣原理。
記得先把 0x11 的RAM開機關閉。
方法如下,先用 ssh 登入系統
先下載安裝檔,輸入如下指令
wget http://download.roonlabs.com/builds/roonbridge-installer-linuxarmv7hf.sh
修改一下權限,讓它可以執行
chmod +x roonbridge-installer-linuxarmv7hf.sh
安裝它
sudo ./roonbridge-installer-linuxarmv7hf.sh
它最後會顯示安裝成功,這時就重開機樹莓派
sudo reboot
開啟 Roon Bridge 吧
https://i.imgur.com/ECN6Pto.png
https://i.imgur.com/pfohrjZ.png
這時你就可以在 Roon 上看到可以選擇樹莓派,
如果是USB接DAC,還會直接顯示你DAC的名字,
我用同軸 Roon Bridge 識別不出來,所以我自己改名了。
https://i.imgur.com/VwnJg4z.png
0x13 支援外掛時鐘(已刪除)
感謝燒友iitze指正,少寫一段功能,但沒時間測試,
所以建議大家不要使用,不過我還是更新在最後一段
進階時鐘主要分 tcxo 和 ocxo,市面上賣得廠機時鐘也都是這兩種。
tcxo 表示溫補時鐘,優點就是熱機快,精度比樹莓派內建好。
ocxo表示恆溫時鐘,優點是精度是最好的,但缺點是熱機慢,也有人建議不要讓它冷卻。
給樹莓派加鐘最好方法當然是魔改電路板上的時鐘,
但我不會也懶得自己改,所以選擇隨便買個 tcxo 模組。
tcxo比較有名就 DS3231,以下會教當安裝好時鐘,如何把它啟用。
一樣 ssh 登入系統,
先檢查樹莓派有沒有抓到時鐘,
由於每個版本的樹莓派I2C BUS可能不同,
所以建議先用以下方法查詢,
可以看到我的板子,I2C BUS是 i2c-1,也就是BUS 1。
pi@moode:~ $ sudo i2cdetect -l
i2c-1i2c bcm2835 (i2c@7e804000) I2C adapter
然後再查詢有沒有抓到時鐘,
可以看到有一個顯示68,表示時鐘打算使用0x68這位置,
但也表示它還沒有被啟用。
pi@moode:~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
修改 /boot/config.txt,開啟時鐘,
sudo nano /boot/config.txt
大家依照自己的時鐘型號增加,我例舉幾個常見的時鐘
dtoverlay=i2c-rtc,ds1307
or
dtoverlay=i2c-rtc,pcf8523
or
dtoverlay=i2c-rtc,ds3231
像我是 ds3231,我只要加一行 dtoverlay=i2c-rtc,ds3231
然後儲存重開機
sudo reboot
重開機完,我們檢查一下有沒有啟用成功,
再 ssh 登入系統。
檢查有沒有啟用,顯示UU表示啟用成功。
pi@moode:~ $ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
再檢查時鐘有沒有取得時間,有時間出來表示正常。
pi@moode:~ $ sudo hwclock -r
2021-08-17 08:55:44.311129+08:00
設定系統時間為外接時鐘,而且每次開機都要執行,
最好方法是編寫開機自動執行腳本或是設定排程,
每一段時間從外掛時鐘寫入系統時間
pi@moode:~ $ sudo hwclock -s
--