Ubuntu – How to get an iball 3.5G modem working on Ubuntu

modemnetworking

I purchased iball 3.5G connect wireless modem 1 month before. I am trying to connect it with my laptop which is having ubuntu Operating System. After plug-in it to the ubuntu system it is not connecting with net.

This modem is plug and play but after plugging it nothing is displaying to the system.

I am expecting step-by-step method to connect this modem with my ubuntu 12.04 LTS sysetm from your expert's advice.

Best Answer

It may be a bit late now, yet I was unable to connect using iBall 3.5g v2.0 on my Ubuntu 12.04. All the guides available online were not useful.

Edit: First the BashScript I'm using to connect my iBall3.5G

#!/bin/bash
set -x
usb_modeswitch -W -n -I -v 05c6 -p f000 -V 05c6 -P 0016 -M 55534243e0793c88000000000000061b000000020000000000000000000000 > /dev/null 2>&1
modprobe usb_wwan
modprobe option
echo 05C6 0016 > /sys/bus/usb-serial/drivers/option1/new_id

It takes 5 to 15 seconds to enable USB WireLess Dongle for connection.

Now debugging the problem:

Use Case

iBall 3.5G v2.0 is working on WinXP(SP3) and not in Ubuntu 12.04

NOTE: It may not suit your issue as many online solutions I read didn't work for me. Read through the steps for matching scenario.

You need administrators/root privileges to perform below steps

Step 1:

Plug Dongle(USB Data Card) into a USB port with Ubuntu running.

Step 2:

tail /var/log/kern.log to see how it was detected

root@SiRi-Inspiron-3521:~# tailf /var/log/kern.log

kernel: [12607.331240] usb 3-2: new high-speed USB device number 12 using xhci_hcd
kernel: [12607.348772] usb 3-2: config 1 has an invalid interface number: 5 but max is 0
kernel: [12607.348788] usb 3-2: config 1 has no interface number 0
kernel: [12607.352291] scsi21 : usb-storage 3-2:1.5
kernel: [12608.352700] scsi 21:0:0:0: CD-ROM            3G Modem Mass Storage     2.31 PQ: 0 ANSI: 2
kernel: [12608.357251] sr1: scsi-1 drive
kernel: [12608.357554] sr 21:0:0:0: Attached scsi CD-ROM sr1
kernel: [12608.357754] sr 21:0:0:0: Attached scsi generic sg3 type 5

Note: an interface were identified as invalid. Apparently this was the cause of all problems.

Step 3:

Finding out the default Vendor & Product IDs

On Ubuntu use command lsusb. Typical output for the device, I've removed others from output for clarity

root@SiRi-Inspiron-3521:~# lsusb
Bus 003 Device 012: ID 05c6:f000 Qualcomm, Inc.

you can run lsusb -v -d 05c6:f000 for verbose output Notice idVendor, idProduct; these are default IDs as detected by Ubuntu. typical output:

root@SiRi-Inspiron-3521:~# lsusb -v -d 05c6:f000

Bus 003 Device 012: ID 05c6:f000 Qualcomm, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x05c6 Qualcomm, Inc.
  idProduct          0xf000 
  bcdDevice            0.00
  iManufacturer           3   
  iProduct                2 iBall 3.5G Wireless Modem
  iSerial                 4 1234567890ABCDEF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          1 iBall 3.5G Wireless Modem
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        5
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

For an experienced eye this is an incomplete listing.

Step 4:

Finding out working VendorID & ProductID. As iBall3.5G is working on WinXP(SP3) we can extract IDs from the log generated by iBall Connection manager.

When you connect using iBall connection manager on WinXP(SP3), USB message exchanged are logged. Filename may be different: Note Matching hardware ID: usb\vid_05c6&pid_0016&mi_04

File: C:\WINDOWS\ModemLog_3GUSB Modem.txt

02-09-2014 03:47:19.390 - Modem type: 3GUSB Modem
02-09-2014 03:47:19.390 - Modem inf path: oem119.inf
02-09-2014 03:47:19.390 - Modem inf section: Modem2
02-09-2014 03:47:19.390 - Matching hardware ID: usb\vid_05c6&pid_0016&mi_04
02-09-2014 03:47:19.390 - 115200,8,N,1, ctsfl=0, rtsctl=1
02-09-2014 03:47:19.406 - Initializing modem.
02-09-2014 03:47:19.406 - CD is high while initializing modem.
02-09-2014 03:47:19.406 - Send: AT<cr>

