rk3588 Armbian 适配

—视美泰 AIoT-3588A V1.3—

打印本文       小   中   大

视美泰 AIoT-3588A V1.3 Armbian 26.02 · Kernel 6.1.115 2026-11-03 实测

一块 RK3588 板卡的 Armbian 适配记录:
Mali GPU 硬件加速 Score 100 → 2037

视美泰 AIoT-3588A V1.3 基于瑞芯微 RK3588。本文记录完整 Armbian 适配:镜像一次刷写即用、硬件逐项验收;并重点验证 Mali-G610 GPU 在 Mesa Panfrost 下的硬件加速——绕开 X11 软渲染与 rk libmali 抢占后,glmark2 offscreen 成绩从 100 提升到 2037,约为软渲染的 20 倍,同时超过此前 Android 平台的约 1357。

8核
RK3588 · 4×A76 + 4×A55
6TOPS
RKNN NPU 算力
8.61× / 20.6×
FFmpeg rkmpp 硬编 / 硬解
2037
glmark2 · Mali-G610 硬渲染
01 · 板卡实物与接口

工业级主板,接口布局一览

裸板背面、侧面接口与正面接口标注图三张实物照,对应接口位置逐一说明。

AIoT-3588A 侧面接口:USB HOST、USB3.0、Type-C、TF、1000M、HP、UBOOT、HDMI IN、SIM、DCIN
侧面接口(左 → 右):USB HOST×2 · USB3.0 · Type-C(OTG) · TF 卡 · 1000M 网口 · HP 耳机 · UBOOT 按键 · HDMI IN · SIM · DCIN
AIoT-3588A 正面接口标注图:电源、显示、网络、USB、存储、音频、调试分组
正面接口标注图:顶 DCIN / 1000M / TF / Type-C / HDMI IN / USB3.0;侧 PWR-IN / LVDS / 4G;底排针 eDP / SATA / RS485 / TTL / RS232;右 USB / IO / MIC / SPK
AIoT-3588A 裸板背面:SIM 卡槽、双 MIPI-CAM、MIPI 显示
裸板背面(型号 CJIAH1-230428-M00097):SIM 卡槽 · 双 MIPI-CAM 摄像头接口 · MIPI 显示接口 · 4G 模块区(WiFi + 蓝牙一体化)· 四角固定孔
板 114 实测设备树节点 ↔ 板载 IO 对应
panel-edp0→eDP 主屏 1920×1080p60 connected · card0/DRM 主输出
hdmi@fde80000→HDMI 输出 / HDMI-IN 预留未接,DRM 拓扑 card0 可见
dsi@fde20000→DSI 屏接口 1280×480 · DTB status=disabled 已永久关闭,重启后 DRM 仅剩 eDP-1
mmc0 · mmcblk0→eMMC 存储 SCA64G 58.2G · 根分区 52G 可用(系统镜像固化于此)
sata0 · fe210000→SATA 接口 ahci 1 port 6Gbps 就绪(未接盘)
gmac · end1→千兆以太网 DHCP 192.168.1.114 在线 · 单网络使用
brcmfmac · sdio→WiFi wlan0 2.4G 稳定在线 · power save 已关(5G 老固件不支持 PNO)
EC200A · 2c7c:6005→4G 模块 ttyUSB0-2 三路串口 · 拨号上网 + USB RNDIS enx 保活
xhci · usb 控制器→USB Host×5 + Type-C(OTG) 摄像头 0bda:3035 · 触摸 222a:0001 · 扫码 1eab:1d22 · USB 麦 14e1:1100 · Hub 1a40×2
uart9 · febc0000→蓝牙 HCI hci0 UP RUNNING · 供 WiFi/BT 一体模块
serial 组 ttyS*→底边排针串口 RS485×1 · TTL×2 · RS232×2(另 DEBUG×1 · UBOOT×1 拨码)
gpu · panthor→Mali-G610 /dev/dri card2 · renderD130 · GLES 3.1 · glmark2 2037
rknpu→NPU 6 TOPS RKNN · RetinaFace 实测 0.211s
es8388 codec→音频 功放 + 耳机双输出 · 内置话筒 + USB 降噪话筒双输入
i2c 组 rk3x ×5→I2C 总线 + i2c-9 DP-AUX · i2c-10 HDMI DDC
gpiochip0-6→GPIO 7 组 可用 · 支持 IO 排针/IR+LED 扩展
rtc0→RTC 实时时钟 可用(断电保存时间)
thermal ×7→温度传感器 7 路 实时监测 · 温控策略生效
watchdog→看门狗 字符设备未注册 已知缺口 · 可补 DTS 开启
02 · 硬件适配清单

