Find the answer to your Linux question:
Results 1 to 5 of 5
I was trying to plug in a Mobidata EDGE modem (100EU) to my Linux (Ubuntu 8.04.2, kernel 2.6.24). It was not working. The lsusb command shows a device id 10CE:EA6A. ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    May 2009
    Posts
    3

    Exclamation Mobidata EDGE modem issue with Linux Kernel (cp2101.c)


    I was trying to plug in a Mobidata EDGE modem (100EU) to my Linux (Ubuntu 8.04.2, kernel 2.6.24). It was not working. The lsusb command shows a device id 10CE:EA6A. In the line of 100 of cp2101.c, it says the device id should be 10C5:EA61. I think that's the source of problem everyone is facing with Mobidata EDGE modem. You may like to follow this link to see how many people are acing this problem.

    I assume the solution is to edit the line or add a new line for Mobidata EDGE Modem 100EU and recompile the kernel.

    The new line should be,

    { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */

    Here in Bangladesh, a lot number of people and enterprises are using this model and facing problem while migrating to Linux. So, we, Bangladesh Open Source Network (h t t p : / / w w w . bdosn . orgHomepage | Bangladesh Open Source Network), are trying to come up with a solution so that we can promote migration to Linux more cost effectively.

    Thanks in advance for your reply.
    Last edited by oz; 06-16-2009 at 05:20 PM.

  2. #2
    Linux Guru
    Join Date
    Jul 2004
    Posts
    4,593
    Hello, and thank you for the information.

    There is a file that contains all of the USB device ID's, named usb.ids In Ubuntu 9.04 I found it in /var/lib/misc. You should be able to find it on your system with this command.
    Code:
    locate usb.ids
    As suspected, your modem is not listed, but the EA6A is:
    Code:
    10ce  Silicon Labs
    	ea6a  MobiData EDGE USB Modem
    The solution to this may be two-fold. You may need the device to be included in the usb.ids list, and the developers of the driver need to include it.
    Please do not send Private Messages to me with requests for help. I will not reply.

  3. #3
    Just Joined!
    Join Date
    May 2009
    Posts
    3
    Thanks waterhead for your reply. Adding the data to my device list is possible. But the device maker does not ship it with a Linux driver.

    What should I do now?

    As the cp2101.c file does have an entry for MobiData EDGE USB Modem, should I consider that the kernel already has a driver?

  4. #4
    Linux Guru
    Join Date
    Jul 2004
    Posts
    4,593
    I had to rush off to work earlier, and cut my first post short.

    Just adding the USB ID to the list won't make it work. It will just properly recognize it.

    I did find what appears to be the web page for the driver development. Sometimes you can get the driver source, and change and install that. This does not appear to be the case with this driver.

    CP210x Linux Driver
    Last edited by waterhead; 06-16-2009 at 07:13 PM.
    Please do not send Private Messages to me with requests for help. I will not reply.

  5. #5
    Linux Guru
    Join Date
    Jul 2004
    Posts
    4,593
    I think that I have a way that you can just compile the module, instead of the entire kernel. I am using Ubuntu 9.04 with the 2.6.28-11 kernel, so that is what my example will use. You first should install the kernel headers and the kernel source.

    First you must modify the driver source file cp2101.c, as omarshehab mentioned in his first post. It is found in the kernel source. Then open the file in a text editor.
    Code:
    gksudo gedit /usr/src/linux-source-2.6.28/drivers/usb/serial/cp2101.c
    I added a new line for the new device, below the existing one.
    Code:
    	{ USB_DEVICE(0x10C5, 0xEA61) }, /* Silicon Labs MobiData GPRS USB Modem */
    	{ USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem */
    Save the file and exit.

    You then need to have a .config file for the kernel source. Enter the kernel source folder with this comman:
    Code:
    cd /usr/src/linux-source-2.6.28
    Then run the config program:
    Code:
    sudo make menuconfig
    You shouldn't have to change anything, but when you exit it should ask if you want to save your configuration. Answer "Yes".

    Now run these commands.
    Code:
    sudo make clean
    Code:
    sudo make oldconfig
    We need a copy of the Modules.symvers file, so run this command:
    Code:
    sudo cp /usr/src/linux-headers-2.6.28-11-generic/Module.symvers /usr/src/linux-source-2.6.28
    Run these commands to prepare the kernel source.
    Code:
    sudo make scripts
    Code:
    sudo make prepare
    We now will go to the folder that contains the driver source file:
    Code:
    cd /usr/src/linux-source-2.6.28/drivers/usb/serial
    Then run this command. It will compile all of the modules in the /serial folder.
    Code:
    sudo make -C /usr/src/linux-source-2.6.28 SUBDIRS=$PWD modules
    It will build the modules in the same directory. You will need to copy the cp2101 module into the /lib/modules folder:
    Code:
    cp /usr/src/linux-source-2.6.28/drivers/usb/serial/cp2101.ko /lib/modules/2.6.28-11-generic/kernel/drivers/usb/serial
    The new driver will now be loaded the next time it loads. If it is currently loaded, remove it first.
    Code:
    sudo modprobe -r cp2101
    Now load it,
    Code:
    sudo modprobe cp2101
    Let me know how this works out.
    Please do not send Private Messages to me with requests for help. I will not reply.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •