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

RK3399开发板安装moOde、LMS、squeezelite、NAA和RoonBridge

[复制链接]
跳转到指定楼层
1
发表于 2024-4-1 21:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式 来自 广东省广州市
本帖最后由 tomosak 于 2024-4-1 21:46 编辑

友善之臂nanoPC T4安装moOde、LMS、squeezelite、NAA和RoonBridge
下载固件:rk3399-eflasher-multiple-os-20240201-25g.img
刷入TF卡,从TF卡启动,选择debian 12 bookworm安装

登陆,普通用户名和密码pi
注意:下面命令基本都需要在前面加上sudo

修改系统源,bookworm为列
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

修改armbian源,bookworm为列,如果没有新建文件nano /etc/apt/sources.list.d/armbian.list,原来没有这个文件,可能gpg文件也没有,需要下载armbian.gpg,放到/usr/share/keyring/
deb [signed-by=/usr/share/keyrings/armbian.gpg] https://mirrors.tuna.tsinghua.edu.cn/armbian bookworm main bookworm-utils bookworm-desktop

添加armbian源
wget https://apt.armbian.com/armbian.key -O key
gpg --dearmor < key | tee /usr/share/keyrings/armbian.gpg > /dev/null
chmod go+r /usr/share/keyrings/armbian.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/armbian.gpg] http://apt.armbian.com $(lsb_release -cs) main  $(lsb_release -cs)-utils  $(lsb_release -cs)-desktop" | tee /etc/apt/sources.list.d/armbian.list

添加moOde-player源
curl -1sLf \
  'https://dl.cloudsmith.io/public/moodeaudio/m8y/setup.deb.sh' \
  | -E bash

添加upmpdcli源
添加秘钥
cd /usr/share/keyrings
wget https://www.lesbonscomptes.com/pages/lesbonscomptes.gpg
添加源列表
cd /etc/apt/sources.list.d
wget https://www.lesbonscomptes.com/upmpdcli/pages/upmpdcli-rbookworm.list
apt update
apt upgrade

安装BT
如果没有安装armbian-config则安装
apt update
apt upgrade
apt install armbian-config
armbian-config
选择Network 选择BT install

安装squeezelite
apt update
apt upgrade
apt install squeezelite
遇到不能启动squeezelite的问题
编辑/etc/systemd/system/squeezelite.service
# /etc/systemd/system/squeezelite.service
[Unit]
Description=Squeezelite LMS player
After=network.target
[Service]
Type=forking
ExecStart=/etc/init.d/squeezelite start
ExecStop=/etc/init.d/squeezelite stop
PIDFile=/run/squeezelite.pid
[Install]
#WantedBy=multi-user.target
WantedBy=default.target

每次修改service文件,需要运行
systemctl daemon-reload
停止squeezelite自动启动
systemctl disable squeezelite

安装LMS
apt update
apt upgrade
apt install -y logitechmediaserver
或者
wget https://downloads.slimdevices.com/LogitechMediaServer_v8.5.0/logitechmediaserver_8.5.0_arm.deb
apt install ./logitechmediaserver_8.5.0_arm.deb

浏览器登陆IP:9000
设置,插件管理,输入地址,应用
http://39.106.196.235/extensions.xml
选择Material Skin、        DSDPlayer

停止LMS自动启动
systemctl disable logitechmediaserver

安装RoonBridge
wget https://download.roonlabs.net/builds/roonbridge-installer-linuxarmv8.sh
chmod +x roonbridge-installer-linuxarmv8.sh
./roonbridge-installer-linuxarmv8.sh

安装HQPlayer NAA
wget https://www.signalyst.eu/bins/naa/linux/bookworm/networkaudiod_5.0.0-59_arm64.deb
dpkg -i ./networkaudiod_5.0.0-59_arm64.deb

停止NAA自动启动
systemctl disable networkaudiod

安装supervisor
如果使用service_control.html和service_control.php控制音乐桥,可以不用安装,复制service_control.html和service_control.php到/var/www目录
apt install supervisor
cd /etc/supervisor
nano supervisor.conf
添加:
[inet_http_server]
port=0.0.0.0:8088
username=admin
password=12250909

