reComputer RK3588 Hardware Interfaces

Last updated:

This guide explains how to inspect and use the hardware interfaces on the reComputer RK3588 running Armbian. Use the section links to jump to the peripheral you want to connect or test.

Before you begin

  • Complete first-boot setup and sign in locally or over SSH with a user that can run sudo.
  • Use the port and mainboard diagrams to identify the connector before attaching a peripheral.
  • Power off and disconnect the device before fitting internal cards, ribbon cables, or GPIO wiring.
  • Device nodes, bus numbers, and hwmon indices below describe the reference image. Confirm the actual devices on your system before copying a command that changes a setting.

FAN

The reComputer RK3588 exposes fan speed and PWM settings through the Linux hwmon subsystem. On the verified Armbian image, the fan is named pwmfan and appears at hwmon8. The vendor kernel also adjusts PWM using temperature thresholds from the device tree.

Hardware Monitor Paths

InterfacePathDescription
Fan name/sys/class/hwmon/hwmon8/namepwmfan
Fan speed/sys/class/hwmon/hwmon8/fan1_inputCurrent RPM
PWM value/sys/class/hwmon/hwmon8/pwm1Requested PWM value, 0–255
PWM enable policy/sys/class/hwmon/hwmon8/pwm1_enablePWM / power enable policy; observed value: 1

The hwmon index can change with the image or driver configuration. Confirm the name before using these paths:

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

For the tested device, /sys/class/hwmon/hwmon8/name returns pwmfan.

Thermal Zones

ZoneReported typeTemperature path
SoCsoc-thermal/sys/class/thermal/thermal_zone0/temp
Big Core 0bigcore0-thermal/sys/class/thermal/thermal_zone1/temp
Big Core 1bigcore1-thermal/sys/class/thermal/thermal_zone2/temp
Little Corelittlecore-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

Temperature values are in millidegrees Celsius. Divide by 1000 to obtain °C. This image has seven thermal zones; use the reported names rather than copying the RK3576 zone numbers.

Reading Fan Speed and Temperature

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

After the test settings were restored, the readings were approximately 2280 RPM, PWM 25, and enable policy 1. These are observations, not fixed values for every device.

Read all temperature zones:

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

The observed SoC temperature was approximately 37°C.

Short PWM Write Test

Single writes of 64, 128, and 255 were tested. Each requested value could be read immediately after writing, but the vendor temperature controller restored PWM to 25 within approximately one second at the observed temperature.

Requested PWMImmediate reading in the testReading after approximately one second
646425
12812825
25525525

For a short check, save the current value, request 128, read it back, and restore the saved value:

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"

If the first read already returns the temperature-controlled value, the kernel may have overwritten the request before the read completed. A successful write does not establish sustained manual control, and these test values do not demonstrate fixed 25%, 50%, or full fan speeds.

Vendor Temperature Control

The tested device tree contains the following cooling-levels and rockchip,temp-trips configuration:

Temperature range (°C)Cooling levelPWM value
<38025
38–<44145
44–<50260
50–<56375
56–<624100
62–<685130
68–<746170
74–<807210
≥808255

Inspect the active device-tree configuration:

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

On this image, pwm1_enable=1 does not disable vendor temperature control. Do not treat this attribute as a universal 1=manual, 2=automatic switch. Its PWM / power policy is described in the Linux pwm-fan documentation; the Rockchip temperature callback is implemented in the vendor driver.

The device continued temperature control after the test. No separate temperature-control script or systemd service was installed. Taking over the vendor controller and running a custom service have not yet been verified for this device.

Quick Reference

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

Verified Environment

ItemValue
DevicereComputer RK3588
OSArmbian 26.8.7 / Ubuntu 26.04 (resolute), ARM64
Kernel6.1.172-vendor-seeed-rk3588
Fan monitor/sys/class/hwmon/hwmon8 (pwmfan)
PWM after restoration25
Enable policy after restoration1
Observed fan speed after restorationApproximately 2280 RPM
Observed SoC temperatureApproximately 37°C

LED Indicator Status

The device has Power, Status, and User indicators. The User indicator is an RGB LED.

Power, Status, and User indicators

LED Behavior and Control

IndicatorDefault behaviorControl
Power (red)Stays on when power is connectedHardware power circuit
Status (green)Driven by the onboard power status circuitNo corresponding LED class control node is exposed by the current system
User (RGB)Blue heartbeat; red and green offAll three color channels can be controlled through the Linux LED class

