过去几周,我对高性能 ARM 开发板的追求进展有些不顺,但经过近三个月的测试,以下是我对Banana Pi BPI-M7的笔记。
这是一个早就该发布的帖子,由于多种原因而被推迟了,但简而言之,我认为这是RK3588迄今为止我测试过的最好、最紧凑的主板。
免责声明: Banana Pi 向我发送了一个评测单元(对此我表示感谢),本文遵循我的评测政策。此后,我购买了官方外壳(尚未到达,但到货后我会更新帖子),并提供了自己的 NVMe 驱动器进行测试。
第一印象
如果您曾经使用过任何近期的RK3588主板,那么M7会让您觉得它很密集 - 这是因为它仅比Raspberry Pi稍大一点,并且 PCB 的两侧都相当拥挤:
请注意底部强大的 LAN 驱动器,以及 BPI-M7 设法在边缘处封装的连接器数量。
使用低调的连接器(并且,面对现实,连接器更少,因为它只有一个 HDMI 输出)使其比Orange Pi 5+更紧凑,同时仍然能够在下面安装全尺寸 NVMe,这增加了密度感。
我的丝网印刷掩模版上写着“Bpi v1.1”,但主板装在标有“ArmSoM Sige7”的盒子里,因为ArmSoM是 Banana Pi 的合作公司。
硬件规格
与我最近看过的大多数 Rockchip SBC 一样,M7遵循非常熟悉的模式:
- 它是全功能的RK3588(4xA76/2.4GHz 内核和 4xA55/1.8GHz 内核,外加 Mali-G610 GPU 和 NPU)
- 底部 M.2 2280 PCIe 3.0x4 NVMe 插槽(利用 3588 提供的 PCIe 3.0 通道)
- 双 2.5GbE 端口,以及集成 WiFi 6/BT 5
- 通过 USB-C 连接 HDMI 2.1 和 DisplayPort 1.4 (8K30)(遗憾的是无法供电,但它有一个单独的 USB-C PD 端口,非常好)
- 通常的一组GPIO引脚,加上多个摄像头DSI和CSI显示器连接器)
我的样品配备 16GB RAM 和 128GB ,并且在大部分测试中eMMC我使用了1TB Corsair NVMe 。
冷却和电源
与往常一样,主板没有配备冷却解决方案(附加的金属外壳似乎有一个内部凸起用于散热,但我的还没有到货),所以我使用了我的商标铜块:
M7 刚从我的测试台上取下,带有串行控制台适配器和 Wi-Fi 尾纤(不包括在内)。
与之前的主板一样,M7使用100W 桌面 USB-C PD 充电器供电时空闲温度约为 40摄氏度,常规使用(浏览或中等至轻度桌面负载)时平均功耗为 2-3W,空闲时功耗为 1W 或更低 - 也与其他主板一致。
事实上,我花了一点功夫才让它的功耗超过 6W,只有在运行ollama或进行 WebGL 基准测试时它的功耗才会超过 10W。
操作系统支持
我对M7非常感兴趣的原因之一是,它是极少数支持 Armbian Platinum 的主板之一,因此我测试了它的两个版本:
- Armbian Jammy(带有 GNOME 桌面和驱动程序的UbuntuGPU 22.04 )
- Armbian Bookworm(带有 CLI 界面的Debian 12,我使用它作为运行Proxmox的基础)。
为了新颖性(和更主流的体验),我也尝试了Ubuntu Rockchip 24.02(一个试图为 Rockchip 设备提供更新的 Ubuntu 映像的新发行版),但我所有的基准测试都是在Armbian Bookworm 中完成的(稍后会详细介绍)。
更新:在我进行测试后的几周内,Armbian发布了新版本的Ubuntu Noble,据说它有更好的MESA支持VPU。我还没有时间测试它,但我会在测试后更新这篇文章。
这两款产品都搭载了内核 6.1.43,与所有仍搭载 5.x 内核的 SBC 相比,差距不大。
总体而言,Armbian体验非常好,但RK3588GPU 驱动程序存在一些常见问题(仍然有点不稳定,但在使用中很明显)。我毫不费力地启动并运行了一个可用的 GNOME 桌面,M7反应非常灵敏。
从服务器的角度来看,将 Bookworm 安装升级到Proxmox很顺利,并且我能够毫无问题地将其加入到我的集群中。
基准测试
到目前为止,我已经测试了相当多的RK3588主板,我不得不说没有任何意外——在运行 Armbian Bookworm 时,M7 的得分与 Orange Pi 5 和 YeeYooToo 的得分相差 5% 以内,NVMe 吞吐量的得分几乎完全相同(因为,嗯,我实际上使用了相同的驱动器):
NVME 性能
我决定跳过对内部 EMMC 的基准测试,因为我正在从 NVMe 驱动器启动和运行操作系统,甚至没有文件系统。
像往常一样,我使用了fio:
# fio --filename=/<path>/file --size=5GB --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=random-read-write --eta-newline=1
...结果相当不错,M7在吞吐量方面略胜于Orange Pi 5+ ,但差距并不大:
OLLAMA CPU 性能
然后我继续进行ollama,在 CPU 模式下测量tinyllama和的令牌生成dolphin-phi(这是我在之前的测试中使用的模型):
for run in {1..10}; do echo "Why is the sky blue?" | ollama run tinyllama --verbose 2>&1 >/dev/null | grep "eval rate:"; done
得出了以下结果:
令我最初感到惊讶的是,M7比Orange Pi 5+稍慢一些,我花了一段时间才弄明白原因——我怀疑这与热节流有关,因为 M7在这些测试中变得非常热(当温度超过 80摄氏度时,时钟速度就会降低),并且Orange Pi 5+不仅在二月份进行了测试(当时温度较低),而且还安装在一个有利于对流冷却的外壳中。
所以我实际上称之为平局 - 因为我现在有 16GB RAM 可以在M7上使用,并且官方案例正在进行中(这应该可以改善冷却效果)我将重新审视这一点phi3:instruct(初步结果还可以,但我想看看更好的冷却是否真的有所不同)。
RKNN 工具包
像往常一样,我调查了支持状态rknn。RKNN -LLM现在已经存在,但它有几个怪癖:
- 它要求你将模型转换为.rknn安装了 Python 3.8(令人惊讶的是,Python 3.8 非常古老)的 Linux x64 机器上的文件
- 然后它缺少关于如何在设备上运行模型的任何文档
...所以我无法真正让它工作——当我有更多时间时我会重新审视这个问题。
关于 UBUNTU ROCKCHIP 的说明
但我的大部分测试(以及我停滞了一段时间的地方)都是在Ubuntu Rockchip 24.02 上进行的,这是一个新的发行版,它试图为 Rockchip 设备提供更新的 Ubuntu 映像。
它看起来很有希望,但我遇到了一些问题:
- M7在运行时会变得非常热,安装时以及正常使用(浏览器、终端等)时温度达到 76摄氏度。
- 启动速度非常慢(需要一分钟多的时间才能到达登录提示)。
- 尝试将其安装到 EMMC 后,我收到一个非常奇怪的uboot错误,导致我无法通过按下电源按钮来启动它。
相比之下,即使两者都设置为这样,Armbianperformance内核的平均运行温度也要低得多(并且我的所有基准测试都是使用调节器在Armbian Bookworm中完成的ondemand)。
我花了几个星期的时间,但最终我能够通过重新刷新官方 Wikiuboot中的映像来解决启动问题,但需要注意的是,这还要求我使用真正的 Windows 机器来刷新它——使用 VM 非常困难,因为端口会改变 USB ID,而且我无法在 Linux 上的 Windows VM 中工作。OTGRKDevTool
支线任务:设置 RKDEVTOOL 语言
能够使用的一个关键步骤RKDevTool(除了ADB在 Windows 中安装驱动程序)是能够以英语使用它,因为我可以获得的所有最新版本都默认为中文。
诀窍是将随附的Selected语言设置为:config.ini2
#选择工具语言:Selected=1(中文);Selected=2(英文)[Language]Kinds=2Selected=2LangPath=Language\Lang1File=Chinese.iniLang1FontName=宋体Lang1FontSize=9Lang2File=English.iniLang2FontName=ArialLang2FontSize=9
否则,界面导航会有点困难——但与实际弄清楚我必须重新刷新图像相比,这是一个小问题uboot……
我使用 RKDevTool 3.19 和 1.15.1 uboot 镜像来修复我的主板
支线任务:有效使用 VS CODE 串行监视器
在调试启动问题时,我使用了带有扩展的 USB-TTL 适配器ms-vscode.vscode-serial-monitor。
但是,该扩展不支持目前似乎所有的范围的 1.5Mbps 波特率,所以我不得不将其添加到 VS Code 配置中以使用自定义波特率:
"vscode-serial-monitor.customBaudRates":[1500000]
媒体转码
尽管我还没有找到用途rknn-toolkit2并且ollama仍然无法利用RK3588先进的硬件,但我终于能够在支持下测试Jellyfin——RK3588它有点崩溃(有时很难弄清楚是客户端还是服务器崩溃),但 CPU 负载的减少明显,并且使其作为媒体服务器更具吸引力——尽管它很难与英特尔的 QuickSync 竞争。
请记住,您必须选择正确的 Docker 映像才能实现这一点,并且它不是全面的 GPU 支持——似乎只是ffmpeg进行了修补以执行此操作,而且我还没有让HandBrake工作(这将是一个更有趣的测试)。
但我打算在Jellyfin发布一两次之后回到这个主题并进行更系统的测试,因为VPU同时RK3588支持硬件解码和/硬件编码。H.265AV1H.264H.265
我们只需要软件支持再改进一点,我想我们就会处于一个良好的状态。
更新:正如我上面提到的,在我充实这份草案后的几周内,Armbian推出了一个具有改进的 MESA/VPU 支持的 Ubuntu Noble 版本,但我还没有时间对其进行测试。我会在测试后更新这篇文章。
结论
不难看出M7的吸引力–主板上包含了很多可以立即使用的功能,而这些功能在其他主板上要么是附加的,要么根本不存在:
- EMMC 存储(Orange Pi 5 没有配备)
- Wi-Fi(Orange Pi 和 YouYeeToo R1 均不具备此功能,尽管它们都有 M.2 插槽)
- 双 2.5GbE 网络
- M.2 2280 NVMe 插槽(80 毫米 NVMe 驱动器的选择比 42 毫米多)
令我失望的一件事(这在当前的 SBC 中很正常)是缺少单线操作来将其插入显示器并以此方式供电 —— 这感觉像是错失了机会。
但是,如果您想要一台可以实际开发的 ARM Linux 机器,那么硬件功能和官方的ArmbianRK3588支持使它比 Raspberry Pi 5 更具吸引力——Pi 5在原始 CPU 能力或吞吐量(无论是网络还是存储)方面无法与任何主板相匹敌,而 M7至少与我测试过的其他 Rockchip 主板相当。
是的,文档和软件支持仍然有点混乱,但这对于这些主板来说是正常的 - 并且 M7至少比大多数主板得到更好的支持。
我真的很好奇它在更好的冷却条件下会表现如何,一旦我拿到正式的机壳,我会重新进行一些测试,看看它的表现如何。不过,可能需要一段时间。