找回密码
 -注册-
查看: 16140|回复: 69
打印 上一主题 下一主题

BeagleBone Black网桥体验

[复制链接]
跳转到指定楼层
1
发表于 2022-8-31 01:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式 来自 北京
本帖最后由 中关村东路 于 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/
5https://dietpi.com/docs/hardware/#make-your-own-distribution

来自 2楼
 楼主| 发表于 2022-8-31 08:28 | 只看该作者 来自 北京
补充一下,翻出来audirvana,puredsd的upnp功能也可以正常使用。
回复

使用道具 举报

来自 13楼
 楼主| 发表于 2022-8-31 18:01 | 只看该作者 来自 北京
因为这台机器没有rtc时钟,导致每次开机都需要校对时间。但是一则有人的bridge是直连core而没有外网连接的,二则门总推荐的pure固件里并没提供ntp程序,导致了一些程序比如roon之类需要校对时间才能正常运行的时候会发现两台机器相隔20多年(初始时间2000年)。我为此写了如下脚本,开机之后执行以下,或者在init.d/inittab里设置一下自动执行即可:

  1. # cat /opt/ntpd.sh

  2. #!/bin/sh



  3. r=`ssh username@ip date -u -R`

  4. d=$(date -d "$r" -D "%a, %d %b %Y %T %Z" +'%Y-%m-%d %H:%M:%S')

  5. date -s "$d"
复制代码

其中username和ip分别是你Roon Core或者任意一台内网Linux机器的用户名和IP地址,当然,假定你的Roon Core打开了sshd。这段代码的意思大约就是,ssh登录到roon主机,执行date -u -R,把结果保存在r这变量里。之后在这个板子里用date命令把这段字符串转化为date -s要求的格式,然后用date -s设置日期。


上述代码需要ssh公钥登录,可惜pure固件里也没有提供ssh-keygen程序,可以用openssl工具手动生成。但是既然有Roon Core,我建议直接打开Roon Core来生成好了,ssh登录之后执行:

  1. ssh-keygen -f id_rsa
复制代码
这样会在家目录生成两个文件id_rsa和id_rsa.pub,分别是秘钥和公钥。把公钥部署在Roon Core上,执行:
  1. cat id_rsa.pub >> ~/.ssh/authorized_keys
复制代码
接下来还要把秘钥公钥传回开发板,本来想用scp的,但是pure里居然连这个都省了,真是精简。找了找发现带了rsync,也可以用来传文件,在Roon Core上执行:
  1. rsync -a id_rsa* root@bbb_ip
复制代码
默认密码应该是root。之后登录开发板,输入:
  1. mkdir ~/.ssh
复制代码
大功告成,现在试试执行
  1. sh /opt/ntpd.sh
复制代码
可以看到结果:
  1. # sh /opt/ntpd.sh
  2. Wed Aug 31 10:00:00 UTC 2022
复制代码
现在你的Roon Core可以和RoonReady时间同步了。当然这个办法也适用于任何其他需要校对时间的情况。

回复

使用道具 举报

来自 29楼
 楼主| 发表于 2022-9-4 15:50 | 只看该作者 来自 北京
再补充一下吧,Gentoo是可以稳定使用pure提供的RoonReady的,但依然不能用RoonBridge,看来真是硬件或者内核patch有问题。
回复

使用道具 举报

来自 30楼
 楼主| 发表于 2022-9-4 16:00 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2022-9-4 17:31 编辑

总结一下遇到的坑,如果你都不介意,那可以看正文推荐的几个rom。

大坑:性能太差,安装软件很慢,编译就别想了,交叉编译部署过来都嫌慢;Roon官方应该是不再维护针对这个板子的RoonBridge了,只能用pure或者hifiberry os等提供的RoonReady客户端,其实就是盗版,而且更新很不积极。

小坑:因为性能太差的副作用,做naa等只能稳定播放dsd256,高了偶尔爆音;这板子主打的PRU单元,必须写专门的代码,无法透明使用,想借此降低延迟的就别想了;连硬件时钟单元都省掉了,最易用的rom pure又没自带ntp矫时软件,但可以用我写的校本对付。
回复

