树莓派3g模块
树莓派对大部分模块都有自动的驱动支持基本上都可以做到即插即用,网上有很多方法可以实现3g模块上网,比如使用可以自动拨号并且断线重连的软件pppd、umtskeeper与sakis3g。在这里我们将用到以下几个软件
1.在linux上,3G网卡上电会被检测为storge设备,而要用它拨号上网,就需要把网卡从storge设备转为modem设备,怎么转化呢?linux下有个软件叫usb_modeswitch,这是需要安装的第1个软件。
2.为了简化pppd的拨号流程(传统方式要编写好几个脚本,调用几次pppd的命令),需要一个wvdial的软件,它将pppd的拨号流程简化为一个配置脚本,写好脚本,运行wvdial,它会先完成和modem的AT命令交互,待交互完成后,再调用pppd,完成拨号上网。这是需要安装的第2个软件(里面自行安装好了pppd)。所以我们不需要再次安装pppd。
接下来进入操作过程:
插入3g模块,这里我是使用的华为3g e620的模块
查看3g模块信息
pi@nameserver114:~$ lsusb
Bus 001 Device 004: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
安装必要软件
sudo apt-get install usb-modeswitch usb-modeswitch-data
sudo apt-get install wvdial
基本准备工作已经完成,接下来usb-modeswitch默认配置文件
在配置文件之前我们需要查找本华为模块版本的转换信息
以下目录中有一个压缩包,并解压它
configPack.tar.gz
tar -xzvf /usr/share/usb_modeswitch/configPack.tar.gz
pi@nameserver114:~$ cd /usr/share/usb_modeswitch/
pi@nameserver114:/usr/share/usb_modeswitch$ ls
03f0:002a 0af0:d057 198a:0003
0408:f000 0af0:d058 198f:bccd
0421:060c 0af0:d155 19d2:0003
0421:0610 0af0:d157 19d2:0013
0421:061d 0af0:d255 19d2:0026
0421:0622 0af0:d257 19d2:0031
0421:0627 0af0:d357 19d2:0040
0421:062c 0b3c:c700 19d2:0053
0421:0632 0b3c:f000 19d2:0083
0421:0637 0cf3:20ff 19d2:0083:uPr=WCDMA
0471:1210:uMa=Philips 0d46:45a1 19d2:0101
0471:1210:uMa=Wisue 0d46:45a5 19d2:0103
0471:1237 0df7:0800 19d2:0110
0482:024d 0e8d:0002:uPr=MT 19d2:0115
04bb:bccd 0e8d:7109 19d2:0120
04e8:680c 0fce:d0cf 19d2:0146
04e8:689a 0fce:d0e1 19d2:0149
04e8:f000:sMo=U209 0fce:d103 19d2:0154
057c:84ff 0fd1:1000 19d2:0166
05c6:1000:sVe=GT 1004:1000 19d2:0169
05c6:1000:sVe=Option 1004:607f 19d2:0325
05c6:1000:uMa=AnyDATA 1004:613a 19d2:1001
05c6:1000:uMa=CELOT 1004:613f 19d2:1007
05c6:1000:uMa=DGT 1004:614e 19d2:1009
05c6:1000:uMa=Option 1004:6156 19d2:1013
05c6:1000:uMa=SAMSUNG 1004:6190 19d2:1017
05c6:1000:uMa=SSE 1004:61aa 19d2:1171
05c6:1000:uMa=StrongRising 1004:61dd 19d2:1175
05c6:1000:uMa=Vertex 1004:61e7 19d2:1179
05c6:2000 1004:61eb 19d2:1201
05c6:2001 1004:6327 19d2:1216
05c6:6503 1033:0035 19d2:1224
05c6:f000 106c:3b03 19d2:1514
05c7:1000 106c:3b05 19d2:1517
072f:100d 106c:3b06 19d2:1520
07d1:a800 106c:3b14 19d2:1523
07d1:a804 1076:7f40 19d2:1542
0922:1001 109b:f009 19d2:2000
0930:0d46 1199:0fff 19d2:bccd
0ace:2011 1266:1000 19d2:ffde
0ace:20ff 12d1:1001 19d2:ffe6
0af0:4007 12d1:1003 19d2:fff5
0af0:6711 12d1:1009 19d2:fff6
0af0:6731 12d1:101e 1a8d:1000
0af0:6751 12d1:1030 1a8d:2000
0af0:6771 12d1:1031 1ab7:5700
0af0:6791 12d1:1414 1b7d:0700
0af0:6811 12d1:1446 1bbb:000f
0af0:6911 12d1:1449 1bbb:00ca
0af0:6951 12d1:14ad 1bbb:f000
0af0:6971 12d1:14b5 1bbb:f017
0af0:7011 12d1:14b7 1bbb:f052
0af0:7031 12d1:14ba 1c9e:1001
0af0:7051 12d1:14c1 1c9e:6061
0af0:7071 12d1:14c3 1c9e:9200
0af0:7111 12d1:14c4 1c9e:9800
0af0:7211 12d1:14c5 1c9e:98ff
0af0:7251 12d1:14d1 1c9e:9e00
0af0:7271 12d1:14fe 1c9e:f000
0af0:7301 12d1:1505 1da5:f000
0af0:7311 12d1:151a 1dd6:1000
0af0:7361 12d1:1520 1de1:1101
0af0:7381 12d1:1521 1e0e:f000
0af0:7401 12d1:1523 1e89:f000
0af0:7501 12d1:1526 1edf:6003
0af0:7601 12d1:1553 1ee8:0009
0af0:7701 12d1:1557 1ee8:0013
0af0:7706 12d1:155b 1ee8:0040
0af0:7801 12d1:1c0b 1ee8:004a
0af0:7901 12d1:1c24 1ee8:0054
0af0:7a01 12d1:1d50 1ee8:0060
0af0:7a05 12d1:1da1 1f28:0021
0af0:8006 12d1:1f01 1fac:0032
0af0:8200 12d1:1f11 1fac:0130
0af0:8201 12d1:380b 1fac:0150
0af0:8300 1307:1169 1fac:0151
0af0:8302 1410:5010 2001:a80b
0af0:8304 1410:5020 201e:1023
0af0:8400 1410:5030 201e:2009
0af0:8600 1410:5031 2020:f00e
0af0:8700 1410:5041 2077:f000
0af0:8800 1410:5059 21f5:1000
0af0:8900 1410:7001 22de:6803
0af0:9000 148e:a000 22f4:0021
0af0:c031 148f:2578 230d:0001
0af0:c100 15eb:7153 230d:0007
0af0:d001 16d8:6281 230d:0101
0af0:d013 16d8:6803 2357:0200
0af0:d031 16d8:6804 8888:6500
0af0:d033 16d8:700a configPack.tar.gz
0af0:d035 16d8:700b
0af0:d055 16d8:f000
找到12d1\:1001文件并打开它,以下就是它的转换信息,我们可以直接复制粘贴到usb-modeswitch配置文件
sudo nano 12d1:1001
sudo nano /etc/usb-modeswtich.conf
# Huawei E169
TargetClass=0xff
HuaweiMode=1
将以上的信息复制到usb-modeswitch中
sudo nano /etc/usb-modeswitch.conf
然后我们输入转换命令,指定配置文件并创建tty设备,具体用法看help
usb_modeswitch -W -c /etc/usb_modeswitch.conf -I
转换成功之后,我们会在/dev看见多了几个tty,接下来我们看那个tty能用
pi@nameserver114:/dev$ sudo wvdialconf
Editing `/etc/wvdial.conf'.
Scanning your serial ports for a modem.
ttyUSB0<*1>: ATQ0 V1 E1 -- OK
ttyUSB0<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB0<*1>: Modem Identifier: ATI -- Manufacturer: huawei
ttyUSB0<*1>: Speed 9600: AT -- OK
ttyUSB0<*1>: Max speed is 9600; that should be safe.
ttyUSB0<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB1<*1>: ATQ0 V1 E1 -- failed with 2400 baud, next try: 9600 baud
ttyUSB1<*1>: ATQ0 V1 E1 -- failed with 9600 baud, next try: 9600 baud
ttyUSB1<*1>: ATQ0 V1 E1 -- and failed too at 115200, giving up.
ttyUSB2<*1>: ATQ0 V1 E1 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 Z -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 -- OK
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
ttyUSB2<*1>: Modem Identifier: ATI -- Manufacturer: huawei
ttyUSB2<*1>: Speed 9600: AT -- OK
ttyUSB2<*1>: Max speed is 9600; that should be safe.
ttyUSB2<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 -- OK
Found a modem on /dev/ttyUSB0.
Modem configuration written to /etc/wvdial.conf.
ttyUSB0<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
ttyUSB2<Info>: Speed 9600; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
由图可见,ttyUSB0可用,这个时候我们再进入wvdial配置文件,检查是否选定ttyUSB0,并更改配置文件
sudo nano /etc/wvdial.conf
[Dialer Defaults]
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","3GNET"
Modem Type = Analog Modem
ISDN = 0
New PPPD = yes
Phone = *99#
Modem = /dev/ttyUSB0
Username = any
Password = any
Baud = 9600
这里我用的是移动卡,将phone、usrname、password设置为移动3g相关的信息。另外的几种情况,以下图为鉴
运营商(ISP) | APN | 拨号号码 | 帐号 | 密码 |
中国联通WCDMA (China Unicom) | 3GNET | *99# | 空 | 空 |
中国电信CDMA2000 (China Telecom) EVDO网络 | 空 | #777 | ctnet@mycdma.cn | vnet.mobi |
1X网络 | 空 | #777 | card (CARD) | card(CARD) |
中国移动 TD-SCDMA (China Mobile) | CMNET | *98*1# | 空 | 空 |
中国移动 GPRS (China Mobile) | CMNET | *99***1# | 空 | 空 |
pi@nameserver114:/$ sudo wvdial
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","3GNET"
AT+CGDCONT=1,"IP","3GNET"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
开始拨号,如果不出意外,将会拨号成功。
尝试ping baidu,检查是否已经联网成功。