8.1 Hardware, System, and Environment Configuration
Many issues can be resolved by updating the system. For related download resources, see: Download Resources
For certified accessories and purchase links, see the RDK S100 Certified Accessories List
Q1: What is the D-Robotics RDK Kit?
A: D-Robotics Developer Kits, abbreviated as the D-Robotics RDK Kit, are robot developer kits built on D-Robotics intelligent chips.
Q2: How do I check the system version on an RDK board?
A: After logging in to the RDK board system, you can use the following commands:
-
Check the major system version:
cat /etc/versionFor example, the output may be
2.0.0orx3_ubuntu_v1.1.6. -
Check installed D-Robotics core package versions:
apt list --installed | grep hobotOr use the
rdkos_infocommand (for newer system versions such as 2.1.0 and later):rdkos_infoSample output (RDK OS 2.x, e.g., 2.0.0):
root@ubuntu:~# apt list --installed | grep hobot
hobot-boot/unknown,now 2.0.0-20230530181103 arm64 [installed]
hobot-bpu-drivers/unknown,now 2.0.0-20230530181103 arm64 [installed]
# ... other hobot-* packages
root@ubuntu:~# cat /etc/version
2.0.0Sample output (RDK OS 1.x, e.g., 1.1.6):
root@ubuntu:~# apt list --installed | grep hobot
hobot-arm64-boot/unknown,now 1.1.6 arm64 [installed]
# ... other hobot-arm64-* packages
root@ubuntu:~# cat /etc/version
x3_ubuntu_v1.1.6
Q3: What is the relationship between RDK OS versions and hardware platforms?
A:
- RDK OS 2.x and newer (e.g., 2.0.0, 2.1.0, 3.0.x):
- Built from the D-Robotics Linux open-source codebase.
- Typically supports RDK hardware for the corresponding chip; confirm compatibility for your system version and board model.
- RDK OS 1.x:
- Built on a closed-source Linux system; a legacy release.
- Mainly supports early RDK hardware and is no longer the current mainline.
Important notes:
- Version upgrade: RDK OS 1.x cannot be upgraded directly to 2.x or newer via
apt. To upgrade, you must re-flash a new system image and install the operating system again. - TROS compatibility: Different major TROS releases (e.g., Foxy-based and Humble-based TROS) are usually tied to specific RDK OS major versions. For example, RDK OS 2.x typically ships with TROS based on ROS 2 Foxy, while RDK OS 3.x typically ships with TROS based on ROS 2 Humble.
Q4: What precautions apply when connecting or disconnecting a camera?
A: Never connect or disconnect a camera while the board is powered on, as this can easily damage the camera module or the board connector. Always disconnect all power from the board before connecting or removing a camera.
Q5: The board fails to boot, shows no display after power-on, or reboots repeatedly. What are possible causes and how do I troubleshoot?
A: These issues are usually related to power supply, boot media (SD card/eMMC), or hardware connections.
-
Insufficient or unstable power supply:
-
Symptoms: The system reboots without clear error logs while U-Boot loads the kernel or early in kernel boot; abnormal status LEDs or a completely black HDMI display.
-
Troubleshooting and fixes:
- Use a power adapter that meets board requirements (QC/PD 5V/3A or higher is recommended).
- Do not power the board from a PC USB port.
- Use a reliable USB Type-C power cable.
- Refer to the accessory list in this documentation site and choose a power adapter that meets official recommendations.
-
-
Boot media issues (Micro SD card/eMMC):
-
Symptoms: Serial logs show failure to mount the filesystem, missing partitions, or MMC/SD initialization errors/timeouts.
-
Troubleshooting and fixes:
- Confirm the SD card image was flashed correctly and completely.
- Try re-flashing the system image.
- Replace with a new, reliable high-speed Micro SD card.
- Clean the SD card slot and contacts.
-
-
Serial port accidentally enters U-Boot:
- Symptoms: Boot stops at the U-Boot command line (e.g.,
hobot>). - Troubleshooting and fixes: Unexpected input on the debug serial port during power-on may interrupt auto-boot. Try disconnecting the serial cable and powering on again. At the U-Boot prompt, try typing
bootand pressing Enter.
- Symptoms: Boot stops at the U-Boot command line (e.g.,
-
Other hardware issues or peripheral conflicts:
- If the above checks pass, remove non-essential peripherals (USB devices, expansion boards, etc.) and try booting again.
- In rare cases, the board itself may be faulty.
-
Detailed guide: See the forum post Board Boot Failure Troubleshooting Guide. Connecting the debug serial port and capturing the full boot log is essential for diagnosis.
Q6: How do I handle apt update failures or errors?
Common error types
- GPG key verification failure or expiration
- Repository hostname cannot be resolved
- Lock file held by another process
- Network connectivity issues
Troubleshooting and resolution
1. Repository domain change or GPG key issues
Typical error messages:
Clearsigned file isn't valid, got 'NOSPLIT'The repository '...' is no longer signed.Could not resolve 'archive.sunrisepi.tech'(or other legacy hostnames)The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ...
Cause: The D-Robotics official APT repository hostname or GPG signing key has changed, leaving local configuration outdated.
Resolution steps:
-
Check current repository configuration
cat /etc/apt/sources.list.d/sunrise.listCorrect configuration should look like:
deb [signed-by=/usr/share/keyrings/sunrise.gpg] http://archive.d-robotics.cc/ubuntu-rdk-s100 jammy main #RDK S100 -
Update hostname configuration
If you find legacy hostnames (such as
archive.sunrisepi.techorsunrise.horizon.cc), update them:# Replace legacy hostname with the new one
sudo sed -i 's/archive.sunrisepi.tech/archive.d-robotics.cc/g' /etc/apt/sources.list.d/sunrise.list
sudo sed -i 's/old-domain-name/archive.d-robotics.cc/g' /etc/apt/sources.list.d/sunrise.list -
Switch from beta to release repository As of 2025-07-14, the RDK S100 release repository was not yet published.
If you use the beta repository (with a
-betasuffix), switch to the release repository:sudo sed -i 's/ubuntu-rdk-s100-beta/ubuntu-rdk-s100/g' /etc/apt/sources.list.d/sunrise.list -
Update the GPG key
sudo wget -O /usr/share/keyrings/sunrise.gpg http://archive.d-robotics.cc/keys/sunrise.gpg -
Refresh package lists again
sudo apt update
2. APT lock file held
- Example error:
E: Could not get lock /var/lib/apt/lists/lock. It is held by process XXXX (apt-get)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to lock directory /var/lib/apt/lists/ - Cause: A background update/install may be running, or a previous apt operation did not finish cleanly and left locks in place.
- Resolution:
- Wait: Background tasks may finish on their own; wait a moment and retry.
- Kill the holding process: If the lock persists, kill the process ID shown in the error (e.g.,
XXXXin the example):sudo kill XXXX - Remove lock files (⚠️ use with caution): After confirming no apt or dpkg process is running, you may remove lock files. This can damage your package manager; proceed carefully.
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a # Try to fix incomplete package configuration - Run
sudo apt updateagain.
3. ROS 2 GPG key issues
Typical error messages:
W: GPG error: http://packages.ros.org/ros2/ubuntu jammy InReleaase: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654
E: The repository 'http://packages.ros.org/ros2/ubuntu jammy InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Cause: The ROS 2 official repository GPG signing key was updated, leaving local configuration outdated.
Resolution steps:
-
Update the GPG key
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null -
Refresh package lists again
sudo apt update
Q7: How do I configure an RDK application to start on boot?
A: There are two main approaches:
-
Via
/etc/rc.local(legacy): Edit this file (create it or enablerc-local.servicefrom a template if missing) and add commands beforeexit 0. Ensure the script is executable.#!/bin/bash -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Example: Start your application in the background
# /usr/bin/python3 /home/sunrise/my_app.py &
# Insert what you need before this line
exit 0 -
Via a
systemdservice (modern, recommended): Create a.servicefile (e.g.,/etc/systemd/system/myapp.service) defining the start command, dependencies, user, restart policy, and so on. Examplemyapp.servicefile:[Unit]
Description=My Application Service
After=network.target multi-user.target
[Service]
User=sunrise
ExecStart=/usr/bin/python3 /home/sunrise/my_app.py
Restart=on-failure
# StandardOutput=append:/var/log/myapp_stdout.log
# StandardError=append:/var/log/myapp_stderr.log
[Install]
WantedBy=multi-user.targetThen enable and start the service:
sudo systemctl daemon-reload # After creating or editing the service file
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
# Check status: sudo systemctl status myapp.service
# View logs (if configured): journalctl -u myapp.service
Autostart notes:
- Ensure script/program paths are correct and executable.
- Handle dependencies (network, hardware init) and environment variables.
- For GUI apps, set
DISPLAYcorrectly and ensure the X server is running. - Redirect application output to log files to debug failed autostart.
Q8: What are the default login credentials?
A: Boards typically ship with these default accounts:
- Regular user: username
sunrise, passwordsunrise - Superuser (root): username
root, passwordroot(Default credentials may vary by image version and source; check the release notes for your image.)
Q9: How do I mount an NTFS USB drive or disk on an RDK board with read/write access?
A: Ubuntu may provide incomplete or read-only NTFS write support by default. Install the ntfs-3g package for full read/write access:
- Install
ntfs-3g:sudo apt update
sudo apt -y install ntfs-3g - Mount the NTFS partition:
After installation, use
mount. The system usually selects thentfs-3gdriver automatically for read/write access.- First, create a mount point (if needed):
sudo mkdir /mnt/my_ntfs_disk - Mount the device (assuming
/dev/sda1; adjust for your setup):sudo mount /dev/sda1 /mnt/my_ntfs_disk
# Or specify type explicitly (usually unnecessary)
# sudo mount -t ntfs-3g /dev/sda1 /mnt/my_ntfs_disk
/mnt/my_ntfs_disk. - First, create a mount point (if needed):
Q10: Can I install VS Code locally on an RDK board? How do I use VS Code on a PC to connect remotely?
A:
- Local VS Code: As embedded ARM devices, RDK boards generally do not support running the full VS Code desktop application locally. Official VS Code builds target x86_64 desktops.
- Remote development (recommended):
Install VS Code on your PC (Windows, macOS, or Linux) and use the Remote - SSH extension to connect to the RDK board. You get the full VS Code experience on the PC while build, run, and debug execute on the board.
Overview:
- Install the "Remote - SSH" extension in VS Code on your PC.
- Ensure the PC and RDK board are on the same LAN and SSH is enabled and reachable on the board.
- Configure SSH in VS Code (typically
ssh user@board-ip). - After connecting, open folders on the RDK board directly in VS Code.
Q11: How do I enable and use ADB (Android Debug Bridge) on an RDK board?
A: RDK Ubuntu images often include adbd (ADB daemon), but USB mode and configuration may need adjustment for ADB.
- Verify
adbd: Check whether the service is running or has a startup script. - USB mode: The Type-C or OTG/Device USB port may need USB Device mode (not Host) for PC ADB recognition. Configure via
srpi-config, device tree, or kernel parameters. - PC setup: Install ADB (Android SDK Platform Tools) on your computer.
- Connect: Link the PC to the board USB port configured as Device mode.
- Verify: Run
adb deviceson the PC. A correctly configured board should appear in the list. - Usage: Use
adb shellfor a terminal,adb push <local-file> <board-path>to upload,adb pull <board-file> <local-path>to download, and so on.
Note: Steps vary by RDK model and OS version. See official ADB documentation for your board. Bootloader update guides may also mention ADB prerequisites. Reference (may focus on bootloader updates but relates to ADB): Bootloader image update (see ADB-specific documentation when available).
Q12: What are common ways to transfer files between the board and a PC?
A: Common transfer methods include:
-
SCP (Secure Copy Protocol) — over SSH:
- Copy from PC to board:
# Copy a single file
scp /path/to/local_file sunrise@<board-ip>:/path/on/rdk/
# Copy a folder (use -r)
scp -r /path/to/local_folder sunrise@<board-ip>:/path/on/rdk/ - Copy from board to PC:
scp sunrise@<board-ip>:/path/on/rdk/remote_file /path/to/local_destination/
scp -r sunrise@<board-ip>:/path/on/rdk/remote_folder /path/to/local_destination/
The PC needs an SCP client (built in on Linux/macOS; WinSCP, MobaXterm, or Git Bash on Windows).
- Copy from PC to board:
-
SFTP (SSH File Transfer Protocol) — over SSH: Clients such as FileZilla and WinSCP support SFTP with a graphical UI. Select SFTP and use SSH credentials and the board IP.
-
USB storage (flash drive/external disk):
- Format media as FAT32, exFAT, or NTFS (with
ntfs-3ginstalled). - Copy files on the PC, then plug the drive into a USB Host port on the board.
- Mount on the board (
sudo mount /dev/sda1 /mnt/usb_disk— device node may vary), then access files.
- Format media as FAT32, exFAT, or NTFS (with
-
ADB (Android Debug Bridge) — if configured:
- Push from PC to board:
adb push C:\local\path\file.txt /remote/path/on/rdk/ - Pull from board to PC:
adb pull /remote/path/on/rdk/file.txt C:\local\path\
- Push from PC to board:
-
Network shares (Samba, NFS): Configure Samba or NFS on the board to share directories on the LAN. Setup is more involved.
-
Python HTTP server (quick small-file sharing): To let a PC download files from a directory on the board, start a simple HTTP server there:
# On the board, enter the directory to share
cd /path/to/share
python3 -m http.server 8000Then open
http://<board-ip>:8000in a browser on the PC to list and download files.
Choose based on file size, frequency, and network. For code and config sync during development, SCP/SFTP or VS Code Remote-SSH is usually most convenient.
Q13: The desktop goes black during apt upgrade. What should I do?
A: Run updates from a serial or SSH text-only session (e.g., sudo apt update && sudo apt upgrade). Updating from a desktop terminal can interrupt the display or restart the X server when desktop packages upgrade, causing a black screen.