0x01 前言
此篇主要是講 Moode、Roon 和 UPNP播放。
----
原來圖片都被我弄壞,決定今天重新整理一下,
順便把之前寫得不清楚地方重寫。
0x02 何謂樹莓派
首先你要一塊樹莓派,目前出到 Raspberry pi 4,
主要就速度更快,記憶體更大,
由於我有其他需求,所以我直接買頂規 Raspberry pi 4 8G ram版。
樹莓派簡單說就是臺便宜小電腦,
跟你用電腦播音樂或是用臺電腦裝 Daphile 一樣。
但樹莓派簡單的電路設計,
可以讓各種干擾減少到最小。
當然還是無法跟專業數播相比,
專業數播不只是它系統有多強大,
而是它硬體電路有做各種優化和保護,
不然賣你這麼貴要幹嘛。
然後就是因為樹莓派本身沒有內建硬碟,更專業說法是沒有內建 eMMC 或 Flash,
所以你要買片 micro SD卡給它用,這時有兩種玩法,
之後會慢慢提到,建議先從 micro SD 卡入門,熟悉後再用我最終玩法。
0x03 安裝Moode
這段我就不廢話,快速帶過,
我主要推薦安裝 Moode 系統,
主要是它沒有大改樹莓派系統,介面設計操作簡單方便,
驅動支援多,維護者更新快,在論壇上回覆更快。
最簡單的安裝系統方法是使用 belenaEther 燒錄 Moode 映像檔,
燒錄完後放進樹莓派 SD 槽插上網線,
上電就可以連上你家網路,
你就可以用你電腦或手機控制它。
0x04 如何設定 Moode 系統
先在你電腦或手機使用 http://moode.local 登入系統,
右上角點 m 選 Configure
然後選 System,我們先設定比較麻煩的
請選臺北和按SET,謝謝,雖然根本不影響功能和聲音。
先關閉這兩個,以後要確定系統有沒有開完,
只要看兩個 LED 燈有沒有熄滅就知道了
先把CPU調到最高效能。
這個 32bit 和 64bit 都可以,為什麼要用64bit,因為我爽。
但記得上面有寫 64bit只支援 Pi-4, Pi-3, Pi-2B 1.2版本以上,
這個設定完,會叫你要重開機,如下方法重開機即可。
按 Power,再按RESTART即可。
然後把以下設定成我這樣,把所有可能干擾的來源都關掉,
WiFi、BT 和 HDMI 關閉記得也要重開機,只要它有提醒你的話。
然後設定 DAC,選 Configure -> Audio
如果你選擇用USB接DAC,
請到 MPD Settings 選 EDIT
在這應該會找到你的 DAC 名字,例如我的DAC叫TT2。
把 Moode 系統軟體音量關閉,以後都由你 DAC 或 AMP 調音量
這種要看你板子記憶體,我是全設定到上限,
主要看 Input Cache,
它會在播放前把音檔放在記憶體緩存,
這可以提升音質,也是很多播放軟體提升音質的方式之一。
然後按下SAVE
回到上一層Audio設定,
7.3.0 支援跳過ALSA轉換,建議選擇 Direct(hw)
如果你有 iPhone 或 MacBook 或 iPad,肯定需要開啟 Airplay 功能,
你就可以用樹莓派播放音樂或 YouTube
如果你有買 Spotify 帳號,就可以用這個功能,因為付費版支援 Spotify Connect,就可以用手機或電腦 Spotify 軟體找到 Moode Spotify
然後 Spotify 要設定一下,才可以把音質提升,按下EDIT,設定完按下SAVE。
如果你播放軟體支援 UPnP 播放,可以使用這功能,像我有買 Audirvana,
我就可以把音檔放在我電腦,然後一樣使用我習慣的播放軟體,
但透過 UPnP 傳送到樹莓派播放音樂。
0x05 深度優化
我的優化方法不會影響到 Moode 系統升級,
當有新版本發佈,你一樣可以按下系統更新,
升級完也不會影響到我們的設定。
先開啟 ssh 登入
按ON和SET。
按 OPEN Web SSH terminal
login 輸入 pi,Password 輸入 moodeaudio
應該就會看到這種很酷(復古)的東西
先教大家如何看 CPU 當前溫度吧
輸入 moodeutl -m
可以看到系統各種資訊,按 Ctrl + C 可以結束顯示
我們來把 USB 孔電源關掉吧,為什麼要做這件事,
因為多隻香爐多隻鬼,把沒用到的孔電關閉,可以減少干擾,
對聲音有正面幫助。
輸入 git clone https://github.com/mvp/uhubctl.git
我知道打這一長串太累了,
你可以選擇複製貼上,方法如下,
按下右鍵,
這時會看到多出一個資料夾
先安裝一些編譯需要用的套件
輸入 sudo apt install -y libusb-1.0-0-dev
開始編譯吧
依次輸入
cd uhubctl
make
sudo make install
cd
我們來看看 USB 接了什麼東西,
輸入 sudo uhubctl
由於我沒有接 USB DAC,所以可以發現四個孔,顯示只有一個隨身碟,
我們目標是把沒用到的USB孔的電都像我一樣關閉,而且每次重開機都可以自動關閉。
那樹莓派四個孔硬體上 Port 1 - Port 4 怎麼判斷呢
下圖已經標記USB孔編號。
我們先學習如何手動關閉 USB 孔的電,
如果不打算關機或是覺得學到這就好了,可以就此打住。
由於大家都是樹莓派,所有板子硬體都差不多,USB設計是一樣的
例如現在我想把 Port 1的電關閉,
輸入 sudo uhubctl -l2 -p1 -a 0
-l2 表示 Bus 2,這個大家都一樣,不需要修改
-p1 表示 Port 1
-a 0 表示把電關閉,要打開就改輸入 -a 1
0x6 設定自動關閉 USB 電源
我們來學習寫程式吧,其實只是把剛才手動輸入,再重新設定一遍,之後會讓系統自動執行它。
記得從這步開始,要先手動確定沒輸入錯誤,
不然你可能會發生一直找不到USB裝置,例如你的USB DAC,
選定好你USB DAC之後會用的孔,以後只有那個孔可以用。
輸入 nano uhubctl.sh
輸入你想關閉的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
輸入完,我們把檔案儲存,
按下 Ctrl + X
會問你要不要儲存,按下 y
出現這個按 Enter 就好了
把這程式變成可執行
輸入 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
然後把它儲存好。
把剛才的東西,啟動每次開機都自動執行
輸入 sudo systemctl enable usb.service
0x07 深度優化 Part 2
來買個讀卡機吧,因為我們要做些細微的優化,
我們要把 micro SD卡放在讀卡機開機。
以下就不一定有效,聽不出來,我可不負責。
我的讀卡機和超級大卡,朋友說他爬文,用 CF 卡有差,我就隨他了。
我們先來升級樹莓派韌體,專業說是升級eeprom韌體
輸入 sudo rpi-eeprom-update
像我已經是最新,所以到這步就好了。
不然請輸入 sudo rpi-eeprom-update -a
然後回到 Moode 系統重開機,方法請拉回上面喔。
然後我們要改一下開機順序,希望優先從USB讀卡機開機。
輸入 sudo -E rpi-eeprom-config --edit
預設 BOOT_ORDER應該會是 0xf41,把它修改成 0xf14,修改完記得儲存起來。
它會要求你重開機,記得先重開機。
然後我們又要修改 USB 電源了,剛才我們不是把三個孔電源都關了嗎?
記得修改 uhubctl.sh 檔案,把讀卡機準備用的孔電源打開,
修改完,把樹莓派電斷掉,把micro SD卡插入讀卡機,然後開機吧,如果開成功,兩個LED燈都熄滅,我就為你安心了。因為我就可以教你最後一步了。
是不是我們還有個地方電源沒關閉,沒錯,就是 micro SD卡槽的電。
輸入 sudo nano /boot/config.txt
修改一下檔案,在最後一行加上
dtparam=sd_poll_once
然後儲存它,重開機,如果又成功了,我...目前真沒什麼可以教你了。我還在想有什麼比較簡單的優化,重編系統我覺得會影響到 Moode更新,所以我丟掉這想法了。
0x08 安裝帽子 HAT
差點忘記推廣使用同軸輸出了,如果想要同軸輸出可以買這塊版子,
最重點來了喔,它可以接 DC 5V,所以你可以上開關電或線電,這又是個大提升音質的方法。
我是買這塊,AK4118就是SPDIF晶片名,應該所有(不敢保証)廠商都是用這顆晶片做SPDIF,所以買這個晶片來接同軸光纖相容性是最高的。
如果要用SPDIF要修改一下 Moode 設定,
因為我們不用USB啦,
其實很多可以正常使用這塊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
開始超頻到 1.75GHz吧
輸入 sudo nano /boot/config.txt
最後一行加上
over_voltage=2
arm_freq=1750
再把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,修改數莓派設定
依序選擇,Performance Options -> Overlay File System -> Yes
回到這畫面,按 Tab 一直選到 Finish,離開這個程式
這時一樣重開機即可,以後每次開機都會是乾淨的系統。
0x12 支援 Roon Bridge
現在 Roon 很火,大家可以安裝 Roon Bridge 在樹莓派,
然後用電腦控制樹莓派播放音樂,跟UPNP播放是同樣原理。
記得先把 0x11 的RAM開機關閉。
方法如下,先用 ssh 登入系統
先下載安裝檔,輸入如下指令
修改一下權限,讓它可以執行
chmod +x roonbridge-installer-linuxarmv7hf.sh
安裝它
sudo ./roonbridge-installer-linuxarmv7hf.sh
它最後會顯示安裝成功,這時就重開機樹莓派
sudo reboot
開啟 Roon Bridge 吧
這時你就可以在 Roon 上看到可以選擇樹莓派,
如果是USB接DAC,還會直接顯示你DAC的名字,
我用同軸 Roon Bridge 識別不出來,所以我自己改名了。
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