1. 从零开始:为什么要在工控机上折腾4G模块?
你可能遇到过这样的场景:一台部署在偏远仓库、户外广告牌或者移动车辆里的工控机,周围没有网线,连不上Wi-Fi,但你又需要它稳定地连接互联网,把数据传回来。这时候,给机器插上一张4G/5G物联网卡,让它像手机一样“自己上网”,就成了最靠谱的方案。
我手头就有一台基于J1900处理器的工控机,自带一个SIM卡槽,正好可以插上一块美格的SLM750 4G模块。在Windows系统下,这事儿很简单,厂家驱动一装,拨号软件一点,网就通了。但我们的生产环境跑的是CentOS 7.6,一个追求稳定、没有图形界面的Linux服务器系统。在这里,想让这块4G模块工作起来,就得自己动手,从驱动编译到拨号配置,走一遍完整的流程。
这个过程听起来有点硬核,但别怕。我把自己踩过的坑、验证过的步骤都整理出来了。只要你跟着做,即使对Linux内核驱动不太熟悉,也能一步步搞定。我们的目标很明确:在CentOS 7.6系统上,让美格SLM750模块稳定拨号,实现自动联网,并且能像系统服务一样开机自启、断线重连。这不仅仅是让设备“能上网”,更是为了在无人值守的工业环境下,提供一种可靠、自治的网络接入能力。
2. 动手前的准备:软硬件环境清点
工欲善其事,必先利其器。在开始编译和配置之前,我们需要把所有的“零件”都准备好,避免做到一半才发现缺东少西,那会很抓狂。
硬件方面,你需要这几样东西:
- 一台安装了CentOS 7.6 64位系统的工控机或服务器。我用的系统是最小化安装(Minimal Install)的,这样最干净,但也意味着很多编译工具需要自己装。
- 一块美格SLM750 4G模块。我用的PCIE接口版本,它会被系统识别为一个USB设备。请务必确认模块的VID(厂商ID)和PID(产品ID),后面编译驱动会用到。SLM750常见的ID是
VID: 0x05C6, PID: 0xF601。 - 一张能正常上网的SIM卡。普通的手机卡或者物联网卡都行,确保没有欠费,并且设备所在地有运营商信号覆盖。
- 天线。别忘了把4G模块的4G主天线和GPS天线(如果有)都接好,信号强度直接影响连接速度和稳定性。
软件和源码方面,我们需要下载三个关键文件:
- CentOS 7.6内核源码。你的系统内核版本可以通过
uname -r命令查看,比如我的是3.10.0-957.el7.x86_64。你需要去CentOS官方仓库或镜像站找到完全匹配版本的内核源码包,通常名字类似kernel-3.10.0-957.el7.src.rpm或者直接是linux-3.10.0-957.21.3.el7.tar.xz。版本号必须完全一致,否则编译驱动时可能会因内核符号不匹配而失败。 - 美格SLM750的GobiNet驱动源码。这是让系统把4G模块识别为网卡的关键,一般由模块厂家提供。
- 美格SLM750的拨号工具源码(MeiG-CM)。这个工具负责和运营商的网络进行握手、认证、获取IP地址,相当于手机里的“移动网络”开关。
把这些源码包提前下载好,放到你的CentOS机器里。同时,我们还需要安装一些基础的编译工具链。打开终端,执行下面的命令来安装必备软件包:
yum groupinstall -y "Development Tools"
yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) elfutils-libelf-devel openssl-devel ncurses-devel
第一行命令安装了GCC、Make等一整套开发工具。第二行则安装了与当前运行内核版本完全一致的内核开发包和头文件,这是编译外部模块(比如我们的4G驱动)所必需的。做好这些,我们的“工作台”就算搭建好了。
3. 内核源码编译与关键配置修改
很多朋友一听到要编译内核就头大,觉得那是Linux大神才能干的事。别紧张,我们这次编译内核,并不是要替换掉你现在的系统内核,主要目的有两个:一是获取完整的内核源码树,为我们后续编译第三方驱动提供一个正确的构建环境;二是需要修改内核源码中的一两个文件,让系统能正确识别我们的4G模块。<


344

被折叠的 条评论
为什么被折叠?