cd /etc/supervisor/conf.d
nano hifi.conf
添加:
[group:HIFI]
programs=naa,squeezelite,LMS
stopasgroup=true

[program:naa]
command=/usr/sbin/networkaudiod
directory=/usr/sbin
user=root
autostart=false
autorestart=false
redirect_stderr=true
stdout_logfile=/opt/supervisorlog/naaout.log
stderr_logfile=/opt/supervisorlog/naaerr.log
loglvel=info

[program:squeezelite]
command=/usr/bin/squeezelite
directory=/usr/bin
user=root
autostart=false
autorestart=false
redirect_stderr=true
stdout_logfile=/opt/supervisorlog/squeezeliteout.log
stderr_logfile=/opt/supervisorlog/squeezeliteerr.log
loglvel=info

[programMS]
command=/usr/bin/perl /usr/sbin/squeezeboxserver
directory=/usr/bin
user=root
autostart=false
autorestart=false
redirect_stderr=true
stdout_logfile=/opt/supervisorlog/lmsout.log
stderr_logfile=/opt/supervisorlog/lmserr.log
loglvel=info

注意supervisorlog和文件*.log需要自己创建
浏览器登陆IP:8088
管理NAA,squeezelite,LMS启动停止

配置默认声卡

查看所有声卡
pi@NanoPC-T4:~$ cat /proc/asound/cards
0 [hdmisound      ]: simple-card - hdmi-sound
                      hdmi-sound
1 [realtekrt5651co]: simple-card - realtek,rt5651-codec
                      realtek,rt5651-codec
2 [x20            ]: USB-Audio - xCORE USB Audio 2.0
                      XMOS xCORE USB Audio 2.0 at usb-fe380000.usb-1, high speed
建立设置文件
nano /etc/asound.conf
输入以下内容
defaults.ctl.card 2
defaults.pcm.card 2
defaults.timer.card 2

到这里RK3399可以开始听音乐了。

安装moOde
第一步 安装必要包
apt install -y avahi-utils bluez bs2b-ladspa dos2unix exfat-fuse flac fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-gothic fonts-ipafont-mincho fonts-unfonts-core id3v2 inotify-tools libasound2-plugin-equal libconfuse-dev libdbus-glib-1-dev libdevmapper-event1.02.1 libmediainfo0v5 libmms0 libnss-winbind libzen0v5 mediainfo minidlna mpc nfs-kernel-server nginx nmap php-fpm php-sqlite3 php-yaml php8.2-gd  python3-musicpd python3-pip python3-setuptools samba shellinabox smbclient sox squashfs-tools telnet triggerhappy udevil winbind wsdd xfsprogs xinit xorg ffmpeg libtool-bin sqlite3 lame libasound2-dev cifs-utils bzip2 lbzip2 mpd

第二步 从此处下载所有moOde的deb安装包
https://cloudsmith.io/~moodeaudio/repos/m8y/packages/?q=architecture%3Aall
复制moOde所有的deb包到home目录下
mv moode-player_9.0.0-1moode1~pre1_all.deb ../
mv moode-stations-full_9.0.0.zip ../
dpkg -i *
apt install -f
再运行一次
dpkg -i *
apt install -f
不行再运行一次
dpkg -i *
apt install -f

apt autoremove
apt clean
pi@NanoPC-T4:~$ cat /dev/null >~/.bashrc
pi@NanoPC-T4:~$ history -cw

再次使用上次的固件,插入T4板的tf插槽,移除除电源外的所有设备,重启
进入友善之臂eflash启动模式,备份固件

dpkg -i --ignore-depends=rpi-update moode-player_9.0.0-1moode1~pre1_all.deb
apt install -f

apt install -y avahi-utils bs2b-ladspa dos2unix exfat-fuse flac fonts-unfonts-core id3v2 inotify-tools libasound2-plugin-equal libconfuse-dev libdbus-glib-1-dev libdevmapper-event1.02.1 libmediainfo0v5 libmms0 libtool-bin libzen0v5 mediainfo minidlna mpc mpd nfs-kernel-server nmap php-fpm php-sqlite3 php-yaml php8.2-gd pi-bluetooth python3-musicpd python3-pip samba shellinabox smbclient sox sqlite3 squashfs-tools sysstat telnet triggerhappy udevil xfsprogs xinit xorg

