reComputer RK3576 Module Dev Kit Interface Usage Guidelines

Last updated:

System Configuration

Wi-Fi

By default, the Wi-Fi and Bluetooth antennas are not assembled. Install the antennas before use to improve signal strength, and make sure they are connected to the correct antenna connectors.

Wi-Fi Test

Shell
nmcli device wifi list
sudo nmcli device wifi connect STU-TE password seeedkey968
sudo nmcli device wifi connect test-ap password 88888888
sudo nmcli device wifi connect SEEED-OFFICE password edgemaker2025
# 1-hour ping packet loss test
ping -w 3600 192.168.254.100

Bluetooth

Bluetooth Test

Shell
bluetoothctl
scan on
scan off

Remote login guide (SSH)

Hardware: reComputer RK3576 Module

Operating System: Debian 12

This guide provides instructions on how to access your reComputer remotely using the Secure Shell (SSH) protocol.

Enable SSH After the First Flash

After the first system flash, the SSH service may not be running automatically. Enable it locally on the device in the following order:

Start the SSH service:

bash
sudo systemctl start ssh

Enable SSH to start automatically at boot:

bash
sudo systemctl enable ssh

Check the SSH service status:

bash
systemctl status ssh

Prerequisites

  • The reComputer must be powered on and connected to the same Local Area Network (LAN) as your primary computer.
  • An Ethernet connection is recommended for initial setup to ensure stability.

Identify the Device IP Address

You need the IP address of the reComputer to establish a connection.

  • Via Local Terminal: If you have a monitor and keyboard connected to the reComputer, run:
bash
hostname -I
  • Via Router Dashboard: Access your router's web interface and look for a device named recomputer or similar in the DHCP client list.

Connection Methods

Option A: Windows (PowerShell or Command Prompt) Modern Windows versions include a built-in SSH client.

  1. Press Win + R, type cmd, and hit Enter.
  2. Input the following command (replace 10.0.x.x with your actual IP):
bash
ssh seeed@10.1.x.x
  1. Type yes when asked to confirm the host's fingerprint.
  2. Enter the password seeed (characters will not appear as you type).

Option B: Linux / macOS Terminal Open your native terminal and run:

bash
ssh seeed@<Your_Device_IP>

Option C: Professional Tools (Recommended) For a more robust development environment, consider:

  • MobaXterm: Features a built-in SFTP sidebar for easy file dragging.

Troubleshooting

  • Connection Refused: Ensure the SSH service is active on the reComputer. You can check this locally by running:
bash
sudo systemctl status ssh
  • Firewall Issues: If the service is running but blocked, allow port 22 through the firewall:
bash
sudo ufw allow 22
  • Host Key Verification Failed: If you recently reflashed the OS on the same IP address, clear the old key on your PC using:
bash
ssh-keygen -R <Your_Device_IP>

Debugging

UART0 Serial Debugging

Debugging via UART0

For serial debugging, you need a USB-to-serial cable to connect the UART0 interface on the board to the USB port of the PC.

9.png

Serial Login

Serial Parameters

Baud rate: 1500000

Data bits: 8

Stop bits: 1

Parity: None

USB-C OTG Login

Log in with MobaXterm

If you connect via USB-C on the first login, you need to complete the user initialization configuration:

10.png

Plain
root
1234

After the configuration is complete, you can enter the desktop

11.png

Interface Usage

SD Card Slot

The microSD card can be used as a system boot medium or as extended storage space. It is compatible with microSD / microSDHC / microSDXC cards.

17.png

When used as a system boot medium, the reComputer RK3576 Module boots from the microSD card by default. See the system installation tutorial for the image-writing procedure.

When used as extended storage space, simply insert the card and it will be recognized without flashing an image.

Hot-plug recognition and read/write speed test:

Shell
lsblk

18.png

Shell
# read
dd if=/dev/mmcblk1p1 of=/dev/null bs=512M count=1 iflag=direct
#clear cache
echo 3 > /proc/sys/vm/drop_caches
# write
dd if=/dev/zero of=/dev/mmcblk1p1 bs=512M count=1 oflag=direct conv=fdatasync

19.png

M.2 M Key Interface Usage

The board provides one M.2 Key M interface, which can meet the needs of memory expansion or computing power expansion.

20.png

The M.2 Key M interface supports mounting SSDs and various AI Accelerators. The tested SSD and AI Accelerator models are as follows:

  • SSD

    • Seeed NVMe (128GB/256GB/512GB/1TB/2TB)

    • SAMSUNG 980

    • KIOXIA-EXCERIA G2 SSD

    • NXM-128

    • TWSC TSC3AN128-F2T70S

  • AI Accelerator

    • RK1820/RK1828

    • Hailo-8/8L/10H

Note

The models above only indicate that compatibility verification has been completed under the current hardware and software versions; they do not guarantee that other models of the same brand or different batches are compatible. The device may behave differently due to differences in controller, firmware, power consumption, and hardware version. It is recommended to verify in practice before bulk purchasing or deployment. This interface only supports PCIe NVMe SSDs, not M.2 SATA SSDs.

SSD Usage Guide

Use the following command to identify the SSD device:

Plain
lsblk

21.png

Test the SSD read/write speed:

Shell
# Read
dd if=/dev/nvme0n1 of=/dev/null bs=1024M count=4 iflag=direct
#Clear Cache
echo 3 > /proc/sys/vm/drop_caches
# Write
dd if=/dev/zero of=/dev/nvme0n1 bs=1024M count=4 oflag=direct conv=fdatasync

where /mnt/nvme needs to be replaced with the actual mount directory of the SSD.

22.png

Hailo Usage Guide

Follow the Hailo installation video, then install the required packages below.

23.png

Install the software packages. After installing the basic PCIe driver, you need to reboot the system for the changes to take effect.

24.png

Plain
# Install the PCIe driver
sudo dpkg -i hailort-pcie-driver_4.24.0_all.deb

