From 64711122210cfbe23d930620defcaf9aeb89ff22 Mon Sep 17 00:00:00 2001
From: anheng <573219680@qq.com>
Date: Sat, 06 Apr 2024 19:01:18 +0800
Subject: [PATCH] add 4G module

---
 RK3568开发文档v0.5.md |  292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 278 insertions(+), 14 deletions(-)

diff --git "a/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md" "b/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md"
index 9c7e4e2..b386dea 100644
--- "a/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md"
+++ "b/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md"
@@ -395,7 +395,7 @@
 
 原理图
 
-![](/images/work-led.png)
+![](images/work-led.png)
 
 DTS文件修改(如果有)
 
@@ -447,7 +447,7 @@
 
 原理图及分析
 
-![len_buzzer](D:\Desktop\images\len_buzzer.png)
+![](images/len_buzzer.png)
 
 
 
@@ -990,29 +990,293 @@
 
 原理图及分析
 
+![image-20240406184645197](./images/4g-1.png)
 
-
-DTS文件修改(如果有)
+内核配置
 
 ```
-TBD
+Device Drivers ->
+	[*] Network device support ->
+		<*> PPP (point-to-point protocol) support ->
+			<*> PPP BSD-Compress compression ->
+			<*> PPP Deflate compression
+			[*] PPP filtering
+			<*> PPP MPPE compression (encryption)
+			[*] PPP multilink support
+			<*> PPP over Ethernet
+			<*> PPP support for async serial ports
+			<*> PPP support for sync tty ports
 ```
 
 
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
 
 
 
 ### 3.10.2 应用程序测试
 
+#### 模块开关机
+
+**开机方式**
+
+首先操作GPIO,给4G模块上电
+
+**(注意:开关机按键,复位按键,在开发板上是MPU的GPIO出来后,硬件做了反向的。低电平,上电    低脉冲,复位)**
+
+输入如下命令
+
+```
+gpioset 3 0=0
+gpioset 3 1=0
+```
+
+将这两个引脚拉低后,模块上电如下所示
+
+![](./images/4g-9.png)
+
+**关机方式**
+
+1. 软件方式关机
+
+   先发送AT+QPOWD命令给模块,再拉高引脚
+
+   
+
+   ```
+   microcom /dev/ttyUSB3 -s 115200
+   AT+QPOWD
+   
+   gpioset 3 1=1
+   ```
+
+   **(注意:在发送AT命令后需要在几秒内拉高gpio引脚,否则模块会再次开启)**
+
+   ![](./images/4g-16.png)
+
+2. 硬件方式关机
+
+   先拉低RESET大于100ms后,拉低电源引脚Power_on
+   硬件关机时序如下图所示:
+
+   ![](./images/4g-17.png)
+
+当4G模块上电后,可以在dev目录下看到四个ttyUSB设备
+
+![](./images/4g-2.png)
+
+我们可以使用microcom命令对串口发送AT命令
+
+```c
+microcom /dev/ttyUSB3 -s 115200
+```
+
+![](./images/4g-3.png)
+
+检测手机卡是否在位
+
+AT+CPIN?
+
+![](./images/4g-4.png)
+
+网络运行商名称
+
+AT+COPS?
+
+![](./images/4g-5.png)
+
+CHN-CT 表示中国电信
+
+网络注册状态
+
+AT+CREG?
+
+![](./images/4g-6.png)
+
+第二个参数为0 表示没有注册网络,为1表示网络已注册
 
 
-TBD
 
