Android中的USB加密狗识别 - Beaglebone

时间:2014-12-23 07:40:39

标签: android c linux beagleboard usb-modeswitch

问题:

部分华为USB Dongles在Beaglebone中未被Android JellyBean4.1.2识别。

详细信息:

我正在使用在Android JellyBean4.1.2上运行的BeagleBone。

Huawei - E1731 [Locked] , Huawei - E303D [Locked]在此平台中 正常工作

操作系统

Huawei E303F , Huawei E303F (Both Factory Unlocked) 无法识别 (未生成通信文件)

由我自己完成的解决方案

  1. 使用AT命令
  2. 将Dongle的模式更改为仅调制解调器模式

    enter image description here

    1. 添加供应商ID&产品ID到init.devicename.sh(强制核心识别USB加密狗)
    2. enter image description here

      1. 使用VID&更改USB模式开关文件PID
      2. enter image description here

        现在提到的USB Dongles工作正常。

        enter image description here

        • 但我想找到根本原因&必须解决它。

        • 是否可以通过从源代码构建Android操作系统来修复它?如果是,怎么样?哪些文件需要更改?

        • 为什么有些加密狗在没有上述解决方法的情况下直接识别?

        更新

        正如 skoperst 所说,我检查了option.c中的kernel_dir/drivers/usb/serial/option.c

        enter image description here

        • 是否有任何解决方案 other than hard-coding Device VID & PID

        • 我需要一些更通用的解决方案,以促进 Plug & Play 机制。

        • 如何 Plug & Play works in linux 。如果可以使用 linux kernal ,是否也可以使用Android?

        您的好建议表示赞赏。非常感谢。

1 个答案:

答案 0 :(得分:3)

您的问题在于您使用的设备上运行的内核,而不是Android操作系统。

支持哪种USB设备(I.E.vid / pid的组合)取决于内核中定义的哪些集合,其硬编码。

具体而言,您需要针对特定​​VID和PID的USB串行设备定义(AKA ttyUSB),它们通常位于: kernel_dir / drivers / usb / serial / option.c 对于您希望设备识别的任何其他驱动程序也是如此。