# Reboot the system
sudo reboot

# After reboot, verify that the driver has been loaded
lsmod | grep hailo

# Install HailoRT
sudo dpkg -i hailort_4.24.0_arm64.deb

# Scan and verify the device status
hailortcli scan

# Create and activate the virtual environment
python3 -m venv hailo_env
source hailo_env/bin/activate

# Install the HailoRT Python library
pip install hailort-4.24.0-cp312-cp312-linux_aarch64.whl

# Verify the installation and device connection
python3 -c "from hailo_platform import VDevice; vdev = VDevice(); print('Successfully connected via VDevice! Device info:', vdev)"

25.png

26.png

27.png

Install Hailo Model Zoo. To run the official pre-trained models, you need to install Hailo Model Zoo and its system dependencies.

Plain
# 1. Install the required system libraries
sudo apt update
sudo apt install -y git libglib2.0-0t64 libgl1 libglx-mesa0

# 2. Clone the official repository (the latest branch is recommended)
git clone https://github.com/hailo-ai/hailo_model_zoo.git
cd hailo_model_zoo
mkdir -p ~/hailo_models
cd ~/hailo_models

wget \
https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.19.0/hailo8/yolov8n.hef

Confirm the file:

Plain
ls -lh yolov8n.hef

Then parse the HEF first:

Plain
hailortcli parse-hef yolov8n.hef

Make sure to confirm that it is for:

Plain
HAILO8

instead of:

Plain
HAILO8L
HAILO10H

Then run it directly:

Plain
hailortcli run yolov8n.hef

28.png

RK182x Usage Guide

The Seeed reComputer RK3576 Module natively supports the RK182x series accelerator sticks. No complex driver installation steps are needed; they work out of the box.

Install RK1820

Turn off the power of the reComputer RK3576.

Install the RK1820 AI Accelerator into the corresponding M.2 slot and secure it with a screw.

After installation, power on the device and enter the system. The following image shows the installation position.

Note:

Do not insert or remove the RK1820 while the device is powered on.

29.png

Check the RK1820 PCIe Connection

After entering the system, run:

Plain
lspci

Under normal conditions, the RK1820 should be recognized as a PCIe Processing Accelerator.

Example:

30.png

Further check the PCI Vendor ID and Device ID:

Plain
lspci -nn

Example:

31.png

Plain
1d87:182a

indicates that the RK1820 has been correctly enumerated by the system.

Run:

Plain
sudo dmesg | grep -Ei "pcie|rkep|182a"

Under normal conditions, you should see something like:

Plain
PCIe Link up
PCIe Gen.2 x1 link up
pcie-rkep 0000:01:00.0

32.png

This indicates that the PCIe link between the RK3576 and the RK1820 has been established normally.

Further check the RK1820 Device Node:

Plain
ls -l /dev/pcie-rkep-*

Example:

33.png

Plain
/dev/pcie-rkep-0000:01:00.0

If you can see this device node, it means the RK1820 PCIe driver is working normally.

Install RKNN3 Runtime

This article uses RKNN3 V1.1.0. The installation package is available at this download link.

Installation package name:

Plain
rknn3_rk182x_m2_v1.1.0_installer_arm64.tgz

34.png

After downloading it to your PC, upload it to the reComputer RK3576 Dev Kit. Here we use uploading to the Downloads folder as an example.

Enter the download directory:

Plain
cd ~/Downloads

Create an extraction directory:

Plain
mkdir -p rk182x_m2_installer

Extract the installation package:

Plain
tar -xzf rknn3_rk182x_m2_v1.1.0_installer_arm64.tgz \
-C rk182x_m2_installer

Enter the installation directory:

Plain
cd rk182x_m2_installer

Run the installation:

Plain
sudo ./install.sh

Reboot after installation:

Plain
sudo reboot

Note:

The RKNN3 Runtime version should be compatible with the RKNN3 Toolkit used during model conversion.

If the model and Runtime versions do not match, errors such as:

Plain
MODEL_SETUP fail
rknn3_model_init fail

may occur during model initialization.

Verify the RKNN3 Runtime Environment

After the system reboots, check the RKNN3 Service:

Plain
systemctl status rknn3.service --no-pager

Under normal conditions, it should show:

Plain
Active: active (running)

35.png

Check the RKNN3 Version

Plain
sudo rknn-smi -v

You can check:

Plain
rknn-smi version
PCIe driver version
RC chips connect version
EP chips connect version
PCIe Device firmware version
rknn3 API version

36.png

Check the RK1820 Device Information

Plain
sudo rknn-smi info -l

Under normal conditions, you should see something like:

Plain
Device Count: 1

Device ID: 0
Communication mode: PCIe
Product Name: RM1820MC0-F
Chip Count: 1
Chip ID: 0
Chip Name: RK1820

37.png

This indicates that the RKNN3 Runtime has successfully recognized the RK1820.

Check the RK1820 Runtime Status

Plain
sudo rknn-smi info

You can check:

  • Device Status

  • Health

  • NPU Utilization

  • Temperature

  • Memory Usage

Under normal conditions, it should show:

Plain
Status: Online
Health: OK

38.png

If you need to view the RK1820 status in real time, run:

Plain
sudo rknn-smi info -w

This command is suitable for observing NPU utilization, memory, and temperature changes during model inference.

39.png

Test RK1820 with Qwen3.5-0.8B

Next, use Qwen3.5-0.8B to verify the LLM inference capability of the RK1820. The model download link is:

Model package (rknn3_models/v1.1.0):

Download the Qwen3.5-0.8B model (extraction code: rknn)

The Qwen3.5-0.8B model directory contains the following files:

Plain
Qwen3.5-0.8B/
鈹溾攢鈹€ Qwen3.5-0.8B.rknn
鈹溾攢鈹€ Qwen3.5-0.8B.weight
鈹溾攢鈹€ Qwen3.5-0.8B.tokenizer.gguf
鈹斺攢鈹€ Qwen3.5-0.8B.embed.bin

Enter the model directory:

Plain
cd ~/Downloads/Qwen3.5-0.8B

View the files:

Plain
ls -lh

Example:

Plain
Qwen3.5-0.8B.embed.bin        485M
Qwen3.5-0.8B.rknn              21M
Qwen3.5-0.8B.tokenizer.gguf     11M
Qwen3.5-0.8B.weight            499M

40.png

Before running the model, it is recommended to check the RKNN3 Toolkit version used by the model.

Run:

Plain
strings Qwen3.5-0.8B.rknn | \
grep -Eai "compiler version|rknn3-toolkit|RK1820"

Confirm the model:

  • The Target Platform is RK1820

  • The RKNN3 Toolkit version is compatible with the current Runtime

If the model version does not match the current Runtime, it is recommended to replace the model or upgrade the RKNN3 Runtime instead of continuing to run the model.

41.png

Run the Qwen3.5-0.8B performance test. Execute:

Plain
sudo rknn3_session_test \
Qwen3.5-0.8B.rknn \
Qwen3.5-0.8B.weight \
Qwen3.5-0.8B.tokenizer.gguf \
Qwen3.5-0.8B.embed.bin \
1024 256 0xff

The main parameters used in this test are:

Plain
Context Length : 1024
Max Output     : 256 Tokens
NPU Core Mask  : 0xff

The parameters are:

Context Length

Plain
1024

indicates the context length used in this test.

Max Output

Plain
256

indicates that this test generates at most 256 Tokens.

NPU Core Mask

Plain
0xff

indicates that all available NPU Cores of the RK1820 are used.

Qwen3.5-0.8B measured results, tested on the reComputer RK3576 Dev Kit + RK1820 AI Accelerator, are as follows:

Detailed test data:

42.png

Test Result Explanation

Prefill indicates the speed at which the model processes the input Prompt.

Measured in this test:

Plain
319.55 tokens/s

Generate indicates the speed at which the model generates text token by token, and is a more important metric for evaluating the actual interactive experience of an LLM.

Measured in this test:

Plain
95.81 tokens/s

The average generation time per token is:

Plain
10.44 ms/token

The test results show that:

Qwen3.5-0.8B runs normally on the RK1820. Under this test configuration, the measured generation speed is about 95.81 tokens/s.

Monitor RK1820 During Inference

While running the model test, you can open another terminal and run:

Plain
sudo rknn-smi info -w

Observe in real time:

Plain
NPU Utilization
Memory Usage
Temperature
Health Status

This allows you to judge the load, memory usage, and temperature status of the RK1820 while the model is running.

Common Issues

MODEL_SETUP fail

If the following appears when running the model:

Plain
MODEL_SETUP fail, ack = ACK_FAIL
rknn3_model_init, recv model setup fail ack

First check the model conversion version:

Plain
strings *.rknn | \
grep -Eai "compiler version|rknn3-toolkit|RK1820"

Then check the current RKNN3 Runtime:

Plain
rknn-smi version

Confirm that the Runtime is compatible with the RKNN3 Toolkit version used during model conversion.

RK1820 Not Recognized

Run:

Plain
lspci -nn

Confirm whether the following exists:

Plain
1d87:182a

Then check the device node:

Plain
ls -l /dev/pcie-rkep-*

Finally check:

Plain
rknn-smi info -l

If lspci all fail to recognize the RK1820, check the M.2 installation and PCIe link first, rather than the RKNN3 Runtime.

RK1820 Status Abnormal

Run:

Plain
sudo rknn-smi info

The normal status should be:

Plain
Online
Health: OK

If the device is offline, you can further check:

Plain
sudo dmesg | grep -Ei "pcie|rkep|182a"

Check the logs related to PCIe and the RK1820 driver.

Test Conclusion

After completing the above configuration, you can use the RK1820 AI Accelerator on the reComputer RK3576 Dev Kit via PCIe.

This test uses Qwen3.5-0.8B for verification:

Plain
Model            : Qwen3.5-0.8B
Prefill Speed    : 300.49 tokens/s
Generate Speed   : 92.89 tokens/s
Time per Token   : 10.77 ms
Result           : PASS

This shows that RK3576 鈫?PCIe 鈫?RK1820 鈫?RKNN3 鈫?Qwen3.5-0.8B the entire LLM inference chain works normally.

HDMI 2.1 Guide

The board has an HDMI 2.1 interface for connecting displays and other video devices, with support for up to 4K at 120 fps.

Note

The actual available resolution and refresh rate depend on the display device, HDMI cable, and system driver. When using 4K@120 Hz, an HDMI 2.1 cable that supports the corresponding bandwidth is recommended.

43.png

In the Armbian Desktop system, you can adjust the HDMI output parameters through the graphical interface or the command line.

Configure via the Graphical Interface

  1. Open Settings from the Armbian desktop.

  2. Open Displays.

  3. Select the connected HDMI display device.

  4. Set the resolution, refresh rate, screen orientation, and scaling ratio.

  5. Click Apply, confirm the display is normal, and then save the settings.

44.png

Configure via the Command Line

First check the current desktop session type:

Plain
echo "$XDG_SESSION_TYPE"

If the output is x11, you can use xrandr to set the HDMI output parameters. Run the following commands in an Armbian desktop terminal as the current user; do not use sudo.

Check the display interfaces and their supported resolutions and refresh rates:

Plain
xrandr --query

If the system reports that the xrandr command cannot be found, run:

Plain
sudo apt update
sudo apt install x11-xserver-utils

The HDMI interface name may be displayed as HDMI-1, HDMI-A-1, or another name. Use the name reported by xrandr --query in the commands below.

For example, set the HDMI output to 4K 60 Hz:

Plain
xrandr --output HDMI-1 --mode 3840x2160 --rate 60

If xrandr --query mode list includes 4K 120 Hz, run:

