目录

域格ASR平台模块 - Android下模块端口加载

适用模块:CLM920 JC3/CLM920 JC3 3.0/CLM920 JC3ECLM920 JD3CLM920 JC5/CLM920 JC5 3.0CLM920 JD5YM310 A09CLM920 CV9CLM920 HV9CLM920 HV9 V2CLM920 HV9 GCLM920 HE9CLM920 HV5CLM920 MV9CLM920 LV9CLM920 KV5CLM920 KV3


1、识别模块

域格ASR模块VID、PID分别为1286、4E3C。确认使用lsusb可以找到模块。

2、内核添加相关配置

域格ASR模块interface分布如下

interface 0 → RNDIS

interface 1 → CDC-DATA

interface 2 → DIAG

interface 3 → AT

interface 4 → Modem

其中的RNDIS端口需要加载成网卡,不能加载成ttyUSB,因此需要将interface 0、1过滤。

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

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

在文件中找到option_ids[]的数组,添加域格模块的VID和PID:

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

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

在文件中找到option_ids[]的数组,添加域格模块的VID和PID:

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

添加blacklist到option_ids数组中:

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

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

3、核对驱动加载情况

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

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

ttyUSB0 → DIAG

ttyUSB1 → AT

ttyUSB2 → Modem