HarmonyOS鸿蒙Next中docker容器中hdc无法找到设备,但lsusb看得到设备
HarmonyOS鸿蒙Next中docker容器中hdc无法找到设备,但lsusb看得到设备 我在ubuntu的容器映射了usb设备(鸿蒙手机 nova,5.1的系统和小米11),用hdc list targets,hdc显示[empty],但lsusb可以看到鸿蒙设备。请教大家如何让hdc看到这台鸿蒙设备,谢谢
容器创建语句
docker run --name myHarmony_ubuntu --privileged --runtime runc -v /dev/bus/usb:/dev/bus/usb:rw -p 7110:7110/tcp -e 'PATH=/app/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/harmonyCmd'
更多关于HarmonyOS鸿蒙Next中docker容器中hdc无法找到设备,但lsusb看得到设备的实战教程也可以访问 https://www.itying.com/category-93-b0.html
楼主可以尝试重启开发者模式用的USB设备调试开关,有时候这个开关会被关闭。
更多关于HarmonyOS鸿蒙Next中docker容器中hdc无法找到设备,但lsusb看得到设备的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我解决了,我把问题发给DevEcho的AI:CodeGenie+阿里的通义灵码。
解决步骤:
hdc kill
hdc start
// 等待三秒后再执行下一条指令hdc list targets
lsusb -v | grep -A 5 -B 5 12d1:1101
// # 查看当前设备状态echo "Bus 001 Device 051" | awk '{print "/dev/bus/usb/" $2 "/" $4}' | sed 's/://g'
// 尝试重置USB设备 关闭手机usb调试- VMware断开设备连接(我的vm需要多次点击断开才彻底断开),等待3秒,再连接
- 手机上出现授权对话框,点击允许
- 容器中再次执行
hdc list targets
,出现设备!成功!
与 hdc 二进制文件的同级目录,是否增加了 libusb_shared.dylib
文件。
文档中说道:
- hdc支持独立运行。将toolchains子目录下的hdc可执行文件和libusb_shared依赖文件集中存放至自定义目录中,在自定义目录下直接执行hdc命令,实现独立调试。
- 也可以看看一个单独使用hdc,获取udid工具的使用例子:github.com/iHongRen/harmony-udid-tool
hdc kill
hdc start -r//等待三秒后再执行下一条指令
hdc list targets
lsusb -v | grep -A 5 -B 5 12d1:1101
//# 查看当前设备状态
echo "Bus 001 Device 051" | awk '{print "/dev/bus/usb/" $2 "/" $4}' | sed 's/://'
//尝试重置USB设备
关闭usb调试
VMware断开设备连接(我的vm需要多次点击断开才彻底断开),等待3秒,再连接
手机上出现授权对话框,点击允许
容器中再次执行hdc list targets,出现设备!成功!
还是ai好用。
在HarmonyOS Next的Docker容器中遇到hdc无法识别但lsusb能看到设备的问题,可能是以下原因:
- 容器缺少udev规则:宿主机设备节点未映射到容器内部
- hdc服务未正确转发:需确保容器内hdc服务与宿主机端口一致
- 权限问题:容器内用户可能无USB设备访问权限
解决方法:
- 启动容器时添加参数:–privileged -v /dev/bus/usb:/dev/bus/usb
- 检查容器内hdc版本是否与宿主机匹配
- 确认容器网络配置允许访问hdc服务端口
注意:容器内HarmonyOS设备调试需保持与宿主机相同的环境配置。
在HarmonyOS Next环境下,Docker容器中hdc无法识别设备但lsusb可见的问题,通常与USB设备权限和udev规则有关。以下是关键解决步骤:
- 确保容器内正确挂载了udev设备文件: 在docker run命令中添加:
-v /run/udev:/run/udev:ro
- 检查容器内的设备节点权限: 进入容器执行:
ls -l /dev/bus/usb/XXX/YYY
(XXX/YYY对应lsusb显示的设备号)
- 临时解决方案(测试用): 在容器内直接修改设备节点权限:
chmod 666 /dev/bus/usb/XXX/YYY
- 永久解决方案: 在宿主机创建udev规则文件(如/etc/udev/rules.d/99-harmony.rules):
SUBSYSTEM=="usb", ATTR{idVendor}=="你的设备VID", MODE="0666"
然后重载udev规则:
sudo udevadm control --reload-rules
sudo udevadm trigger
注意:需要确认你的Harmony设备VID(通过lsusb查看),华为设备常见VID为12d1。