5

问题 :

Beaglebone 中的 Android JellyBean4.1.2 无法识别部分华为 USB 加密狗。

详细地 :

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

Huawei - E1731 [Locked] , Huawei - E303D [Locked]在这个平台 上运行良好。

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

由我自己完成的解决方法

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

在此处输入图像描述

  1. 将供应商 ID 和产品 ID 添加到 init.devicename.sh(强制内核识别 USB 加密狗)

在此处输入图像描述

  1. 使用 VID 和 PID 更改 USB 模式切换文件

在此处输入图像描述

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

在此处输入图像描述

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

  • 有没有办法通过从源代码构建 Android 操作系统来修复它?如果是,如何?哪些文件需要更改?

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

更新

正如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也可以吗?

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

4

1 回答 1

3

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

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

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

于 2014-12-27T19:25:56.073 回答