android - Android 中的 USB Dongle 识别 - Beaglebone

标签 android c linux beagleboard usb-modeswitch

问题:

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

详细信息:

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

Huawei - E1731 [已锁定]、Huawei - E303D [已锁定]在此平台上工作正常

Huawei E303F 、Huawei E303F(均出厂解锁) 无法识别 操作系统 (未生成通信文件)

我自己解决

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

enter image description here

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

enter image description here

  1. 用 VID 和 PID 更改 USB-Modeswitch 文件

enter image description here

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

enter image description here

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

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

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

更新

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

enter image description here

  • 除了硬编码设备 VID 和 PID 之外,是否有任何解决方案

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

  • 即插即用在 linux 中的工作原理。如果可以使用 linux kernal , Android 也可以吗?

感谢您的宝贵建议。非常感谢。

最佳答案

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

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

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

关于android - Android 中的 USB Dongle 识别 - Beaglebone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616045/

相关文章:

android - 编辑文本的触摸事件上的日期选择器对话

java - 发生存储异常。对象在该位置不存在。代码 : -13010 HttpResult: 404

android - Web 服务、Android 客户端、SSL

c - 从 Postgres C 函数返回一个数组?

c - 为什么这个tuple -> String 转换会触发偶发的内存重叠异常

java - 使用 ksoap2 将参数传递给 web 服务?

java - 如何从 SWIG 中的 C 指针生成 Java 数组

linux - 如何仅删除某个目录下的重复文件(具有相同的校验和)

linux bash 计算文件夹中文件的大小

linux - 查找文件之间的公共(public)列位置