基于debian的deb包适配ubuntu22时ADB无法使用问题
Ubuntu 22.04 Rootfs ADB 问题排查与修复记录
平台信息
硬件:LCKFB TaiShanPi V10 (RK3566)
内核版本:6.1.141
ADB 连接方式:USB(RNDIS + ADB 复合设备)
参考正常系统:Debian Bookworm(同一硬件,ADB 正常)
ubuntu22编译脚本来自:LaoGuaiGe/ubuntu22.04-rootfs: 适用于泰山派1-RK3566开发板的ubuntu22 文件系统镜像构建脚本
问题现象
烧录 Ubuntu 22.04 rootfs 后,PC 端无法通过 ADB 连接设备:
设备启动日志显示 adbd for ubuntu 服务启动,但 USB 设备在 PC 端无法识别为 ADB 设备。
根因分析
adbd.service 依赖 usbdevice 脚本
adbd.service 的启动命令为:
usbdevice 是 Rockchip 平台的 USB gadget 管理脚本,负责:
挂载 configfs
创建 USB gadget 设备(设置 VID/PID、序列号等)
配置 ADB functionfs(
/dev/usb-ffs/adb)启动
adbd守护进程绑定 UDC 控制器使能 USB gadget
Ubuntu overlay 缺少关键文件
对比 Debian 和 Ubuntu 的 overlay 目录,Ubuntu 缺少以下文件:
| 文件 | 作用 | 是否缺失 |
|---|---|---|
/usr/bin/usbdevice | USB gadget 管理脚本,adbd.service 的核心依赖 | 缺失 |
/etc/profile.d/adbd.sh | 设置 ADB shell 和端口环境变量 | 缺失 |
/etc/profile.d/usbdevice.sh | 设置 USB 功能配置环境变量 | 缺失 |
usbdevice 脚本不存在导致 adbd.service 的 ExecStart 直接失败,USB gadget 从未被配置,PC 端自然无法识别 ADB 设备。
adbd 二进制文件
mk-ubuntu-rootfs.sh 第99行已正确处理:
adbd 二进制本身不缺失,问题完全在于 usbdevice 脚本。
修复方案
从 Debian overlay 复制缺失文件到 Ubuntu overlay
各文件内容说明
/etc/profile.d/adbd.sh
设置 ADB 使用 bash 作为 shell,并开启 TCP 端口 5555。
/etc/profile.d/usbdevice.sh
配置 USB 功能为 ADB 模式(也可改为 rndis adb 启用 RNDIS 网络)。
/etc/usbdevice.d/rndis_adb.sh(Ubuntu overlay 中已存在)
配置 RNDIS + ADB 复合设备模式。
usbdevice 工作流程
adbd.service 启动
→ 执行 /usr/bin/usbdevice start
→ 加载 /etc/profile 环境变量
→ 加载 /etc/usbdevice.d/*.sh 配置
→ 挂载 configfs (/sys/kernel/config)
→ 创建 USB gadget (rockchip)
→ 设置 VID=0x2207, 序列号从 /proc/cpuinfo 读取
→ 配置 ADB functionfs
→ 挂载 /dev/usb-ffs/adb
→ 启动 adbd 守护进程
→ 绑定 UDC 控制器
→ PC 端识别到 ADB 设备
验证方法
烧录后在 PC 端执行:
# 查看设备列表
adb devices
# 期望输出:
# List of devices attached
# 4c2ccb3588e59ea4 device
# 连接 shell
adb shell
# 查看 USB gadget 状态
adb shell "cat /sys/kernel/config/usb_gadget/rockchip/UDC"
# 查看 adbd 服务状态
adb shell "systemctl status adbd.service"
# 查看 USB 日志
adb shell "cat /tmp/usbdevice.log"
注意事项
USB 线缆要求:必须使用支持数据传输的 USB 线,充电线不支持 ADB。
PC 端驱动:Windows 需要安装 Rockchip ADB 驱动或通用 ADB 驱动。
RNDIS 模式:如果同时需要 USB 网络(usb0 接口),将
USB_FUNCS改为rndis adb,并在/etc/network/interfaces中配置 usb0(mk-ubuntu-rootfs.sh已自动添加):TCP ADB:设备联网后也可通过 TCP 连接:
日期
2026-05-20


评论