Plain
xrandr --output HDMI-1 --mode 3840x2160 --rate 120

Set HDMI as the primary monitor:

Plain
xrandr --output HDMI-1 --primary

Turn off the HDMI output:

Plain
xrandr --output HDMI-1 --off

Note:

  • xrandr settings usually take effect only in the current graphical session and may return to their defaults after reboot. To make them persistent, configure them through the graphical display settings.

  • If $XDG_SESSION_TYPE outputs wayland, please use the graphical interface to adjust the display parameters first.

  • If the output is tty, no graphical desktop is running, so neither the graphical settings nor xrandr can be used directly.

  • If the target resolution or refresh rate does not appear in the supported list, check the display specifications, HDMI cable, and system driver.

Ethernet (PoE Supported) Interface Guide

Connect the Ethernet port to access a wired network.

45.png

Get the network address:

Plain
ip -br addr
ip route
nmcli device status

Check the negotiated link speed:

Plain
sudo apt install -y ethtool
sudo ethtool <interface>

Test the network:

Plain
ping -c 4 8.8.8.8
ping -c 4 www.seeedstudio.com

Speed test:

Plain
sudo apt install -y iperf3
iperf3 -c <server_ip>

PoE Usage

The reComputer RK3576 IO Board supports connecting a Raspberry Pi PoE+ HAT, which provides both power and network connectivity through a single Ethernet cable.

PoE power delivery is handled automatically by the PoE+ HAT. No driver installation or additional configuration in Armbian is required.

Install the PoE+ HAT according to the hardware installation instructions, then connect the Ethernet cable.

After the system boots, you can use the following commands to check the network interfaces and IP address:

Plain
ip -br addr

If an IP address is obtained successfully, the Ethernet connection is available.

PoE and DC 12V can be connected to the reComputer RK3576 IO Board at the same time.

When both power sources are connected:

  • Disconnect PoE, and the system will continue to run on DC 12V without restarting.

  • Disconnect DC 12V, and the system will continue to run on PoE without restarting.

This means you can switch the power supply between PoE and DC 12V during use without interrupting the system operation.

Before installing or removing the PoE+ HAT, disconnect all power sources first. It is recommended to use a PoE+ switch or injector that complies with the IEEE 802.3at standard.

MIPI CSI Guide

The reComputer RK3576 IO Board provides two MIPI CSI interfaces, CSI1 and CSI2, which support direct connection of the Raspberry Pi Camera Module 3.

46.png

In the pre-installed Armbian system, Camera Module 3 works without installing additional drivers or configuring the device tree; it is ready to use after proper connection.

Hardware Connection

Do not insert or remove the CSI camera while the device is powered on, to avoid damaging the camera or the IO Board.

Install Tools

Install GStreamer and the camera detection tools:

Plain
sudo apt update
sudo apt install -y \
    v4l-utils \
    gstreamer1.0-tools \
    gstreamer1.0-plugins-base \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-libav

Find the Camera Node

Use the following command to view the camera devices recognized by the system:

Plain
v4l2-ctl --list-devices

You can also view the Media Controller topology:

Plain
media-ctl -d /dev/media2 -p

In the current system image, the default video device nodes are as follows:

The video nodes may change with the system version, camera connection method, or device boot order. If the default nodes are unavailable, confirm the actual video nodes via v4l2-ctl --list-devices and media-ctl.

Take a Photo with CSI1

When the camera is connected to CSI1, run:

Plain
gst-launch-1.0 \
    v4l2src device=/dev/video22 num-buffers=1 ! \
    videoconvert ! \
    jpegenc ! \
    filesink location=test1.jpg

After the photo is taken, it will be saved to the current directory:

Plain
ls -lh test1.jpg

Take a Photo with CSI2

When the camera is connected to CSI2, run:

Plain
gst-launch-1.0 \
    v4l2src device=/dev/video31 num-buffers=1 ! \
    videoconvert ! \
    jpegenc ! \
    filesink location=test2.jpg

View the generated photo:

Plain
ls -lh test2.jpg

47.png

Troubleshooting

If no camera node is found, check:

  1. Whether the camera ribbon cable is fully inserted.

  2. Whether the ribbon cable orientation is correct.

  3. Whether the CSI interface latch is locked.

  4. Whether the camera is connected with the device powered off.

  5. Whether the system recognizes the Camera Module 3:

Plain
dmesg | grep -Ei "imx708|csi|rkisp"

