找回密码
 -注册-

无独立主机,无安装依赖,无虚拟机Docker——玩转嵌入式HQPlayer

查看数: 21354 | 评论数: 161 | 收藏 59
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-11-5 15:51

正文摘要:

Linux嵌入式版的HQPlayer是最极致的PC升频方式之一,有着更少的干扰,更高的效率,无需显示器键盘鼠标。本帖介绍了一种无需独立主机,无需自行处理安装依赖,不需忍受虚拟机和Docker带来的性能损失的Linux嵌入式版HQ ...

回复

中关村东路 来自 北京市 发表于 2022-11-5 15:51
1. 背景

很多朋友知道,Linux嵌入式版的HQPlayer【1】才是正宗——更少的干扰,更高的效率,无需显示器键盘鼠标带来更纯粹的使用体验。

官方的Linux嵌入式版HQPlayer主要有两种安装方法,安装包HQPlayer Embedded【2】,和HQPlayer OS【3】。前者,安装包的方式,HQPlayer Embedded(以下简称HQPE)适合有一定Linux基础的Ubuntu/AudioLinux/GentooPlayer用户使用,不但有一些技术或经济上的门槛,而且为了处理依赖关系,需要引入大量软件包,搞不好还会让纯CLI的操作界面安装好多图形界面的东西,洁癖患者很难接受,同时也可能因臃肿的依赖关系引入不必要的进程。后者,HQPlayer OS(以下简称HQOS)相对而言方便得多,只需烧制一张启动u盘即可,但却也伴随一些问题,大到常见的网卡无法驱动,小到内核臃肿且严重缺乏优化,因为HQOS盲目采用实时内核还会导致性能较差的机器在高负载情况下出现卡顿,最让只想临时体验的烧友头疼的莫过于这需要完全占用一台独立的电脑。当然,一些软路由爱好者希望可以使用虚拟机,docker等方法在windows或NAS上使用HQOS。作为纯粹的体验派而言这是可行的方案,但虚拟机意味着系统资源的损耗,对HQPlayer这种对算力和流畅性要求极高的软件来说,不仅是性能是否够用的问题,更会直接导致卡顿等不好的体验,对追求极致的音乐发烧友而言实在不是一个好的选择,还不如直接用桌面版体验一下算了。可以说,很多同学不使用HQ的原因并非付费困难、对音质的质疑等正面问题,而只是因为没有一台独立的电脑方便的安装Linux嵌入式版HQ而已。

在另外一个帖子中【4】我提过之后会发帖介绍如何更高效便捷地安装Linux版嵌入式HQPlayer,甚至还讨论过如何给HQOS增加airplay功能【5】。正好这几天有烧友提到,我就整理出来,并听从建议起了这个标题希望能吸引眼球。目标受众主要有两类,一类是体验派,希望在无独立主机、不使用虚拟机、docker等低效方案的情况下,不自己处理依赖的玩转HQPlayer;另外一类是极致玩家,他们不满足于当前的HQOS的内核性能,不想使用第三方提供的AudioLinux/GentooPlayer等臃肿的收费发行版,希望自己完全掌控嵌入式版HQPlayer。本帖主要受众是后者,但也推荐给第一类体验派玩家。和我之前发的一些纯技术贴不同,考虑到本帖的目标读者广泛,我尽量使用精确易用的描述方式,面向有些动手能力的烧友,只需要你大约知道什么是登录,什么是挂载即可,并不要求过高的Linux基础。

如果对你有所帮助,希望能回帖表示支持。有所疑问也请在本帖下回帖,尽量不要站内信或者在qq咨询,这样可以让有相同问题的同学看到。

【1】https://www.signalyst.com/custom.html
【2】https://www.signalyst.eu/bins/hqplayerd/bullseye
【3】https://www.signalyst.eu/bins/hqplayerd/images
【4】http://erji.net/forum.php?mod=vi ... =2283776&extra=
【5】http://erji.net/forum.php?mod=vi ... =2272408&extra=


中关村东路 来自 北京市 发表于 2022-11-5 15:51
2. 所需材料

2.1 一台电脑,安装balenaEtcher/dd或任意可以烧录HQOS镜像的软件。我用的是macOS+balenaEtcher。

2.2 一张u盘,用于解压缩HQOS镜像。当然,熟悉Linux的玩家也可以用其他方法,例如zfs/虚拟机/mount -o loop等方法解压缩,只要能拿到镜像里的文件即可,本帖就不介绍了。

