我目前正在尝试将我的Android手机连接到我的Windows机器,同时充当HID,RNDIS和MASS_STORAGE设备。作为单一模式的每个模式都工作正常,但我不能正确组合它们,例如,我可以使用HID,MASS_STORAGE但是norfilter 过滤HID,RNDIS。目前最好的工作实践是通过shell设置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目录保持空和只读。
有没有人知道在Android Shell中设置USB-Gadget的正确方法?
答案 0 :(得分:3)
首先,您需要禁用USB端口
echo 0 > /sys/class/android_usb/android0/enable
一个非常重要的事情是正确的"功能" -String
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
如果你想使用网络共享,你当然也需要配置它。在我的情况下,我成功地在Windows10中使用我的Android设备作为Hid,Storage和Rndis设备。
希望这有助于某人;)
答案 1 :(得分:0)
据我所知,无法使用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)**
你可以编写代码来以编程方式切换接口(并确保加载每个接口的相应驱动程序/内核模块)你不能同时使用它们......