Android中的USB加密狗识别 - Beaglebone

Don*_*pan 5 c linux android 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)不能识别由OS(通讯文件不产生)

由我自己完成的解决方案

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

在此输入图像描述

  1. 将供应商ID和产品ID添加到init.devicename.sh(强制kernal识别USB Dongle)

在此输入图像描述

  1. 使用VID和PID更改USB模式开关文件

在此输入图像描述

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

在此输入图像描述

  • 但我想找到根本原因并且必须解决它.

  • 有没有选择通过从源构建Android OS来解决它?如果是,怎么样?哪些文件需要更改?

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

UPDATE

作为skoperst说,我已经检查option.ckernel_dir/drivers/usb/serial/option.c

在此输入图像描述

  • 有什么解决方案吗other than hard-coding Device VID & PID

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

  • 怎么样Plug & Play works in linux.如果有linux kernal可能,Android也可以吗?

你的伟大建议赞赏.非常感谢提前.

sko*_*rst 3

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

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

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