Locate the LEDs

The current RK3588 image exposes these nodes. All three channels have a max_brightness value of 1:

ColorNodeDefault trigger
Red/sys/class/leds/user-led_rednone
Green/sys/class/leds/user-led_greennone
Blue/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

Square brackets in the trigger output mark the active trigger, for example [heartbeat].

Manual Control (On / Off)

Set the trigger to none before writing brightness. Use 1 for on and 0 for off:

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"

For red or green, replace user-led_blue at the end of the path with user-led_red or user-led_green. The LED driver manages all three channels, so gpioset is unnecessary.

Automatic Triggers

Make the blue channel alternate between 500 ms on and 500 ms off:

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"

Restore the blue heartbeat trigger:

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

Restore the Default State

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

These settings affect the running system without changing its startup configuration. See the Linux LED documentation for brightness and trigger behavior.

Buttons

The mainboard provides Power, Recovery, and MaskROM buttons. For firmware operations, use a USB data cable connected to the Type-C OTG port and follow the flashing instructions for the selected RK3588 image. Recovery and MaskROM are flashing modes, not normal desktop startup steps.

GPIO and Peripheral Buses

reComputer RK3588 40Pin GPIO Pinout Diagram

Check the controllers and line names exposed by the current device tree:

bash
gpiodetect
gpioinfo

If these tools are unavailable, install the distribution package:

bash
sudo apt update
sudo apt install gpiod

Use the RK3588 schematic to match physical pins to signals, then locate the corresponding controller and line in gpioinfo. Check gpioset --help for the installed libgpiod command syntax before setting an output.

List the installed RK3588 overlays and current boot configuration:

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

For I2C, UART, SPI, or CAN, select an overlay supplied for your board and connected peripheral. Preserve existing overlays when editing /boot/armbianEnv.txt; the installed overlay's documentation defines its parameters and pin assignments.

USB

The Seeed Studio specifications list the following USB interfaces for reComputer RK3588:

Interface / quantityPhysical connectorBus protocol and functionsUses
USB 3.0 Host ×4USB Type-AUSB 3.0, nominal signaling rate of 5 GbpsConnect USB cameras, external storage, keyboards, mice, and other peripherals.
USB Type-C ×1USB Type-COTG + DisplayPortOTG device connections and DisplayPort output, using a cable or adapter that supports the required function.

5 Gbps is the nominal USB 3.0 signaling rate, not a measured file-transfer speed. It does not establish independent 5 Gbps controller bandwidth for each of the four Type-A ports.

List connected USB devices and their topology:

bash
lsusb
lsusb -t

reComputer RK3588 USB devices and topology output

Use lsusb -t to inspect the negotiated connection speed. For a USB camera or accelerator, also follow the peripheral's driver and application instructions.

microSD and NVMe Storage

The device has a microSD slot and PCIe expansion for NVMe SSDs. Identify the storage device by model, capacity, and mount point before using it:

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

reComputer RK3588 storage device listing

For an NVMe SSD, check its PCIe link and driver:

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

A detected drive does not by itself establish boot support; use the installation procedure supplied with the selected image.

M.2 Expansion Interfaces

reComputer RK3588 provides two M.2 Key-M interfaces for NVMe storage or compatible PCIe AI accelerator modules.

Module sizePCIe specification
2242 (22 × 42 mm)PCIe 2.1 ×1
2280 (22 × 80 mm)PCIe 3.0 ×4

×1 and ×4 denote one lane and four lanes. PCIe 2.1 ×1 follows the official product listing for the 2242 interface. Check the module key, length, and mounting position when selecting a slot. The currently negotiated speed and width can be checked using LnkSta below. See the Seeed Studio product details.

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

Location of the M.2 Key-M 2242 interface on reComputer RK3588

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

Location of the M.2 Key-M 2280 interface on reComputer RK3588

Install a module

  1. Shut down the system and disconnect DC or PoE power before opening the enclosure.
  2. Confirm that the module key, length, and mounting position match the slot. Insert the module and secure it with a screw.
  3. Check cooling and connections, then reconnect power and boot the system.

Select an NVMe SSD for storage; an AI accelerator also requires drivers and a runtime matching the RK3588 operating system and kernel. Use the earlier lsblk command to inspect storage capacity.