串口、USB、音频、显示、网络全部实测通过

六路串口逐口定位用途;USB 外设按 VID:PID 全部识别;音频支持功放与耳机双输出、内置与 USB 双话筒输入。

六路串口,各司其职

RS485 ×1

工业总线,长距离抗干扰,对接 PLC / 仪表 / 楼宇自控设备

TTL ×2

板级调试与传感器通信,直接对接 3.3V 电平外设(GPS、扫码模块、门禁)

RS232 ×2

标准串口,对接老式工控设备、打印机、串口服务器

蓝牙 HCI ×1

蓝牙协议 HCI 串口,供 WiFi/BT 一体模块使用,实现蓝牙透传与音频

DEBUG ×1

UART 调试串口,内核与 uboot 日志输出,开发排障

UBOOT ×1

Bootloader 交互串口,配合 UBOOT 按键进入烧录与引导模式

USB 外设全部识别(VID:PID 实测)

VID:PID设备说明
2c7c:6005Quectel EC200A 4G 模块ttyUSB0–2 三路串口,拨号上网
0bda:3035Realtek P1080P 摄像头USB UVC 摄像头
222a:0001ILI 多点触摸屏电容触摸输入
1eab:1d22新大陆 NLS-N1 POS 扫码枪USB 条码扫描
14e1:1100CICOE-EMIC USB 麦克风降噪拾音输入
1a40:0201 / 0101USB Hub ×2扩展 USB 端口

音频与显示重点

功放 + 耳机双输出

ES8388 完美适配,外接音箱(功放)与耳机接口同时可出声,默认音量 50%

双话筒输入

内置话筒接口 + 可选 USB 降噪话筒(CICOE-EMIC),HDMI-IN 亦可作为录音源

显示输出

eDP 主屏 1920×1080p60 已连接;HDMI 输出预留;DSI 屏已在 DTB 层按需永久关闭

网络与 4G

千兆以太网 + 2.4G WiFi 稳定在线;EC200A 4G 自动拨号 + 保活

存储与总线

eMMC 58.2G(可用 52G)· SATA0 6Gbps 就绪 · I2C×5 · GPIO 7 组 · RTC

远程运维

SSH + X11 转发 · x11vnc 开机自启 · 桌面 Cinnamon + lightdm(X11 :0)

03 · 核心验证 · Mali GPU 硬件加速

关闭软渲染:Mali-G610 从 100 分跑到 2037 分

桌面 X11 下 glmark2 无论 GLX 还是 EGL 都回落到 llvmpipe 软渲染;改用 Mesa Panfrost 走 GBM/DRM 直连后,同一块 Mali-G610 硬件渲染性能提升约 20 倍。

软渲染基线 · llvmpipe(X11 桌面)

100 / onscreen 79

Mesa llvmpipe CPU 软渲染,OpenGL 4.5(LLVM 19.1.7)。X server 无 DRI3,GPU 完全不参与。

硬件渲染 · Mali-G610(GBM/DRM 直连)

2037

Mesa 25.0.7 Panfrost 用户态接管,OpenGL ES 3.1,glmark2 全量 27 场景跑完,综合 Score 2037。

glmark2 offscreen 综合 Score 对比
Mali-G610 (Panfrost) 2037 · Android libmali 约 1357(历史参考)· llvmpipe 软渲染 100 / onscreen 79
为什么桌面下 GPU 不可用?两个原因叠加:一是 X server 未开启 DRI3,GLX/EGL 只能回落 llvmpipe;二是系统 /etc/ld.so.conf.d/00-aarch64-mali.conf 把 rk 专有 libmali(仅 GBM 版)全局加载并抢占 EGL 入口,默认栈连 EGL 初始化都失败。解法是绕过 libmali 目录,强制 Mesa panfrost 接管用户态。

复现命令(板 114 实测)

# 1. 编译 glmark2 2023.01(需含 GBM flavor)
meson setup build -Dflavors=x11-gl-egl,gbm-gl,gbm-glesv2
ninja -C build install

# 2. Mali-G610 硬件渲染(GBM/DRM render 节点直连,无需关闭桌面)
LD_LIBRARY_PATH=/lib/aarch64-linux-gnu \
  /root/glmark2-2023.01/build/src/glmark2-es2-gbm --off-screen

# 输出关键行:GL_RENDERER = Mali-G610 (Panfrost),glmark2 Score: 2037

要点:LD_LIBRARY_PATH=/lib/aarch64-linux-gnu 强制加载 Mesa 原生 EGL/GBM,绕开 /usr/lib/aarch64-linux-gnu/mali/ 下的 rk libmali;GBM flavor 走 DRM render 节点(renderD130),与桌面会话不冲突,因此不需要关闭桌面即可获得硬件加速。X11/x11-egl flavor 仍会落 llvmpipe,属预期。

