目录

域格高通平台4G模块 - Linux下驱动加载及拨号前准备

适用模块:CLM920 NC3CLM920 NC3 2.0CLM920 TE3CLM920 TE3 2.0CLM920 TD3CLM920 NC5CLM920 TE5CLM920 TD5


1、识别模块

域格高通模块VID、PID分别为05c6、9025。确认使用lsusb可以找到模块。

2、内核添加相关配置

域格高通模块interface分布如下

interface 0 → DIAG

interface 1 → ADB

interface 2 → Modem

interface 3 → AT

interface 4 → RMNET

一般使用场景,仅需加载AT口及modem口,其他端口可以过滤掉,即interface 0、1、4可以设置为不加载成ttyUSB。

使用GoibNet拨号时必须要过滤interface 4,以免interface 4因加载成ttyUSB而加载不了网卡驱动,导致无法拨号。

端口过滤的方式因kernel版本差异有所不同,可根据kernel版本情况选择以下一种方式对应修改即可。

① kernel 版本支持 RSVD 的,在 option.c(一般位于内核目录下的drivers/usb/serial/option.c)中的 option_ids 中添加 RSVD,可使驱动在加载时自动跳过RSVD指定的interface。

在文件中找到option_ids[]的数组,添加域格模块的VID和PID,VID 0x05C6一般已存在,可根据实际情况,参照以下方法添加VID、PID:

设置interface 0、1、4不加载option驱动,添加内容如下:

② kernel 版本支持 blacklist 的,在 option.c(一般位于内核目录下的drivers/usb/serial/option.c)中的 option_ids 中直接添加blacklist,让驱动在加载时自动跳过blacklist指定的interface。

在文件中找到option_ids[]的数组,添加域格模块的VID和PID,VID 0x05C6一般已存在,可根据实际情况,参照以下方法添加VID、PID:

设置interface 0、1、4不加载option驱动,添加内容如下:

添加blacklist到option_ids数组中:

③ 不支持以上两种方式的,先在option_ids[]数组中添加模块的VID和PID:

再在option_probe函数内判断当前interface号进行过滤:

④ 对于使用usb-serial.ko驱动的用户,在option.c文件中的option_ids[]数组内添加模块的VID和PID:

在usb-serial.c文件中的usb_serial_probe()函数开始增加如下判断来过滤端口:

3、核对驱动加载情况

编译完成后,通过查询命令:ls /dev/ttyU*,应有ttyUSB0、ttyUSB1两个端口,如下图:

interface 2加载成了ttyUSB0,interface 3加载成了ttyUSB1,对应功能如下

ttyUSB0 → Modem

ttyUSB1 → AT

4、核对模块注册情况

可以通过minicom直接给模块发AT,如给AT口发,输入minicom -D /dev/ttyUSB1

核对以下AT

1、AT+CPIN? —— 应返回ready。若不是,需要检查SIM卡接触情况。

2、AT+CSQ —— 一般要在10以上。若不是,需要检查天线。

3、AT^SYSINFO —— 第一位是2,第二位是2或3(即数据域要注册上)。若不是,需要核对SIM卡状态。

4、AT+CGREG? —— 第二位参数应返回1或5,如0,1 或 0,5。若不是,需要核对SIM卡状态。

以上返回值确认无误后,就可以根据需要选择拨号方式进行拨号操作。