第一部分 RIL适配
请按照本节的内容对Android系统进行修改,否则RIL将无法正常运行。
1. 在内核中添加USB串口驱动和USB网卡驱动,可以选择将其直接编入内核,或者编译为模块待内核启动时加载,总之,要确保Linux内核启动完成后,这两个驱动是运行在内核当中的。
通常,配置内核是通过指令make menuconfig,执行该指令后:
添加USB串口驱动:
device drivers-->
usb support-->
usb serial converter support-->
USB driver for GSM and CDMA modems
添加USB网卡驱动
devices drivers-->
Network device support-->
usb Network Adapters-->
Mulil-purpose USB Networking Framework
* 注:如果您的内核结构与上面不一致,可能需要在其它的路径下面选择,总之,只要确保源文件中的 option.c 及其相关的部分(USB串口驱动),cdc_ether.c 及其相关部分(USB网卡驱动)参与编译即可
2. 在内核中添加PPP组件
通常,配置内核是通过指令make menuconfig,执行该指令后:
devices drivers-->
Network device support-->
ppp support-->
ppp filtering
ppp support for async serial ports
ppp support for sync tty ports
ppp deflate compression
ppp BSD-compress compression
3. 在内核驱动源文件中添加ZTE模块相关的信息:USB网卡驱动可以自动识别到ZTE模块,因此,其对应的cdc_ether.c文件中不需要添加任何内容。但是USB串口驱动不能自动识别,必须要添加ZTE模块的设备信息到源文件 option.c 中。
文件路径:/kernel/drivers/usb/serial/option.c
添加USB端口的VID和PID信息,见下面蓝色部分。这里0x0199为ME3860模块和ME3760_V2模块的PID,0x1476为ME3620模块的PID,如果您使用的是其它模块,将其中的PID值更换为相应的值即可。
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x19d2, 0x0199) },
{ USB_DEVICE(0x19d2, 0x1476) },
……
}
添加黑名单信息,上面添加模块信息是只添加了设备的VID和PID,没有附加任何额外的端口信息,这样会导致设备的网卡也被加载成为USB串口,下面提供的是一种类似于黑名单的方式,在option_probe函数中,将网卡对应的端口加入黑名单,防止USB网卡被加载成为USB串口。
对于ME3860和ME3760_V2,其网卡对应的端口为0和1,对于ME3620,其网卡对应的端口为3和4。请将以下代码添加到option_probe函数中
printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",
serial->dev->descriptor.idVendor,
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber);
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descrip
请按照本节的内容对Android系统进行修改,否则RIL将无法正常运行。
1. 在内核中添加USB串口驱动和USB网卡驱动,可以选择将其直接编入内核,或者编译为模块待内核启动时加载,总之,要确保Linux内核启动完成后,这两个驱动是运行在内核当中的。
通常,配置内核是通过指令make menuconfig,执行该指令后:
添加USB串口驱动:
device drivers-->
usb support-->
usb serial converter support-->
USB driver for GSM and CDMA modems
添加USB网卡驱动
devices drivers-->
Network device support-->
usb Network Adapters-->
Mulil-purpose USB Networking Framework
* 注:如果您的内核结构与上面不一致,可能需要在其它的路径下面选择,总之,只要确保源文件中的 option.c 及其相关的部分(USB串口驱动),cdc_ether.c 及其相关部分(USB网卡驱动)参与编译即可
2. 在内核中添加PPP组件
通常,配置内核是通过指令make menuconfig,执行该指令后:
devices drivers-->
Network device support-->
ppp support-->
ppp filtering
ppp support for async serial ports
ppp support for sync tty ports
ppp deflate compression
ppp BSD-compress compression
3. 在内核驱动源文件中添加ZTE模块相关的信息:USB网卡驱动可以自动识别到ZTE模块,因此,其对应的cdc_ether.c文件中不需要添加任何内容。但是USB串口驱动不能自动识别,必须要添加ZTE模块的设备信息到源文件 option.c 中。
文件路径:/kernel/drivers/usb/serial/option.c
添加USB端口的VID和PID信息,见下面蓝色部分。这里0x0199为ME3860模块和ME3760_V2模块的PID,0x1476为ME3620模块的PID,如果您使用的是其它模块,将其中的PID值更换为相应的值即可。
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x19d2, 0x0199) },
{ USB_DEVICE(0x19d2, 0x1476) },
……
}
添加黑名单信息,上面添加模块信息是只添加了设备的VID和PID,没有附加任何额外的端口信息,这样会导致设备的网卡也被加载成为USB串口,下面提供的是一种类似于黑名单的方式,在option_probe函数中,将网卡对应的端口加入黑名单,防止USB网卡被加载成为USB串口。
对于ME3860和ME3760_V2,其网卡对应的端口为0和1,对于ME3620,其网卡对应的端口为3和4。请将以下代码添加到option_probe函数中
printk("idVendor=%x, idProduct=%x, bInterfaceNumber =%d\r\n",
serial->dev->descriptor.idVendor,
serial->dev->descriptor.idProduct,
serial->interface->cur_altsetting->desc. bInterfaceNumber);
if (serial->dev->descriptor.idVendor == 0x19d2 &&
serial->dev->descrip