2.3 HQOS镜像文件。最简单且合法的办法就是从官网【3】下载。

2.4 一台有root权限的Linux电脑,可以是软路由,NAS,下载机,树莓派,也可以是一台独立的HQPlayer升频主机。只要安装有chroot/systemd之一即可。这里再次强调一下,如果只是体验一下嵌入式版HQPlayer,上述选择都是可行的,如果打算以此为主力,还是建议使用高性能被动散热的独立HQ主机,使用本帖方案可获得极高的上限。


中关村东路 来自 北京市 发表于 2022-11-5 15:53
3. 准备工作

3.1 获取HQOS镜像文件

打开链接【3】可以看到眼花缭乱的镜像文件。这是HQOS针对不同CPU制作的优化版本。简单介绍一下,早期的嵌入式HQ分为树莓派、x64gen、x64amd三种镜像,分别针对树莓派/cm4开发板、早期intel/amd cpu或奔腾赛扬等低端cpu,x86amd针对的是支持avx的cpu。后两个标题很有迷惑性,现在有已经不再使用了。现在的命名改成了没有歧义的sse42、avx2,依然针对早期cpu和较新的cpu。如果不知道该如何选择,那么选择sse42总是没错的,现在很少能找到不支持这个指令集的电脑了。

3.2 烧录u盘

这个就不详细介绍了,注意把下载到的文件7z文件解压缩成img文件再用balenaEtcher等软件烧录至u盘即可。高端玩家可使用其他方式,这一步的目标只是获得镜像内的文件而已,用u盘容易解释清楚而已。

3.3 复制u盘文件到Linux主机

看起来不会很难是不是,这是本帖最复杂的一步,搞定这个你就成功一大半了!这一步最难的其实只是要找到u盘的盘符。先获取root权限,再执行fdisk -l,就会看到好多磁盘,识别刚才烧录的HQOS u盘很容易,一看品牌,确实是DataTraveler,二看容量,是32G的,三看是否恰好两个分区一个小的是Microsoft basid data,一个大的是Linux filesystem。

当然,要执行上述操作先要登录这台Linux机器,可以选择连接键盘和显示器直接登录,也可以ssh登录,这里就不介绍了。如果不是用root登录,而是其他用户,需要获得root权限,输入:
  1. sudo -i 或者 su -
复制代码


我也做了一回root党,主要是为了说话方便。如果你很注意账号安全,可以一直带着sudo执行后面的命令。接下来找到烧录的HQOS u盘,

  1. fdisk -l

  2. Disk /dev/sdd: 28.82 GiB, 30943995904 bytes, 60437492 sectors
  3. Disk model: DataTraveler 3.0
  4. Units: sectors of 1 * 512 = 512 bytes
  5. Sector size (logical/physical): 512 bytes / 512 bytes
  6. I/O size (minimum/optimal): 512 bytes / 512 bytes
  7. Disklabel type: gpt
  8. Disk identifier: 0E0121B2-F340-4E3C-B0C6-DE9FD467B895

  9. Device     Start     End Sectors  Size Type
  10. /dev/sdd1   2048   54047   52000 25.4M Microsoft basic data
  11. /dev/sdd2  55296 4646957 4591662  2.2G Linux filesystem
复制代码


下面就要复制u盘文件到Linux主机了。首先挂在u盘到临时文件夹,之后复制,注意下面的sd*2要改成你的u盘对应的Linux filesystem分区

  1. mkdir -p /tmp/hqplayer
  2. mount /dev/sdd2 /tmp/hqplayer
  3. cp -av /tmp/hqplayer /mnt/hqplayer
复制代码


至此我们就把HQOS的文件复制到/mnt/hqplayer这个目录下了,u盘可以扔掉了。好吧,既然你都操作到这了我就告诉你吧,其实这步也不是必要的,直接挂载u盘就可以继续下一步,我只是太强迫症不能接受运行hqplayer时候机器上还插着一个u盘。



中关村东路 来自 北京市 发表于 2022-11-5 15:55
4. systemd-nspawn方式

4.1 启动之前最后的工作

