1.前言
- 相信很多朋友都陆续收到了团购的Air724UG开发板,笔者之前经常用Ubuntu使用合宙的4G模块,正好最近同时在研究树莓派的各种用法,不如研究一下如何在树莓派上使用合宙4G模块,通过树莓派向模块发送AT命令,通过模块的RNDIS或ECM网卡让树莓派网上冲浪,那么闲话少说,Let’s go!
- 笔者手中的树莓派型号为树莓派3B,其他树莓派型号操作大同小异哦。
+笔者编译的是树莓派官方系统Raspbian,内核版本为4.19.x,其它系统以及其他内核情况不在本文描述中哦。 - 建议输入命令部分全程使用root用户操作哦,配置
“`root“`密码方式为“`sudo passwd“`
+ 笔者也是在很多人的帮助下,参考了很多教程才总结出的这篇文章。感谢帮助笔者完成这篇文章的朋友们!
2.树莓派准备流程
- 需要用到的物品
- 树莓派1台
- 树莓派可以使用的SD卡1张
- 读卡器1个
- 首先将树莓派刷入官方最新Raspbian系统➡️Raspbian系统下载地址戳我哦
下载好之后会得到一个格式为zip的压缩包,他其实就是官方系统的镜像,使用镜像写入工具写入树莓派使用的SD卡,写入SD卡前如果SD卡没有重要数据需要备份的话,建议先使用SDFormat格式化一下➡️SDFormat下载地址戳我哦 ,具体操作这里就不赘述了。
接下来到了写入镜像的环节,笔者这里使用的工具是balenaEtcher➡️balenaEtcher下载地址戳我哦 ,因为界面好看还傻瓜式啊2333,选好刚刚下载好的镜像和要写入的SD卡就可以Flash啦!这里要做的就是等待写入完成就好了。
- 镜像写入完成之后,不要急着弹出SD卡,打开SD卡在Windows资源管理器中挂载的boot分区,新建一个名字为ssh的空白文件,划重点,文件的名字只有ssh,不要任何后缀哦,新建好之后就可以把SD卡插入树莓派了,接下来,笔者建议大家使用网线连接树莓派到路由器哦,因为树莓派的WiFi不是那么稳定,所以保险起见,笔者选择了网线连接,也就省略了WiFi连接方式的教程,有需要的朋友可以自行百度树莓派如何使用WiFi。
- 由于上一步新建了空白ssh文件的操作,现在我们使用任意SSH工具就可以连接到树莓派终端了,在路由器的后台查看一下树莓派的IP地址。
怎么使用SSH工具这里就不赘述了,Raspbian默认的用户名为pi,密码为raspberry,至此你手里的树莓派已经具备了我们编译内核的环境了!
3.编译内核
- 不做任何修改的树莓派官方系统在将树莓派与开发板通过USB连接之后只能使用RNDIS功能,并不能正确识别到开发板USB枚举出的所有端口,为了能让树莓派通过usb_AT端口发送AT命令,通过usb_modem端口进行ppp的拨号上网,通过usb_diag端口进行trace的捕捉,我们有必要对内核中的usb驱动进行一些修改来正确识别usb枚举的端口。
- 首先要安装一些必备的工具
apt install git bc bison flex libssl-dev make
树莓派默认的apt源不是很快,笔者这里建议大家更换清华源➡️更换方法戳我哦
+ 然后我们去获取一下树莓派内核的源代码,放在用户目录即可
git clone --depth=1 https://github.com/raspberrypi/linux
这里clone速度应该会很慢,建议大家通过代理的方式clone,Linux如何设置代理,大家可以百度搜索相关教程。
这里获取到的内核版本为默认分支上的4.19.x,笔者在写这篇文章时的获取到的内核版本为4.19.115-v7+
+ 获取到内核源代码之后就进入了最为关键的配置内核环节,根据你手中的树莓派型号执行相应的命令,比方说笔者这里的3B,执行的就是中间的那三条命令。
+ 执行结束之后,当前内核源代码已经进行了最基本的配置,之后我们要修改两个内核文件以实现合宙4G模块的支持。(考虑到这两个文件修改起来比较麻烦又容易写错,所以这里笔者直接提供了这两个修改后的文件,放在了万恶的百度网盘➡️下载戳我 密码是:yr13)
+ 首先要修改的是drivers/usb/serial/option.c这个文件,具体修改位置见下图
+ 其次要修改的文件为drivers/usb/serial/usb_wwan.c这个文件,具体修改位置见下图
+ 至此,内核文件的修改已完成
+ 接下来需要在make menuconfig的界面进行图形化修改配置
+ 回到内核源代码的根目录执行
“`make menuconfig“`进入内核配置的图形界面。
+ 首先我们先开启RNDIS相关的支持,在menuconfig界面按下键盘上的“`/“`输入RNDIS进行搜索,请确保搜索结果中与RNDIS相关的选项状态为y或m。![rndis](http://openluat–luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419201206861_rndismakemenuconfig.png)如果这里状态不是**y或m**说明此项功能并没有打开,请根据相应的没有打开的**Symbol的Location**找到相关选项,**相关选项的名称为Prompt后面的名称**,通过按下键盘上的**空格(Space)**启用,或在展开相关选项之后,在相关选项中找到要打开的选项再次按下**空格**打开。
+ 有使用ECM网卡需求的朋友,可以参考RNDIS的内容打开ECM相关的支持,这里给一张参考图
![ecm](http://openluat–luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419202035295_ecmmakemenuconfig.png)
+ 打开ppp相关也是同理![ppp](http://openluat–luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419202317978_pppmakemenuconfig.png)![ppp](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419202614391_pppmakemenuconfig2.png)
+ 使用CMUX功能的同学一定要注意打开**N_GSM**这一项![n_gsm](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419202752689_n_gsm.png)![n_gsm](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419202944428_n_gsm2.png)
+经过上面的操作,内核就已经全部修改完成了,接下来要进行编译操作了,通过以下命令进行内核的编译和安装。
make -j4 zImage modules dtbs
make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
cp arch/arm/boot/dts/overlays/README /boot/overlays/
cp arch/arm/boot/zImage /boot/$KERNEL.img
经过大概一个多小时的编译,执行成功之后重启你的树莓派,重新登陆,键入
“`uname -a“`查看内核版本,是不是已经更新到了我们修改后编译的版本!![alt](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419204001717_uname.png)
4.成果验证
- 连接合宙4G模块开发板USB接口,给模块开发板上电开机,等待模块开机完成之后,在树莓派终端键入
“`ls /dev/ttyUSB*“`看看是不是已经能够成功识别到模块枚举的三个USB端口了!按照枚举顺序依次为AT,modem,diag。
![alt](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419204346670_usb_enum.png) - 键入
“`ifconfig“`查看是否有rndis网卡。![alt](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419204500713_ifconfig.png) - 关于CMUX以及PPP的使用方法就不在本篇赘述了,之后会再出一篇使用说明。
+ 迫不及待地尝试一下AT口功能是否正常,这里使用minicom,没有安装的朋友可以通过
“`apt install minicom“`安装,使用“`minicom -D /dev/ttyUSB0“`打开AT口发送AT命令测试。![alt](http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200419204914616_minicom.png)
5.总结以及参考资料
- 至此,树莓派已经可以使用合宙4G模块的所有功能了,用起来还是比较爽的,比较值得注意的地方是内核文件的修改,以及menuconfig的配置,一定要细心又有耐心哦,如果读者有任何问题可以在这篇文章下面与我交流鸭2333
- ask.openluat.com相关文章
- 树莓派官方教程 https://www.raspberrypi.org/documentation/linux/kernel/building.md
- 特别鸣谢@小神龙,@nerv.