04 · 测试命令全集

全部验收命令:照抄即可复测

以下命令均为板 114 实测使用的原命令(含 4G AT 通路、六路串口、蓝牙 HCI、WiFi 链路、声卡双出双入、FFmpeg rkmpp 硬编硬解、RetinaFace RKNN C++)。

USB 设备与 4G 模块

# 列出全部 USB 设备(VID:PID)
lsusb

# 只看 4G 模块(Quectel EC200A = 2c7c:6005)
lsusb -d 2c7c:

# 4G 拨号串口节点(ttyUSB0-2)
ls /dev/ttyUSB*

# 内核枚举日志(cp210x / ch341 / ftdi / cdc_acm)
dmesg | grep -iE "ttyUSB|cp210x|ch341|ftdi|pl2303|option|cdc_acm"

实测:6 项外设全部识别(2c7c:6005 4G / 0bda:3035 摄像头 / 222a:0001 触摸屏 / 1eab:1d22 扫码枪 / 14e1:1100 USB 麦克风 / 1a40:0201+0101 Hub×2)。

六路串口

# 板载 UART 节点(1×RS485 + 2×TTL + 2×RS232 + 1×蓝牙 HCI)
ls -la /dev/ttyS*

# 串口控制器状态与波特率
cat /proc/tty/driver/serial

# 蓝牙 HCI 串口(uart9 febc0000)内核日志
dmesg | grep -iE "uart9|febc0000"

# 4G AT 通路测试(ttyUSB2,115200 8N1)
stty -F /dev/ttyUSB2 115200 cs8 -cstopb -parity
echo "AT" > /dev/ttyUSB2
timeout 2 cat /dev/ttyUSB2

实测:ttyS0-ttyS6 全部就位;ttyUSB2 发 AT 回 OK,4G 拨号链路可用。

蓝牙状态

# 蓝牙适配器状态(hci0:UP RUNNING)
hciconfig -a

# 蓝牙子系统设备
ls -la /sys/class/bluetooth/

实测:hci0 正常注册,由 uart9(蓝牙 HCI 串口)承载。

WiFi 状态与链路

# 无线接口与关联状态
iw dev
iw dev wlan0 link
iw dev wlan0 get power_save

# 网络管理器设备状态
nmcli -t -f DEVICE,TYPE,STATE,CONNECTION device

# 驱动日志(brcmfmac 老固件不支持 sched scan,已切 2.4G)
dmesg | grep -iE "brcmfmac|brcm|wlan"

实测:wlan0 稳定关联 2.4G AP、power save 关闭;5G 掉线问题已处置。

声卡:查看与测试(功放 + 耳机双输出,内置 + USB 麦双输入)

# 列出播放/录音设备(card0 = ES8388,card1 = USB 降噪话筒)
aplay -l
arecord -l

# 功放/耳机双输出测试:440Hz 正弦波,双声道 1 次
speaker-test -D hw:0,0 -c 2 -t sine -f 440 -l 1

# 音量控制(默认 50%,测试时可开到 100%)
amixer -c 0 sset "OUT1" 100% unmute
amixer -c 0 sset "OUT2" 100% unmute

# 内置话筒 / USB 降噪话筒录音验证
arecord -D hw:0,0 -f cd -d 3 /tmp/mic-int.wav
arecord -D hw:1,0 -f cd -d 3 /tmp/mic-usb.wav

实测:功放与耳机同时出声;内置话筒 + USB 降噪话筒双输入通路正常。

FFmpeg rkmpp:硬编硬解实测

# 确认 rkmpp 编解码器与硬件加速列表
ffmpeg -hide_banner -hwaccels
ffmpeg -hide_banner -encoders | grep rkmpp
ffmpeg -hide_banner -decoders | grep rkmpp

# 硬编码:生成 1280x720 H.264(h264_rkmpp)
time ffmpeg -y -f lavfi -i testsrc=duration=3:size=1280x720:rate=25 -c:v h264_rkmpp /tmp/t.h264

# 硬解码:全帧解码输出到 null
time ffmpeg -hwaccel rkmpp -c:v h264_rkmpp -i /tmp/t.h264 -f null -

实测:h264_rkmpp / hevc_rkmpp 可用;硬编 8.61×、硬解 20.6×(相对软编软解基线)。

RetinaFace RKNN:C++ 推理实测

# RKNN C++ 推理(模型 + 单张测试图,计时)
cd /root/retinaface
time ./retinaface_demo model/RetinaFace.rknn model/test.jpg