使用道具 举报

来自 34楼
 楼主| 发表于 2022-9-8 15:40 | 只看该作者 来自 荷兰
本帖最后由 中关村东路 于 2022-9-8 15:45 编辑

如果用过pure这个固件就会发现他提供的airplay客户端是aac压缩的版本。我交叉编译了一个专用于pure的airplay服务,支持alac无损解码,针对pure的旧版本glibc-2.30/2.31,针对beaglebone black系列CPU优化,一般来说在其他arm32开发板上不能使用,当然也可能巧合。自取。
https://github.com/zhjie/shairplay-sync-bin

写个简单的安装的使用说明吧。因为pure里没有打包scp,不支持git,甚至wget都不支持https,我推荐使用rsync上传。

首先备份之前的版本:
  1. cp /usr/bin/shairport-sync /opt/
复制代码
之后用电脑下载
  1. http://github.com/zhjie/shairplay-sync-bin/archive/refs/heads/main.zip
复制代码
在电脑上解压缩之后上传到BeagleBone Black,这里假定你的BeagleBone Black IP地址是PureIPAddress,注意最后有个:符号
  1. rsync -a 3.3.9-alac-libdaemon-OpenSSL-Avahi-ALSA-glibc-2.31 root@PureIPAddress:
复制代码
登录复制过去就可以了。在BeagleBone Black上执行
  1. cd /ropot/3.3.9-alac-libdaemon-OpenSSL-Avahi-ALSA-glibc-2.31
  2. chmod +x shairport-sync
  3. cp shairport-sync /usr/bin
  4. cp libalac.so.0 /usr/lib/
复制代码
执行以下试试:
  1. # /usr/bin/shairport-sync -v
  2. /usr/bin/shairport-sync: /usr/lib/libasound.so.2: no version information available (required by /usr/bin/shairport-sync)
  3. /usr/bin/shairport-sync: /usr/lib/libasound.so.2: no version information available (required by /usr/bin/shairport-sync)
  4. /usr/bin/shairport-sync: /usr/lib/libasound.so.2: no version information available (required by /usr/bin/shairport-sync)
  5. /usr/bin/shairport-sync: /lib/libstdc++.so.6: no version information available (required by /usr/bin/shairport-sync)
  6. /usr/bin/shairport-sync: /lib/libstdc++.so.6: no version information available (required by /usr/bin/shairport-sync)
  7. /usr/bin/shairport-sync: /lib/libstdc++.so.6: no version information available (required by /usr/bin/shairport-sync)
  8. /usr/bin/shairport-sync: /lib/libstdc++.so.6: no version information available (required by /usr/lib/libalac.so.0)
  9. /usr/bin/shairport-sync: /lib/libstdc++.so.6: no version information available (required by /usr/lib/libalac.so.0)
  10.          0.002110709 "shairport.c:1729" Started!
  11.          0.001000500 "shairport.c:1756" software version: "3.3.9-alac-libdaemon-OpenSSL-Avahi-ALSA-sysconfdir:/etc"
  12.          0.000397541 "shairport.c:1762" log verbosity is 1.

  13. ……

  14.          0.000227209 "shairport.c:1877" zeroconf regtype is "_raop._tcp".
  15.          0.000053625 "shairport.c:1878" decoders_supported field is 3.
  16.          0.000044833 "shairport.c:1879" use_apple_decoder is 1.
  17.          0.000042542 "shairport.c:1880" alsa_use_hardware_mute is 0.
  18.          0.000043041 "shairport.c:1884" no special mdns service interface was requested.
  19.          0.000348375 "shairport.c:1887" configuration file name "/etc/shairport-sync.conf" resolves to "/etc/shairport-sync.conf".
  20.          0.000230250 "shairport.c:1917" loudness is 0.
  21.          0.000055084 "shairport.c:1918" loudness reference level is -20.000000
  22.          0.019686375 "mdns_avahi.c:375" avahi_dacp_monitor_start Avahi DACP monitor successfully started
