我已经将“3G Dongle”连接到我的电脑,并且我想知道它是如何在 Ubuntu 14.04 中自动连接的,而无需手动安装 Dongle 的任何支持软件,但我在 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
是什么原因?
我们可以编辑/查看该文件并提供一些相关的其他详细信息吗?
答案1
Linux(以及 Ubuntu)适用于“通用”设备。“通用”是指支持多种设备的 1 个模块(又称“驱动程序”)。并非每个制造商的加密狗都有自己的芯片。他们倾向于从同一制造商大量购买这些芯片,因此从内部来看,它们与使用相同芯片的其他加密狗完全相同。
对于 Linux/Ubuntu,这通常意味着有人在 Linux 中使用了与您拥有相同芯片组的加密狗,弄清楚了如何使其工作,并且有人更新了通用驱动程序,使其获得了对该芯片组的支持。这意味着该设备在 Linux 上开箱即用。
在 Windows 中,该加密狗的每个卖家都会有自己的加密狗软件以及与之配合的自己的驱动程序(但可能略有不同)。
答案2
如果你运行lsusb
终端命令,你会看到你的加密狗中安装了什么芯片。你的设备是
05c6:6001 Qualcomm, Inc.
大多数情况下,Linux 通过芯片代码来识别加密狗12d1:1506
。
一些设备在内核模块中通过供应商和产品 ID 隐式定义option
,但有些设备由其他参数标识。
您的设备作为网卡工作,而不是串行调制解调器,并且其识别方式不同。
您可以在输出中看到,Cls=e0(wlcon)
这意味着该设备是USB_CLASS_WIRELESS_CONTROLLER
。它是在 中定义的/include/uapi/linux/usb/ch9.h
。
它由驱动程序管理rndis_host
。它与驱动程序相关联,因为Sub=01 Prot=03
。
这是在中定义/drivers/net/usb/rndis_host.c
的
USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3),
.driver_info = (unsigned long) &rndis_info,
不要在计算机中寻找这些文件。它们位于 Linux 源代码树中。例如rndis_主机
答案3
Linux 已经包含了大多数设备所需的所有通用驱动程序。这是因为 Linux 是由一个庞大的开源开发者社区(令人惊讶的是,现在也包括微软)提供支持的。
这并不意味着您不能安装自己的驱动程序,您当然可以。
答案4
我的 3G 加密狗也有同样的问题。Ubuntu 已经内置了支持,而 Windows 操作系统没有。当您在 Windows 中插入加密狗时,操作系统会自动安装加密狗上的驱动程序。