要想正常使用qcserial.ko,同樣需要修改qcserial.c,否則沒法匹配上usb設備。
static const struct usb_device_id id_table[]裡面在
{USB_DEVICE(0x0AF0, 0x8120)}, /* Option GTM681W */
後面添加
{USB_DEVICE(0x2C7C, 0x6005)},
在qcprobe函數裡面找到case QCSERIAL_G2K:
把
if (nintf == 5 && id->idProduct == QUECTEL_EC20_PID) {
改成
if (nintf == 5 && (id->idProduct == QUECTEL_EC20_PID || id->idProduct == 0x6005)) {
然後重新編譯。
insmod usb_wwan.ko和qcserial.ko後,就會出現/dev/ttyUSB0和/dev/ttyUSB1。/dev/ttyUSB1裡面也可以正常收發AT命令。
這說明,qcserial.ko和option.ko的作用是相同的,都是在USB接口2和3上產生ttyUSB0和ttyUSB1兩個設備。

EC200A有5個USB接口,而EC200M有6個USB接口。
要想支持EC200M,那就應該改成if ((nintf == 5 || nintf == 6) && (id->idProduct == QUECTEL_EC20_PID || id->idProduct == 0x6002 || id->idProduct == 0x6005)) {。
在EC200M上insmod option.ko,出來的是/dev/ttyUSB0和/dev/ttyUSB1兩個串口。
而如果在EC200M上insmod qcserial.ko,則會出現/dev/ttyUSB0、/dev/ttyUSB1和/dev/ttyUSB2三個串口。