到此为止基本上就完工了,我们还需要简单处理一下阻止hqplayer正常启动的一些没用的链接。熟悉Linux的朋友可以删掉更多没用的东西
  1. rm /mnt/hqplayer/etc/resolv.conf
  2. rm /mnt/hqplayer/var/lock
  3. rm /mnt/hqplayer/var/log
  4. rm /mnt/hqplayer/var/tmp
  5. rm /mnt/hqplayer/etc/systemd/system/sockets.target.wants/sshd.socket
复制代码


其中前四个是死链接,影响启动,最后一个会和Linux主机的ssh冲突。

4.2 启动了!

执行

  1. systemd-nspawn -b -D /mnt/hqplayer
复制代码


你会看到

  1. Welcome to HQPlayer OS 4.x 3.4.1 (honister)!

  2. Queued start job for default target Multi-User System.

  3. ……

  4. [  OK  ] Reached target Network.
  5. [  OK  ] Reached target Host and Network Name Lookups.

  6. HQPlayer OS 4.x 3.4.1 hqplayer console

  7. hqplayer login:
复制代码


这时候输入root回车即可,和使用HQOS烧制的u盘启动效果完全相同。却避免了网卡不能启动等兼容问题。是不是很酷。用浏览器打开HQ的web操作界面,需要知道你的ip,我的是:


  1. http://192.168.1.9:8088/config
复制代码


4.3 自动启动

编写一个systemd文件即可让上述HQOS自动启动,编写方式详见我的另外一个帖子【5】。记得把执行命令改为

  1. systemd-nspawn -b -D /mnt/hqplayer
复制代码


4.4 其他可选操作

至此,本文的主要目的已经达成。但追求极致的用户还可以有些可做的事情,比如关闭这台HQOS上的naa,关闭时间同步服务等等,都可以在4.2节登录之后像本机一样操作。比如还可以关闭rngd,resolved等服务。



中关村东路 来自 北京市 发表于 2022-11-5 15:55
5. chroot方式(可选)

既然都看到这了,相比您一定是高端用户了,我就不详细介绍了。chroot方式更加灵活,也更“干净”。执行如下脚本即可,想了解含义的可以自行搜索,或者回帖讨论。
  1. rm /mnt/hqplayer/etc/resolv.conf
  2. cp --dereference /etc/resolv.conf /mnt/hqplayer/etc/

  3. # mount --bind /home/zhjie/classic /mnt/hqplayer/music

  4. mount --types proc /proc /mnt/hqplayer/proc
  5. mount --rbind /sys /mnt/hqplayer/sys
  6. mount --make-rslave /mnt/hqplayer/sys
  7. mount --rbind /dev /mnt/hqplayer/dev
  8. mount --make-rslave /mnt/hqplayer/dev
  9. mount --bind /run /mnt/hqplayer/run
  10. mount --make-slave /mnt/hqplayer/run

  11. chroot /mnt/hqplayer /bin/bash --login
  12. # chroot /mnt/hqplayer /bin/bash -c "hqplayerd > /tmp/nohup.out 2>&1 &"
复制代码


第三行注释的一句话,是允许hqplayer读取主机音乐。最后两行,分别是登录到hqos,和直接执行hqplayer,请高端读者按需修改。



中关村东路 来自 北京市 发表于 2022-11-6 17:31
Devastat0r 发表于 2022-11-6 17:27
针对本贴的玩法,麻烦楼主有空的时候弄个关于HQ OS优盘版更新后用新版文件覆盖旧版的教程,应该也就是几行 ...

把新版烧到u盘上,再执行一遍cp -av 即可。或者可以用rsync -av --delete /tmp/hqplayer/ /mnt/hqplayer

中关村东路 来自 北京市 发表于 2022-11-6 23:32
中关村东路 发表于 2022-11-6 16:10
写一个类似的东西,存成/etc/systemd/system/hqplayerd.service

ExecStart那写填sh /opt/hqplayerd. ...

让hqplayer随系统自动启动。
编写如下文件 nano /etc/systemd/system/hqplayerd.service
  1. [Unit]
  2. Description=HQPlayer Embedded daemon
  3. Requires=systemd-networkd.service

  4. [Service]
  5. Type=simple
  6. ExecStart=systemd-nspawn -b -D /mnt/hqplayer
  7. Nice=-10
  8. IOSchedulingClass=realtime
  9. LimitMEMLOCK=1G
  10. LimitNICE=-10
  11. LimitRTPRIO=98

  12. [Install]
  13. WantedBy=multi-user.target
复制代码