The Raspberry Pi Camera Module 3 uses the IMX708 sensor. If the log contains imx708銆乣rkisp` or related CSI information, the camera has been recognized by the system.

MIPI DSI Guide

The reComputer RK3576 IO Board supports connecting the official Raspberry Pi 7-inch DSI touchscreen. Before use, you need to connect the DSI ribbon cable, short the I虏C jumper, and enable the corresponding device tree overlay in Armbian.

48.png

Hardware Connection

Follow the hardware connection diagram shown above.

The I虏C interface is used for touch controller communication. If this jumper is not shorted, the screen may display images, but the touch function will not work properly.

If you purchased the reComputer RK3576 Module Dev Kit series, the jumper cap is pre-installed, so you don't need to worry about this issue.

49.png

Enable the Device Tree Overlay

To enable the device tree overlay, back up the current configuration file:

Plain
sudo cp /boot/armbianEnv.txt /boot/armbianEnv.txt.bak

Open the configuration file:

Plain
sudo vim /boot/armbianEnv.txt

Set overlay_prefix to:

Plain
overlay_prefix=recomputer-rk3576-ioboard

Add the following overlay:

Plain
overlays=raspi-7inch-touchscreen

After the configuration, the relevant content should be as follows:

Plain
overlay_prefix=recomputer-rk3576-ioboard
overlays=raspi-7inch-touchscreen

If overlays= already has other overlays enabled, separate them with spaces and keep the original content, for example:

Plain
overlays=existing-overlay raspi-7inch-touchscreen

For systems without other overlays enabled, you can also use the following command to complete the configuration quickly:

Plain
sudo sed -i '/^overlay_prefix=/d; /^overlays=/d' /boot/armbianEnv.txt

printf '%s\n' \
    'overlay_prefix=recomputer-rk3576-ioboard' \
    'overlays=raspi-7inch-touchscreen' \
    | sudo tee -a /boot/armbianEnv.txt

Configure the Desktop Display

Create the Xorg configuration directory:

Plain
sudo mkdir -p /etc/X11/xorg.conf.d

Create the DSI display configuration:

Plain
sudo tee /etc/X11/xorg.conf.d/99-dsi.conf > /dev/null <<'EOF'
Section "Device"
    Identifier "DSI"
    Driver "modesetting"
    Option "kmsdev" "/dev/dri/card1"
    Option "DRI" "3"
    Option "AccelMethod" "glamor"
EndSection

Section "Screen"
    Identifier "Screen0"
    Device "DSI"
EndSection

Section "ServerLayout"
    Identifier "Layout"
    Screen 0 "Screen0" 0 0
EndSection
EOF

Reboot the system to make the configuration take effect:

Plain
sudo reboot

Verify Display and Touch

After the system restarts, the DSI screen should display the Armbian desktop and support touch operation.

To confirm whether the touch device is recognized, run:

Plain
sudo apt install -y evtest
sudo evtest

Select the corresponding touch device in the device list, then click or swipe the screen. If the terminal keeps outputting touch coordinates and key events, the touch function works normally.

The current configuration uses /dev/dri/card1 as the DSI display device. If the DRM device number changes after a system upgrade, check it with the following command:

Plain
ls -l /dev/dri/

GPIO Interface Guide

Shell
# Calculation formula: gpionum=(letter_index-1)*8+num
recomputer-rk3576-module:~:# gpioset 0 23=0
recomputer-rk3576-module:~:# gpioset 0 23=1

#Read status
gpioget 0 23
RK3576 gpioHeader NumberHeader NumberRK3576 gpio
VCC3V3_SYS12VCC5V0_SYS
GPIO0_C734VCC5V0_SYS
GPIO0_C656GND
GPIO3_A078UART0_TX_M0_DEBUG
GND910UART0_RX_M0_DEBUG
GPIO4_B4
1112GPIO2_D6
GPIO4_B5
1314
GND
GPIO3_A2
1516
GPIO2_D0
VCC3V3_SYS1718
GPIO2_D1
GPIO2_C21920
GPIO2_C3
2122
GPIO3_A1
GPIO2_C52324GPIO2_C4
2526GPIO2_C1
GPIO4_C7
2728GPIO4_C6
GPIO2_B6
2930GND
GPIO2_B7
3132GPIO2_C0
GPIO0_C4
33
34GND
GPIO2_B5
3536
GPIO3_A3
GPIO2_B4
3738GPIO4_A4
GND
3940GPIO4_A6

40-Pin Header GPIO and Peripheral Reference

The reComputer RK3576 Module Dev Kit provides a Raspberry Pi-compatible 40-pin expansion header. The header can connect external GPIO devices, UART modules, I2C sensors, SPI devices, PWM actuators, and CAN interfaces. Rockchip RK3576 pinctrl multiplexing selects the active function for each pin.

Supported interfaces include:

  • GPIO
  • UART
  • I2C
  • SPI
  • PWM
  • CAN

The following table lists the signal pins and their RK GPIO names. Power and ground pins are shown in the complete pinout table above.

PinFunctionRK GPIO
3GPIOGPIO0_23
5GPIOGPIO0_22
7GPIOGPIO3_96
8UART TX/RXGPIO0_28
10UART RX/TXGPIO0_29
11GPIOGPIO4_140
12GPIOGPIO2_94
13GPIOGPIO4_141
15GPIOGPIO3_98
16GPIOGPIO2_88
18GPIOGPIO2_89
19SPI MOSIGPIO2_82
21SPI MISOGPIO2_83
22GPIOGPIO3_97
23SPI CLKGPIO2_85
24SPI CSGPIO2_84
26GPIOGPIO2_81
27GPIOGPIO4_151
28GPIOGPIO4_150
29GPIOGPIO2_78
31GPIOGPIO2_79
32GPIOGPIO2_80
33GPIOGPIO0_20
35GPIOGPIO2_77
36GPIOGPIO3_99
37GPIOGPIO2_76
38GPIOGPIO4_132
40GPIOGPIO4_134

GPIO Control

Install the Linux GPIO tools:

bash
sudo apt update
sudo apt install gpiod

Inspect GPIO controllers, line names, and current ownership before selecting a line:

bash
gpioinfo
gpioinfo gpiochip0

The gpiochip and line number are image- and kernel-dependent. Use the output of gpioinfo to confirm them rather than assuming that a physical header pin number is a Linux line number.

For example, with a line exposed as line 23 on gpiochip0, connect an LED through a current-limiting resistor:

text
GPIO ---- resistor ---- LED ---- GND

Set the output high and low:

bash
gpioset gpiochip0 23=1
gpioset gpiochip0 23=0

Connect a button between the input and 3.3 V (use an appropriate pull-down or the board's configured pull resistor), then read the line:

text
3.3V
 |
Button
 |
GPIO
bash
gpioget gpiochip0 23

UART Example

To enable UART3, add the overlay to /boot/armbianEnv.txt:

bash
sudo nano /boot/armbianEnv.txt
ini
overlays=recomputer-rk3576-devkit-40pin-uart3

Reboot and check the available serial devices:

bash
sudo reboot
ls /dev/tty*

Send a test string on the UART device exposed by the selected overlay (for example, /dev/ttyS3):

bash
echo "Hello RK3576" > /dev/ttyS3

I2C Example

Enable I2C3 in /boot/armbianEnv.txt:

ini
overlays=recomputer-rk3576-devkit-40pin-i2c3

Install the I2C utilities and scan bus 3 after reboot:

bash
sudo apt install i2c-tools
sudo i2cdetect -y 3

An output row such as the following indicates a device at address 0x50:

text
40: -- -- 50 --

SPI Example

The base RK3576 Module Dev Kit image may enable the 40-pin SPI bus by default. If SPI is not enabled on the installed image, add the matching overlay and reboot:

ini
overlays=rk3576-spi1-m1-spidev

Check for the spidev node and run a basic test:

bash
ls /dev/spidev*
spidev_test -D /dev/spidev1.0

The physical SPI signals share hardware with some onboard expansion interfaces. Check chip-select and bus ownership before attaching another SPI device.

PWM Example

PWM outputs can drive LED dimmers, fans, or servos. Enable the PWM overlay when it is not already enabled:

ini
overlays=recomputer-rk3576-devkit-40pin-pwm2-ch6

After reboot, identify the PWM controller and channel under /sys/class/pwm/, then configure the channel. The following values represent a 20 ms period and a 1.5 ms servo pulse:

bash
ls /sys/class/pwm/
echo 20000000 > period
echo 1500000 > duty_cycle
echo 1 > enable

Run the echo commands from the selected exported pwmchipX/pwmY directory. The exact controller and channel can vary with the kernel device tree.

CAN Example

Enable CAN0 with the 40-pin overlay and reboot:

ini
overlays=recomputer-rk3576-devkit-40pin-can0

Configure the interface at 500 kbit/s, then send and receive a test frame:

bash
sudo ip link set can0 up type can bitrate 500000
cansend can0 123#11223344
candump can0

Pin Multiplexing Notes

The RK3576 uses pin multiplexing. A physical pin can operate as GPIO or as a peripheral signal according to the selected device-tree overlay. Before using a peripheral function:

  1. Enable the corresponding overlay.
  2. Reboot the system.
  3. Confirm that the expected device node exists.
  4. Test it with the corresponding Linux tool.

If a pin is claimed by UART, I2C, SPI, PWM, or another kernel driver, it cannot be used as a normal GPIO until that function is disabled.

Troubleshooting GPIO and Pinmux

Check GPIO ownership:

bash
sudo cat /sys/kernel/debug/gpio

Check enabled overlays:

bash
cat /boot/armbianEnv.txt

Check device-tree pin multiplexing:

bash
cat /sys/kernel/debug/pinctrl/*/pinmux-pins

The 40-pin header follows the Raspberry Pi expansion-header layout, so many Raspberry Pi accessories can be wired to it. RK3576 pin multiplexing is different from Raspberry Pi platforms, however; always verify the pin function table and the selected overlay before connecting a HAT or other accessory.

FAN Guide

The reComputer RK3576 IO Board supports PWM fan control. In Armbian, you can use the Linux hwmon interface to check the fan speed and manually adjust the PWM.

50.png

The hwmon number may change after a system reboot, so do not rely on a fixed value such as hwmon6. The following commands use wildcards to match the fan device automatically.

Check the Fan Speed

Run the following command to check the current fan speed:

Plain
cat /sys/devices/platform/pwm-fan/hwmon/hwmon*/fan1_input

The returned value is in RPM, for example:

Plain
3200

To monitor the speed continuously, run:

Plain
watch -n 1 'cat /sys/devices/platform/pwm-fan/hwmon/hwmon*/fan1_input'

Press Ctrl+C to exit monitoring.

Check the Current PWM Value

Plain
cat /sys/devices/platform/pwm-fan/hwmon/hwmon*/pwm1

The valid PWM range is 0鈥?55.

The PWM ratio and the actual speed are not necessarily linear. The Linux pwm-fan driver specifies that pwm1 ranges from 0鈥?55, where 255 represents the maximum output.

Set the Fan Speed

Stop the fan:

Plain
echo 0 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon*/pwm1

Set to approximately 50% PWM:

Plain
echo 128 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon*/pwm1

Set to maximum PWM:

Plain
echo 255 | sudo tee /sys/devices/platform/pwm-fan/hwmon/hwmon*/pwm1

After setting, you can check the fan speed again:

Plain
cat /sys/devices/platform/pwm-fan/hwmon/hwmon*/fan1_input

Manually set PWM values are not retained permanently after a system reboot. The system will restore the default fan control policy after reboot. During high load, it is not recommended to keep the fan off for a long time, to avoid the processor throttling due to high temperature.

51.png

LED Indicator Status

The reComputer RK3576 IO Board provides power and system status indicator LEDs.

52.png

The system status LED blinking indicates that the Linux kernel has started, but it does not mean all system services or user applications are ready.

Check the LED Device

The system status LED is managed by the Linux LED subsystem. Use the following command to view the LEDs in the system:

Plain
ls /sys/class/leds/

In the current Armbian device tree, the system status LED usually appears as:

Plain
user-led

Check the current trigger mode:

Plain
cat /sys/class/leds/user-led/trigger

In the output, the item enclosed in square brackets represents the current mode, for example:

Plain
none timer default-on [heartbeat]

Manually Control the System Status LED

To use the system status LED for application status indication, you can first turn off the heartbeat trigger:

Plain
echo none | sudo tee /sys/class/leds/user-led/trigger

Turn on the LED:

Plain
echo 1 | sudo tee /sys/class/leds/user-led/brightness

Turn off the LED:

Plain
echo 0 | sudo tee /sys/class/leds/user-led/brightness

Restore the system heartbeat mode:

Plain
echo heartbeat | sudo tee /sys/class/leds/user-led/trigger

The above settings only take effect in the current boot cycle. After a system reboot, the default heartbeat mode configured in the device tree will be restored.

Notes

  • The red power LED only indicates that the board is powered; it cannot be used to determine whether Linux has finished booting.

  • The system status LED can be controlled by applications, but once switched to manual mode, it will no longer show the system heartbeat.

  • It is not recommended to control this indicator via a fixed hwmon or GPIO number; the /sys/class/leds/user-led/ interface should be used instead.

Button Description

The reComputer RK3576 IO Board provides three on-board buttons: PWR, RESET, and MASKROM.

53.png

PWR Button

The PWR button is connected to the power key input. In Linux, it is recognized as rk806 pwrkey, and generates KEY_POWER events when pressed.

Different system environments may configure this event to power off, hibernate, or pop up the power menu.

Install the button test tool:

Plain
sudo apt update
sudo apt install -y evtest

Run the test:

Plain
sudo evtest

In the device list, select:

Plain
rk806 pwrkey

After pressing the PWR button, you can see output similar to:

Plain
Event: type 1 (EV_KEY), code 116 (KEY_POWER), value 1
Event: type 1 (EV_KEY), code 116 (KEY_POWER), value 0

To modify the system behavior after a short press of the PWR button, you can edit the systemd-logind configuration:

Plain
sudo nano /etc/systemd/logind.conf

For example, set the short press action to power off:

Plain
HandlePowerKey=poweroff

Apply the configuration:

Plain
sudo systemctl restart systemd-logind

It is recommended to use sudo poweroff or the desktop system's shutdown function to safely power off the device, avoiding file system or data damage caused by direct power-off.

RESET Button

Pressing the RESET button triggers a hardware reset, and the system will restart immediately.

RESET does not execute the normal Linux shutdown process, so unsaved data may be lost. Under normal conditions, it is recommended to use:

Plain
sudo reboot

Only use the RESET button when the system is unresponsive and cannot be restarted normally through the terminal or SSH.

MASKROM Button

The MASKROM button is used to force the device into Rockchip MaskROM mode. This mode is mainly used in the following situations:

  • The system cannot boot from eMMC or other storage devices

  • Bootloader is corrupted

  • Cannot enter Loader mode normally

  • Need to re-flash the system image

Enter MaskROM Mode

  1. Use a USB-C cable that supports data transfer to connect the IO Board to the host.

  2. Turn off the device power.

  3. Press and hold the MASKROM button.

  4. Turn on the device power.

  5. After the host detects the Rockchip MaskROM device, release the button.

If the device is already powered on, you can also:

  1. Press and hold the MASKROM button.

  2. Briefly press the RESET button once.

  3. Wait for the host to recognize the device, then release the MASKROM button.

On Windows, you can confirm the device status through RKDevTool or RK Driver Assistant:

Plain
Found One MASKROM Device

On a Linux host, you can run:

Plain
lsusb

Check whether a Rockchip USB device appears on the host.

MASKROM is a system recovery function. It is not recommended to use this button for normal application interaction. After entering MaskROM mode, the device will not boot Linux normally; you need to power on again or reset to exit.

USB Interface Guide

The reComputer RK3576 IO Board provides the following USB interfaces:

USB-C supports Host and Device role switching. The actual working mode is determined by the connection direction, cable, and connected device.

54.png

Check USB Devices

After connecting a USB device, run:

Plain
lsusb

View the connection topology and negotiated speed of USB devices:

Plain
lsusb -t

The output is as follows:

Plain
seeed@recomputer-rk3576-module:~$ lsusb -t
/:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 001: Dev 002, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 004: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 004: Dev 003, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M

If a USB 3.0 device only shows as 480M, please check:

  • Whether the device supports USB 3.x

  • Whether the cable supports SuperSpeed

  • Whether the device is connected to a USB 3.0 Type-A interface

  • Whether the USB Hub or adapter supports USB 3.x

View Device Connection Logs

Before inserting the USB device, run:

Plain
sudo dmesg --follow

Then connect the device to view device recognition, driver loading, and error information in real time. Press Ctrl+C to exit.

You can also view the recent USB logs:

Plain
dmesg | grep -i usb

Use USB Storage Devices

After inserting a USB flash drive or external hard drive, check the device node:

Plain
lsblk

Desktop Armbian usually mounts storage devices automatically. You can also mount them manually:

Plain
sudo mkdir -p /mnt/usb
sudo mount /dev/sda1 /mnt/usb

After use, unmount the device first:

Plain
sudo umount /mnt/usb

/dev/sda1 is only an example. Confirm the actual device node via lsblk to avoid operating on the wrong disk.

USB-C OTG

The USB-C interface can work in different roles in different scenarios:

  • Device mode: Connect to the PC for system flashing and Rockchip Loader/MaskROM communication.

  • Host mode: Connect USB peripherals through a suitable USB-C adapter.

  • DP Alt Mode: Connect display devices that support DisplayPort Alt Mode.

For system flashing, use a USB-C cable that supports data transfer. Charging-only cables cannot recognize the device.

For high-power USB peripherals such as external hard drives and AI accelerators, it is recommended to use an independently powered USB Hub to avoid device disconnection or system instability caused by insufficient power.

The on-board interfaces include one USB 3.0 Type-A and two Type-A interfaces expanded through a USB 2.0 Hub; the USB-C is configured as an OTG dual-role interface in the Armbian device tree.

RTC Interface Guide

The reComputer RK3576 IO Board integrates RTC, which continues to keep the date and time after the device loses network connection or power.

The RTC is connected via I虏C, with a default address of:

Plain
0x51

The carrier board provides a CR2032 backup battery holder. After installing the battery, the RTC can continue timing even if DC, PoE, and USB-C power are disconnected.

55.png

Please use a non-rechargeable 3V CR2032 coin cell battery and confirm the battery polarity is correct.

Check the RTC Device

Run the following command to confirm whether the RTC has been recognized by the system:

Plain
ls /dev/rtc*

Check the RTC driver name:

Plain
for rtc in /sys/class/rtc/rtc*; do
    echo "$rtc: $(cat "$rtc/name")"
done

Under normal conditions, you can see the RTC device corresponding to the PCF8563.

Check the kernel recognition log:

Plain
dmesg | grep -i rtc

View the System Time and RTC Time

Check the system time:

Plain
timedatectl

Check the RTC time:

Plain
sudo hwclock --show

If the system reports that hwclock cannot be found, install the related tools:

Plain
sudo apt update
sudo apt install -y util-linux-extra

Write the System Time to the RTC

After the device connects to the network, you can first enable network time synchronization:

Plain
sudo timedatectl set-ntp true

Confirm the system time is correct:

Plain
timedatectl

Then write the system time to the RTC:

Plain
sudo hwclock --systohc --utc

It is recommended that the RTC use UTC time to avoid time deviations caused by time zone or daylight saving time changes:

Plain
sudo timedatectl set-local-rtc 0

Restore the System Time from the RTC

When the device cannot access the network, you can sync the RTC time to the system:

Plain
sudo hwclock --hctosys

Check after syncing:

Plain
date

Set the Time Manually

If the device cannot access the network temporarily, you can set the system time manually first:

Plain
sudo timedatectl set-time "2026-09-10 14:00:00"

Then write it to the RTC:

Plain
sudo hwclock --systohc --utc

Verify the Power-off Retention Function

  1. Confirm that the CR2032 battery is installed correctly.

  2. Write the current system time to the RTC:

Plain
sudo hwclock --systohc --utc
sudo hwclock --show
  1. Power off the device normally:
Plain
sudo poweroff
  1. Disconnect all external power sources such as DC, PoE, and USB-C.

  2. After waiting for a while, reconnect the power.

  3. Check the RTC time again:

Plain
sudo hwclock --show

If the time changes continuously and normally, the RTC backup power supply works correctly.

The RTC only stores time information and cannot continue to power the system after the main power is disconnected. If no battery is installed or the battery is low, the RTC time may be lost after the device is fully powered off.

The PCF8563 and CR2032 battery interface can be confirmed in the RK3576 IO Board schematic; the PCF8563 has been enabled in the default Armbian device tree, so no additional overlay configuration is usually needed.

Audio

The reComputer RK3576 IO Board integrates the ES8311 audio codec, and provides a 3.5 mm audio interface that supports:

  • Stereo audio output

  • Analog microphone input

  • Headphone plug detection

  • HDMI and USB-C DisplayPort digital audio output

When using a regular 3-segment headphone, only audio output is supported; for recording, use a 4-segment headset with a microphone.

56.png

Check Audio Devices

Install ALSA audio tools:

Plain
sudo apt update
sudo apt install -y alsa-utils

List all sound cards:

Plain
cat /proc/asound/cards

Check the playback and recording devices separately:

Plain
aplay -l
arecord -l

Under normal conditions, you can see devices like:

Plain
rockchip-es8311
rockchip-hdmi0
rockchip-dp0

Note:

The ALSA sound card number may change with connected USB, HDMI, or other audio devices. Confirm the actual number via aplay -l and arecord -l.

Test Audio Playback

The following example assumes that ES8311 is card 0, device 0. If the device number is different, replace 0,0 with the correct card and device numbers.

Use the test tone to play the left and right channels:

Plain
speaker-test -D plughw:0,0 -c 2 -t wav

Press Ctrl+C to stop the test.

Play a WAV file:

Plain
aplay -D plughw:0,0 test.wav

To play an MP3 file:

Plain
sudo apt install -y mpg123
mpg123 -a hw:0,0 test.mp3

Test Microphone Recording

Connect a 3.5 mm headset with a microphone, then record a 5-second audio clip:

Plain
arecord -D plughw:0,0 \
    -d 5 \
    -f S16_LE \
    -r 48000 \
    -c 2 \
    recording.wav

Play back the recording:

Plain
aplay -D plughw:0,0 recording.wav

You can also perform a real-time record and playback test:

Plain
arecord -D plughw:0,0 -f cd |
    aplay -D plughw:0,0 -f cd

It is recommended to use headphones during the test to avoid squealing between the speaker and the microphone.

Adjust the Volume

Run ALSA Mixer:

Plain
alsamixer

In the interface:

  1. Press F6 to select rockchip-es8311.

  2. Use the left and right arrow keys to select the audio control item.

  3. Use the up and down arrow keys to adjust the volume.

  4. Press M to toggle the mute state.

  5. Press Esc to exit.

Make sure the following output or input channels are not muted:

Plain
Headphone
DAC
ADC
MIC PGA

Save the current settings:

Plain
sudo alsactl store

Restore the saved settings:

Plain
sudo alsactl restore

Select the System Default Audio Device

In the Armbian desktop environment, you can select the 3.5 mm, HDMI, or DisplayPort audio device through the volume icon.

View the PipeWire/PulseAudio audio devices in the terminal:

Plain
pactl list short sinks
pactl list short sources

Set the default output device:

Plain
pactl set-default-sink <sink_name>

Set the default input device:

Plain
pactl set-default-source <source_name>

Replace <sink_name> and <source_name> with the actual names shown by the previous command.

Common Issues

No sound from the 3.5 mm headphone

First confirm that the system has selected ES8311, not HDMI or DisplayPort:

Plain
aplay -l
pactl list short sinks

Then check the mute state in the Mixer:

Plain
alsamixer

If there is no sound at boot with an older test image, refer to the ES8311 playback configuration script in the project.

No input from the microphone recording

Confirm that you are using a 4-segment headset with a microphone, and check the recording device:

Plain
arecord -l

Enter the Mixer and check ADC銆乣MIC PGA` and the input channels:

Plain
alsamixer

If an older test image records empty data, refer to the ES8311 recording configuration script.

Popping or noise occurs

  • Confirm that the headphone plug is fully inserted.

  • Avoid using adapter cables with poor contact.

  • Lower the headphone output and microphone gain.

  • When recording, avoid keeping the microphone too close to the headphones.

  • Use the plughw device so that ALSA automatically performs sample rate and format conversion.