导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    MangoPI MQ-Quad H616 Armbian 使用 USB ADB 连接设备 Shell

    H/F/TV Series
    2
    2
    1708
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • E
      Evlers LV 6 最后由 evler 编辑

      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
      

      efdb1d4d-d692-4f4e-97ca-40e10ae062d9-image.png

      03140ea8-acdf-4192-b88a-7958c60fe058-image.png

      1 条回复 最后回复 回复 引用 分享 0
      • G
        Goku_sheng LV 3 最后由 编辑

        想要使用wifi adb 应该做什么?

        • 列表目前我的板安装这个操作可以正常使用adb
        1 条回复 最后回复 回复 引用 分享 0
        • 1 / 1
        • First post
          Last post

        Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

        行为准则 | 用户协议 | 隐私权政策