修改hqos中hqplayerd的依赖关系
nano /mnt/hqplayer/lib/systemd/system/hqplayerd.service

在Requires和After前面加上#号,
  1. [Unit]
  2. Description=HQPlayer Embedded daemon
  3. #Requires=systemd-networkd.service systemd-networkd-wait-online.service network-online.target sound.target systemd-udev-settle.service
  4. #After=systemd-networkd-wait-online.service network-online.target sound.target systemd-udev-settle.service local-fs.target remote-fs.target

  5. [Service]
  6. Type=simple
  7. ExecStart=/usr/bin/hqplayerd
  8. Restart=always
  9. RestartSec=2
  10. EnvironmentFile=-/etc/default/hqplayerd
  11. #User=hqplayer
  12. Nice=-10
  13. IOSchedulingClass=realtime
  14. LimitMEMLOCK=1G
  15. LimitNICE=-10
  16. LimitRTPRIO=98

  17. [Install]
  18. WantedBy=multi-user.target
复制代码


现在执行 systemctl enable --now hqplayerd 就可以自动启动了。

如果觉得hqos过于臃肿,还可以适当删除hqos里的服务。这些东西都放在 /mnt/hqplayer/etc/systemd/system/ 。我把除了hqplayerd.service之外的全都删掉了,可以正常支持roon
  1. find /mnt/hqplayer/etc/systemd/system
  2. /mnt/hqplayer/etc/systemd/system
  3. /mnt/hqplayer/etc/systemd/system/multi-user.target.wants
  4. /mnt/hqplayer/etc/systemd/system/multi-user.target.wants/hqplayerd.service
复制代码







中关村东路 来自 北京市 发表于 2024-4-22 00:29
ppaladin 发表于 2024-4-21 20:31
利用周末时间折腾了许久,终于搞定了,感谢大佬的回复和指点。

基本实现以前的想法,img写入U盘,插电 ...

您这够折腾的...别说出差,我年假都只用苹果蓝牙...总之恭喜
ppaladin 来自 山东省 发表于 2024-4-21 20:31
本帖最后由 ppaladin 于 2024-4-21 20:35 编辑
中关村东路 发表于 2024-4-17 15:01
windows做naa不需要再开桌面版hq了,这时候用的是嵌入式hq计算,桌面naa播放

利用周末时间折腾了许久,终于搞定了,感谢大佬的回复和指点。

基本实现以前的想法,img写入U盘,插电脑U盘启动后,播放U盘本地音乐。

遇到的几个问题:
1. win10下vm虚拟机里从U盘启动,可进入HQOS的web设置页面。
但是alsa下面无声卡选项,也就无法播放。这个应该是虚拟机的锅。
#解决办法:不用虚拟机,直接插电脑,U盘启动。

2. 直接从U盘物理启动HQOS,无法登录web设置页面。
(华为笔记本,没有网口,这个最头疼,这几天主要卡在这了)
#解决办法:usb连接手机,开启网络共享,从手机进入web设置页面。

3. OS的alsa声音输出格式最多48khz24bit。
#这个没办法了,应该是linux环境下笔记本的声卡不支持更高格式(win系统可以192-24)。
反倒是一台老掉牙的dell台式机,插U盘启动,可以输出192-24。

总之,之前的想法算是达成了,以后出差时多了一个听音乐的选择。




andrea74 来自 意大利 发表于 2024-4-17 23:12
订一下
中关村东路 来自 北京市 发表于 2024-4-17 15:01
ppaladin 发表于 2024-4-17 13:58
我的理解是,既然都做成了os了,就应该写入U盘,变成微型随身系统。走到哪,插电脑,就可以调用当前系统 ...

windows做naa不需要再开桌面版hq了,这时候用的是嵌入式hq计算,桌面naa播放
ppaladin 来自 山东省 发表于 2024-4-17 13:58
中关村东路 发表于 2024-4-17 12:45
桥核分离才是原设计的方案啊,本地播放就是workaround而已

我的理解是,既然都做成了os了,就应该写入U盘,变成微型随身系统。走到哪,插电脑,就可以调用当前系统硬件和资源,实现即使播放。
可能是我想偏了。。。



话说,方案2也不行。
主机(win10)装naa,打开hq_desktop并设置input为naa。
虚拟机里U盘启动,从主机进入hq的web设置页面后,networkaudio一项是空白不可选(跟之前的alsa一样)。
直接选中曲目,点播放,就卡死。

