折腾香橙派 5 Plus
最近心血来潮,买了一个香橙派 5 Plus的开发板,这个开发板是一个基于瑞芯微的RK3588芯片的开发板,它有4/8/16/32GB内存的版本,我买的是16GB内存的版本,这个开发板的性能非常强大,它有两个 M.2 接口,一个是M.2 NVMe PCIE 3.0 (2280)接口,用来插 NVMe固态硬盘,一个是M.2 (2230)接口,用来插网卡,可以扩展更多的硬件设备,这个开发板有 3 个HDMI接口,用来做电视盒子非常不错,可以连接多个显示器,这个开发板还有2个USB3.0接口和2个USB2.0接口,可以连接鼠标和键盘(咋不搞图形也用不到,或者直接上VNC得了),这个开发板还有2个以太网接口,可以连接网络,这个开发板还有一个TF卡接口和EMMC插槽,可以扩展存储,这个开发板还有一个串口接口,可以连接调试器,这个开发板还有一个GPIO接口,可以连接外设,这个开发板还有一个电源接口,可以连接电源,这个开发板还有一个电池接口,可以连接纽扣电池(搞RTC时钟用的),这个开发板还有一个音频接口,可以连接音频设备,这个开发板还有一个摄像头接口,可以连接摄像头,这个开发板还有一个屏幕接口,可以连接屏幕,这个开发板还有一个风扇接口,可以连接风扇,……
产品参数
主控芯片 | Rockchip RK3588(8nm LP制程) |
---|---|
CPU | • 8核64位处理器 • 4个Cortex-A76和4个Cortex-A55及独立的NEON协处理器 • Cortex-A76主频2.4GHz,Cortex-A55主频1.8GHz |
GPU | • 集成ARM Mali-G610 • 内置 3D GPU • 兼容OpenGL ES1.1/2.0/3.2、OpenCL 2.2和Vulkan 1.2 |
NPU | 内嵌的 NPU 支持INT4/INT8/INT16/FP16混合运算,算力高达 6Top |
PMU | RK806-1 |
RAM | 4GB/8GB/16GB (LPDDR4/4x) |
存储 | • QSPI Nor FLASH: 16MB/32MB • MicroSD 卡插槽: up to 128GB • eMMC 闪存插座,可外接16GB/32GB/64GB/128GB/256GB eMMC模块 • 用于NVMe SSD (PCIe 3.0 x4) 的 M.2 2280 插槽高达2,000 MB/s |
USB | 2xUSB3.0; 2xUSB2.0; 1xType-C |
视频输出 | • 2x HDMI 2.1 输出,高达8K@60FPS • 1x Type-C(DP 1.4A)输出,高达8K@30FPS • 1x HDMI输入,高达4K@60FPS • 1 x MIPI DSI 4 Lane输出,高达4K@60Hz |
TP接口 | 1x6Pin FPC插座 |
摄像头 | 1xMIPI CSI 4 Lane |
音频 | CODEC:ES8388 • 1x3.5mm 耳机孔音频输入/输出 • 1xMIC 输入 • 1xHDMI 2.1 eARC • 1x扬声器 |
以太网 | 2xPCIe 2.5G LAN(RTL8125BG) |
扩展口 | 40Pin双排插针,具有以下复用功能: UART、 I2C、SPI、 CAN、I2S、PDM、AUDDSM、SDIO、PWM、GPIO。 |
PCIe M.2 M-KEY Socket | M.2 connector M key (bottom) for NVMe with PCIe 3.0 x4 lanes 2280 SSD固态硬盘 |
PCIe M.2 E-KEY Socket | M.2 connector E key (top) for connectivity with PCIe 2.0 x1/PCM/UART/USB2.0,支持2230 Wi-Fi6 /BT模块 |
按键 | 1x MaskROM键,1xRECOVERY,1x开关机键 |
供电 | 支持Type-C供电,5V@4A |
红外接收器 | 1x红外接收管 |
LED | RGB LED侧发光 |
FAN | 5V FAN |
RTC | 2PIN:RTC备用电池 |
调试 | 3Pin调试串口(UART) |
支持的操作系统 | Orangepi OS(Droid)、Orangepi OS(Arch)、Orangepi OS(OH)、Ubuntu22.04、Debian11、Android12 |
外观规格介绍
产品尺寸 | 100mm*75mm |
---|---|
重量 | 86.5g |
我的清单
这个开发板我从京东香橙派官方旗舰店购买的,购买的时候选择开发板只有一个开发板,没有其他配件,其他配件要的话另加购物车下单
我的开发板、电源适配器、风扇都是从香橙派官方旗舰店购买的,本来我是想从第三方购买电源适配器配件的,但是第三方生产的目前只有5V@3A的电源适配器,不够用,所以我只能从官方购买,官方的电源适配器是5V@4A的,而且不支持PD充电
风扇要从第三方买的话就最好外壳一起买了,不然预留空间可能不够或者不方便固定,我当时就没考虑装外壳了(官方的外壳、扇热片、风扇只能3选1安装),正好看到官方旗舰店有风扇,而且风扇是自带扇热片的,膨胀螺丝可以直接固定在开发板上,所以我就买了官方的风扇
硬盘我不敢购买二手的,因为我之前丢过重要数据,数据无价,所以我只能购买新的硬盘,我选择了梵想的S500PRO 1TB的NVMe固态硬盘,这个硬盘是我在京东购买的,我选择了梵想京东自营旗舰店的,PCIE 3.0 x4的接口(够用就行),这个硬盘是我用来装系统的,我还有一个NVMe网卡,是我从拆机卡上拆下来的RTL8852BE,这个网卡是我用来连接网络的,我还有一个外置天线,是我从拼多多上购买的10dbi天线
商品 | 数量 | 备注 |
---|---|---|
香橙派 5 Plus开发板 | 1个 | 官方旗舰店 |
电源适配器 | 1个 | 官方旗舰店 |
风扇 | 1个 | 官方旗舰店 |
外置天线 | 1个 | 拼多多 10dbi天线 |
m.2网卡 | 1个 | 拆机卡 RTL8852BE |
NVMe固态硬盘 | 1个 | 梵想 S500PRO 1TB |
USB转TTL模块 | 1个 | 拼多多 CH340G 模块 |
读卡器 | 1个 | 绿联数码旗舰店 USB 3.0 SD/TF双卡单读卡器 |
TF卡 | 1个 | 朗科官方旗舰店 64GB TF卡 |
此处省略一些次要的配件
安装系统
我选择了官方的 Debian bookworm 系统(镜像是Orangepi5plus_1.0.8_debian_bookworm_server_linux6.1.43.img),这个系统是我从官方网站下载的,官方的镜像那些驱动都带齐了,不用自己编译内核,这板子就别想着图形化桌面了吧,命令行习惯了也挺方便的,我用的是串口连接的,串口连接的话需要一个串口转USB的线
我首先要把系统烧录在TF卡上,因此需要一个TF卡的读卡器,我用的是绿联数码旗舰店的USB 3.0 SD/TF双卡单读卡器,这个读卡器是我从京东购买的,我用的是64GB的TF卡,这个TF卡是我从淘宝购买的,我用的是朗科的TF卡(够用就行)
烧录 Linux 镜像到 TF 卡的方法见PDF [基于 Windows PC 将 Linux 镜像烧写到 TF 卡的方法]和[基于 Ubuntu PC 将 Linux 镜像烧写到 TF 卡的方法]
使用 TF 卡启动 linux 系统后,我们首先烧录 u-boot 镜像到 SPI Flash 中
先运行下 nand-sata-install,普通用户记得加 sudo 权限,我这里为了方便直接切换到 root 用户了
orangepi@orangepi5plus:~$ sudo -i
root@orangepi5plus:~# nand-sata-install然后选择 7 Install/Update ther bootloader on SPI Flash
然后选择
然后请耐心等待烧录完成,烧录完成后显示如下所示(左下角会显示一个Done)
然后将上文的 Orangepi5plus_1.0.8_debian_bookworm_server_linux6.1.43.img 拷贝到 TF 卡中
我使用了 MobaXterm 的 SSH 连接,在左侧 SFTP 上传镜像文件
然后校验 sha256sum
root@orangepi5plus:~# sha256sum Orangepi5plus_1.0.8_debian_bookworm_server_linux6.1.43.img |
确保得到的校验值与官方提供的值一致
接下来,我们先确认下 NVMe SSD 已经被开发板的 linux 正常识别了。如果 NVMe SSD 正常识别了的话,使用 sudo fdisk -l 命令就能看到 nvme 相关的信息
root@orangepi5plus:~# fdisk -l | grep "nvme0n1" Disk /dev/nvme0n1: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors |
使用 lspci 命令可以看到一个 NVMe 相关的 PCI 设备
root@orangepi5plus:~# lspci |
然后我们可以使用 dd 命令清空下 NVMe SSD(可选)
root@orangepi5plus:~# dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress |
然后就可以使用 dd 命令烧录开发板的 linux 镜像到 NVMe SSD 中
- 下面的命令中 if= 参数后面是要填写 linux 镜像存放的完整路径+Linux 镜像的名字(比如/home/orangepi/Desktop/Linux 镜像的名字)。因为上面我们已经进入 linux 镜像的路径下了,所以只需要填写 Linux 镜像的名字的即可。
- 下面命令中的 linux 镜像名请不要照抄,要替换为实际的镜像名(因为镜像的版本号可能会更新)。
然后使用 dd 命令将镜像写入 NVMe 硬盘
root@orangepi5plus:~# dd bs=1M if=Orangepi5plus_1.0.8_debian_bookworm_server_linux6.1.43.img of=/dev/nvme0n1 status=progress |
当成功烧录开发板的 linux 镜像到 NVMe SSD 后,此时就可以使用 poweroff 命令关机了。然后请拔出 TF 卡,再短按电源按键开机,此时就会启动 SPIFlash+NVMe SSD 中的 linux 系统了。
安装 Proxmox VE
这个过程相当折腾!!!不建议后来人尝试,因为性能不够,我只是折腾一下,不是用来做生产环境的
这个过程我参考了 安装Arm版本的Proxmox VE | 佛西博客
我安装的是 PVE 8
香橙派5plus 的Debian 12 server 使用的是 nmcli 工具管理的网络,需要停用NetworkManager服务
systemctl disable NetworkManager |
编辑网卡配置文件
vim /etc/network/interfaces |
添加如下参数
auto enP3p49s0 |
请自觉将 enP3p49s0 换成自己的网卡(香橙派5plus是enP3p49s0和enP4p65s0,无线网卡是wlP2p33s0,也可能不一样?具体请自己查看)。把ip换成自己的ip(可以通过命令ip a 查看自己的网卡名)
要保留原有的回环接口
auto lo |
配置dns
echo "nameserver 223.5.5.5" >>/etc/resolv.conf |
重启网络服务
systemctl restart networking.service |
配置host
重要:pve服务需要hosts文件正确,否则会出现无法启动的问题。
这是原本的/etc/hosts文件
127.0.0.1 localhost |
从上面的文件,可以看出主机 hostname 为 orangepi5plus,这很关键。
我们将 ::1 这上面的部分改成如下:
127.0.0.1 localhost.localdomain localhost
192.168.204.73 orangepi5plus.pvetest.com orangepi5plus
192.168.204.73 orangepi5plus.pvetest.com armbian这段结构是ip.fqdn.hostname
fqdn就是域名全称。例如www.baidu.com。www则代表主机名,baidu.com是域名,fqdn是www.baidu.com
fqdn可以自己取,如果你不懂,你就按照我这个来填。但是你必须将debian换成自己的hostname。这个hostname将作为PVE的节点名称。
也请自己将ip换成自己的ip.
并且将::1后面的 orangepi5plus 字样删除
最后的hosts如下。也可以复制下面的host,替换fqdn和hostname即可
127.0.0.1 localhost.localdomain localhost |
保存之后。重启机器,避免出现一些奇怪的问题。
添加源
如果是安装pve8,且版本为bookworm,则添加如下源
echo "deb https://mirrors.apqa.cn/proxmox/debian/pve bookworm port">/etc/apt/sources.list.d/pveport.list |
四:安装Proxmox VE
使用正确的path
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
安装前建议使用科学上网
我使用 Windows clash verge 的局域网代理
export http_proxy="http://192.168.204.113:10809/"; |
安装Proxmox VE
apt update && apt install -y proxmox-ve |
会出现一个弹窗,请选择 no configuration
等上一段时间,安装结束之后,如果没有啥奇怪的报错,就可以访问pve。
我一共尝试了3次PVE的安装,第一次是安装失败了,原因是我没有乖乖的修改hosts
第二次是安装成功了,但是无法访问(各种奇妙的报错)
第三次终于安装成功了,可以访问了
配置Proxmox VE
需要注意一些CPU配置
下面为必须遵守的配置规则。
CPU:host、max、Cortex-A76、Cortex-A55都可以
CPU 大小核不能混用,不然机器无法启动VNC没有显示,要么全用大核,要么全用小核,在创建虚拟机的时候,绑定CPU填写指定的核,数字从0开始,比如0-3是大核,4-7是小核,填写0,1,2,3
就是使用那4个大核,填写4,5,6,7
就是使用那4个小核
CPU 大小核混用的表现:VNC没有显示,无法启动虚拟机,CPU跑满
BIOS:OVMF
OSYPE: l26(默认就是这个)
磁盘:SCSI
磁盘控制器:Virtio-Scsi(非single)
光驱:SCSI
需要注意,虚拟机需要有EFI ACPI支持,才能启动。
还有就是要图形化配置网络的话,需要先安装一个软件包
apt install -y ifupdown |
要使用无线网卡的话,只能去/etc/network/interfaces
配置,不要使用nmcli
,因为 NetworkManager 没有启用
然后我在PVE上安装了一个Debian 12 arm64的虚拟机,用来做一些实验
我尝试过安装 OpenWrt,但是无法启动,算了,不折腾了
Windows 11 Arm 也无法启动,也算了,不折腾了
搭建 Minecraft 服务器
我跑了 Minecraft Java版服务器,可以看到很经典的“一核有难,多核围观”
于是我后面直接把 Proxmox VE 扬了,我再也不在 armv8 安装PVE了(除非社区能主力维护),直接在 香橙派官方镜像 Debian 12 上安装了 Minecraft 服务器,性能好多了
搭建 幻兽帕鲁 服务器
我参考了 Mac 系统(M系处理器)搭建幻兽帕鲁(palworld)服务器 - 哔哩哔哩
我之前在 Armv8 的 M2 CPU的 Macmini 上搭建过幻兽帕鲁服务器,性能相当不错(Mac 的 M 系列CPU都是什么外星科技啊~),但是那台 Macmini 是我朋友的,只是搭建玩了一个礼拜,所以我就又在香橙派上搭建了一个幻兽帕鲁服务器
创建一个文件夹,例如:palworld-arm-docker,在里面创建一个空的子文件夹 palworld
我使用 docker compose 来搭建幻兽帕鲁服务器,先搓一个docker-compose.yml
文件
version: '3' |
然后在 palworld-arm-docker 文件夹下面创建 PalWorldSettings.ini 文件。
官方文档:https://tech.palworldgame.com/optimize-game-balance
配置生成器:https://dysoncheng.github.io/PalWorldSettingGenerator/setting.html
这是我的配置文件,我是根据配置生成器生成的
[/Script/Pal.PalGameWorldSettings] |
然后运行 docker-compose up -d
就可以启动幻兽帕鲁服务器了
看看 docker logs -f pal
看看有没有报错,很大概率被墙了资源下载不来,我是直接用的clash(clash Meta + metacubexd面板,文档见https://wiki.metacubex.one/)的代理
然后就可以在游戏里面连接服务器了(从Steam 拉取资源文件真的很漫长……)
我顺便给他搓了一个备份的脚本
!/bin/sh |
运行成功地截图:
重新编译内核启用 Clash TUN 支持
直接运行 clash
打开 TUN 会报错
ERRO[2024-05-06T19:21:52.768503418+08:00] Start TUN listening error: configure tun interface: cleanup rules: operation not supported |
注意,Orange Pi 5 Plus 开发板是需要下载 orangepi-build 的 next 分支源码的, 上面的 git clone 命令需要指定 orangepi-build 源码的分支为 next
开发板当前使用的 u-boot 和 linux 内核版本如下所示
分支 | u-boot 版本 | linux 内核版本 |
---|---|---|
legacy | u-boot 2017.09 | linux5.10 |
current | u-boot 2017.09 | linux6.1 |
这里所说的分支和 orangepi-build 源代码的分支不是同一个东西,请不要搞混了。此分支主要是用来区分不同内核源码版本的
目前 RK 提供的 linux5.10 bsp 内核我们定义为 legacy 分支,linux6.1 bsp 内核我们定义为 current 分支
orangepi-build 下载完后会包含下面的文件和文件夹
- build.sh: 编译启动脚本
- external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等
- LICENSE: GPL 2 许可证文件
- README.md: orangepi-build 说明文件
- scripts: 编译 linux 镜像的通用脚本
orangepi-build 第一次运行的时候会自动下载交叉编译工具链放在 toolchains 文件夹中,每次运行 orangepi-build 的
脚本后,都会检查 toolchains 中的交叉编译工具链是否都存在,如果不存在则会重新开始下载,如果存在则直接使用,不会重复下载
orangepi-build 第一次运行的时候会去下载交叉编译工具链、u-boot 和 linux 内核源码,成功编译完一次 linux 镜像后在 orangepi-build 中可以看到的文件和文件夹有
- build.sh: 编译启动脚本
- external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序的源码,编译镜像过程中缓存的 rootfs 压缩包也存放在 external 中
- kernel: 存放 linux 内核的源码,里面名为 orange-pi-5.10-rk35xx 的文件夹存放的就是 RK3588/RK3588S 系列开发板 legacy 分支的内核源码,名为 orange-pi-6.1-rk35xx 的文件夹存放的就是 RK3588/RK3588S 系列开发板 current 分支的内核源码,内核源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载内核源码
- LICENSE: GPL 2 许可证文件
- README.md: orangepi-build 说明文件
- output: 存放编译生成的 u-boot、linux 等 deb 包、编译日志以及编译生成的镜像等文件
- scripts: 编译 linux 镜像的通用脚本
- toolchains: 存放交叉编译工具链
- u-boot: 存放 u-boot 的源码,里面名为 v2017.09-rk3588 的文件夹存放的就是 RK3588/RK3588S 系列开发板 legacy 和 current 分支的 u-boot 源码,u-boot 源码的文件夹的名字请不要手动修改,如果修改了,编译系统运行时会重新下载 u-boot 源码
- userpatches: 存放编译脚本需要用到的配置文件
编译 Linux 内核
首先,我们需要进入 orangepi-build 目录,然后运行 build.sh 脚本
第一次随便找个 orangepi5plus 里面的默认选项编译一次,因为要下载依赖和配置文件,然后再修改配置文件 /root/orangepi-build/external/config/kernel/linux-rockchip-rk3588-current.config
,添加/修改下面的配置
CONFIG_IP_MULTIPLE_TABLES=y |
然后再次运行 build.sh 脚本
菜单会显示出来,选择 Kernel package -> orangepi5plus …… -> Show a kernel configuration menu before compilation -> current ……
编译好了之后,会在 /root/orangepi-build/output/debs/
文件夹下生成多个 deb 包,然后我们可以把 linux-image-current-rockchip-rk3588_1.0.8_arm64.deb 包传到香橙派5plus上
先移除旧内核(此操作前建议备份 /boot
目录)
apt purge -y linux-image-current-rockchip-rk3588 |
然后安装新内核
dpkg -i linux-image-current-rockchip-rk3588_1.0.8_arm64.deb |
确保内核安装成功的情况下,重启系统
然后就可以使用 TUN 模式了
我使用 mihomo (Clash Meta) 作为核心,使用 metacubexd 作为面板
我将 metacubexd 的 dist 正确解压到了 /etc/mihomo/metacubexd/
我使用 systemctl enable mihomo
命令启用开机自启
这是我的配置文件(部分)
port: 7890 |
执行 ip a
查看无线网卡的名字,然后填写到配置文件的 interface-name 中
如果多了张网卡,则说明 TUN 模式启用成功
使用 TUN 模式的 最大好处就是可以让一些不遵循代理环境变量的软件也能走代理
省去了本机上为 docker 等配置代理的麻烦
root@orangepi5plus:~# ip a |
哦对了,我使用 smartdns 作为 DNS 服务器,而不是使用 clash 的 DNS 服务器功能
这样可以让设备能享受到智能解析的好处
我的 smartdns 配置文件
bind [::]:53 |