+信号强度
+
+AT+CSQ
+
+![](./images/4g-7.png)
+
+数值越大表明信号质量越好;
+
+
+
+#### PPP拨号方式
+
+内核配置好后,编译生成新的镜像烧录到开发板中
+
+启动系统时,会看到如下信息
+
+![](./images/4g-8.png)
+
+接下来需要使用到pppd软件,需要通过 pppd 这个软件来实现 ppp 拨号上网 。
+
+下载网址:[Index of /pub/ppp (samba.org)](https://download.samba.org/pub/ppp/)
+
+下载好后交叉编译,在make install的时候可能会报下面这种类型的错误
+
+```
+strip: Unable to recognise the format of the input file 'xxxxxxx'
+```
+
+解决方法:[ppp-2.4.5移植(交叉编译)_ppp交叉编译-CSDN博客](https://blog.csdn.net/y7u8t6/article/details/101376011)
+
+
+
+编译生成好的四个可执行文件:chat  pppd  pppdump  pppstats  将这四个文件拷贝到开发板的/bin文件夹下
+
+输入`pppd -v`如下图所示,表示移植成功。
+
+![](./images/pppd.png)
+
+ppp拨号方式需要编写三个脚本文件存放在/etc/ppp/peer下
+
+默认是没有这些文件夹的,所以需要去创建ppp和peer文件夹,创建好后在peer下创建如下三个脚本文件
+
+**rasppp.sh**
+
+```shell
+#!/bin/sh
+hide-password
+
+noauth
+
+connect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-connect'
+
+disconnect '/bin/chat -s -v -f /etc/ppp/peers/rasppp-chat-disconnect'
+
+debug
+
+/dev/ttyUSB3
+
+115200
+
+defaultroute
+
+noipdefault
+
+novj
+novjccomp
+noccp
+ipcp-accept-local
+ipcp-accept-remote
+local
+
+lock
+dump
+
+nodetach
+#这里我用的是电信卡
+user card
+password card
+
+#如果是移动或者联通的卡将上面两行改为
+#user Anyname
+#password Anypassword
+
+crtscts
+remotename 3gppp
+ipparam 3gppp
+
+usepeerdns
+
+```
+
+
+
+**rasppp-chat-connect.sh**
+
+```shell
+TIMEOUT 15
+ABORT   "BUSY"
+ABORT   "ERROR"
+ABORT   "NO ANSWER"
+ABORT   "NO CARRTER"
+ABORT   "NO DIALTONE"
+
+""AT
+OK \rATZ
+
+OK \rAT+CGDCONT=1,"IP",""
+
+OK-AT-OK ATDT#777
+CONNECT \d\c
+```
+
+
+
+**rasppp-chat-disconnect.sh**
+
+ ```shell
+ ABORT "ERROR"
+ ABORT "NO DIALTONE"
+ SAY "\NSending break to the modem\n"
+ 
+ ""\k"
+ 
+ ""+++ATH"
+ SAY "\nGood bye !\n"
+ ```
+
+
+
+添加完以上三个脚本文件后,现在可以使用 `ppp` 尝试拨号
+
+```
+pppd call rasppp &    #后台进行拨号
+```
+
+如果拨号正常如下图所示
+
+![](./images/4g-10.png)
+
+从程序的输出中我们可以获得以下信息:
+
+本机IP  10.86.31.158
+主要 DNS 服务器:202.103.24.68
+次要 DNS 服务器:  202.103.44.150
+
+
+
+当我们使用`ifconfig`查看网络信息会发现一个ppp0的网络
+
+![](./images/4g-11.png)
+
+此时我们需要通过上面获得的网络信息来配置这个ppp0网络
+
+```
+sudo ip route add default via 10.86.31.158
+echo "nameserver 202.103.24.68" | tee -a /etc/resolv.conf
+echo "nameserver 202.103.44.150" | tee -a /etc/resolv.conf
+```
+
+配置好之后我们就可以上网了,可以ping百度来测试
+
+![](./images/4g-12.png)
+
+#### ECM模式拨号上网
+
+上面的ppp模式拨号较为繁琐,需要大量的步骤依赖pppd软件,并且ppp拨号的稳定性不强,所以接下来介绍ECM模式,只需要AT命令就可以拨号上网
+
+当我们上电4G模块之后,我们发送如下AT命令切换模块的工作模式为ECM
+
+```
+microcom /dev/ttyUSB3 -s 115200
+AT+QCFG="usbnet",1
+```
+
+发送AT命令后,模块会自动重启,如下图所示
+
+![](./images/4g-13.png)
+
+我们在`ifconfig`查看网络时候,可以看到多了一个usb0网络,并且自动获取IP地址
+
+![](./images/4g-14.png)
+
+同样,我们可以ping百度测试上网功能
+
+![](./images/4g-15.png)

--
Gitblit v1.9.1