关于远程链接华为harmony 系统设备的一些问题

背景:
工作需要要做个鸿蒙设备自动化的操作,远程主机系统太老hdc无法安装,只能在在主机上装docker安装了个Ubuntu20.04系统来链接鸿蒙设备,主要解决问题为
把docker改为macvlan网络类型,在远程通过docker的ip直连避免转发麻烦的事
docker里面hdc有配置缺失,权限等问题
docker里面hdc的启动方式问题
docker挂载usb的问题
官方的hypium库链接远程设备源码有bug的问题

查询本机的网关和网卡,网关为172.16.200.1,网卡为enp2s0

test@123:/tmp/hdc-linux$ ip route | grep default
default via 172.16.200.1 dev enp2s0

在docker里创建一个macvlan类型的网络为了让局域网远程访问的时候直接访问docker环境本身
在docker里创建一个macvlan类型的网络为了让局域网远程访问的时候直接访问docker环境本身
--subnet=172.16.100.0/24表示IP 范围:172.16.200.1 ~ 172.16.200.254
gateway和parent则是上条命令获取的信息,my_macvlan创建的网络叫 my_macvlan,后续容器就用 --network my_macvlan 连接

test@123:~$ docker network create -d macvlan   --subnet=172.16.200.0/24   --gateway=172.16.200.1   -o parent=enp2s0   my_macvlan
adf60ecee7e3d88ff17a1c316dc078c320c549d3ed81a040f01d3a80a009a11b

创建容器network 后面就跟之前创建的网络名称,ip设置要在范围内设且在设置前要ping下要创建的ip ping不通才能创建,挂载宿主机的usb设备,一定前三个都要挂载才能在容器内识别到,其它教程一般都只有前两个,但我本身测试需要第三个/dev/urandom:/dev/random也挂载才行,并且开启root权限

test@123:~$ docker run -d \
>   --name ubuntu20-hdc \
>   --privileged \
>   --network my_macvlan \
>   --ip 172.16.200.100 \
>   -v /dev/bus/usb:/dev/bus/usb \
>   -v /run/udev:/run/udev:ro \
>   -v /dev/urandom:/dev/random \
>   -v /home/pirate/packages:/packages \
>   ubuntu:20.04 \
>   tail -f /dev/null
589e3786d7637006606a1891f0b43e216831015ff06afd6e3f60efca10422f20

把hdc文件复制进容器内部

test@123:~$ docker cp /tmp/hdc-linux/hdc ubuntu20-hdc:/usr/local/bin/hdc
test@123:~$ docker cp /tmp/hdc-linux/libusb_shared.so ubuntu20-hdc:/usr/lib/libusb_shared.so

容器内hdc添加权限,下载缺失配置

docker exec -it ubuntu20-hdc bash
root@589e3786d763:chmod +x /usr/local/bin/hdc
root@589e3786d763:apt-get update
root@589e3786d763:apt-get install -y libatomic1

启动hdc一定要用-m -e -s 这几个参数加进去,不加远程只能用hdc端口连接,用到hypium库的uitest和fport、rpc远程是连不上的,投屏软件也会远程投屏失败

root@589e3786d763:/# nohup hdc -m -e 0.0.0.0 -s 0.0.0.0:8710 > /dev/null 2>&1 &
[1] 492
root@589e3786d763:/# hdc -v
Ver: 3.2.0e

hypium库有个大坑关于链接远程设备的
文件地址为
.venv\Lib\site-packages\ohos\proxy\ui_proxy.py
这个文件里面有个hdc命令全文搜索
fport rm tcp:0.0.0.0:{}
这个命令hdc根本就不支持自定义加ip,只能写fport rm tcp:{}
全文替换一共有4处

from hypium.uidriver.device_connector import connect_device
from hypium import UiDriver
device = connect_device(
    device_sn="37RXXXXXXX",                      # 可选,留空取第一个
    connector_server=("172.16.200.100", 8710),   # 远程 hdc server
)
driver = UiDriver(device)
sh = driver.shell('ls')

鸿蒙远程真机投屏工具
https://gitcode.com/OpenHarmonyToolkitsPlaza/HOScrcpy/issues
鸿蒙sdk下载地址
https://dcp.openharmony.cn/workbench/cicd/dailybuild/dailyList
鸿蒙hypium库下载
pip install hypium -U --trusted-host mirrors.huaweicloud.com -i https://mirrors.huaweicloud.com/repository/pypi/simple
应用ui相关文档
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hypium-python-guidelines

posted @ 2026-06-25 11:56  树下黑猫  阅读(4)  评论(0)    收藏  举报