本帖最后由 中关村东路 于 2022-8-31 01:19 编辑
一直用x86带usb-iis界面做主力系统的roon bridge/naa,另外有一套系统用树莓派加hifiberry的gpio卡同轴输出做roon bridge再硬件升频。最近废物利用给真力2.1单独配了个拓品的解码当电视伴音,想补个网桥。正好看到门总推荐beaglebone black这款开发板,据说Bricasti也用的这个【1】,就买了一个,于是有了本文,基本上没什么逻辑就是流水账吧。
题外话,但是细想也和主题有密切关系,手头也正好有个要用深度学习做精密控制的课题,需要一边用Linux做有点复杂的计算一边又要超低延迟控制,单片机性能不够,Linux延迟不行,就想到了同厂的beaglebone AI这种ARM+TI PRU单元的产品【2】,大约原理就是主系统在ARM上跑Linux,用独立的硬件PRU, programmable real-time unit去降低控制延迟,可以把普通Linux的毫秒级延迟降低到个位数纳秒级。但这东西有个小坑,必须自己写软件去调用他的API才行,并不是简单的用了这硬件就降低了延迟。具体到网桥这个用途的话,那种下载来的软件,比如roon bridge,naa就没利用上这个PRU单元,专门为这个设备开发的程序才有可能利用上。所以我无责任估计,Bricasti和门总就是因为这个选择了这个方案,利用上这个PRU,开发的RoonReady软件,毕竟如果没利用上的话就是一个十年前的落后单核32位arm而已,可能比树莓派一代都不如。我买来这板子的主要目的也是写个调用PRU API的demo看看性能如何,能不能说服甲方用这个方案,他们有钱可以从德仪买高端板子。
回到主题,我其实买的是beaglebone black industrial【3】,是同系列稍微高端(贵)的版本,主要是对环境温度什么要求低些,32位单核1G ARM,500M内存,4G的ROM,当然,还有两个200Hz的PRU。到目前为止主要尝试了Debian, Archlinux,和门总推荐的pure【4】,之后会安装Gentoo长期使用,毕竟用了小二十年了习惯了。Debian和puredsd都是直接烧到tf卡里就可以刷进ROM,Archlinux麻烦一些,Gentoo就烦出天际了。先说结论吧,向不用Roon的普通发烧友推荐puredsd,向发烧友中的普通Linux用户推荐Archlinux,向DietPi爱好者推荐Debian,向发烧友中专门烧软件编译参数的重度Linux用户兼控制狂推荐Gentoo。
Debian是原厂的系统,2020年就不再维护了,毕竟这产品线也早就不维护了。原厂系统不但继承了Debian系统一贯的臃肿,还要加上一些IOT类的服务。带的是4.x的标准内核,我尝试更新一下,遇到了这板子的第一个大坑,性能太差:输入了apt search linux-image,卡到不能自理,等了好久还在慢慢涨完成百分比我就自闭了。Debian我也长时间作为唯一操作系统使用过,但实在是不能容忍他家依赖关系的繁琐,好些乱七八糟的东西非得装进来,还叫好意思叫base system。我虽然放弃了Debian,但是其实有一种我没有尝试的玩法向大家推荐,就是在此基础上运行一个脚本安装DietPi。喜欢DietPi的读者可以参考【5】自行尝试。
这板子的Archlinux系统是爱好者维护的,不是Arch社区维护的,做的比较糙。考虑到Arch用户基本上不能避免的AUR必须要编译才能使用,而这机器的性能又低下的超出地平线,AUR是不用想了,只能用基本的软件和商业软件了。这点上不如Gentoo,Gentoo是社区维护且很容易cross-compile。不过这个问题并不很大,Roon和NAA这种常用的软件都能有办法装上,upnp/airplay就麻烦些。我简单尝试了一下,遇到了第二个大坑,RoonBridge不能用。去Roon论坛上搜了一下,好家伙,和这板子有关的帖子基本上都是1.8之后就用不了了。我去找1.7版本的RoonBridge需要archive.org,实在太慢了,考虑到不用最新版对我简直是不能容忍的事,Archlinux也被我放弃了。但是试了一下,NAA是可以用的,可惜由于板子性能太差,遇到一个小坑,升频到DSD512/PCM768偶尔会有轻微爆音,CPU利用率达到百分之五十到七十(作为对比赛扬和树莓派应该都在10%以内),无奈只好弃用。
之后就安装了门总推荐的pure【4】。这软件是2021年5月份最后一次更新,安装很傻瓜化,体验不错。有实时内核和标准内核供选择,NAA/RoonReady/airplay/UPNP等服务都有。但是实际用起来,NAA继承了前面所说的不能支持高码率的问题,我手动更新到最新版问题依旧,只好放弃。RoonReady可以跑起来,“借用”hifiberry的验证,但是无法播放音乐,查了一下错误日志,是Roon Core向Endpoint提交时间同步请求时出了问题。我写段脚本手动同步Core/Bridge两台Linux机器的时间可以解决问题。但是这workaround好景不长,播放下一个文件时候就又报错了,只好放弃。突然想起,RoonBridge在Archlinux上不能装,在这个系统上总可以吧,我又试了一下,alsa版本不同,内核版本不同,报的错误居然都和Archlinux下一样的。之后启用了airplay,终于迎来了这次这次折腾的第一个也是唯一一个结果,it works! 无责任推测,upnp应该也是可用的,不过我都是苹果设备,似乎很难利用上就没尝试。
Google一下会发现这硬件在2013年到2016年之间还挺火的,好多人用来做网桥,甚至HQPlayer还专门开发了NAA OS,但到4.x年代就放弃了这条线。到此为止,我的beaglebone black的音乐之旅就结束了。再次总结,向不用Roon的普通发烧友推荐puredsd,向发烧友中的普通Linux用户推荐Archlinux,向DietPi爱好者推荐Debian,向发烧友中专门烧软件编译参数的重度Linux用户兼控制狂推荐Gentoo。最后,向所有有自己开发能力的厂商推荐这块板子,延迟之王。
【1】http://erji.net/forum.php?mod=viewthread&tid=2275335&extra= 【2】https://training.ti.com/pru-training-series 【3】https://beagleboard.org/black-industrial 【4】http://puredsd.ru/ 【5】https://dietpi.com/docs/hardware/#make-your-own-distribution
|