技术门槛太高,不折腾了,放弃~
中关村东路 来自 北京市 发表于 2024-4-17 12:45
ppaladin 发表于 2024-4-17 08:41
收到,我再试试,多谢指点!
这样一来,os版只能桥连,不能实现本地播放,总感觉 ...

桥核分离才是原设计的方案啊,本地播放就是workaround而已
ppaladin 来自 山东省 发表于 2024-4-17 08:41
中关村东路 发表于 2024-4-17 02:52
用方案2吧,虚拟机里启动hqplayer之后不用本机alsa,在你要播放音乐的那台机器上装个naa

收到,我再试试,多谢指点!
这样一来,os版只能桥连,不能实现本地播放,总感觉在功能上差那么点意思。。。
ppaladin 来自 山东省 发表于 2024-4-16 19:12
中关村东路 发表于 2022-11-5 15:53
3. 准备工作

3.1 获取HQOS镜像文件

尝试了2种方法,结果都遇到麻烦了,求大神指点!

尝试1.
下载HQ OS的img镜像,写入U盘。
电脑从U盘重启后,hq os系统里找不到网卡,无法用其他设备打开hq的web页面。
这个不识别网卡的问题,有啥解决办法吗?
(笔记本板载无线网卡,intel wireless AC9560)

尝试2.
windows10下通过vm建立一个虚拟机,虚拟机里直接从U盘启动,可以进入hq os系统,主机系统也可以打开hq web设置页面。
但是,设置里的alsa选项下没有声卡可选。
感觉两条路都行不通了。

求指点。。。
zheng_nick 来自 四川省成都市 发表于 2024-3-17 20:35
中关村东路 发表于 2024-3-17 17:03
这个还挺麻烦的,首先需要先把nvidia显卡传过去,之后要把hqos里的可执行文件/usr/sbin/hqplayerd改成deb ...

收到我试一试,谢谢啦!
中关村东路 来自 北京市 发表于 2024-3-17 17:03

这个还挺麻烦的,首先需要先把nvidia显卡传过去,之后要把hqos里的可执行文件/usr/sbin/hqplayerd改成deb文件里那个几百兆大小的。感兴趣的搜索关键字

Share proprietary Nvidia Drivers with chroot,或者lxc nvidia passthrough
zheng_nick 来自 四川省成都市 发表于 2024-3-17 15:55
万远 发表于 2022-11-8 10:21
在ubuntu server 20.04上安装好N卡驱动后再装hq OS,hqplayerd启动后不知能不能显卡加速?

不做处理不能呢
zheng_nick 来自 四川省成都市 发表于 2024-2-10 20:56
leonbernieni 发表于 2022-12-23 20:55
强烈建议感兴趣的同学直接从gentoo入手,或许更容易踩上楼主的节拍。
linux在若干年前能搞到modem拨号上网 ...

赞一个楼上
w2h 来自 云南省 发表于 2024-2-6 10:17
感谢分享
lmqquan 来自 广东省广州市 发表于 2023-11-23 22:46
中关村东路 发表于 2023-11-22 17:52
audirvana走upnp,roon在Library那页吧,有个增加hq的地方,填写ip即可。自己搜搜试试吧,不难

好的,找到了
中关村东路 来自 北京市 发表于 2023-11-22 17:52
lmqquan 发表于 2023-11-22 17:39
可以提供roon/audirvana 的设置方法吗?

audirvana走upnp,roon在Library那页吧,有个增加hq的地方,填写ip即可。自己搜搜试试吧,不难
lmqquan 来自 广东省广州市 发表于 2023-11-22 17:39
中关村东路 发表于 2023-11-18 16:53
应该和正常使用是一样的吧,我没用过hq这个功能,都是用roon/audirvana调用的

可以提供roon/audirvana 的设置方法吗?
中关村东路 来自 北京市 发表于 2023-11-18 16:53
lmqquan 发表于 2023-11-16 14:22
请教大神,在硬盘安装hqos能正常启动,如何设置音乐库?

应该和正常使用是一样的吧,我没用过hq这个功能,都是用roon/audirvana调用的
lmqquan 来自 广东省广州市 发表于 2023-11-16 14:22
请教大神,在硬盘安装hqos能正常启动,如何设置音乐库?

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

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

GMT+8, 2024-5-8 12:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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