复制代码

虽然报了最开始报了几个warning,但最终还是成功启动了。






回复

使用道具 举报

来自 35楼
 楼主| 发表于 2022-9-26 16:15 | 只看该作者 来自 北京
我编译了一个稳定一些的内核,现在可以稳定播放PCM768/DSD256文件了。把原/boot文件夹备份之后,替换其中三个文件即可

https://github.com/zhjie/shairplay-sync-bin
回复

使用道具 举报

70
 楼主| 发表于 2023-5-12 14:16 | 只看该作者 来自 北京
wind20081 发表于 2023-5-12 13:36
非常感谢,也就是我能用一个Linux的系统,装Roon和HP Player,再设置个DHCP,然后网线直连EpochCanon这个 ...

最后一个问题,我在你提问的帖子回复你了。不过还是建议你查找一些资料再下结论,网线直连效果是不如交换机连的。
回复

使用道具 举报

69
发表于 2023-5-12 13:36 | 只看该作者 来自 中国
本帖最后由 wind20081 于 2023-5-12 13:37 编辑
中关村东路 发表于 2023-5-11 20:50
可以。dhcp server,例如

非常感谢,也就是我能用一个Linux的系统,装Roon和HP Player,再设置个DHCP,然后网线直连EpochCanon这个无法设置固定IP的桥对吗
给Roon用的Linux您推荐哪个版本好点
回复

使用道具 举报

68
 楼主| 发表于 2023-5-11 20:50 | 只看该作者 来自 荷兰
wind20081 发表于 2023-5-11 20:39
linux系统可以实现给另一台分配地址直连吗

可以。dhcp server,例如


https://wiki.archlinux.org/title/dhcpd
回复

使用道具 举报

67
发表于 2023-5-11 20:39 来自手机 | 只看该作者 来自 中国
中关村东路 发表于 2023-5-11 10:42
能是肯定能的,不过我没有Epoch Canon不知道他是怎样的机制。如果不从网桥入手,那最简单的办法就是在路 ...

linux系统可以实现给另一台分配地址直连吗
回复

使用道具 举报

66
发表于 2023-5-11 20:38 来自手机 | 只看该作者 来自 中国
中关村东路 发表于 2023-5-11 10:42
能是肯定能的,不过我没有Epoch Canon不知道他是怎样的机制。如果不从网桥入手,那最简单的办法就是在路 ...

网线直连等于是隔离了呢
回复

使用道具 举报

65
 楼主| 发表于 2023-5-11 10:42 | 只看该作者 来自 北京
wind20081 发表于 2023-5-11 09:02
请教一个问题,我目前用Roon Rock,想直连Epoch Canon的桥,但是这个桥无法设置固定IP,那Rock有没办法在他 ...

能是肯定能的,不过我没有Epoch Canon不知道他是怎样的机制。如果不从网桥入手,那最简单的办法就是在路由器端设置dhcp了。不过网桥和核心直连少了交换机隔离,效果会更差些,没必要折腾
回复

使用道具 举报

64
 楼主| 发表于 2023-5-11 10:38 | 只看该作者 来自 北京
右耳不好 发表于 2023-5-11 09:12
这块板子可以直接安装运行bricasti的系统 roon dlna直接可用

可以用,但是只能跑到dsd128,我做的固件可以到dsd512
回复

使用道具 举报

63
发表于 2023-5-11 09:12 | 只看该作者 来自 上海
这块板子可以直接安装运行bricasti的系统 roon dlna直接可用
回复

使用道具 举报

62
发表于 2023-5-11 09:02 | 只看该作者 来自 美国
请教一个问题,我目前用Roon Rock,想直连Epoch Canon的桥,但是这个桥无法设置固定IP,那Rock有没办法在他的linux系统下给桥固定个IP实现网线直连?如果不可以,那把Rock换成Linux安装版本,在Linux的系统能否实现,谢谢!
回复

使用道具 举报

