2.4. USB_MODESWITCH
工具 usb_modeswitch 在驱动 USB 网卡过程中起到了非常关键的作用,因此详细解释。
随着移动通信,无线通信的发展,越来越多的设备被制作成复合 USB(Composite USB)接口,例如一些
无线网卡,3G 数据卡等等。这些设备的厂家一般都会提供 Windows 下驱动,这些设备在第一次插上主机的时
候,它们处于 CDROM+闪存模式,可以从中提供驱动程序安装驱动,在驱动程序安装完成后驱动设备时,驱动
发送一个指令给 USB 设备,将复合 USB 口转换成其它模式(如网卡模式),此时就会出现其它设备如 usb
modem 设备,目前的 3G 卡片全都是这样,这就是所谓的“Zero CD”。
而网卡厂家一般不会提供网卡在 Linux 下面的驱动,一般需要用一个叫做 usb_modeswitch 的工具来进行
模式转换。Usb_modeswitch 是 Linux 对 USB 设备的工作模式进行转换的一个工具,当操作系统中检测到有 USB
设备插入时,会调用 usb_modeswitch 相关模块检测插入的 USB 设备 ID 是否是某种特定设备、是否需要切换
(通过识别 ID)。当检测到符合切换条件的 USB 设备时,则发送特定的指令给 USB 设备。复合 USB 设备收到
指令后,会变更工作方式并切换设备 ID(如 Windows 驱动所做的)。当 USB 设备切换完成后,Linux 下的其它
驱动模块则可以驱动该设备,并让 USB 设备正常工作。
特别需要注意的是:OpenWrt 系统中自带的 usb_modeswitch 包对 usb_modeswitch 官方的源码做了较多精
简和修改并更改执行文件名为 usbmode。但是 usbmode 在 OpenWrt 系统中工作不是很可靠,常有切换不成功的
情况发生。因此本人为官方版本 usb_modeswtich 制作了 OpenWrt 系统软件包,可从如下网址下载到 OpenWrt
系统中。在编译过程中,取消选择旧的 usbmode 包,并选择我制作的包。本人制作的 package 下载地址:
https://github.com/gzhechu/openwrt-usb-modeswitch-official
在 OpenWrt 系统中选择本人制作的 usb_modeswitch 包的界面类似如下,需要取消 usb-modeswitch,选择
usb-modeswitch-official:
工具 usb_modeswitch 还需依赖一系列配置文件才能正常工作。当系统中插入了某款复合设备,
评论1
最新资源