RK3568 Android 13 USB OTG/Host 切换调试经验分享

目录

前言

经验

[1. 切换到 Device (OTG) 模式](#1. 切换到 Device (OTG) 模式)

[2. 切换到 Host 模式](#2. 切换到 Host 模式)

[3. 调试中遇到的坑](#3. 调试中遇到的坑)

总结


前言

在RK3568开发过程中,需要动态切换USB3.0接口的OTG(Device)与Host模式。直接修改PHY寄存器或sysfs节点往往无法生效,甚至导致系统USB功能异常。经过摸索,总结出一套可靠的切换流程,在此分享。


经验

1. 切换到 Device (OTG) 模式

关键点:必须先解除UDC绑定,清理软链接,再切PHY,最后触发Android USB配置。

bash 复制代码
# 解除 UDC 绑定,释放控制器
echo "" > /config/usb_gadget/g1/UDC

# 删除之前创建的软链接(根据日志,adb 的链接在 f1)
rm -f /config/usb_gadget/g1/configs/b.1/f1

# 切换 PHY 到 Device 模式
echo peripheral > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode

# 重新触发 Android 的 USB 配置
setprop sys.usb.config adb

注意 :f1 是示例,实际软链接名需根据 ls /config/usb_gadget/g1/configs/b.1/ 查看。

2. 切换到 Host 模式

关键点:先让Android彻底放弃gadget,再解除UDC,清理残留,最后切PHY。

bash 复制代码
# 让 Android 彻底放弃 gadget
setprop sys.usb.config none
setprop sys.usb.state none

# 解除 UDC 绑定(此时 UDC 应该可写了)
echo "" > /config/usb_gadget/g1/UDC

# 删除残留软链接
rm -f /config/usb_gadget/g1/configs/b.1/f1

# 切 PHY 到 host
echo host > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode

3. 调试中遇到的坑

  • UDC 写不进去 :因为Android的USB服务仍持有gadget,必须先 setprop sys.usb.config none。

  • 软链接删不掉 :权限不足或路径错误,建议先 ls 确认。

  • PHY 切换无效:如果UDC仍绑定,PHY模式切换会被忽略或报错。

  • 顺序反了:先切PHY再解绑UDC,可能导致控制器状态混乱,甚至需要重启。


总结

RK3568 Android 13下USB3.0 OTG/Host切换,本质是 "先软后硬":

  1. 软层面:让Android释放gadget(setprop none)、解绑UDC、清理configfs软链接。

  2. 硬层面 :再写 otg_mode 节点切换PHY。

  3. 恢复 :切回Device时,重新 setprop sys.usb.config adb 即可。

按此顺序操作,可稳定切换,避免USB功能异常。希望这份经验能帮到同样在RK3568上调试USB的同行。

相关推荐
大圣编蚕4 小时前
初探 NDK 的世界:从零开始理解 Android 原生开发
android
云贝贝贝4 小时前
MySQL 慢查询定位与索引优化实战
android
骑着蜗牛撵大象3275 小时前
服务下线不再炸:分层关闭、TCP 存活探测与负载均衡排水的落地套路
android·tcp/ip·负载均衡·tcp·高可用·健康检查·优雅关闭
三少爷的鞋7 小时前
别再这么写协程了!Marcin Moskała 剖析的 几个常见协程误区与重构
android
mmsx8 小时前
Android 防二次打包第一道锁:签名校验与完整性校验
android·kotlin
mmsx8 小时前
Android 混淆不等于安全:二次打包链路完整走一遍
android·kotlin
小宋102110 小时前
Agent轨迹级评测实战:工具选择、预算超限与回归门禁
android·网络·人工智能·回归
墨天梦12 小时前
D05_ViewModel与单向数据流
android·kotlin
蒸鱼Yuzheng13 小时前
Android 构建可复现性:APK 指纹、文件级差异与供应链审计
android·apk·devops·软件供应链·可复现构建
墨天梦15 小时前
D03_Compose列表与稳定身份
android·gitee·kotlin