Identify PCIe devices and drivers

bash
lspci -nnk

Find the SSD or accelerator entry and inspect its device address, model, and Kernel driver in use.

Check negotiated link speed and width

Enter the PCIe device address from the preceding output when prompted:

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

LnkCap reports the device's link capabilities; LnkSta reports the currently negotiated speed and width. For NVMe system boot, configure the boot environment using the installation procedure for your Armbian image.

SIM and miniPCIe Expansion

The nano SIM slot is used with a compatible cellular module. Disconnect device power before inserting the SIM or installing an internal module. miniPCIe supports optional 4G LTE, LoRaWAN, or Wi-Fi HaLow modules; select the matching antenna and software for the module.

4G LTE Mini-PCIe module and SIM card slot on reComputer RK3588

After installing a module and starting the system, inspect its PCIe, USB, and network enumeration:

bash
lspci -nn
lsusb
ip -br link

4G Module (EC25) Queries

For a USB cellular module such as EC25, first identify serial devices and driver messages:

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

Serial devices and driver detection for the RK3588 4G module

Identify the AT command port using the module documentation, then install and open minicom. /dev/ttyUSB2 in the prompt is only an example; enter the actual AT port on your device:

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

Send the following commands individually inside minicom, not in the Linux shell. Send AT first and continue after receiving OK:

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

ATI reads module information, AT+CPIN? checks SIM status, AT+CSQ reads signal quality, AT+CREG?, AT+CGREG?, and AT+CEREG? check registration, and AT+COPS? reads the current operator. Press Ctrl+A, then X to exit minicom. See the Quectel EC25 / EC21 AT Commands Manual.

Data connectivity also requires host networking configured for the carrier APN and the module's USB data mode. A ready SIM or registered module does not by itself establish Internet access on RK3588.

LoRaWAN and Wi-Fi HaLow Interface Discovery

For the installed USB or SPI module, inspect device nodes, existing overlay settings, and driver messages:

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 and SPI modules use different transports. Select LoRaWAN test arguments, SPI / GPIO reset settings, and HaLow overlays from the RK3588 image and module documentation, rather than reusing RK3576 overlay names. Follow the module-specific guide for gateway transmission/reception and HaLow AP / station configuration.

Ethernet RJ45

reComputer RK3588 provides two RJ45 2.5GbE Ethernet ports. They can connect an upstream network and local devices for edge gateways, device data acquisition, or applications requiring two network ports.

One port can power the device through an additional PoE module. Install the matching module and check the power requirements of the switch or power sourcing equipment before using PoE.

Identify network interfaces and IP addresses

Connect the Ethernet cable, then list interface names and addresses on the current system:

bash
ip -br link
ip -br addr

Use the names reported by the system rather than assuming eth0 or eth1. To map the two physical ports to interface names, connect or disconnect each cable separately and observe the corresponding link-state change.

Check negotiated speed and link status

Install ethtool and enter the wired interface name identified above when prompted:

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

Inspect Speed, Duplex, and Link detected. Link detected: yes indicates a physical link; Speed: 2500Mb/s indicates a negotiated 2.5GbE connection. The device port, connected switch or adapter, and cable determine the actual link rate.

Configure network connections

On images using NetworkManager, inspect connections and open the text interface to configure DHCP or a static IP:

bash
nmcli device status
nmtui

In nmtui, select the wired connection, configure its IP address, gateway, and DNS, and activate it according to the network plan. Configure the two connections separately when using both ports.

Wi-Fi and Bluetooth

The device includes onboard Wi-Fi 6 and Bluetooth 5.4. Inspect radio blocking and the Bluetooth controller:

bash
rfkill list
bluetoothctl list

HDMI and DisplayPort

The device provides two HDMI 2.1 outputs, one HDMI 2.0 input, and DisplayPort through Type-C. Connect monitors to the output ports. HDMI input is used for capture from a separate video source.

Check display connector status:

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

Display connector status on reComputer RK3588

For capture devices, including HDMI input or a supported camera, list the video devices with V4L2:

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

HDMI input device detection on reComputer RK3588

Use the reported video node and supported formats for capture. Configure multiple displays in the desktop's display settings.

RTC

The mainboard provides a 2-Pin RTC connector. Confirm polarity and battery requirements in the schematic before connecting a battery. Check the RTC devices exposed by Linux:

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

Hardware documents and system images are available in the resource download summary.