今年双十一最大战果,就是通过radxa的QQ群找了个热心大哥,60¥买了他-400¥的券,下单了ROCK 5b裸板,昨天到货后我就迫不及待地去单位对面的顺丰网点自提了。回家因为没有HDMI显示器(家里甚至没电视),就用SSH+VNC进行了初体验,后来为这个板子专门买了台4K显示器,谁是椟谁是珠我都快搞不清了……
烧录镜像 我选用了官方提供的debian 11,在release 里选了rock-5b-debian-bullseye-xfce4-arm64-20221111-1506-gpt.img.xz 镜像,按照教程 像树莓派一样用balenaEtcher烧录进TF卡中(使用TF卡是因为买不起emmc)。
后来摸索发现Armbian也挺好用,但是23版本 一线通有问题,暂时使用22版本 。如果把系统装在emmc上,就可以使用显示器反向充电一线通,据说tf卡速度不够pd协商过不去会不停重启。按照官方教程 将系统烧录到emmc中。
安装风扇自动控制 淘宝了个5v/5.5cm孔距/1.25接口的北桥风扇,一开始插上去运行风扇测试脚本sudo test_fan_run.sh
不转(手拨一下才转),万用表测FAN输出4.87V,将脚本里的PWM占空参数调整为9000/10000后风扇起码跑起来了,再减下去依然能跑。网上有大佬写了自动控制风扇的程序 :
1 2 3 4 5 6 7 8 9 sudo apt install lm-sensors sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlan0 proto static wget https://github.com/pymumu/fan-control-rock5b/releases/download/1.1.0/fan-control-rock5b.1.1.0.arm64.deb sudo ip route delete default via 192.168.1.150 dev wlan0 proto static sudo apt install ./fan-control-rock5b.1.1.0.arm64.deb sudo systemctl enable fan-control sudo systemctl start fan-control sudo systemctl status fan-control
正确设置WiFi和蓝牙 根据官方指南 关于蓝牙的描述,如果使用RTL8852BE的蓝牙,需要修改黑名单设置才能让蓝牙正常工作:
1 2 3 4 5 6 sudo vim /etc/modprobe.d/blacklist.conf blacklist pgdrv blacklist btusb blacklist btrtl blacklist btbcm blacklist btintel
在Armbian中,RTL8852BE网卡总会被认成两块MAC不同适配器,而且在启动时dmesg
显示其中一块网卡会被重命名为wlP2p33s0
,另一块可能叫做wlan0
也可能叫做wlan1
,这导致wlP2p33s0
的MAC地址可能是14:xx:xx:xx:xx:xx
也可能是16:xx:xx:xx:xx:xx
,自动连接WiFi时不确定会先由哪个网卡连上,在IP-MAC绑定时就无法确定下一次连接上的IP是多少。临时的解决方法是禁止系统重命名设备 :
1 sudo ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
重启后wlan0
将会确定为14:xx:xx:xx:xx:xx
,wlan1
将会确定为16:xx:xx:xx:xx:xx
。网上有一些猜测 认为这种现象可能是双模WiFi网卡引起的。使用iw dev
确实能看到是同一块物理设备下产生的两个适配器,iw phy phy0 info
虽然能看到设备的详细信息,但是完全看不懂……
更新设备并获取GPU支持 按照Armbian官方说明 添加大佬的源,以更新GPU驱动
如果在/lib/firmware/
下没有mali_csffw.bin
,就去下载一个sudo curl -o /lib/firmware/mali_csffw.bin https://github.com/JeffyCN/rockchip_mirrors/blob/libmali/firmware/g610/mali_csffw.bin
。
镜像中如果有不需要的软件,如libreoffice,可以先卸掉在配置系统,以避免不必要的升级。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlan0 proto static sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia sudo ip route delete default via 192.168.1.150 dev wlan0 proto static sudo apt remove --purge libreoffice\* thunderbird\* codium pidgin sudo apt remove --purge thunderbird\* sudo apt remove --purge codium sudo apt remove --purge pidgin sudo apt-get clean sudo apt-get autoremove sudo apt update sudo apt list --upgradable sudo apt install rockchip-multimedia-config sudo apt install kodi sudo mv /usr/share/xsessions/kodi.desktop /usr/share/wayland-sessions/kodi-wayland.desktop
Armbian进系统选用户和桌面环境的界面叫lightdm-slick-greeter
,桌面环境列表来自/usr/share/xsessions/*.desktop
和/usr/share/wayland-session/*.desktop
,如果列表里面有不需要的项目可以将*.desktop
改为*.desktop.bak
之类的名字。
1 2 3 4 5 6 7 sudo mv /usr/share/xsessions/gnome-xorg.desktop /usr/share/xsessions/gnome-xorg.desktop.bak sudo mv /usr/share/xsessions/gnome.desktop /usr/share/xsessions/gnome.desktop.bak sudo mv /usr/share/xsessions/ubuntu-xorg.desktop /usr/share/xsessions/ubuntu-xorg.desktop.bak sudo mv /usr/share/xsessions/ubuntu.desktop /usr/share/xsessions/ubuntu.desktop.bak sudo mv /usr/share/wayland-sessions/gnome.desktop /usr/share/wayland-sessions/gnome.desktop.bak sudo mv /usr/share/wayland-sessions/ubuntu.desktop /usr/share/wayland-sessions/ubuntu.desktop.bak
可以使用lightdm --show-config
查看lightdm各项配置来源,一些配置项可以参考LightDM - ArchWiki 、LightDM - UbuntuWiki 、Display manager - ArchWiki 。其中,默认桌面环境可以在/etc/lightdm/lightdm.conf.d/11-armbian.conf
中添加user-session=ubuntu-wayland
。此外,可以用lightdm-settings
以GUI的方式改登录时候的背景之类的东西。
注意,更新Armbian23.02后,PD一线通会无限重启,官方建议诱骗。之后重新下载了旧版 Armbian_22.1.2,然后单独升级armbian-firmware
,并安装大佬ppa中的所有包,在更新gnome相关的包,断电重启进wayland恢复正常。
1 2 3 4 5 sudo apt install armbian-firmware sudo apt install libgl4es libdri2to3 libmali-g610-x11 malirun mali-g610-firmware libd3dadapter9-mesa libegl-mesa0 libegl1-mesa libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles2-mesa libglx-mesa0 libosmesa6 libwayland-egl1-mesa mesa-opencl-icd mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers sudo apt install gnome-control-center-data gnome-control-center gnome-remote-desktop language-selector-gnome
其他的参考:
基础设置 手册 上说SSH默认用户名密码是rock/rock
,就直接进去了。进去以后执行命令是不是报语言环境的相关警告,就安装一下语言包,这个镜像默认没有装locales
,得自己手动安装。
双十一买到手时,Armbian只有民间支持没有官方支持,Radxa官方只有debian和ubuntu,经过我一个多月的把玩,还是觉得Armbian好用。另外,十二月Armbian也官方也有了支持,因此建议直接用Armbian。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 sudo swapoff -a sudo sysctl vm.swappiness=0 sudo vim /etc/sysctl.conf vm.swappiness=0 ip route list default via 192.168.1.1 dev enP4p65s0 proto dhcp metric 100 192.168.1.0/24 dev enP4p65s0 proto kernel scope link src 192.168.1.120 metric 100 sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev enP4p65s0 proto static sudo ip route delete default via 192.168.1.150 dev enP4p65s0 proto static ip route list default via 192.168.1.1 dev wlP2p33s0 proto dhcp metric 100 192.168.1.0/24 dev wlP2p33s0 proto kernel scope link src 192.168.1.120 metric 100 sudo ip route add 0.0.0.0/0 via 192.168.1.150 dev wlP2p33s0 proto static sudo ip route delete default via 192.168.1.150 dev wlP2p33s0 proto static sudo apt update sudo apt install -y zsh git vim tmux ufw neofetch aria2 lm-sensors glances exa sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy sudo ufw status sudo ufw allow 22/tcp comment ssh sudo ufw allow 5900/tcp comment vnc sudo ufw allow 2017/tcp comment v2raya sudo ufw allow 6800/tcp comment aria2 sudo ufw enable chsh -s $(which zsh) sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh) " ZSH="$HOME /.oh-my-zsh" sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh) " cd ~git clone https://github.com/gpakosz/.tmux.git ln -s -f .tmux/.tmux.conf cp .tmux/.tmux.conf.local . ssh-keygen sudo apt install locales sudo dpkg-reconfigure locales sudo timedatectl set-timezone Asia/Shanghai
没想到的是,切换oh-my-zsh的theme(可能是切换光标引起的,我切到jonathan就直接chromium segmentation fault),会导致chrome崩溃实属想不到,详见这篇文章 ……
装了neofetch
看一下Debian的系统信息,起码硬件很强:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 _,met$$$$$gg. rock@rock-5b ,g$$$$$$$$$$$$$$$P. ------------ ,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) aarch64 ,$$P' `$$$. Host: Radxa ROCK 5B ',$$P ,ggs. `$$b: Kernel: 5.10.66-27-rockchip-gea60d388902d `d$$' ,$P"' . $$$ Uptime: 27 mins $$P d$' , $$P Packages: 1141 (dpkg) $$: $$. - ,d$$' Shell: zsh 5.8 $$; Y$b._ _,d$P' Terminal: /dev/pts/0 Y$$. `.`"Y$$$$P"' CPU: (8) @ 1.800GHz `$$b "-.__ Memory: 365MiB / 15722MiB `Y$$ `Y$$. `$$b. `Y$$b. `"Y$b._ `"""
或是Armbian的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 pi@rock-5b ---------- █ █ █ █ █ █ █ █ █ █ █ OS: Armbian (22.11.2) aarch64 ███████████████████████ Host: Radxa ROCK 5B ▄▄██ ██▄▄ Kernel: 5.10.110-rockchip-rk3588 ▄▄██ ███████████ ██▄▄ Uptime: 30 mins ▄▄██ ██ ██ ██▄▄ Packages: 1551 (dpkg) ▄▄██ ██ ██ ██▄▄ Shell: zsh 5.8.1 ▄▄██ ██ ██ ██▄▄ Resolution: 3840x2160 ▄▄██ █████████████ ██▄▄ Terminal: /dev/pts/1 ▄▄██ ██ ██ ██▄▄ CPU: (8) @ 1.800GHz ▄▄██ ██ ██ ██▄▄ Memory: 830MiB / 15720MiB ▄▄██ ██ ██ ██▄▄ ▄▄██ ██▄▄ ███████████████████████ █ █ █ █ █ █ █ █ █ █ █
安装科学冲浪 安装核心:
1 2 3 4 5 6 7 8 sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) " @ install sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) " @ install-geodata sudo bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh) " @ remove sudo systemctl status xray.service
安装UI,直接在release 中挑了一个arm64的包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 wget https://github.com/v2rayA/v2rayA/releases/download/v1.5.9.1698.1/installer_debian_arm64_1.5.9.1698.1.deb sudo apt install ./installer_debian_arm64_1.5.9.1698.1.deb sudo systemctl enable v2raya.service sudo systemctl start v2raya.service sudo systemctl status v2raya.service sudo ufw allow 2017/tcp sudo update-alternatives --set iptables /usr/sbin/iptables-nft sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft sudo update-alternatives --set arptables /usr/sbin/arptables-nft sudo update-alternatives --set ebtables /usr/sbin/ebtables-nft sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy sudo update-alternatives --set arptables /usr/sbin/arptables-legacy sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy
这是个WebUI,访问192.168.1.120:2017,官方推荐配置如下:
配置
选项
透明代理/系统代理
启用: 大陆白名单模式
透明代理/系统代理实现方式
redirect
规则端口的分流模式
大陆白名单模式
防止DNS污染
仅防止DNS劫持(快速)
特殊模式
supervisor
TCPFastOpen
保持系统默认
多路复用
关闭
自动更新订阅
关闭
解析订阅链接/更新时优先使用
跟随透明代理/系统代理
配置aria2c服务 http下载vscode之类大文件之前,最好把aria2配好,然后使用如AriaNg All-In-One版的WebUI控制。
如果想要将aria2c配置为系统服务随机启动,就不能再想以前部署服务器一样在$HOME
目录下新建.conf
和.session
文件来保存配置和会话信息了,因为Linux禁止系统服务从用户目录运行或访问用户目录 。因此,不论二进制文件还是配置文件,或是启动时需要访问的会话文件都得放在别的地方。比如可以将配置文件放在/etc/aria2c.conf
中,将其他文件放在/var/aria2c
目录下。
这里我使用的用户/组为pi/pi
,若使用www-data/www-data
下下来的文件用起来可能不方便。
1 2 3 4 5 6 7 8 9 10 11 wget https://github.com/mayswind/AriaNg/releases/download/1.3.2/AriaNg-1.3.2-AllInOne.zip unzip ./AriaNg-1.3.2-AllInOne.zip sudo ufw allow 6800/tcp sudo mkdir -p /var/aria2c/Downloads sudo chmod 777 /var/aria2c /var/aria2c/Downloads sudo vim /etc/aria2.conf
配置如下,注意修改<your-rpc-secret>
的远程密码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 dir =/var/aria2c/Downloadscontinue =true max-connection-per-server =16 min-split-size =4 Msplit =16 max-overall-download-limit =3000000 max-overall-upload-limit =50000 disable-ipv6 =true input-file =/var/aria2c/aria2c.sessionsave-session =/var/aria2c/aria2c.sessionsave-session-interval =60 enable-rpc =true rpc-allow-origin-all =true rpc-listen-all =true rpc-listen-port =6800 rpc-secret =<your-rpc-secret>follow-torrent =true listen-port =51414 enable-dht =true dht-listen-port =6881 -6999 bt-enable-lpd =true enable-peer-exchange =true bt-request-peer-speed-limit =3 Mpeer-id-prefix =-TR2770-user-agent =Transmission/2.77 peer-agent =Transmission/2.77 seed-ratio =1.0 seed-time =0 bt-seed-unverified =true bt-save-metadata =false dht-file-path =/var/aria2c/dht.datbt-remove-unselected-file =true
添加启动项:
1 sudo vim /etc/systemd/system/aria2c.service
修改配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [Unit] Description =Aria2c download managerRequires =network.targetAfter =dhcpcd.service[Service] Type =forkingUser =piGroup =piExecStartPre =/usr/bin/env touch /var/aria2c/aria2c.sessionWorkingDirectory =/var/aria2c/ExecStart =/usr/bin/aria2c --conf-path=/etc/aria2.conf -DTimeoutStopSec =20 Restart =on -failure[Install] WantedBy =multi-user.target
测试启动:
1 2 3 sudo systemctl enable aria2c.service sudo systemctl start aria2c.service sudo systemctl status aria2c.service
安装vscode 添加微软源安装:
1 2 3 4 5 6 7 8 9 sudo apt-get install wget gpg wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg sudo sh -c 'echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list' rm -f packages.microsoft.gpg sudo apt install apt-transport-https sudo apt update sudo apt install code
或是下载deb安装:
下载微软官方 的arm64 deb 安装即可。
1 2 wget https://az764295.vo.msecnd.net/stable/6261075646f055b99068d3688932416f2346dd3b/code_1.73.1-1667966450_arm64.deb sudo apt install ./code_1.73.1-1667966450_arm64.deb
安装wps-office 在wps主页 下载即可。
1 2 wget https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/11664/wps-office_11.1.0.11664_arm64.deb sudo apt install ./wps-office_11.1.0.11664_arm64.deb
Armbian安装rime输入法 这篇文章 中fcitx5+rime的方法我没安装成功,就转向这个答案 ,使用ibus+rime的组合。
1 sudo apt install ibus ibus-rime
在区域与语言
->管理已安装的语言
->键盘输入法系统
->选择IBus
。此时在keyboard
->input source
中能看到汉语
->中文(Rime)
(没有重启即可),选上即可。重启后,右上角出现ibus的选择框,选中文(Rime)
后报错,查看日志:
1 2 3 4 5 6 7 8 9 cat /tmp/rime.fcitx-rime.ERROR E0116 16:40:14.597605 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin E0116 16:40:14.598170 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin_simp E0116 16:40:14.598309 4678 deployment_tasks.cc:212] missing input schema: luna_pinyin_fluency E0116 16:40:14.598423 4678 deployment_tasks.cc:212] missing input schema: bopomofo E0116 16:40:14.598546 4678 deployment_tasks.cc:212] missing input schema: bopomofo_tw E0116 16:40:14.598660 4678 deployment_tasks.cc:212] missing input schema: cangjie5 E0116 16:40:14.598773 4678 deployment_tasks.cc:212] missing input schema: stroke E0116 16:40:14.598884 4678 deployment_tasks.cc:212] missing input schema: terra_pinyin
用apt
搜索rime
发现需要继续安装data包(不必装全,最关键的应该是luna-pinyin):
1 sudo apt install rime-data-luna-pinyin rime-data-pinyin-simp rime-data-bopomofo rime-data-cangjie5 rime-data-stroke rime-data-terra-pinyin
随便找个能输入的地方,此时左上角已经可以切换到Rime输入法了,随意输入后按F4
调出菜单界面选择朙月拼音 简化字
即可。
Armbian安装谷歌输入法 上安装中文输入法,我选了fcitx,不过中间需要很多玄学操作(UI上的操作就是“支持的语言”、“语言/区域”这种地方把中文选上,把默认输入法选成fcitx
),关键是用fcitx-configtool
查看报错,哪里飘红搜哪里。通常需要的操作是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sudo apt install fcitx fcitx-pinyin fcitx-googlepinyin fcitx-config-gtk fcitx-frontend-all fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-libs-dev fcitx-ui-classic fcitx-ui-qimpanel fcitx-ui-light fcitx-table export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxXMODIFIERS=@im=fcitx cp /usr/share/applications/fcitx.desktop ~/.config/autostart/fcitx.desktop fcitx-configtool im-config fcitx-diagnose sudo ln -s /usr/lib/aarch64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/bin/gtk-query-immodules-3.0 sudo ln -s /usr/lib/aarch64-linux-gnu/libgtk2.0-0/gtk-query-immodules-2.0 /usr/bin/gtk-query-immodules-2.0
安装chromium(有些民间Armbian镜像没有浏览器) 注:chromium升级后不需要再进行下面的操作了,直接apt install chromium-browser
即可。
1 sudo apt install chromium-browser
如果chromium慢,可能是登录的时候没用wayland(我习惯用ubuntu-wayland,速度上gnome-wayland也一样)。
可以换源 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sudo apt remove --purge chromium-browser chromium-codecs-ffmpeg-extra sudo apt install chromium-browser=$(apt-cache show chromium-browser|grep Version|grep rkmpp|cut -d " " -f2) chromium-codecs-ffmpeg-extra=$(apt-cache show chromium-browser|grep Version|grep rkmpp|cut -d " " -f2) libv4l-rkmpp v4l-utils sudo ln -s /lib /usr/lib64 cd /usr/lib64/ && sudo ln -s aarch64-linux-gnu/libv4l2.so.0.0.0 libv4l2.sosudo vim /etc/rc.local: echo dec > /dev/video-dec0chown root:video /dev/video-dec0 chmod 0660 /dev/video-dec0 echo enc > /dev/video-enc0chown root:video /dev/video-enc0 chmod 0660 /dev/video-enc0 sudo vim /etc/chromium-browser/default CHROMIUM_FLAGS="--use-gl=egl" sudo apt install gstreamer1.0-rockchip1 gstreamer1.0-alsa gstreamer1.0-pipewire gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base gstreamer1.0-x libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 clapper ffmpeg kodi moonlight-embedded obs-gstreamer obs-studio
安装syncthing 尝试部署一个syncthing服务器,在4x的服务器上安装:
1 2 curl -sS https://webinstall.dev/syncthing | bash source ~/.config/envman/PATH.env
在公网IP上开GUI配置界面,并开启防火墙:
1 2 3 syncthing --gui-address=0.0.0.0:8384 sudo firewall-cmd --zone=public --permanent --add-port=8384/tcp sudo firewall-cmd --zone=public --permanent --add-port=22000/tcp
在想用的机子上:
1 2 3 4 5 sudo apt install syncthing sudo systemctl enable syncthing-resume.service systemctl --user enable syncthing.service systemctl --user start syncthing.service systemctl --user status syncthing.service
民间旧版Armbian遗留操作 他们官网上说对debian做了优化,比如尽量使用内存,减少落盘读写什么的。Radax的群里有大佬做了action日更镜像 ,可以试一下。另外,Armbian官方也更新了适用于Rock5B的镜像 。
如果刷了armbian接HDMI时ctrl
+alt
+F7
只有光标,回ctrl
+alt
+F1
看dmesg
八成是显卡驱动问题:
1 2 3 4 5 6 7 8 9 10 11 12 iwlist scanning nmcli d wifi connect "<your-ssid>" password <your-password> wget https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin sudo mv mali_csffw.bin /lib/firmware/ sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa sudo apt update sudo apt upgrade
Armbian安装docker 按照这篇文章 一次安装完成:
更新,安装依赖:
1 2 3 4 sudo apt update sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
使用Ubuntu构建的Armbian添加如下gpg秘钥:
1 2 3 4 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
使用Debian构建的Armbian添加如下gpg秘钥:
1 2 3 4 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
安装docker:
1 2 3 4 5 6 7 8 9 10 11 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker sudo groupadd docker sudo usermod -aG docker $USER
使用hello-world镜像测试安装结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 7050e35b49f5: Pull complete Digest: sha256:faa03e786c97f07ef34423fccceeec2398ec8a5759259f94d99078f264e9d7af Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm64v8) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
挂载smb共享 直接安装rock5b上的vlc和vlc-plugin-samba后,vlc仍然无法打开smb共享中的文件,若使用mpv时会报错说”ffmpeg protocol not found. make sure ffmpeg/libav is compiled with networking support … smb”,可能是编译的时候没有带smb模块吧,懒得研究这个了,干脆将smb共享挂载为本地文件。
参考Mount password protected network folders :
1 2 3 4 5 6 7 8 9 10 sudo apt install cifs-utils sudo mkdir /media/exos_1t vim ~/.smbcredentials username=username password=password chmod 600 ~/.smbcredentials //servername/EXOS_1T /media/exos_1t cifs credentials=/home/pi/.smbcredentials,iocharset=utf8 0 0
尝试玩游戏 B站上偶然间看到一个大佬的视频 ,大佬即是UP又是malior 的作者,运行这个库需要先装docker再部署:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 wget -O - https://github.com/ChisBread/malior/raw/main/install.sh > /tmp/malior-install.sh && bash /tmp/malior-install.sh && rm /tmp/malior-install.sh malior-sudo 'echo $USER' malior install wine malior winetricks -q fakechinese wenquanyi malior wine "~/.local/malior/games/CandC_RA2/CandC_RA2YR/YURI.exe" malior wine "~/.local/malior/games/Warcraft3_1.24E/War3.exe -opengl -windows" malior wine "~/.local/malior/games/Warcraft3_1.24E/War3.exe -opengl -classic"
参考:
安装node node对arm64的支持貌似最高到14,更高的我没测试。
1 2 3 4 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash nvm install 14
安装Anaconda anaconda也支持arm64,虽然Python不随最新的,但是包多省心啊。去anaconda 或者miniconda 下载一个arm64的.sh
安装就好了。
备份tf卡 装了这么多东西,有必要备份一下系统,我这里备在samba的一个盘上了,5.7G备了一个小时(macOS上64k
的k
要小写,否则报错):
1 sudo dd if =/dev/disk2 conv=sync,noerror bs=64k status=progress | gzip -c > /Volumes/EXOS_1T/backup_image20221129.img.gz
恢复:
1 gunzip -c /Volumes/EXOS_1T/backup_image20221129.img.gz | dd of=/dev/disk2 bs=64k status=progress
maskrom模式写入emmc 买个民间大神的emmc模块 比官方便宜很多。
1 2 3 4 5 6 7 8 9 10 11 sudo port install automake autoconf libusb git clone https://github.com/radxa/rkdeveloptool.git cd rkdeveloptoolautoreconf -i ./configure make sudo cp rkdeveloptool /opt/homebrew/bin/ rkdeveloptool -v rkdeveloptool ver 1.32
烧录镜像,按住maskrom后type-c口接电脑,使用lsusb
验证USB设备显示Bus 020 Device 031: ID 2207:350b Fuzhou Rockchip Electronics Company
。运行rkdeveloptool
:
1 2 3 4 5 6 7 8 9 sudo rkdeveloptool ld DevNo=1 Vid=0x2207,Pid=0x350b,LocationID=1402 Maskrom wget https://dl.radxa.com/rock5/sw/images/loader/rock-5b/rk3588_spl_loader_v1.08.111.bin sudo rkdeveloptool db ./rk3588_spl_loader_v1.08.111.bin Downloading bootloader succeeded. sudo rkdeveloptool wl 0 Armbian_22.11.2_Rock-5b_jammy_legacy_5.10.110_gnome_desktop.img
GPIO的PWM 参考这篇文章 ,用大佬的Blinka ,先看香橙派的手册 作参考:
1 2 3 4 5 6 7 8 sudo apt install -y python3 python3-pip sudo apt install libgpiod2 python3-libgpiod pip3 install gpiod pip3 install --upgrade setuptools pip3 freeze - local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U sudo apt install -y python3-smbus2 python3-dev i2c-tools sudo pip3 install Adafruit-Blinka
安了一大堆东西,在5b的vscode上按手册 写代码测试一下,GPIO的pin定义在rock5.py 中:
1 2 3 import boardimport pwmiopwm = pwmio.PWMOut(board.PWM14)
在vscode的launch.json
中要加上"sudo": true
和"justMyCode": false
两个选项,即“以管理员身份调试运行”和“调试库代码”,单步调试adafruit_blinka/microcontroller/rockchip/PWMOut.py
中的PWMOut
类时发现这段代码需要访问/sys/class/pwm/pwmchip0/pwm14
这个文件,但是我只有/sys/class/pwm/pwmchip0/pwm0
,而且感觉我的这个文件是风扇在用。
问了一下群里大神,可能跟设备树有关,有人说要改dts编译dtb后替换现有文件,有人说改overlay可能也行,搜了半天,找到这篇文章 。改overlay即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 exa -alT /boot/dtb/rockchip/overlay/ .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm2-m1.dtbo .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm3-m1.dtbo .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm5-m2.dtbo .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm6-m2.dtbo .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm7-m3.dtbo .rwxr-xr-x 309 root 8 12月 2022 ├── rk3588-pwm8-m0.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm12-m0.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm13-m0.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm13-m2.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm14-m0.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm14-m1.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m0.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m1.dtbo .rwxr-xr-x 311 root 8 12月 2022 ├── rk3588-pwm15-m3.dtbo sudo vim /boot/armbianEnv.txt overlay_prefix=rk3588 overlays=pwm2-m1 pwm6-m2 pwm7-m3
重启后发现/sys/class/pwm/
下出现了另外的pwmchip1
、pwmchip2
、pwmchip3
,此时用exa
查看这三个新项目比原来的pwmchip0
少一些子目录,可能是没启用导致的,按照radax给的风扇的例子 启用一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ls /sys/devices/platform/ | grep pwm fd8b0010.pwm fd8b0020.pwm febd0020.pwm febd0030.pwm exa -alt /sys/class/pwm/pwmchip0/ drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip0 lrwxrwxrwx 0 root 14 2月 22:59 ├── device -> ../../../fd8b0010.pwm exa -alt /sys/class/pwm/pwmchip1/ drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip1 lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../fd8b0020.pwm exa -alt /sys/class/pwm/pwmchip2/ drwxr-xr-x - root 14 2月 22:57 /sys/class/pwm/pwmchip2 lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../febd0020.pwm exa -alt /sys/class/pwm/pwmchip3/ drwxr-xr-x - root 14 2月 23:08 /sys/class/pwm/pwmchip3 lrwxrwxrwx 0 root 14 2月 22:58 ├── device -> ../../../febd0030.pwm echo 0 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/export echo 10000 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/period echo 3000 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/duty_cycle echo normal > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/polarity echo 1 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip3/pwm0/enable echo 0 > /sys/devices/platform/febd0030.pwm/pwm/pwmchip*/pwm0/enable
Armbian上的这个pwmchip*
应该是按顺序分配的,不是固定的,所以写成星号比较保险,用前面的fexxxxxx
确定针脚就好了。
USB声卡 群里大佬都说5b这个把3.5mm模拟音频口放在DP电源旁边的操作很魔幻,刚好我有块MOTU M2的外置声卡,走USB让5b只输出数字信号就好了。而且如果是一线通的话声卡直接插显示器通过显示器的USB Hub送到type-c再到5b,也就是5b上始终只有一根type-c线,负责供电、显示以及声卡。
这时候问题就出现了,首先M2官方不支持Linux,然后在Armbian下5b的USB口直接驱动不起来声卡,必须接显示器USB Hub才能有足够的供电,一线通到5b时也能认出来这块声卡,但是播放音频的时候基本上每16秒钟有2-4秒的噪音,这种好了但没完全好的状态非常蛋疼,因为不懂dts也不懂内核,就懒得动手搞底层的东西,只是调了调pulseaudio
和alsa
的参数,毫无作用。
想到手里还有一块再吃灰的树莓派2b,就想着如果是Armbian的问题,树莓派作为SBC里被支持的最好的设备,声卡什么的应该没问题。一开始拿出RPi-2b送电俩指示灯常亮,插拔SD卡也没反应,很诡异。我换了几个电源都不行,万用表瞎戳也没搞清楚啥情况,都送上咸鱼准备告别了,搜了一下有老外说灯常亮的时候换根线试试,竟然被他说中了……
然后就是在RPi-2b上刷了个Raspberry Pi OS Lite (32-bit),用当年RPi-2b配的USB 2.4G WiFi连上网,常规update
和upgrade
后,USB直接插声卡,亮了,说明起码供电没问题。装上pulseaudio
,用aplay test.wav
放歌试了一下,什么都没设它自动就送到USB声卡上了,没有噪音,很好。此时只需要把RPi-2b配置成PulseAudio Server,把5b配置成PulseAudio Client就好了。按照这个教程 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 sudo apt install pulseaudio-zeroconf sudo systemctl enable avahi-daemon.service sudo systemctl start avahi-daemon.service sudo vim /etc/pulse/default.pa load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 auth-anonymous=1 load-module module-zeroconf-publish pulseaudio -k pulseaudio --start pacmd list-modules | grep native-protocol-tcp pacmd list-modules | grep zeroconf-publish sudo vim /etc/pulse/default.pa load-module module-native-protocol-tcp load-module module-zeroconf-discover pulseaudio -k pulseaudio --start pacmd list-modules | grep native-protocol-tcp pacmd list-modules | grep zeroconf-discover
此时在作为客户端的5b上,用pavucontrol
查看输出设备,就已经出现多个RPi-2b上的虚拟输出设备了(多个可能是即有IPv4又有IPv6),选M2即可。测试播放音频,好了但没完全好,明显会有丢帧。RPi-2b(2.4G WiFi)与5b(5G Wifi)互联的延迟挺十几毫秒,有时候还跳上百,可能是因为小区的问题,我家的2.4G信号挺糟糕的。此时只能掏出网线,用RPi-2b跟5b直插,配上另一个段的IP(nmcli
配上ipv4后记得改manual)再把RPi-2b的WiFi关了(nmcli
里device disconnect或者connection down),重启PulseAudio即可,重新连上后基本解决了丢帧问题,现在听起跟本地设备一样,非常丝滑。
1 2 nmcli connection modify Wired\ connection\ 1 ipv4.addresses 192.168.100.100/24 nmcli connection modify Wired\ connection\ 1 ipv4.method manual
算是半完美解决声卡问题,小团圆结局也是happy ending。
安装硬盘休眠 hd-idle 项目可以完成这个任务:
1 2 3 git clone https://github.com/adelolmo/hd-idle cd hd-idlemake
直接运行hd-idle -i 300 -l /mnt/UD_64G/hd-idle.log
,即为所有硬盘设置300秒空闲停转时间,并指定日志文件。
我的rock5b直接装不上release的deb,自己编译也不行。不折腾了
安装搜狗输入法(armbian安装可能会有问题) apt中貌似没有,得从搜狗官网 下载arm64的包
1 2 3 4 sudo apt install fcitx5 sudo apt install ./sougoxxx.deb
然后再系统dock里找到“搜索”,搜“fcitx”启动,搜狗就出现了。
安装VNC(debian可能没有需要安装) 如此豪华的硬件,必须得体验一下图形界面!随便搜个教程 安装VNC服务端:
1 2 3 4 5 6 7 8 9 10 11 apt list --installed sudo apt install tightvncserver sudo apt install dbus-x11 vncserver
使用vncserver
执行首次启动,设置VNC访问密码(6-8位)并让VNC服务端生成配置文件。(我第一次不知道为什么密码没有设置成功,连接失败时日志指示~/.vnc/passwd
文件没生成,运行vncpasswd
再来一次就可以了)。
接下来自定义VNC服务端配置文件。VNC默认启动于5901
端口,默认由:1
session占用,先停止默认的实例,再修改配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 sudo ufw allow 5901/tcp vncserver -kill :1 mv ~/.vnc/xstartup ~/.vnc/xstartup.bak vim ~/.vnc/xstartup xrdb $HOME /.Xresources startxfce4 & sudo chmod +x ~/.vnc/xstartup vncserver
VNC本身不使用加密协议,可以使用SSH建立隧道转发VNC以实现加密:
1 ssh -L 5901:127.0.0.1:5901 -C -N -l rock 192.168.1.120
-L
:将远端的5901
绑定在127.0.0.1
的5901
上;
-C
:开启压缩以节省流量;
-N
:告诉ssh我们不在远端执行命令;
-l
:指定登录用户名,应使用非root用户登录。
这条命令执行后将建立到192.168.1.120
的隧道,命令不返回。在VNC客户端里,新建一个到本地127.0.0.1:5901
的连接,用户名改成rock
,就可以远程了。
将VNC加入系统服务,新建文件sudo vim /etc/systemd/system/vncserver@.service
:
/etc/systemd/system/vncserver@.service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [Unit] Description =Start TightVNC server at startupAfter =syslog.target network.target[Service] Type =forkingUser =rockGroup =rockWorkingDirectory =/home/rockPIDFile =/home/rock/.vnc/%H:%i.pidExecStartPre =-/usr/bin/vncserver -kill :%i > /dev/null 2 >&1 ExecStart =/usr/bin/vncserver -depth 24 -geometry 1280 x800 :%iExecStop =/usr/bin/vncserver -kill :%i[Install] WantedBy =multi-user.target
加载配置(@
后面的1
指的是VNC的:1
):
1 2 3 4 5 6 7 sudo systemctl daemon-reload sudo systemctl enable vncserver@1.service sudo systemctl start vncserver@1 sudo systemctl status vncserver@1
如果打开chrome上B站发现中文全是方框,则应安装字体(不过前面选过locale就没问题了):
1 sudo apt install fonts-wqy-microhei fonts-wqy-zenhei xfonts-intl-chinese xfonts-intl-chinese-big emacs-intl-fonts
安装USB无线网卡(失败) 随便找了个USB网卡,插入后查看USB设备,找到设备ID为148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
。查看识别的网络设备,发现这个网卡未识别:
1 2 3 4 5 6 7 8 9 10 lsusb Bus 001 Device 004: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 2: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
下载驱动并编译(没搞定没深究):
1 2 3 4 5 6 7 8 sudo apt install linux-headers-generic build-essential git clone https://github.com/art567/mt7601usta.git cd mt7601usta/src make sudo make install sudo mkdir -p /etc/Wireless/RT2870STA/ sudo cp RT2870STA.dat /etc/Wireless/RT2870STA/ sudo modprobe mt7601Usta
把吃灰中raspberry pi 2的USB WiFi拔下来,0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
,是个2.4G免驱,解决。
部署matrix 安装数据库:
1 2 3 4 5 6 7 8 9 10 11 12 sudo apt install postgresql sudo -i -u postgres psql psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1)) Type "help" for help . \q systemctl status postgresql.service
初始化:
1 2 3 4 5 6 7 sudo -u postgres createuser -P dendrite sudo -u postgres createdb -O dendrite -E UTF-8 dendrite pg_isready -d postgresql://dendrite:dendrite@localhost/dendrite localhost:5432 - accepting connections
安装golang,nginx:
1 2 3 sudo apt install golang nginx go version go version go1.18.1 linux/arm64
安装并配置 :
1 2 3 4 5 6 7 8 9 10 11 wget https://github.com/matrix-org/dendrite/archive/refs/tags/v0.10.8.zip unzip /v0.10.8.zip cd ./dendrite-0.10.8./build.sh go install ./cmd/dendrite-monolith-server ./bin/generate-keys --private-key matrix_key.pem Created private key file: matrix_key.pem
启动dendrite,添加用户:
1 2 3 4 5 6 ./dendrite-monolith-server -config /path/to/dendrite.yaml ./bin/create-account -config ./dendrite.yaml -username admin -admin ./bin/create-account -config ./dendrite.yaml -username qinzishi
下载并解压element客户端 :
1 2 wget https://github.com/vector-im/element-web/releases/download/v1.11.15/element-v1.11.15.tar.gz tar -zxvf element-v1.11.15.tar.gz
配置nginx为一个简单的静态文件服务器:
/etc/nginx.conf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { server { listen 80; location / { root /var/aria2c/element-v1.11.15; } } }
网络问题 2024/04/14更新:
领导又支援了一块5b。首先是随便买了个rtl8852be,结果lspci
时发现verdor id是b85b
,而不是原来的b852
。整了一个礼拜,试了各种系统,编译了新驱动 ,lsmod什么的都能加载驱动,驱动起来也能搜索wifi,但是就是无法连接。我懒得编译旧驱动了,就重新买了块b852
的卡。刷了Armbian上的默认系统,这次ok了。
发现了第二个问题,新系统5b的网卡是两块,用上面禁止重命名的方式无法连接,就将就着用了,但是俩个5b在某张卡连wifi时报destination host unreachable。两个5b到别的机子都通,但是互相之间不通。用arp -a
或者ip neigh show
看ARP表发现是incomplete状态,临时解决办法是在两个5b上都手写一条arp进去:
1 sudo ip neigh replace to xxx.xxx.xxx.xxx dev wlP2p33s0 lladdr xx:xx:xx:xx:xx:xx nud permanent
临时解决方法就这样了,也可以把命令加在启动脚本里省点事。