实测:置信度 0.999,单次 0.211s(含加载与画框)。

05 · 系统镜像与实测补充

一次刷写即用,交付物齐备

镜像基于 Armbian 26.02.0-trunk(trixie 仓库),vendor 内核 6.1.115-rk35xx,硬件适配与自启服务全部固化进镜像。

项目实测结果
发行版 / 内核Armbian-unofficial 26.02.0-trunk · trixie · 6.1.115-vendor-rk35xx
存储eMMC 58.2G,根分区实测 2.8G 已用 / 52G 可用
多媒体FFmpeg rkmpp 硬编 8.61× / 硬解 20.6×(相对软件基线);H.264 / HEVC / MJPEG 全支持
播放器ffplay 7.1.5 固化进镜像(/usr/local/ffplay),运行库链 ldd 无缺失
AI 实测RetinaFace RKNN C++ 实测:置信度 0.999,单次 0.211s(含加载与画框)
交付物系统镜像 + SHA256 校验 + 部署包 + 验收记录,可直接量产刷写
已知限制(均已记录处置):5G 掉线(老固件不支持 PNO 扫描,已切 2.4G 解决)· 硬解直通显示不可行(vulkan 仅 llvmpipe,播放走软解 75fps 流畅)· 双网卡 DHCP IP 互换(按单网络使用)· 看门狗未注册(可补 DTS 开启)。
06 · 镜像与卡刷教程

整盘镜像固化,两种刷写方式

镜像为整盘 4 GiB 镜像(含分区表),配套 SHA256 校验,刷写前请核对哈希。卡刷推荐先用 TF 卡验证,量产再写入 eMMC。

项目取值
镜像文件Armbian-unofficial_26.02.0-trunk_Shimeta-aiot-rk3588a_trixie_vendor_6.1.115_minimal.img
镜像容量4 GiB(4,294,967,296 B)· 配套 .img.sha / .img.txt
SHA256982451f1181dca9297f7db5177329662d94ad364e873fcb127d70755e7c0a029
发行版 / 内核Armbian-unofficial 26.02.0-trunk · trixie · 6.1.115-vendor-rk35xx
默认账号root 登录,初始密码见交付说明(.img.txt),建议首次登录立即修改
为什么不用 RK 官方工具刷写?本镜像为整盘 GPT 镜像,容量 4 GiB(4,294,967,296 B)超过 2 GB;RK 官方工具(AndroidTool / RKDevTool)按 loader、uboot、boot、system 等分区分别烧录,无法直接烧写这种超 2 GB 的整盘镜像。因此采用整盘写入工具(balenaEtcher)写入 TF 卡,再通过 Armbian 自带的 armbian-config 把系统安装进 eMMC。

方式一 · balenaEtcher 写入 TF 卡(快速验证)

# 1. 准备 ≥8GB TF 卡 + 读卡器(镜像 4GiB,卡需 ≥8GB)
# 2. 下载并打开 balenaEtcher:
#    选择镜像 → 选择 TF 卡 → Flash!(整盘写入,自动校验)
#    https://etcher.balena.io/
# 3. 备选:命令行整盘写入(Linux/macOS,of= 以实际设备为准,切勿写错盘)
sudo dd if=Armbian-unofficial_26.02.0-trunk_Shimeta-aiot-rk3588a_trixie_vendor_6.1.115_minimal.img \
  of=/dev/sdX bs=4M status=progress conv=fsync

把 TF 卡插入板卡 TF 卡槽,按住 UBOOT 按键上电进入 TF 引导(或按拨码选择启动介质)。首次启动自动扩容根分区,登录后即可使用全部硬件能力。

方式二 · armbian-config 写入 eMMC(量产固化)

# 1. 先按方式一从 TF 卡启动系统并登录
armbian-config
# 2. 菜单依次选择:
#    System → Install to internal storage(安装到 eMMC 内置存储)
# 3. 按提示确认覆盖 eMMC,等待写入完成
# 4. 断电 → 拔掉 TF 卡 → 上电,从 eMMC 直接启动

板 114 验收即由本镜像刷入 eMMC 后完成全硬件逐项测试;批量量产按同一流程逐台执行即可。

上一篇 RK3568 LCD 屏幕驱动
下一篇 无

HeNan Tyean .Co, Ltd.

地 址:河南省郑州市高新技术产业开发区翠竹街1号13幢6层06号 电 话:18603810315 Q Q:19540837 邮 箱:19540837@qq.com 邮政编码:450001

Copyright ©HeNan Tyean .Co, Ltd.,Inc.All rights reserved.  豫ICP备2025145210号-1  留言
微信公众号二维码