Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

USB Dongle Recognition in Android - Beaglebone

Issue :

Some of the Huawei USB Dongles not recognized by Android JellyBean4.1.2 in Beaglebone.

In Detail :

I am working with BeagleBone running on Android JellyBean4.1.2 .

Huawei - E1731 [Locked] , Huawei - E303D [Locked] are working fine in this platform.

Huawei E303F , Huawei E303F (Both Factory Unlocked) are not recognized by the OS (Communication files not generated)

Work-Around done by myself

  1. Change the Dongle's Mode to Modem Only Mode using AT command

enter image description here

  1. Add the vendor ID & Product ID to init.devicename.sh (Force the kernal to recognize the USB Dongle)

enter image description here

  1. Change the USB-Modeswitch File with VID & PID

enter image description here

Now the mentioned USB Dongles are working fine .

enter image description here

  • But i want to find the root cause & have to fix it .

  • Is there any option to fix it by building Android OS from source ? If yes , How ? Which are the files need to change ?

  • Why some dongles directly recognized without the mentioned work-around ?

UPDATE

As skoperst said , i have checked option.c in kernel_dir/drivers/usb/serial/option.c

enter image description here

  • Is there any solution other than hard-coding Device VID & PID .

  • I need some more generic solution , to facilitate a Plug & Play mechanism.

  • How the Plug & Play works in linux .If it is possible with linux kernal , is it also possible with Android?

Your great suggestions appreciated . Lot of thanks in advance.

like image 926
Don Chakkappan Avatar asked Oct 19 '22 20:10

Don Chakkappan


1 Answers

Your issue is with the kernel running on the device you use and not about the Android OS.

Which USB device are supported(I.E. which combination of vid/pid) depends on which sets are defined in the kernel, its hard-coded.

Specifically you need USB serial device definition(AKA ttyUSB) for you specific VID&PID and they are usually located in: kernel_dir/drivers/usb/serial/option.c That's also true for any other driver you wish the device will recognize.

like image 114
skoperst Avatar answered Oct 22 '22 08:10

skoperst