8.1 硬件、系统与环境配置
许多问题可通过系统更新解决,相关下载资源请参考:下载资源汇总
认证配件及购买链接请参考RDK S100 认证配件清单
认证配件及购买链接请参考RDK S600 认证配件清单
Q1: 什么是 D-Robotics RDK 套件?
A: D-Robotics Developer Kits,简称D-Robotics RDK套件,是基于 D-Robotics 智能芯片打造的机器人开发者套件。
Q2: 如何查看 RDK 板卡的系统版本号?
A: 登录到 RDK 板卡的系统后,您可以使用以下命令:
-
查看系统大版本号:
cat /etc/version例如,输出可能是
2.0.0或x3_ubuntu_v1.1.6。 -
查看已安装的地瓜核心功能包版本:
apt list --installed | grep hobot或者使用
rdkos_info命令(适用于较新的系统版本,如2.1.0及以后):rdkos_info示例输出 (RDK OS 2.x 版本,如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]
# ... 其他 hobot-* 包
root@ubuntu:~# cat /etc/version
2.0.0示例输出 (RDK OS 1.x 版本,如1.1.6):
root@ubuntu:~# apt list --installed | grep hobot
hobot-arm64-boot/unknown,now 1.1.6 arm64 [installed]
# ... 其他 hobot-arm64-* 包
root@ubuntu:~# cat /etc/version
x3_ubuntu_v1.1.6
Q3: 不同 RDK OS 系统版本和硬件平台之间有什么对应关系?
A:
- RDK OS 2.x 及更新版本系统 (如2.0.0, 2.1.0, 3.0.x):
- 基于 D-Robotics Linux 开源代码包制作。
- 通常支持对应芯片的 RDK 系列硬件,请根据实际系统版本与板卡型号确认。
- RDK OS 1.x 版本系统:
- 基于闭源 Linux 系统制作,属于历史版本。
- 主要支持早期 RDK 硬件,已不作为当前主线版本。
重要注意事项:
- 版本升级: 1.x 版本系统无法通过
apt命令直接升级到2.x 或更新版本的系统。如需升级,必须通过烧录新版本系统镜像的方式重新安装操作系统。 - TROS 兼容性: 不同大版本的 TROS(如基于 Foxy 的 TROS 和基于 Humble 的 TROS)通常与特定的 RDK OS 大版本绑定。 例如,RDK OS 2.x 通常搭载基于 ROS2 Foxy 的 TROS,而 RDK OS 3.x 通常搭载基于 ROS2 Humble 的 TROS。
Q4: 摄像头插拔有什么注意事项?
A: 严禁在开发板未断电的情况下插拔摄像头,否则非常容易烧坏摄像头模组或主板接口。 请务必在断开开发板所有电源后,再进行摄像头的连接或移除操作。
Q5: 开发板启动异常、上电后无任何显示或反复重启,可能是什么原因?如何排查?
A: 这类问题通常与供电、启动介质(SD 卡/eMMC)或硬件连接有关。
-
供电不足或不稳定:
-
现象: 系统在 U-Boot 加载内核时或内核启动初期无明显错误日志就直接重启;状态灯异常或 HDMI 完全黑屏。
-
排查与解决:
- 确保使用符合开发板要求的电源适配器(建议使用支持 QC/PD 的5V/3A 或更高规格适配器)。
- 禁止使用 PC 的 USB 接口为开发板供电。
- 使用质量可靠的 USB Type-C 供电线。
- 参考当前文档站内的基础配件清单,选择官方建议规格的电源适配器。
-
-
启动介质问题 (Micro SD 卡/eMMC):
-
现象: 串口日志提示无法挂载文件系统、找不到分区、MMC/SD 卡初始化错误或超时。
-
排查与解决:
- 确认 SD 卡镜像是否已正确、完整地烧录。
- 尝试重新烧录系统镜像。
- 更换一张新的、质量可靠的高速 Micro SD 卡。
- 清洁 SD 卡槽和 SD 卡金手指。
-
-
串口误触进入 U-Boot:
- 现象: 系统启动后停留在 U-Boot 命令行界面(如
hobot>)。 - 排查与解决: 可能是上电时调试串口有非预期输入。尝试拔掉串口线后重新给设备上电。如果在 U-Boot 命令行,可以尝试输入
boot命令并回车。
- 现象: 系统启动后停留在 U-Boot 命令行界面(如
-
其他硬件问题或外设冲突:
- 如果以上都已排除,移除所有非必要外设(USB 设备、扩展板等)再尝试启动。
- 极端情况下可能存在板卡本身硬件故障。
-
详细排查指南: 请参考官方论坛的板卡无法启动问题定位指南。连接调试串口并记录完整的启动日志对于问题定位至关重要。
Q6: apt update 命令执行失败或报错如何处理?
常见报错类型
- 密钥验证失败或过期
- 软件源域名无法解析
- 锁文件被占用
- 网络连接问题
问题排查与解决
1. 软件源域名变更或 GPG 密钥问题
典型报错信息:
Clearsigned file isn't valid, got 'NOSPLIT'The repository '...' is no longer signed.Could not resolve 'archive.sunrisepi.tech'(或其他旧域名)The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ...
原因分析: 地瓜机器人官方软件源域名或 GPG 签名密钥发生变更,导致本地配置过期。
解决步骤:
-
检查当前源配置
cat /etc/apt/sources.list.d/sunrise.list正确的配置应类似:
deb [signed-by=/usr/share/keyrings/sunrise.gpg] http://archive.d-robotics.cc/ubuntu-rdk-s100 jammy main #RDK S100 -
更新域名配置
如果发现旧域名(如
archive.sunrisepi.tech或sunrise.horizon.cc等),需要更新:# 替换旧域名为新域名
sudo sed -i 's/archive.sunrisepi.tech/archive.d-robotics.cc/g' /etc/apt/sources.list.d/sunrise.list
sudo sed -i 's/旧域名/archive.d-robotics.cc/g' /etc/apt/sources.list.d/sunrise.list -
切换测试版到正式版 截至 25-7-14,RDK S100 的正式版源尚未发布。
如果使用测试版源(包含
-beta后缀),需要切换到正式版:sudo sed -i 's/ubuntu-rdk-s100-beta/ubuntu-rdk-s100/g' /etc/apt/sources.list.d/sunrise.list -
更新 GPG 密钥
sudo wget -O /usr/share/keyrings/sunrise.gpg http://archive.d-robotics.cc/keys/sunrise.gpg -
重新更新软件包列表
sudo apt update
2. APT 锁文件被占用
- 报错示例:
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/ - 原因: 系统可能正在后台自动运行更新检查或安装任务,或者上一次 apt 操作未正常结束导致锁文件未被释放。
- 解决方法:
- 等待: 有时后台进程会自动完成,请稍等片刻再试。
- 杀死占用进程: 如果长时间被占用,可以尝试杀死持有锁的进程(报错信息中通常会提示进程 ID,如示例中的
XXXX):sudo kill XXXX - 清理锁文件(⚠️ 谨慎操作): 在确认没有 apt 或 dpkg 进程正在运行后,可以尝试移除相关的锁文件。此操作有一定风险,可能破坏您的包管理系统,请务必谨慎。
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 # 尝试修复任何未完成的包配置 - 再次尝试
sudo apt update。
3. ROS2 GPG 密钥问题
典型报错信息:
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.
原因分析: ROS2官方软件源 GPG 签名密钥更新,导致本地配置过期。
解决步骤:
-
更新 GPG 密钥
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo tee /usr/share/keyrings/ros-archive-keyring.gpg > /dev/null -
重新更新软件包列表
sudo apt update
Q7: 如何为 RDK 应用设置开机自启动?
A: 主要有两种方式:
-
通过
/etc/rc.local文件 (传统方式): 编辑该文件 (如果不存在,可能需要手动创建或从模板配置并启用rc-local.service),在exit 0语句之前加入您要执行的命令。确保脚本具有可执行权限。#!/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 -
通过
systemd服务(现代、推荐方式): 创建一个.service配置文件(例如/etc/systemd/system/myapp.service),定义服务的启动命令、依赖关系、运行用户、重启策略等。 示例myapp.service文件:[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.target然后使用以下命令启用并启动服务:
sudo systemctl daemon-reload # 如果新建或修改了service文件
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
# 查看服务状态: sudo systemctl status myapp.service
# 查看服务日志 (如果配置了): journalctl -u myapp.service
自启动注意事项:
- 确保脚本或程序的路径正确,并且具有执行权限。
- 处理好依赖项(如网络、特定硬件初始化完成)和环境变量。
- 如果应用需要图形界面 ,确保
DISPLAY环境变量已正确设置,并且 X Server 已运行。 - 建议将应用的输出重定向到日志文件,以便排查自启动失败的原因。
Q8: 开发板的默认登录账户和密码是什么?
A: 开发板通常默认支持以下两种账户:
- 普通用户: 用户名
sunrise,密码sunrise - 超级用户 (root): 用户名
root,密码root(请注意,具体默认账户和密码可能因您烧录的系统镜像版本和来源略有不同,建议查阅该镜像的发行说明。)
Q9: 如何在 RDK 板卡上挂载 NTFS 文件系统的 U 盘或硬盘并支持读写?
A: Ubuntu 系统默认对 NTFS 文件系统的写入支持可能不完整或仅为只读。为了获得完整的 NTFS 读写支持,需要安装 ntfs-3g 软件包:
- 安装
ntfs-3g:sudo apt update
sudo apt -y install ntfs-3g - 挂载 NTFS 分区:
安装完成后,再使用
mount命令挂载 NTFS 分区。通常,系统会自动使用ntfs-3g驱动进行挂载,从而支持读写。- 首先,创建一个挂载点目录(如果尚未创建):
sudo mkdir /mnt/my_ntfs_disk - 然后挂载设备(假设 NTFS 分区是
/dev/sda1,请根据实际情况替换):sudo mount /dev/sda1 /mnt/my_ntfs_disk
# 或者显式指定类型 (通常不需要,系统会自动识别)
# sudo mount -t ntfs-3g /dev/sda1 /mnt/my_ntfs_disk
/mnt/my_ntfs_disk目录下对 NTFS 分区进行读写操作了。 - 首先,创建一个挂载点目录(如果尚未创建):
Q10: RDK 开发板是否支持本地安装 VS Code?如何在 PC 上使用 VS Code 远程连接开发板?
A:
- 本地安装 VS Code: RDK 开发板作为嵌入式 ARM 架构设备,通常不直接支持在其上本地安装并运行完整版的 VS Code 桌面应用程序。VS Code 官方主要提供 x86_64架构的桌面版。
- 远程开发 (推荐方式):
强烈推荐在您的 PC(Windows, macOS, 或 Linux)上安装 VS Code,并利用其强大的 Remote - SSH 扩展插件来远程连接到 RDK 开发板。通过这种方式,您可以在 PC 上享受完整的 VS Code 体验(包括代码编辑、智能提示、调试器前端等),而实际的代码编译、运行和调试则在 RDK 板卡上执行。
步骤概述:
- 在 PC 上的 VS Code 中安装 "Remote - SSH" 扩展。
- 确保您的 PC 和 RDK 板卡在同一局域网内,并且 RDK 板卡上的 SSH 服务已启动且网络可达。
- 在 VS Code 中配置 SSH 连接到 RDK 板卡(通常是
ssh 用户名@板卡IP地址)。 - 连接成功后,您可以直接在 VS Code 中打开 RDK 板卡上的文件夹进 行开发。
Q11: RDK 开发板如何启用和使用 ADB (Android Debug Bridge) 调试功能?
A: RDK 的 Ubuntu 系统中通常默认已经编译并可能启动了 adbd (ADB 守护进程) 服务,但其默认配置和 USB 接口的功能模式可能需要调整才能用于 ADB 连接。
- 确认
adbd服务: 检查服务是否运行,或是否有启动脚本。 - USB 接口模式: RDK 板卡的 USB Type-C 口或特定的 Micro USB 口(通常标有 OTG 或 Device 功能)可能需要被配置为 USB Device 模式(而不是 Host 模式)才能被 PC 识别为 ADB 设备。这有时可以通过
srpi-config工具或修改设备树/内核参数来配置。 - PC 端准备: 在您的电脑上安装 ADB 工具包(通常作为 Android SDK Platform Tools 的一部分提供)。
- 连接: 使用 USB 线将 PC 与 RDK 板卡上配置为 Device 模式的 USB 口连接。
- 验证: 在 PC 的命令行/终端中执行
adb devices。如果一切配置正确,您应该能看到列出的 RDK 设备。 - 使用: 一旦连接成功,您就可以使用
adb shell访问板卡终端,adb push <本地文件> <板卡路径>上传文件,adb pull <板卡文件> <本地路径>下载文件等。
注意: 具体的启用步 骤可能因 RDK 型号和系统版本而异。请务必查阅对应板卡和系统版本的官方文档中关于 ADB 功能配置的详细说明。有时,官方提供的 bootloader 更新教程中也可能包含 ADB 的配置或使用前提。
参考 (来自原始文档,可能主要关于 bootloader 更新,但可间接涉及 ADB 环境):bootloader镜像更新 (建议查找更专注于 ADB 配置的官方文档或社区帖子)。
Q12: 开发板和电脑之间的文件传输有哪些常用方式?
A: 有多种方式可以在 RDK 开发板和电脑之间传输文件:
-
SCP (Secure Copy Protocol) - 基于 SSH:
- 从电脑拷贝文件到开发板:
# 拷贝单个文件
scp /path/to/local_file sunrise@<开发板IP地址>:/path/on/rdk/
# 拷贝整个文件夹 (使用 -r 选项)
scp -r /path/to/local_folder sunrise@<开发板IP地址>:/path/on/rdk/ - 从开发板拷贝文件到电脑:
scp sunrise@<开发板IP地址>:/path/on/rdk/remote_file /path/to/local_destination/
scp -r sunrise@<开发板IP地址>:/path/on/rdk/remote_folder /path/to/local_destination/
需要电脑端有 SCP 客户端(Linux/macOS 自带,Windows 可用 WinSCP、MobaXterm 或 Git Bash 中的 scp)。
- 从电脑拷贝文件到开发板:
-
SFTP (SSH File Transfer Protocol) - 基于 SSH: 许多 FTP 客户端软件(如 FileZilla, WinSCP)支持 SFTP 协议,可以提供图形化的文件传输界面。连接时选择 SFTP 协议,并使用 SSH 的用户名、密码和 IP 地址。
-
USB 存储设备 (U 盘/移动硬盘):
- 将 U 盘等格式化为开发板支持的文件系统(如 FAT32, exFAT, 或安装了
ntfs-3g后的 NTFS)。 - 在电脑上存入文件,然后将 U 盘插入开发板的 USB Host 口。
- 在开发板上挂载 U 盘 (
sudo mount /dev/sda1 /mnt/usb_disk- 设备节点可能变化),然后进行文件操作。
- 将 U 盘等格式化为开发板支持的文件系统(如 FAT32, exFAT, 或安装了
-
ADB (Android Debug Bridge) - 如果已配置并连接:
- 从电脑推送文件到开发板:
adb push C:\local\path\file.txt /remote/path/on/rdk/ - 从开发板拉取文件到电脑:
adb pull /remote/path/on/rdk/file.txt C:\local\path\
- 从电脑推送文件到开发板:
-
网络共享服务 (如 Samba, NFS): 可以在开发板上配置 Samba 或 NFS 服务,将特定目录共享到局域网,然后在电脑上像访问网络驱动器一样访问这些文件。配置相对复杂一些。
-
Python HTTP 服务器 (临时小文件共享): 如果在开发板的某个目录下有想让电脑下载的文件,可以在该目录下快速启动一个 HTTP 服务器:
# 在开发板上,进入要共享的目录
cd /path/to/share
python3 -m http.server 8000然后在电脑的浏览器中访问
http://<开发板IP地址>:8000即可看到文件列表并下载。
选择哪种方式取决于文件大小、传输频率、网络环境以及个人偏好。对于开发过程中的代码和配置文件同步,SCP/SFTP 或 VS Code 的 Remote-SSH 内置的文件同步功能通常最为便捷。
Q13: 系统执行 apt upgrade 时桌面环境黑屏怎么办?
A: 建议通过串口终端或 SSH 远程登录后,在纯字符界面的终端中执行系统更新命令(如 sudo apt update && sudo apt upgrade)。直接在图形桌面的终端中更新,有时在升级桌面自身相关的包时可能会导致显示中断或 X Server 重启,从而造成黑屏现象。
Q14: 为什么 SD 卡插上去能启动,但是拔下来后下次就启动不了了?
A: 这取决于您的 RDK 板卡型号和启动方式:
请确认您的板卡型号和当 前的启动介质设置。
Q15: RDK OS 的 Server 版能直接升级为 Desktop 版吗?
A: RDK OS 的 Server 版和 Desktop 版在预装的软件包上存在显著差异,最主要的是 Desktop 版包含了图形用户界面(如 XFCE 桌面环境)及其相关组件,而 Server 版通常不包含这些,以节省资源。
- 理论上: 您可以通过在 Server 版系统上手动安装所有 Desktop 版所需的软件包(如
xserver-xorg,xfce4,lightdm等以及它们的依赖)来将其“升级”为一个具有图形界面的系统。 - 官方支持与稳定性: 官方通常不提供或不推荐这种手动升级路径,并且不对通过此方式构建的 Desktop 系统的稳定性和完整性进行保证或测试。手动安装过程复杂,容易遗漏依赖或产生配置冲突。
- 推荐做法: 如果您需要 Desktop 版的完整功能和最佳体验,强烈建议直接下载并烧录官方发布的Desktop 版本系统镜像。这是确保系统稳定性和功能完整的最佳途径。