作者pcjustin (骆驼)
看板Headphone
标题[心得] 玩转树莓派数播(一) - Moode
时间Sun Sep 5 09:04:43 2021
主要就把以前巴哈写得文转过来
刚好最近把坏掉的图补完且重新润一下文章
十多年没用过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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.161.120.73 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Headphone/M.1630803886.A.8BA.html
1F:推 martinlin77: 先推了 09/05 09:09
2F:→ martinlin77: 我也用TT2 可是播放DSD只能走DOP请问看到您分享是走n 09/05 09:10
3F:→ martinlin77: ative DSD? 09/05 09:10
是DoP没错,我昨天重抓图,没特别测试,而且用Roon不用管这个
4F:推 MJmarjim: 请问Spotify connect大大有用成功吗?之前设定好之後还 09/05 09:13
5F:→ MJmarjim: 是找不到 09/05 09:13
有成功,之前要付费才可以抓到,有听说现在免费帐号也开放了
6F:推 ccc985: 好文先推! 09/05 09:29
7F:推 kenApp: 推 09/05 09:35
8F:推 iitze: 推,真的是好文。身为树莓派用者,树莓派真是便宜又好用 09/05 09:38
9F:→ iitze: 想问,时钟模组安装後,系统自动会转换用精准时钟吗?还是 09/05 09:40
10F:→ iitze: 要再其他设定?听感有差吗? 09/05 09:40
参考0x13设定完,就会走时钟模组,听感我其实听不出来,
有朋友是直接找人魔改树莓派上时钟成ocxo,说差异很大
※ 编辑: pcjustin (1.161.120.73 台湾), 09/05/2021 09:46:59
11F:推 Lycheus: 写的好完整~推推 09/05 09:54
12F:推 malvin: 推!moode 使用者+1 09/05 09:57
13F:推 malvin: 64 bit在allo usb sig上会预到资料库无法更新的问题 09/05 10:00
这是个很重要的资讯,感谢分享
14F:推 can05025: 推~感谢分享 09/05 10:01
※ 编辑: pcjustin (1.161.120.73 台湾), 09/05/2021 10:03:13
15F:推 martinlin77: Spotify 直接就在手机上面找到直接cast 09/05 10:27
16F:推 purplesky911: 详细推 09/05 10:38
17F:推 martinlin77: 或者volumio上面装Spotify plug in 09/05 10:55
18F:推 LevisDoll: 好文章,给推 09/05 12:45
19F:推 llw116: 感谢分享 09/05 12:53
20F:推 execration: 先推为敬 09/05 13:32
21F:推 missluluking: 感谢教学,推~~~ 09/05 14:13
22F:推 CGary: 优文 09/05 14:29
23F:推 colamouse: 先推免得被发现我看不懂 09/05 17:30
不懂就多交流,私讯都可以问
24F:→ m9172250: 可是一堆数播去看里面 我觉得瞬间都软掉一半 一堆套皮 09/05 18:22
ifi新机吗,它很诚实说是Volumio
※ 编辑: pcjustin (1.161.120.73 台湾), 09/05/2021 18:37:10
25F:推 unique0515: 大大超详细的树莓教学,看来还可以期待第二集 09/05 20:33
还真有,只是改天再写吧,最近太忙
26F:推 TIANPJ: 好用 09/05 21:01
※ 编辑: pcjustin (61.220.76.160 台湾), 09/06/2021 09:45:13
27F:推 CrosstakerYu: 推~ 建议可以加上USB隔离器(要有正确的设计) 09/06 18:06
28F:→ CrosstakerYu: 声音可以变乾净很多~ 09/06 18:07
哈,我都用同轴,USB是特别抓图给大家看的,隔离过肯定更乾净,朋友就上铁殻 XD
※ 编辑: pcjustin (1.161.120.73 台湾), 09/06/2021 21:16:12
※ 编辑: pcjustin (1.161.120.73 台湾), 09/06/2021 21:17:18
※ 编辑: pcjustin (1.161.120.73 台湾), 09/06/2021 21:26:10
29F:推 RweiOrz: 如同教材般详细 学习了! 11/14 15:11