USB端口对adb,download,mass_storage的支持

P6X第一版软件只支持adb,download功能。为了支持mass_storage功能,于是在./device/qcom/M9PLUS/M9PLUSOneSim/system.prop
里面添加
 
#Set composition for USB device
#persist.sys.usb.config=diag,serial_smd,rmnet_bam,adb
persist.sys.usb.config=diag,serial_smd,rmnet_bam,mass_storage,adb
#For frameworks compatible process between BCM & NXP — xiaoshengtao
ro.config.nfc_chip_model=BCM
#Set read only default composition for USB
#ro.sys.usb.default.config=diag,serial_smd,rmnet_bam,adb
ro.sys.usb.default.config=diag,serial_smd,rmnet_bam,mass_storage,adb
 
 
添加完成后,发现插入USB到电脑端后只显示充电,原来的adb也不支持了。
 
于是检查了./qcom/common/rootdir/etc/init.qcom.usb.rc,发现里面
 
on property:sys.usb.config=diag,serial_smd,rmnet_bam,adb
    stop adbd
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9091
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
   write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}
 
并没有on property:sys.usb.config=diag,serial_smd,rmnet_bam,mass_storage,adb
 
于是新增加了一个属性事件,同时添加了一个新的idProduct 9093
 
on property:sys.usb.config=diag,serial_smd,rmnet_bam,mass_storage,adb
    stop adbd
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9093
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,serial,rmnet,mass_storage,adb
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}
 
 
编译下载后,mass_storage和adb都可以正常使用了。但是download功能不支持了。
后来和供应商沟通后,发现主要是download功能是和电脑端的驱动程序有关的,而驱动是和idProduct
相关联的,原来的ID是9091,所以把原来的属性事件on property:sys.usb.config=diag,serial_smd,rmnet_bam,adb
去掉,并将里面的idProduct值赋值给新添加的属性事件。这样就完成了修改。
 
在修改的过程中,还碰到过一个问题,就是当我把usb配置设置成
persist.sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb的时候,
因为属性事件在./qcom/common/rootdir/etc/init.qcom.usb.rc已经存在,
 
on property:sys.usb.config=diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb
    stop adbd
    write /sys/class/android_usb/android0/enable 0
    write /sys/class/android_usb/android0/idVendor 05C6
    write /sys/class/android_usb/android0/idProduct 9025
    write /sys/class/android_usb/android0/f_diag/clients diag
    write /sys/class/android_usb/android0/f_serial/transports smd,tty
    write /sys/class/android_usb/android0/f_rmnet/transports smd,bam
    write /sys/class/android_usb/android0/functions diag,adb,serial,rmnet,mass_storage
    write /sys/class/android_usb/android0/enable 1
    start adbd
    setprop sys.usb.state ${sys.usb.config}
 
当编译下载后发现usb,adb等都不支持了,只有一个充电。后来听说,MSM8916的
USB的端点数不够引起的,无法在现有的端点上面支持过多的设备。据说其中的serial_tty
就用到了6路的端点数。
 
总结USB的配置必须要和属性事件完全一致,包括其中的功能的顺序。
另外idProduct对固件download的影响是通过电脑端的驱动完成的。
最后USB的功能不能超过芯片能支持的端点数。
合作联系邮箱:cofface#cofface.com(请将#替换为@)

转载请注明来源:Cofface Blog » USB端口对adb,download,mass_storage的支持

赞 (21) 打赏

感谢您的支持,我会继续努力的!

支付宝扫一扫打赏