reComputer RK3588 硬件接口

最近更新:

本指南介绍如何在运行 Armbian 的 reComputer RK3588 上查看和使用各个硬件接口。可通过章节链接跳转到你想要连接或测试的外设部分。

开始之前

  • 完成首次开机设置,并在本地或通过 SSH 使用可运行 sudo 的用户登录。
  • 连接外设前,请先参考接口和主板示意图,确认对应接口的位置。
  • 安装内部板卡、排线或 GPIO 接线前,请先关机并断开设备电源。
  • 下文的设备节点、总线编号和 hwmon 索引均基于参考镜像。在复制执行会修改设置的命令之前,请先确认自己系统中的实际设备。

风扇

reComputer RK3588 通过 Linux hwmon 子系统提供风扇转速读取和 PWM 设置。在本次验证的 Armbian 镜像中,风扇名称为 pwmfan,对应 hwmon8。厂商内核还会根据设备树中的温度阈值自动调整 PWM。

Hardware Monitor 路径

接口路径说明
风扇名称/sys/class/hwmon/hwmon8/namepwmfan
风扇转速/sys/class/hwmon/hwmon8/fan1_input当前转速,单位 RPM
PWM 值/sys/class/hwmon/hwmon8/pwm1请求的 PWM 值,范围 0–255
PWM 使能策略/sys/class/hwmon/hwmon8/pwm1_enablePWM / 供电使能策略;实测值为 1

hwmon 编号可能随镜像或驱动配置变化。使用这些路径前,先确认节点名称:

bash
for node in /sys/class/hwmon/hwmon*; do
    [ -r "$node/name" ] || continue
    printf '%s: ' "$node"
    cat "$node/name"
done

本次设备的 /sys/class/hwmon/hwmon8/name 返回 pwmfan。

温区

温区系统报告的名称温度路径
SoCsoc-thermal/sys/class/thermal/thermal_zone0/temp
大核 0bigcore0-thermal/sys/class/thermal/thermal_zone1/temp
大核 1bigcore1-thermal/sys/class/thermal/thermal_zone2/temp
小核littlecore-thermal/sys/class/thermal/thermal_zone3/temp
Centercenter-thermal/sys/class/thermal/thermal_zone4/temp
GPUgpu-thermal/sys/class/thermal/thermal_zone5/temp
NPUnpu-thermal/sys/class/thermal/thermal_zone6/temp

温度值以毫摄氏度为单位,除以 1000 即可得到 °C。此镜像提供七个温区,应按系统报告的名称识别,不直接套用 RK3576 的温区编号。

读取风扇转速与温度

bash
cat /sys/class/hwmon/hwmon8/fan1_input
cat /sys/class/hwmon/hwmon8/pwm1
cat /sys/class/hwmon/hwmon8/pwm1_enable

测试设置恢复后,读数约为 2280 RPM、PWM 25、使能策略 1。这些是本次观察值,不是所有设备的固定数值。

一次读取所有温区:

bash
for zone in /sys/class/thermal/thermal_zone*; do
    [ -r "$zone/type" ] && [ -r "$zone/temp" ] || continue
    printf '%s: ' "$(cat "$zone/type")"
    awk '{printf "%.1f°C\n", $1 / 1000}' "$zone/temp"
done

本次观察到的 SoC 温度约为 37°C。

短时 PWM 写入测试

本次分别测试了单次写入 64、128 和 255。写入后立即读取时可以读到目标值,但在当时的温度下,厂商温控会在约一秒内将 PWM 恢复为 25。

请求的 PWM本次写入后立即读取约一秒后读取
646425
12812825
25525525

进行短时检查时,先保存当前值,再请求 128、读取结果,最后恢复保存的数值:

bash
FAN_PWM=/sys/class/hwmon/hwmon8/pwm1
ORIGINAL_PWM=$(cat "$FAN_PWM")
printf '128\n' | sudo tee "$FAN_PWM"
cat "$FAN_PWM"
sleep 1
cat "$FAN_PWM"
printf '%s\n' "$ORIGINAL_PWM" | sudo tee "$FAN_PWM"