If iBall connection Manager was not installed then it's alright, we'll install later.

Step 5:

Finding out how default (Vendor, Product) IDs were switched to working (Vendor, Product) IDs on WinXP(SP3) => Switch Event

We need SniffUSB_v2.0 for capturing messages exchanged between Dongle(USB MoDem) & OS during driver installation.

NOTE: I'm not aware of other options that are already existing on WinXP(sp3) to facilitate to capture required packets.

Download page for SniffUSB for WinXP(SP3) UsbSnoop for WinXP from pcausa.com

As of this writing SniffUSB-x86-2.0.0006.zip was available.

Step 6:

If you've installed iBall Connection Manger & Drivers then uninstall both of them. We need to capture the switch event, remember?

Step 7:

Run SniffUSB.exe - remember with administrator rights.

Plug in dongle, you'll see something like below. Dongle is detected on SniffUSB GUI

You can see Default(Vendor, Product) IDs listed.

Select the one which came after dongle plug in & click install filter. It's hidden behind that password prompt, something like this: Install/Enable Filter Options

Step 8:

Remove the dongle & plugin again.

Now that we enabled(installed) a filter specific to our iBall3.5G, SniffUSB should dump packets exchanged.

Go ahead & install iBall connection manager & Drivers as usual.

Step 9:

By the time installation is finished size of UsbSnoop.log bloats to ~40 MB. We are only interested in last few messages that causes Switch Event

I was told the switch happened from the below message:

[255643 ms]  >>>  URB 1351 going down  >>> 
-- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
  PipeHandle           = 88470914 [endpoint 0x00000001]
  TransferFlags        = 00000000 (USBD_TRANSFER_DIRECTION_OUT, ~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 0000001f
  TransferBuffer       = 892ee758
  TransferBufferMDL    = 00000000
    00000000: 55 53 42 43 e0 79 3c 88 00 00 00 00 00 00 06 1b
    00000010: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00
  UrbLink              = 00000000
[255644 ms] UsbSnoop - MyInternalIOCTLCompletion(9e06f126) : fido=883eab50, Irp=883c79e0, Context=88424980, IRQL=2
[255644 ms]  <<<  URB 1351 coming back  <<<

I'm still trying to understand how to identify the switch from capture log: iBall 3.5G Connect v2.0 setup on Ubuntu 12.04 issues

The message 55534243e0793c88000000000000061b000000020000000000000000000000 will help us in manually switching IDs(Vendor, Product) on Ubuntu.

Step 10:

On Ubuntu, plug in dongle then run below command(as root):

root@SiRi-Inspiron-3521:~# usb_modeswitch -W -n -I -v 05c6 -p f000 -V 05c6 -P 0016 -M 55534243e0793c88000000000000061b000000020000000000000000000000
  • by default Ubuntu(12.04) comes with usb_modeswitch (v1.2.3) bundle.

Notice the switch of IDs(Vendor, Product):

root@SiRi-Inspiron-3521:~# lsusb
Bus 003 Device 012: ID 05c6:0016 Qualcomm, Inc.

Step 11:

Getting working device files in /dev/

I was told 05c6:0016 USB ID is not directly supported by the option.ko serial driver (as of yet)

Run below commands to get required /dev/ files viz. [ttyUSB0 .. ttyUSB2]

root@SiRi-Inspiron-3521:~# modprobe usb_wwan
root@SiRi-Inspiron-3521:~# modprobe option
root@SiRi-Inspiron-3521:~# echo "05C6 0016" > /sys/bus/usb-serial/drivers/option1/new_id

You'll see most desired ttyUSB0, ttyUSB1 & ttyUSB2 listed under /dev/ directory.

Within 5 to 15 seconds a network should be automatically listed under 'Mobile Broadband' for connection.

Step 12:

Now the device is identified and ready for working, connecting to Internet is a child's play.

Fun-Fact:

All this circus is for just finding out the right message(55534243e0793c88000000000000061b000000020000000000000000000000) and working (Vendor,Product) IDs pair to cause switch event.

PS:

iBall3.5G comes with scripts for Linux, viz. install, uninstall, wcdma, w-connect-chat, & dialup

Related Question