繁体   English   中英

如何在Android Shell中通过ConfigFS设置USB小工具

[英]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设备类,例如大容量存储PTPMTPRNDIS(网络共享) ... 因为在智能手机等复合设备中,设备类是在接口级别定义的 ,在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM