MangoPI MQ-Quad H616 Armbian 使用 USB ADB 连接设备 Shell
-
Armbian 使用 ADB 连接 MQ-Quad Shell
此贴使用的是芒果群里的@sputnik 大佬的Armbian
感谢 sputnik 的贡献让我们能用上MQ-Quad的Armbian
GitHub地址:https://github.com/open-cores/mangguo-h616-armbian
使用v22.08分支做的测试修改内核设备树
# 修改 path/kernel/archive/sunxi-5.19/xkernel-mangopimcore.patch 文件 # 关闭 ehci0 以及 ohci0 节点 +&ehci0 { + status = "disabled"; +}; +&ohci0 { + status = "disabled"; +}; # 修改 usbotg 节点的 dr_mode 为 peripheral 模式 +&usbotg { + dr_mode = "peripheral"; /* USB A type receptable */ + status = "okay"; +};
- 修改完成后重新编译imag并写入到SD卡,这里不做讲解了。
编译并安装 adbd
# 在设备中执行以下指令 git clone https://github.com/Evlers/adbd cd adbd # 编译以及安装 adbd make -j4 sudo make install
配置 USB Gadget 设备
- 让设备使用USB复合设备:
libcomposite
# 让 libcomposite 模块开机自动装载 su root echo "libcomposite" >> /etc/modules
- 进入sbin目录:
cd /usr/local/sbin
- 制作Starting脚本用于开机自动运行
vi usb-gadget-start.sh # 复制以下内容 #!/bin/bash # 设置 adbd 参数 BANNER="device" # bootloader sideload recovery device DEVNAME="MQ-Quad" DEVMODEL="Allwinner H616" DEVPRODUCT="MangoPI MQ-Quad" # 创建 usb adbd 设备 mkdir /sys/kernel/config/usb_gadget/g1 echo "0x18D1" > /sys/kernel/config/usb_gadget/g1/idVendor echo "0xD002" > /sys/kernel/config/usb_gadget/g1/idProduct # 写入USB描述 # 注意:serialnumber长度必须是16个字符 否则绑定USB控制器时会出现Device or resource busy的问题 mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409 echo "Allwinner" > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer echo "MangoPI-MQ-Quad" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product echo MangoPI--MQ-Quad > /sys/kernel/config/usb_gadget/g1/strings/0x409/serialnumber mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1 echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409 # 创建 ffs function 注册 functionfs 文件系统 mkdir /sys/kernel/config/usb_gadget/g1/functions/ffs.adb ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb # 用户态挂在 adbd 的 functionfs 文件系统 mkdir /dev/usb-ffs mkdir /dev/usb-ffs/adb mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/ # 使用 bash 启动 adbd /usr/bin/adbd -d -n "$DEVNAME" -m "$DEVMODEL" -p "$DEVPRODUCT" -b "$BANNER" -s /bin/bash # 将 Gadget 绑定到USB控制器 echo `ls /sys/class/udc/` > /sys/kernel/config/usb_gadget/g1/UDC
- 制作Stopping脚本
vi usb-gadget-stop.sh # 复制以下内容 #!/bin/bash cd /sys/kernel/config/usb_gadget/g1 # disconnected echo `` > /sys/kernel/config/usb_gadget/g1/UDC # remove all links find . -type l -exec rm -v {} \; # rmdir configs/c.1/strings/0x409 find configs -name 'strings' -exec rmdir -v {}/0x409 \; #rmdir configs/c.1 ls -d configs/* | xargs rmdir -v #rmdir strings/0x409 ls -d strings/* | xargs rmdir -v #rmdir functions/hid.usb0 ls -d functions/* | xargs rmdir -v cd .. rmdir -v g1
- 给脚本提供执行权限
chmod +x usb-gadget-start.sh chmod +x usb-gadget-stop.sh
- 利用 Systemd 让 USB Gadget 以及 adbd 开机启动
vi /etc/systemd/system/usb-gadget.service # 复制以下内容 [Unit] Description=USB gadeget After=sys-kernel-config.mount Before=network-pre.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/sbin/usb-gadget-start.sh ExecStop=/usr/local/sbin/usb-gadget-stop.sh [Install] WantedBy=multi-user.target
- 使能开机启动:
sudo systemctl enable usb-gadget
- 重启设备:
reboot
测试
- 在PC端执行如下测试
# 查看设备 adb devices # 连接到设备Shell adb shell
-
想要使用wifi adb 应该做什么?
- 列表目前我的板安装这个操作可以正常使用adb
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号