[英]How to Setup USB Gadget via ConfigFS in Android Shell
我目前正在尝试将我的Android手机连接到同时充当HID,RNDIS和MASS_STORAGE设备的Windows计算机。 这些模式中的每一个作为单个模式都可以正常工作,但是我无法将它们正确组合,例如,我可以使用HID,MASS_STORAGE,但不能使用过滤器过滤器HID,RNDIS。 目前的最佳工作做法是通过外壳设置USB模式,例如
setprop sys.usb.config mass_storage,adb
我还致力于使用:
echo 0 > /sys/class/android_usb/android0/enable
echo ecm,adb > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
这样,我还可以使网络接口ecm0正常运行。
从网上阅读的所有内容中,我可以使用sysfs或configfs设置具有不同功能的我自己的小工具。 因此,我将必须在电话上将/ config作为配置挂载,但是无论我尝试什么,/ config目录都保持为空且为只读。
有谁知道在Android Shell中设置USB小工具的正确方法?
感谢您的回答,我再次进行了研究,找到了解决方法。
首先,您需要禁用USB端口
echo 0 > /sys/class/android_usb/android0/enable
一项非常重要的事情是正确的“功能”-字符串
echo "mass_storage,rndis_qc,ffs" > /sys/class/android_usb/android0/functions
在我的情况下,hid函数是由内核自动附加的,否则必须添加它。
另一个非常重要的事情是通过以下方式设置供应商和产品ID:
echo "VID" > /sys/class/android_usb/android0/idVendor
echo "PID" > /sys/class/android_usb/android0/idProduct
如果您使用现有设备的供应商和产品ID,则Windows10将自动为该设备加载驱动程序。
可在以下位置找到USB设备的供应商/产品ID的列表:
http://www.linux-usb.org/usb.ids
最后,您需要重新启用USB端口
echo 1 > /sys/class/android_usb/android0/enable
如果要使用网络共享,则当然也需要对其进行配置。 以我为例,我成功地将Windows设备用作Windows10中的Hid,Storage和Rndis设备。
希望这可以帮助某人;)
据我所知,不可能同时使用USB设备类,例如大容量存储 , PTP , MTP , RNDIS(网络共享) ... ,因为在智能手机等复合设备中,设备类是在接口级别定义的 ,在USB协议中,一次只能声明一个接口
您可以使用lsusb -v
对此进行检查,因为我的智能手机的输出是(在网络共享模式下)
Bus 003 Device 055: ID 0e24:8000 MediaTek Inc.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 **(Defined at Interface level)**
您可以编写代码以编程方式切换接口(并确保为每个接口加载适当的驱动程序/内核模块),但不能同时使用它们...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.