再次运行
dpkg -i --ignore-depends=rpi-update moode-player_9.0.0-1moode1~pre1_all.deb

重启

挂载网盘可以使用CloudDrive2
下载
https://github.com/cloud-fs/cloud-fs.github.io




service_control.php

  1. <?php
  2. $allowedActions = array('start_squeezelite', 'stop_squeezelite', 'start_lms', 'stop_lms', 'start_naa', 'stop_naa', 'start_roonbridge', 'stop_roonbridge', 'list_audio_devices', 'shutdown_moOde', 'reboot_moOde');
  3. if (isset($_POST['action']) && in_array($_POST['action'], $allowedActions)) {
  4.     $action = $_POST['action'];
  5.     switch ($action) {
  6.         case 'start_squeezelite':
  7.             shell_exec('sudo systemctl start squeezelite.service 2>&1');
  8.             $output = 'squeezelite服务已经启动. ';
  9.             break;
  10.         case 'stop_squeezelite':
  11.             shell_exec('sudo systemctl stop squeezelite.service 2>&1');
  12.             $output = 'squeezelite服务已经停止. ';
  13.             break;
  14.         case 'start_lms':
  15.             shell_exec('sudo systemctl start logitechmediaserver.service 2>&1');
  16.             $output = 'LMS服务已经启动. ';
  17.             break;
  18.         case 'stop_lms':
  19.             shell_exec('sudo systemctl stop logitechmediaserver.service 2>&1');
  20.             $output = 'LMS服务已经停止. ';
  21.             break;
  22.         case 'start_naa':
  23.             shell_exec('sudo systemctl start networkaudiod.service 2>&1');
  24.             $output = 'NAA服务已经启动. ';
  25.             break;
  26.         case 'stop_naa':
  27.             shell_exec('sudo systemctl stop networkaudiod.service 2>&1');
  28.             $output = 'NAA服务已经停止. ';
  29.             break;
  30.         case 'start_roonbridge':
  31.             shell_exec('sudo systemctl start roonbridge.service 2>&1');
  32.             $output = 'RoonBridge服务已经启动. ';
  33.             break;
  34.         case 'stop_roonbridge':
  35.             shell_exec('sudo systemctl stop roonbridge.service 2>&1');
  36.             $output = 'RoonBridge服务已经停止. ';
  37.             break;
  38.         case 'list_audio_devices':
  39.             $output = shell_exec('sudo aplay -l 2>&1');
  40.             break;
  41.         case 'shutdown_moOde':
  42.             shell_exec('sudo shutdown -h now');
  43.             $output = '系统正在关机...';
  44.             break;
  45.         case 'reboot_moOde':
  46.             shell_exec('sudo reboot');
  47.             $output = '系统正在重启...';
  48.             break;
  49.         default:
  50.             $output = '无效的操作请求。';
  51.     }
  52.     if (isset($output)) {
  53.         echo "<pre>" . htmlspecialchars($output) . "</pre>";
  54.     }
  55. } else {
  56.     echo "<p>无效的操作请求。</p>";
  57. }
