- 前言
Android SDK:imx8_13.0.0_1.2.0(android 13 + u-boot 2022.04 + kernel 5.15.74)
imx8qm官方Android 13 SDK默认USBOTG2作为了ADB和烧写镜像的接口,如果需要修改USBOTG1作为ADB和烧写镜像的接口,可参考本文档进行修改。文档所做修改基于IMX8QM-MEK,且验证OK。 - uboot
对应的defconfig中合入下面patch。
--- a/configs/imx8qm_mek_android_uuu_defconfig
+++ b/configs/imx8qm_mek_android_uuu_defconfig
@@ -162,7 +162,7 @@ CONFIG_FASTBOOT_UUU_SUPPORT=y
CONFIG_FASTBOOT_BUF_ADDR=0x98000000
CONFIG_FASTBOOT_BUF_SIZE=0x19000000
CONFIG_FASTBOOT_FLASH=y
-CONFIG_FASTBOOT_USB_DEV=1
+CONFIG_FASTBOOT_USB_DEV=0
CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x01000000
- kernel
内核defconfig中确定选定"CONFIG_USB_CHIPIDEA_IMX=y"。并在dts配置usbotg1为"peripheral"。
&usbphy1 {
status = "okay";
};
&usbotg1 {
dr_mode = "peripheral"; //设置USB为从机。
vbus-supply = <®_usb_otg1_vbus>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usbotg1>;
srp-disable;
hnp-disable;
adp-disable;
disable-over-current;
status = "okay";
};
注意:usbotg1中dr_mode在"imx8qm-android.dtsi"有被设置成“host”,这里需要注释掉。
4. android
设置"vendor.usb.config"为"ci_hdrc.0"。
--- a/imx8q/mek_8q/init.usb.rc
+++ b/imx8q/mek_8q/init.usb.rc
@@ -45,7 +45,8 @@ on early-boot
mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
setprop sys.usb.mtp.device_type 3
- setprop vendor.usb.config "5b130000.usb"
+# setprop vendor.usb.config "5b130000.usb"
+ setprop vendor.usb.config "ci_hdrc.0"
write /sys/module/libcomposite/parameters/disable_l1_for_hs "y"
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
重新编译烧写后就可以看到PC正常识别到adb设备。
5. 解决adb remount报错问题。
通过上面的修改,虽然可以通过adb可以正常连接,但是当利用pus访问只读文件夹时,或“adb remount”时会提示错误。
#push报错
remote couldn’t create file: Read-only file system
#adb remount报错
Skipping /system for remount
Skipping /system_ext for remount
Skipping /vendor for remount
Skipping /product for remount
Skipping /odm for remount
remount failed
解决办法:进入系统,打开开发者选项,在开发者选项中找到"OEM解锁"并打开。然后按照下面步骤输入命令就可以正常push了。
adb reboot bootloader
fastboot devices #可以看到已经进入到fastboot的设备。
fastboot flashing unlock #这地方需要等十几秒,
fastboot reboot #重启设备,不行就断电重启。
adb root
adb disable-verity
adb reboot
adb root
adb remount