3

I've connected a '3G Dongle' to my PC and I've wondered how it automatically connected in Ubuntu 14.04 without installing any supporting software of the Dongle manually, but I've installed that while I was working in Windows .

lsusb

Bus 001 Device 004: ID 05c6:6001 Qualcomm, Inc.

usb-devices | awk '/6001/' RS=

Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=480 MxCh= 0> Ver= 2.00
Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
Vendor=05c6 ProdID=6001 Rev=00.00
Manufacturer=Qualcomm, Incorporated
Product=Qualcomm mobile device
#Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=06 Prot=00 Driver=rndis_host

What is the reason?

Can we edit/view that file and also give some additional details regarding that?

4 Answers4

6

Linux (and therefore Ubuntu) works with "generic" devices. "Generic" means 1 module (A.k.a. "driver") that supports many devices. Not every manufacturer of these dongles have their own chip inside these dongles. They tend to purchase these in large quantities from the same manufacturer so internally they are identical to other dongles using the same chip.

For Linux/Ubuntu that normally means someone used a dongle with Linux with the same chipset as you have, figured out how to get it to work and someone updated that generic driver so it got support for that chipset. That means that that device is supported out of the box on Linux.

In Windows each seller of that dongle will have its own software with that dongle and also their own (but maybe just slightly different) driver to go along with it.

Fabby
  • 35,017
Rinzwind
  • 309,379
2

If you run lsusb terminal command, you will see what chip is installed in your dongle. Your device is

05c6:6001 Qualcomm, Inc.

In most cases Linux identifies the dongle by the chip code 12d1:1506.

Some of devices are implicitly defined in the option kernel module by vendor and product ids, but some are identified by some other parameters.

Your device works as a network card, not as a serial modem and it is identified differently.

You can see in your output Cls=e0(wlcon) this means that the device is a USB_CLASS_WIRELESS_CONTROLLER. That is defined in /include/uapi/linux/usb/ch9.h.

It is managed by rndis_host driver. It is linked to it because Sub=01 Prot=03.

That is defined in the /drivers/net/usb/rndis_host.c in

USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
.driver_info = (unsigned long) &rndis_info,

Do not look for these files in your computer. They are in the Linux source tree. E.g. rndis_host.c

Pilot6
  • 92,041
1

Linux already contains all the necessary generic drivers that are required by most of the devices out there. This is possible because Linux is powered by a huge community of open source developers (which surprisingly nowadays include Microsoft too.)

It does not mean that you an not install your own drivers, you most certainly can.

akxer
  • 2,056
0

I have identical behaviour with my 3G dongle. Ubuntu has support already built-in while Windows OS doesn't. When you plug in the dongle in Windows the OS installs the drivers which is on the dongle automatically.

nobody
  • 4,412