复制代码
service_control.html

  1. <!DOCTYPE html>
  2. <html lang="zh-cmn-Hans">
  3.         <head>
  4.                 <meta charset="UTF-8">
  5.                 <title>音频设备控制面板</title>
  6.                 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no">
  7.                 <link rel="stylesheet" href="css/styles.min.css">
  8.                 <meta name="apple-mobile-web-app-capable" content="yes">
  9.                 <meta name="apple-mobile-web-app-status-bar-style" content="black">
  10.                 <link rel="apple-touch-icon" sizes="180x180" href="/v5-apple-touch-icon.png">
  11.                 <link rel="mask-icon" href="/v5-safari-pinned-tab.svg" color="#5bbad5">
  12.                 <link rel="icon" type="image/png" sizes="32x32" href="/v5-favicon-32x32.png">
  13.                 <link rel="icon" type="image/png" sizes="16x16" href="/v5-favicon-16x16.png">
  14.                 <meta name="theme-color" content="#202020">
  15.                 <meta name="msapplication-TileColor" content="#da532c">
  16.         </head>
  17.         <body>
  18.                 <div id="container">
  19.                         <h1>音频设备控制面板</h1>
  20.                         <form action="service_control.php" method="post">
  21.                                 <fieldset>
  22.                                         <legend>控制选项</legend>
  23.                                         <ul class="control-buttons">
  24.                                                 <li>
  25.                                                         <button type="submit" name="action" value="start_squeezelite">启动 Squeezelite</button>
  26.                                                 </li>
  27.                                                 <li>
  28.                                                         <button type="submit" name="action" value="stop_squeezelite">关闭 Squeezelite</button>
  29.                                                 </li>
  30.                                                 <li>
  31.                                                         <button type="submit" name="action" value="start_lms">启动 LMS</button>
  32.                                                 </li>
  33.                                                 <li>
  34.                                                         <button type="submit" name="action" value="stop_lms">关闭 LMS</button>
  35.                                                 </li>
  36.                                                 <li>
  37.                                                         <button type="submit" name="action" value="start_naa">启动 NAA</button>
  38.                                                 </li>
  39.                                                 <li>
  40.                                                         <button type="submit" name="action" value="stop_naa">关闭 NAA</button>
  41.                                                 </li>
  42.                                                 <li>
  43.                                                         <button type="submit" name="action" value="start_roonbridge">启动 RoonBridge</button>
  44.                                                 </li>
  45.                                                 <li>
  46.                                                         <button type="submit" name="action" value="stop_roonbridge">关闭 RoonBridge</button>
  47.                                                 </li>
  48.                                                 <li>
  49.                                                         <button type="submit" name="action" value="list_audio_devices">查看音频设备</button>
  50.                                                 </li>
  51.                                                 <li>
  52.                                                         <button type="submit" name="action" value="shutdown_moOde">关机</button>
  53.                                                 </li>
  54.                                                 <li>
  55.                                                         <button type="submit" name="action" value="reboot_moOde">重启</button>
  56.                                                 </li>
  57.                                                 <!-- 其他服务操作... -->
  58.                                         </ul>
  59.                                 </fieldset>
  60.                         </form>
  61.                         <div>
  62.                                 <br>
  63.                                 注意:<br>
  64.                                 1、moOde音乐播放系统默认自动开启;<br>
  65.                                 2、如果想要本机使用logitech media server播放音乐,需要停止moOde播放,并同时启动Squeezelite和LMS;<br>
  66.                                 3、logitech media server的Squeezelite和NAA、RoonBridge不能同时启动,每次只能启动其中一个音乐桥服务。
  67.                         </div>
  68.                 </div>
  69.         </body>
  70. </html>
复制代码
使用service_control.html和service_control.php控制音乐桥,复制service_control.html和service_control.php到/var/www目录




2
 楼主| 发表于 2024-4-1 22:05 | 只看该作者 来自 广东省广州市
本帖最后由 tomosak 于 2024-4-1 22:07 编辑

