这个函数中,在这里传入的参数: generic_device_ids[0].idVendor =vendor; generic_device_ids[0].idProduct =product;
generic_device_ids[0].match_flags =USB_DEVICE_ID_MATCH_VENDOR |
USB_DEVICE_ID_MATCH_PRODUCT;
我们这里需要加入我们自己设备的vendor和product,因此在这行下面,我们需要加入:
// added by xzpeter, try to support both sim4100 and lc6311
// for sim4100
generic_device_ids[1].idVendor =0x0456; generic_device_ids[1].idProduct =0x6532; generic_device_ids[1].match_flags =
USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
// for lc6311
generic_device_ids[2].idVendor =0x1AB7;
generic_device_ids[2].idProduct =0x6000;
generic_device_ids[2].match_flags =
USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT;
// end here
2.编译模块
之后,回到内核的根目录,要按照原先的config配置编译内核,主要是为了得到
Module.symvers文件(以及modpost等.如果直接编译模块,就算编译成功,也可能无法加载):
make menuconfig
make
这里,如何配置内核将不详细说明,主要是要保证配置要加入\"device drivers\"->\"usb support\"->\"usb serial convertor support\"中的对应项.
{注:如果之前已经编译过内核,可以直接编译模块.使用如下方式编译:}
make-C $KERNEL_SOURCE_DIR M=drivers/usb/serial modules 编译完成后,即可在对应目录下得到新的usbserial.ko驱动程序.
3.替换系统原有usbserial驱动
如果是在2.6.x内核中,则需要将这个文件复制到对应目录,并加载:
cd /lib/modules/`uname -r`/kernel/drivers/usb/serial
# 备份原有驱动
sudo mv usbserial.ko usbserial.ko.bak
# 放入新的驱动
sudo cp
$KERNEL_SOURCE_DIR/drivers/usb/serial/usbserial.ko ./
sudo rmmod usbserial
# 加载新的驱动,这里就不用加vendor和product参数了,已经加入静态的id_table了
sudo modprobe usbserial
这样,以后在插入SIM4100或者LC6311模块的时候,就不用输入任何vendor和product参数
了,这两个模块也可以同时使用了.可以用:
ls /dev/ttyUSB*
查看一下,是不是两个模块的设备文件都有了.
然后在wvdial.conf文件中如下配置!
================================== [Dialer Defaults] Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = USB Modem #我见过这里有人填CDMA,GPRS等等等等的...........反正是五花八门,什么都有!但是记住既然你用的是
手机连接USB上网!那这里Modem的类型就应该是USB Modem!区分CDMA和GPRS等等,或者说GPRS连接Wap网络的接入点,应该是在Init2这一行下面新建一行Init3,并在这一行写入GPRS接入点!
Baud = 460800 #手机专业人士应该能告诉你这一行写的是什么...........(也就这里!我有些不理解........)
New PPPD = yes
Modem = /dev/ttyACM0 #这里是你的设备端口!注意,以上步骤4上面显示的是那个端口,这里就填哪个端口!千万别填错! ISDN = 0
Phone = #777 #这里是你的Modem拨号的电号码!CDMA好像都是这个! Password = CARD #你拨号用的密码!
Username = CARD #你拨号用的用户名! Stupid Mode = 1
==================================================
配置好后,连接网络的方法是打开一个终端,输入sudo wvdial 看到如下信息就表示网络连接成功!你的手机应该也显示拨号页面!
WvDial<*1>: WvDial: Internet dialer version 1.56 WvModem<*1>: Cannot get information for serial port. WvDial<*1>: Initializing modem. WvDial<*1>: Sending: ATZ WvDial Modem<*1>: ATZ WvDial Modem<*1>: OK
WvDial<*1>: Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 WvDial Modem<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 WvDial Modem<*1>: OK WvDial<*1>: Modem initialized. WvDial<*1>: Sending: ATDT#777 WvDial<*1>: Waiting for carrier. WvDial Modem<*1>: ATDT#777 WvDial Modem<*1>: CONNECT
WvDial<*1>: Carrier detected. Starting PPP immediately. WvDial WvDial<*1>: secondary DNS address 220.192.32.103 WvDial<*1>: pppd: [10]?[06][08]??[06][08] 注:拨号后请不要关闭用来拨号的终端! 还有其他拨号方法我就不一一叙述了!个人感觉就这么拨号挺好的,没必要把这个放到Xwindows里面!(有一次去外地学习,临时离开了2天,结果我的本本被同室发现,并且他用他Windows的功底找到Xwindows的这个CDMA连接,被他残忍的聊了2天的QQ我不得不为这两天的CDMA网费买单后,才发现有时候命令行还是挺好用的阿!) 这套方案我用到现在!几乎是任何地方都可以享受Internet!所以拿出来分享一下!高手别寒颤我,如果我有什么地方有错误,请您帮忙指出我的错误,并留下修改方案,我毕竟是个才学linux不到一个星期的超级大菜鸟 ^_^! ....... 各位有条件弄到以上设备,周边又没有网线,又急于上网的人事可以尝试一下! 一、内核配置linux内核2.6以后都应该自带usb转串口的驱动,在编译内核时按如下选项配置内核,即可安装usb转串口驱动:在linux kernel configuration中选择:Device Drivers--->USB support--->USB Serial Conve ... 一、内核配置 linux内核2.6以后都应该自带usb转串口的驱动,在编译内核时按如下选项配置内核,即可安装usb转串口驱动: 在linux kernel configuration中选择: Device Drivers--->USB support--->USB Serial Converter support---> [*]USB Serial Converter support //选项配置为[*]即将该驱动编译进内核; [*]USB Generic serial Driver //linux下有针对不同的usb设备的驱动,假如你的设备不在这些驱动范围之内,就可以用这个通用的串口驱动,其用法可以有两种: 方法一、将该驱动编译成驱动模块,加载驱动时输入如下: #insmod usbserial vendor=0x#### product=0x#### 其中vendor为驱动芯片的vendor IDproduct为芯片的product ID查询芯片的资料可以获得该芯片的这两个参数。例如FTDI的usb转串口芯片FT232R的USB Vendor ID(VID)为0403h,USB Product ID(PID)为6001h,均为FTDI的默认ID; 方法二、直接修改该驱动源代码中的Vendor ID 与 Product ID两个参数为芯片的ID,然后将该驱动编译进内核: 该驱动的路径为:linux-2.6.20/drivers/usb/serial/generic.c对该驱动修改如下: #ifdef CONFIG_USB_SERIAL_GENERIC static __u16 vendor=0x0403; static __u16 product=0x6001; 直接编译内核即可; [*]USB FTDI Single Port Serial Driver(EXPERIMENTAL) //暂时理解为针对FTDI产品的usb转串口驱动,例如上述的FT232R芯片,可以直接使用该驱动; 编译内核,下载到开发板; 二、创建设备文件 USB转串口驱动的主设备号一般为188,从设备号依次累加0~255;可以参考linux的文档:linux-2.6.20/Documentation/usb/usb-serial.txt 创建设备文件: #mknod /dev/ttyUSB0 c 188 0 #mknod /dev/ttyUSB1 C 180 1 上电后,插入usb转串口模块,即可看到该模块挂载到了哪一个设备文件: # usb 1-1: new full speed USB device using at91_ohci and address 2 usb 1-1: configuration #1 chosen from 1 choice ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected drivers/usb/serial/ftdi_sio.c: Detected FT232BM usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0 即该驱动挂载到了ttyUSB0设备文件,然后就可以像操作串口文件一样的操作该设备文件。 附:挂载网络文件系统的命令: #mount -t nfs -o nolock 192.168.0.244:/home/yumei /mnt/nfs(备忘) 因篇幅问题不能全部显示,请点此查看更多更全内容