61
发表于 2023-3-27 02:53 | 只看该作者 来自 中国
中关村东路 发表于 2023-3-26 23:56
ropieee/ropieee xl只能用树莓派。网上搜索一下吧,自己折腾不起来以后用时候也会遇到问题。另外我自己平 ...

真是高手
回复

使用道具 举报

60
 楼主| 发表于 2023-3-26 23:56 | 只看该作者 来自 北京
本帖最后由 中关村东路 于 2023-3-27 00:06 编辑
13311189527 发表于 2023-3-26 22:09
你好,能否加qq微信指导下?ropieee只能装树梅派吗?

ropieee/ropieee xl只能用树莓派。网上搜索一下吧,自己折腾不起来以后用时候也会遇到问题。另外我自己平时并不用这些系统,都是自己攒的【1, 2】

【1】http://erji.net/forum.php?mod=vi ... =2253401&extra=

【2】http://erji.net/forum.php?mod=vi ... =2283776&extra=
回复

使用道具 举报

59
发表于 2023-3-26 22:09 | 只看该作者 来自 中国
中关村东路 发表于 2023-3-21 22:11
不能也没必要,这系统也并没什么好的,甚至内置的airplay都不支持alac无损解码。

你好,能否加qq微信指导下?ropieee只能装树梅派吗?
回复

使用道具 举报

58
 楼主| 发表于 2023-3-21 22:11 | 只看该作者 来自 北京
zhmfk 发表于 2023-3-21 18:57
感谢!PURE能装到树梅派和nuc上做桥吗?

不能也没必要,这系统也并没什么好的,甚至内置的airplay都不支持alac无损解码。


树莓派直接用ropieee【1】之类的就可以了,该有的软件基本上都支持。

【1】https://ropieee.org/
回复

使用道具 举报

57
发表于 2023-3-21 18:57 | 只看该作者 来自 中国
中关村东路 发表于 2023-3-20 15:13
dsd64/dsd128可以。再高了我遇到过爆音和卡顿,另外也和你的roon core性能有关,性能弱或者双方之一是实 ...

感谢!PURE能装到树梅派和nuc上做桥吗?
回复

使用道具 举报

56
 楼主| 发表于 2023-3-20 15:13 | 只看该作者 来自 荷兰
zhmfk 发表于 2023-3-20 14:11
roon推到pure可以播放dsd格式吗?

dsd64/dsd128可以。再高了我遇到过爆音和卡顿,另外也和你的roon core性能有关,性能弱或者双方之一是实时内核可能会因为丢包太多搞不定桥核时间同步最终断连。


一句话评论就是,十多年的老机器性能极低又是单核早该淘汰了。如果为了废物利用可以看下我发的一些补丁凑合用,没买就去买树莓派或者其他新一些的。
回复

使用道具 举报

55
发表于 2023-3-20 14:11 | 只看该作者 来自 中国
中关村东路 发表于 2023-3-20 12:30
我用的roon推送,没用过达菲,抱歉。

roon推到pure可以播放dsd格式吗?
回复

使用道具 举报

54
 楼主| 发表于 2023-3-20 12:30 | 只看该作者 来自 北京
zhmfk 发表于 2023-3-19 19:16
大哥好,bbb板刷了pure桥系统怎么才能实现播放dsd和sacd格式的,现在用的达菲,谢谢!

我用的roon推送,没用过达菲,抱歉。
回复

使用道具 举报

53
发表于 2023-3-19 19:16 | 只看该作者 来自 中国
中关村东路 发表于 2022-10-29 13:50
经过各种折腾,搞定了DSD512/PCM768稳定播放..没有延迟感和crack

大哥好,bbb板刷了pure桥系统怎么才能实现播放dsd和sacd格式的,现在用的达菲,谢谢!
回复

使用道具 举报

52
 楼主| 发表于 2023-3-17 17:45 | 只看该作者 来自 荷兰

比树莓派差太多了,毕竟十年的发展..社区也远比不过树莓派
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2025-6-29 01:05

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表