moOde_ARM安装moOde下载deb文件列表

  1. aloop-6.1.73_0.1-1moode1_arm64.deb
  2. alsa-cdsp_1.2.0-1moode1_arm64.deb
  3. alsacap_1.0.1-1moode1_arm64.deb
  4. ashuffle_3.14.1-1moode1_arm64.deb
  5. bluez-alsa-utils_4.1.0-2moode2_arm64.deb
  6. bluez-firmware_1.2-4_all.deb
  7. boss2-oled-p3_1.0.0-1moode1_all.deb
  8. camilladsp_2.0.1-1moode1_arm64.deb
  9. camillagui_2.0.0-1moode1_all.deb
  10. caps_0.9.26-1moode1_arm64.deb
  11. chromium-browser-l10n_95.0.4638.78-rpt6_all.deb
  12. chromium-browser_95.0.4638.78-rpt6_arm64.deb
  13. chromium-codecs-ffmpeg-extra_95.0.4638.78-rpt6_arm64.deb
  14. libasound2-plugin-bluez_4.1.0-2moode2_arm64.deb
  15. libnpupnp2-dev_5.0.1-1moode1_arm64.deb
  16. libnpupnp2_5.1.0-1moode1_arm64.deb
  17. librespot_0.4.2-1moode1_arm64.deb
  18. libupnpp7-dev_0.22.4-1moode1_arm64.deb
  19. libupnpp7_0.22.4-1moode1_arm64.deb
  20. moode-player_8.3.9-1moode1_all.deb
  21. moode-player_9.0.0-1moode1~pre1_all.deb
  22. moode-stations-full_9.0.0.zip
  23. mpd2cdspvolume_1.0.0-1moode1_all.deb
  24. mpd_0.23.14-1moode1_arm64.deb
  25. nqptp_1.2.4-1moode1_arm64.deb
  26. pcm1794a-6.1.73_0.1-1moode1_arm64.deb
  27. python3-camilladsp-plot_2.0.0-1moode1_all.deb
  28. python3-camilladsp_2.0.0-1moode1_all.deb
  29. python3-libupnpp_0.21.0-1moode1_arm64.deb
  30. python3-mpd2_3.0.5_all.deb
  31. rpi-source_0.1-1moode1_all.deb
  32. rtl88xxau-6.1.21_5.6.4.2-1moode1_arm64.deb
  33. runonce_0.1.0-1moode1_all.deb
  34. shairport-sync_4.3.1-1moode1_arm64.deb
  35. squeezelite_1.9.9-1449+git20230814.8581aba-1moode1_arm64.deb
  36. trx_0.6-1moode1_arm64.deb
  37. udisks-glue_1.3.5-1moode3_arm64.deb
  38. udisks_1.0.5-1moode1_arm64.deb
  39. upmpdcli-qobuz_1.7.7-1moode1_all.deb
  40. upmpdcli_1.7.7-1moode1_arm64.deb
复制代码
回复

使用道具 举报

3
发表于 2024-4-2 10:34 | 只看该作者 来自 北京市
本帖最后由 lalekuku 于 2024-4-2 10:38 编辑

一直都是这么用的
LMS和hqplayer装在一台arm上当核,squeezelite和NAA装在另一台arm上当桥,第三台arm做nas,构建全arm音频播放系统
只是安装能出声比较简单,做好系统优化才是出好声的关键
网页控制虽然方便,但不建议加进去,会占用系统资源,增加服务进程

手机上用daremote这个app就可以很方便的执行音频服务脚本切换,不需要网页控制,更简洁
回复

使用道具 举报

4
 楼主| 发表于 2024-4-2 10:36 | 只看该作者 来自 广东省广州市
lalekuku 发表于 2024-4-2 10:34
一直都是这么用的
LMS和hqplayer装在一台arm上当核,squeezelite和NAA装在另一台arm上当桥,第三台arm做na ...

做优化就不是简单的事了,从系统到软件都自己编译,坛子里有个高手
回复

使用道具 举报

5
发表于 2024-4-2 10:45 | 只看该作者 来自 北京市
tomosak 发表于 2024-4-2 10:36
做优化就不是简单的事了,从系统到软件都自己编译,坛子里有个高手

优化主要是使用调优过的实时内核,做好中断和进程的隔离,设定好相应的实时优先级,裁减设备驱动,使用内存系统
另外,网页控制虽然方便,但不建议加进去,会占用系统资源,增加服务进程
手机上用daremote这个app就可以很方便的执行音频服务切换脚本,不需要网页控制,更简洁

回复

使用道具 举报

6
发表于 2024-4-2 13:01 | 只看该作者 来自 四川省成都市
已经很厉害,有优化教程可以学习吗,先谢谢拉
回复

使用道具 举报

7
发表于 2024-4-2 13:34 | 只看该作者 来自 浙江省宁波市
厉害,学习中。。。。
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-6 13:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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