一、开启树莓派的串口服务
树莓派开启串口通信,需要在主菜单中找到首选项,并打开Raspberry Pi Configuration,然后在新窗口单击Interfaces,最后找到Serial Port选项,勾选Enable,启用串口。
二、检测模块是否正常
(1)在终端输入 lsusb,将出现我们的设备信息(如图第二行)
(2)添加VID和PID信息(注意双引号中的要与lsusb输出显示的你的设备的ID相同)
sudo modprobe option
sudo sh -c 'echo "2c7c 6005" > /sys/bus/usb-serial/drivers/option1/new_id'
(3)检查串口。输入ls /dev |grep ttyUSB
ls /dev |grep ttyUSB
输入这串代码我们就会看到如下情况,途中显示的三个串口都是ec20的串口,但是具有不同的功能,不同型号的ec20的串口数量也会不同。这里我只会用到串口1也就是ttyUSB1。
三、串口通信检测
在终端输入 busybox microcom -s 115200 /dev/ttyUSB1 使用at指令检测模块和通信是否正常。
busybox microcom -s 115200 /dev/ttyUSB1
然后就可以输入at指令了(输入的时候是没有回显的)分别输入at和at+csq
在显示的第二数据中的31表示信号值通常在10到31之间,数字越大信号越好
ps:在这一步操作中可能会遇到一两个报错的问题
其中第一种报错为 microcom: can't open '/dev/ttyUSB1': Device or resource busy 遇到这种报错说明我们的串口进程正在被占用我们需要手动清除
第二种报错为microcom: can't create '/var/lock/LCK..ttyUSB1': File exists。这种错我们需要手动删除ttyUSB1的锁文件
四、拨号上网流程
(1)下载pppd
sudo apt-get install ppp
(2)在安装好pppd后我们就可以开始进行我们的脚本书写,切换目录至 /etc/ppp/peers ,没有这个目录就自行创建,因为是在/etc目录之下,需要使用sudo或者进入root模式才能创建或者编辑,创建好之后,来到peers/下,编写我们的第一个初始化属性脚本(不同运营商的电话卡脚本参数不同,本人是电信电话卡,文末给出一些相关参数。
rasppp
# /etc/ppp/peers/rasppp
# Usage: sudo pppd call rasppp
# 连接调试时隐藏密码
hide-password
# 该手机不需要身份验证4
noauth
# 用于呼叫控制脚本
connect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-chat-connect'
# 断开连接脚本
disconnect '/usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-chat-disconnect'
# 调试信息
debug
# 4G模块
/dev/ttyUSB2
# 串口波特率
115200
# 使用默认路由
defaultroute
# 不指定默认IP
noipdefault
# 不使用PPP压缩
novj
novjccomp
noccp
ipcp-accept-local
ipcp-accept-remote
local
# 最好锁定串行总线
lock
dump
# 保持pppd连接到终端
nodetach
# 用户名 密码
# user
user ctnet@mycdma.cn
# password
password vnet.mobi
#移动,联通拨号不需要用户名密码,文末给出不同运营商的配置
# 硬件控制流
crtscts
remotename 3gppp
ipparam 3gppp
# 请求最多两个DNS服务器地址
usepeerdns
#ipv6禁用
noipv6
rasppp-chat-connect
# 连续15秒,收到以下字符,则退出执行
TIMEOUT 15
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "NO CARRTER"
ABORT "NO DIALTONE"
# 40秒内没有收到指定字符,则退出
# 例如 OK \rATZ,发送ATZ,希望收到的是OK
""AT
OK \rATZ
# 建立连接,联通为3gnet,文末给出各运营商配置
OK \rAT+CGDCONT=1,"IP","ctlte"
# 拨号,*99#是联通的拨号号码
OK-AT-OK ATDT#777
CONNECT \d\c
rasppp-chat-disconnect
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\NSending break to the modem\n"
""\k"
""+++ATH"
SAY "\nGood bye !\n"
五、开始拨号
(1) 编写好脚本后我们就可以开始拨号了
sudo pppd call rasppp
(2)bur,你有可能会遇到一些报错,除一些参数配置错误之外,可能会遇到timeout set to 30 seconds abort on (BUSY) expect (^M) alarm Failed Script /usr/sbin/chat -s -v -f /etc/ppp/peers/rasppp-chat-connect finished (pid 3586), status = 0x3 Connect script failed
如果代码一致遇到这种报错很可能是因为win与liunx字符转换有关win中的换行符liunx会被识别为结束符以至于chat脚本乱发指令,遇到这种情况我们需要手动清除三个脚本文件中的win换行符
解决方法:使用sed命令删除win的换行符
sudo sed -i 's/\r//g' /etc/ppp/peers/rasppp-chat-disconnect
sudo sed -i 's/\r//g' /etc/ppp/peers/rasppp-chat-connect
sudo sed -i 's/\r//g' /etc/ppp/peers/rasppp
(3)拨号成功以后我们需要按ctrl+z或者新开一个终端来保证进程。使用ifconfig命令;我们会发现出现了ppp0网卡
(4)使用ping命令来进行验证是否可上网
ping -I ppp0 4.2.2.2
有数据交互,说明ping通成功。ppp拨号上网成功
六、补充
学习是一件很纯粹的事情