如果第一次读取就已返回温控设定值,可能是内核在读取前已覆盖了请求。写入成功不代表可以持续手动控制,本次测试也不能证明风扇会分别保持在 25%、50% 或全速。

厂商自动温控

本次从设备树中读取到以下 cooling-levels 和 rockchip,temp-trips 配置:

温度范围(°C)温控档位PWM 值
<38025
38–<44145
44–<50260
50–<56375
56–<624100
62–<685130
68–<746170
74–<807210
≥808255

查看当前设备树中的配置:

bash
python3 - <<'PY'
from pathlib import Path
import struct

node = Path('/sys/firmware/devicetree/base/pwm-fan')
for name in ('cooling-levels', 'rockchip,temp-trips'):
    data = (node / name).read_bytes()
    values = struct.unpack('>' + 'I' * (len(data) // 4), data)
    print(name + ':', list(values))
PY

在此镜像中,pwm1_enable=1 不会关闭厂商自动温控,不能把该节点统一理解为 1=manual, 2=automatic 的开关。PWM / 供电策略的含义见 Linux pwm-fan 文档,Rockchip 温度回调逻辑见厂商驱动源码。

测试结束后,设备继续使用温控,没有安装独立的温控脚本或 systemd 服务。接管厂商温控和运行自定义服务的方式尚未在这台设备上验证。

快速参考

bash
cat /sys/class/hwmon/hwmon8/name
cat /sys/class/hwmon/hwmon8/fan1_input
cat /sys/class/hwmon/hwmon8/pwm1
cat /sys/class/hwmon/hwmon8/pwm1_enable
awk '{printf "%.1f°C\n", $1 / 1000}' /sys/class/thermal/thermal_zone0/temp

验证环境

项目数值
设备reComputer RK3588
系统Armbian 26.8.7 / Ubuntu 26.04(resolute),ARM64
内核6.1.172-vendor-seeed-rk3588
风扇监控节点/sys/class/hwmon/hwmon8(pwmfan)
恢复后的 PWM25
恢复后的使能策略1
恢复后观察到的风扇转速约 2280 RPM
观察到的 SoC 温度约 37°C

LED 指示灯状态

设备配备 Power(电源)、Status(状态) 和 User(用户) 三个指示灯,User 为 RGB 三色 LED。

电源、状态和用户指示灯

LED 状态与控制方式

指示灯默认行为控制方式
Power(红色)接通电源后常亮硬件电源电路控制
Status(绿色)由板载电源状态电路控制当前系统没有对应的 LED 类控制节点
User(RGB)蓝色心跳闪烁,红色和绿色关闭三个颜色通道均可通过 Linux LED 类接口控制

定位 LED

当前 RK3588 镜像提供以下节点,三个通道的 max_brightness 均为 1:

颜色节点默认触发方式
红色/sys/class/leds/user-led_rednone
绿色/sys/class/leds/user-led_greennone
蓝色/sys/class/leds/user-led_blueheartbeat
bash
ls -d /sys/class/leds/user-led_*
cat /sys/class/leds/user-led_blue/trigger
cat /sys/class/leds/user-led_blue/max_brightness

trigger 输出中方括号标记当前触发方式,例如 [heartbeat]。

手动控制(开 / 关)

先将触发方式设为 none,再写入 brightness。1 为开启,0 为关闭:

bash
LED_PATH=/sys/class/leds/user-led_blue
echo none | sudo tee "$LED_PATH/trigger"
echo 1 | sudo tee "$LED_PATH/brightness"
sleep 2
echo 0 | sudo tee "$LED_PATH/brightness"

控制红色或绿色时,将路径末尾的 user-led_blue 分别替换为 user-led_red 或 user-led_green。三个通道都由 LED 驱动管理,无需使用 gpioset。

自动触发模式

设置蓝色通道亮 500 ms、灭 500 ms:

bash
LED_PATH=/sys/class/leds/user-led_blue
echo timer | sudo tee "$LED_PATH/trigger"
echo 500 | sudo tee "$LED_PATH/delay_on"
echo 500 | sudo tee "$LED_PATH/delay_off"

恢复蓝色心跳模式:

bash
echo heartbeat | sudo tee /sys/class/leds/user-led_blue/trigger

恢复默认状态

bash
for color in red green; do
    LED_PATH="/sys/class/leds/user-led_$color"
    echo none | sudo tee "$LED_PATH/trigger"
    echo 0 | sudo tee "$LED_PATH/brightness"
done
echo heartbeat | sudo tee /sys/class/leds/user-led_blue/trigger

上述设置仅作用于当前运行的系统,不会写入启动配置。brightness 和触发器的说明见 Linux LED 文档。

按键

主板提供 Power、Recovery 和 MaskROM 按键。进行固件操作时,通过 USB 数据线连接 Type-C OTG 接口,并按照所选 RK3588 镜像的烧录说明操作。Recovery 和 MaskROM 用于烧录模式,不属于普通桌面启动步骤。

GPIO 与外设总线

reComputer RK3588 40Pin GPIO 引脚图

查询当前设备树暴露的控制器和线路名称:

bash
gpiodetect
gpioinfo

若系统没有这些工具,可安装发行版提供的软件包:

bash
sudo apt update
sudo apt install gpiod

根据 RK3588 原理图确认物理引脚与信号的对应关系,再通过 gpioinfo 查找对应的控制器和线路。设置输出前,使用 gpioset --help 确认所安装 libgpiod 版本的命令格式。

列出已安装的 RK3588 overlay 和当前启动配置:

bash
find /boot -type f -name '*rk3588*.dtbo' -print
grep -E '^(fdtfile|overlay_prefix|overlays|user_overlays)=' /boot/armbianEnv.txt

使用 I2C、UART、SPI 或 CAN 时,选择当前板型和外设对应的 overlay。编辑 /boot/armbianEnv.txt 时保留已有 overlay,参数和引脚分配以所安装 overlay 的说明为准。

USB

根据 Seeed Studio 官方规格,reComputer RK3588 的 USB 接口分配如下:

接口 / 数量物理接口形态总线协议与功能用途
USB 3.0 Host ×4USB Type-AUSB 3.0,标称信令速率 5 Gbps连接 USB 摄像头、外部存储、键盘、鼠标等外设。
USB Type-C ×1USB Type-COTG + DisplayPort用于 OTG 设备连接和 DisplayPort 显示输出,需使用支持对应功能的线缆或转接器。

5 Gbps 是 USB 3.0 的标称信令速率,不代表实际文件传输速度,也不表示四个 Type-A 接口各自具有独立的 5 Gbps 控制器带宽。

列出已连接的 USB 设备和拓扑:

bash
lsusb
lsusb -t

reComputer RK3588 USB 设备与拓扑查询结果

通过 lsusb -t 查看协商后的连接速率。使用 USB 摄像头或加速器时,还需按照对应外设的驱动和应用说明完成配置。

microSD 与 NVMe 存储

设备提供 microSD 卡槽及用于 NVMe SSD 的 PCIe 扩展。使用前,按照型号、容量和挂载点识别存储设备:

bash
lsblk -o NAME,MODEL,SIZE,TYPE,FSTYPE,MOUNTPOINTS
lspci -nn

reComputer RK3588 存储设备查询结果

对于 NVMe SSD,可检查其 PCIe 连接和驱动:

bash
lspci -nnk | grep -A 3 -i 'Non-Volatile memory'

系统识别到硬盘不代表已经支持从该硬盘启动,系统安装应按照所选镜像的安装流程操作。

M.2 扩展接口

reComputer RK3588 配备两个 M.2 Key-M 接口,用于安装 NVMe SSD 或兼容的 PCIe AI 加速模块。

模块尺寸规格PCIe 规格
2242(22 × 42 mm)PCIe 2.1 ×1
2280(22 × 80 mm)PCIe 3.0 ×4

×1 和 ×4 分别表示一条、四条通道。2242 接口按官方商详标注为 PCIe 2.1 ×1。选择接口时确认模块 Key 类型、长度及螺柱位置;设备当前实际协商的速率和通道宽度可通过下方 LnkSta 查询。规格参见 Seeed Studio 官方商详。

M.2 Key-M 2242 接口(PCIe 2.1 ×1)

reComputer RK3588 的 M.2 Key-M 2242 接口位置

M.2 Key-M 2280 接口(PCIe 3.0 ×4)

reComputer RK3588 的 M.2 Key-M 2280 接口位置

安装模块

  1. 关闭系统并断开 DC 或 PoE 电源,再打开机箱。
  2. 确认模块的 Key 类型、长度和实际螺柱位置匹配后,将模块插入插槽并用螺丝固定。
  3. 确认模块散热和连接正常后,重新上电启动系统。

选购 SSD 时应选择 NVMe 型号;AI 加速模块还需安装对应 RK3588 系统和内核的驱动及运行时。存储容量可通过前面的 lsblk 命令查看。

查询 PCIe 设备与驱动

bash
lspci -nnk

在输出中找到 SSD 或加速模块对应的条目,查看设备地址、型号及 Kernel driver in use。

检查协商的链路速率与通道宽度

在提示中输入上一步查到的 PCIe 设备地址:

bash
read -rp 'PCIe device address: ' PCIE_DEVICE
sudo lspci -s "$PCIE_DEVICE" -vv | grep -E 'LnkCap:|LnkSta:'

LnkCap 显示设备的链路能力,LnkSta 显示当前协商的速度和通道宽度。若需要从 NVMe 启动系统,请按所用 Armbian 镜像的安装流程配置启动环境。

SIM 与 miniPCIe 扩展

nano SIM 卡槽需配合兼容的蜂窝通信模块使用。插入 SIM 卡或安装内部模块前,请断开设备电源。miniPCIe 可用于可选的 4G LTE、LoRaWAN 或 Wi-Fi HaLow 模块,天线和软件应与模块匹配。

reComputer RK3588 的 4G LTE Mini-PCIe 模块和 SIM 卡槽

安装模块并启动系统后,检查 PCIe、USB 和网络设备的枚举结果:

bash
lspci -nn
lsusb
ip -br link

4G 模块(EC25)查询

使用 EC25 等 USB 接口蜂窝模块时,先查找串口及驱动加载记录:

bash
ls /dev/ttyUSB*
sudo dmesg | grep -iE 'quectel|option|ttyUSB|qmi_wwan|cdc_ether' | tail -n 50

reComputer RK3588 4G 模块的串口和驱动识别结果

按照模块文档确认 AT 命令端口,再安装并打开 minicom。下方提示中的 /dev/ttyUSB2 只是示例,请输入当前设备实际的 AT 端口:

bash
sudo apt update
sudo apt install minicom
read -rp 'AT serial device (e.g. /dev/ttyUSB2): ' AT_PORT
sudo minicom -D "$AT_PORT" -b 115200

以下命令在 minicom 内逐条发送,不是在 Linux Shell 中执行。先发送 AT,收到 OK 后继续查询:

text
AT
ATI
AT+CPIN?
AT+CSQ
AT+CREG?
AT+CGREG?
AT+CEREG?
AT+COPS?

其中,ATI 查询模块信息,AT+CPIN? 查询 SIM 状态,AT+CSQ 查询信号质量,AT+CREG?、AT+CGREG?、AT+CEREG? 查询注册状态,AT+COPS? 查询当前运营商。按 Ctrl+A,再按 X 退出 minicom。命令含义参见 Quectel EC25 / EC21 AT 命令手册。

数据拨号还需按运营商 APN 和模块的 USB 数据模式配置主机网络,SIM 已就绪或已注册网络不等于 RK3588 已能访问互联网。

LoRaWAN 与 Wi-Fi HaLow 接口识别

根据实际使用的 USB 或 SPI 模块,检查设备节点、现有 overlay 配置及驱动日志:

bash
lsusb
ls /dev/ttyACM*
ls /dev/spidev*
find /boot -type f -name '*.dtbo' | grep -iE 'halow|lora|rk3588'
grep -E '^(fdtfile|overlay_prefix|overlays|user_overlays)=' /boot/armbianEnv.txt
sudo dmesg | grep -iE 'morse|mm6108|sx1302|lora' | tail -n 50
ip -br link

USB 模块与 SPI 模块使用不同的通信方式。LoRaWAN 测试程序参数、SPI / GPIO 复位配置及 HaLow overlay 应按 RK3588 镜像和模块文档选择,不沿用 RK3576 的 overlay 名称。网关收发及 HaLow AP / 站点配置按对应模块的使用指南完成。

以太网 RJ45

reComputer RK3588 配备两个 RJ45 2.5GbE 以太网端口,可分别连接上游网络和本地设备,用于边缘网关、设备数据采集或双网口网络应用。

其中一个网口支持通过额外的 PoE 模块为设备供电。使用 PoE 前需安装匹配的模块,并确认交换机或供电设备支持对应的供电要求。

识别网卡和 IP 地址

连接网线后,查询当前系统中的网络接口名称及地址:

bash
ip -br link
ip -br addr

系统网卡名称以实际输出为准,不固定使用 eth0 或 eth1。需要区分两个物理网口时,可分别插拔网线并观察对应接口的链路状态变化。

检查协商速率和链路状态

安装 ethtool,在提示中输入上一步识别到的有线网卡名称:

bash
sudo apt update
sudo apt install ethtool
read -rp 'Ethernet interface: ' ETH_IFACE
sudo ethtool "$ETH_IFACE"

重点查看 Speed、Duplex 和 Link detected。Link detected: yes 表示检测到物理链路;Speed: 2500Mb/s 表示当前协商为 2.5GbE。实际速率由设备网口、对端交换机或网卡,以及网线共同决定。

配置网络连接

使用 NetworkManager 的镜像可查看连接状态,并通过文字界面配置 DHCP 或静态 IP:

bash
nmcli device status
nmtui

在 nmtui 中选择需要配置的有线连接,设置 IP 地址、网关和 DNS,并根据实际网络规划启用连接。双网口场景下分别配置两个连接。

Wi-Fi 与蓝牙

设备板载 Wi-Fi 6 和 Bluetooth 5.4。通过以下命令查看无线屏蔽状态和蓝牙控制器:

bash
rfkill list
bluetoothctl list

HDMI 与 DisplayPort

设备提供两个 HDMI 2.1 输出、一个 HDMI 2.0 输入及 Type-C DisplayPort。显示器接入输出接口,HDMI 输入用于采集外部视频源。

查询显示接口的连接状态:

bash
for connector in /sys/class/drm/card*-*; do
    [ -r "$connector/status" ] || continue
    printf '%s: ' "$connector"
    cat "$connector/status"
    [ ! -r "$connector/modes" ] || cat "$connector/modes"
done

reComputer RK3588 显示接口连接状态查询结果

对于 HDMI 输入或受支持的摄像头等采集设备,可使用 V4L2 列出视频设备:

bash
sudo apt install v4l-utils
v4l2-ctl --list-devices

reComputer RK3588 HDMI 输入设备识别结果

采集时使用查询到的视频节点和支持的格式。多显示器布局可在桌面显示设置中配置。

RTC

主板提供 2-Pin RTC 接口。连接电池前,根据原理图确认极性和电池要求。查询 Linux 暴露的 RTC 设备:

bash
for rtc in /sys/class/rtc/rtc*; do
    [ -r "$rtc/name" ] || continue
    printf '%s: ' "$rtc"
    cat "$rtc/name"
    [ ! -r "$rtc/date" ] || cat "$rtc/date"
    [ ! -r "$rtc/time" ] || cat "$rtc/time"
done

硬件资料和系统镜像可在资源下载汇总中获取。