目前,板子开机后,不需要insmod GobiNet.ko,就有usb0网络接口。
GobiNet.ko并没有起到作用,insmod GobiNet.ko也没有匹配到任何设备。
EC200A这个USB设备上面有0-4这五个接口(interface),五个接口的名字分别为:
root@rk3308b-buildroot:/# cat /sys/bus/usb/devices/2-1/2-1:1.0/interface
Mobile RNDIS Network Adapter
root@rk3308b-buildroot:/# cat /sys/bus/usb/devices/2-1/2-1:1.1/interface
Mobile RNDIS Network Adapter
root@rk3308b-buildroot:/# cat /sys/bus/usb/devices/2-1/2-1:1.2/interface
Mobile Diag Interface
root@rk3308b-buildroot:/# cat /sys/bus/usb/devices/2-1/2-1:1.3/interface
Mobile AT Interface
root@rk3308b-buildroot:/# cat /sys/bus/usb/devices/2-1/2-1:1.4/interface
Mobile MODEM Interface
root@rk3308b-buildroot:/#
板子开机后,在没有插入任何模块的情况下,接口0和1匹配的是linux内核自带的Luckfox_Nova_SDK_250430/kernel/drivers/net/usb/rndis_host.c驱动,接口2-4没有匹配驱动。usb0网络接口就是由内核自带的rndis_host.c驱动产生的。
root@rk3308b-buildroot:/# lsmod
Module Size Used by Tainted: G
aic8800_bsp 73728 0
root@rk3308b-buildroot:/# ls -l /sys/bus/usb/devices/2-1/2-1:1.0/driver
lrwxrwxrwx 1 root root 0 Jan 1 00:00 /sys/bus/usb/devices/2-1/2-1:1.0/driver -> ../../../../../../bus/usb/drivers/rndis_host
root@rk3308b-buildroot:/# ls -l /sys/bus/usb/devices/2-1/2-1:1.1/driver
lrwxrwxrwx 1 root root 0 Jan 1 00:01 /sys/bus/usb/devices/2-1/2-1:1.1/driver -> ../../../../../../bus/usb/drivers/rndis_host
root@rk3308b-buildroot:/# ls -l /sys/bus/usb/devices/2-1/2-1:1.2/driver
ls: cannot access '/sys/bus/usb/devices/2-1/2-1:1.2/driver': No such file or directory
root@rk3308b-buildroot:/# ls -l /sys/bus/usb/devices/2-1/2-1:1.3/driver
ls: cannot access '/sys/bus/usb/devices/2-1/2-1:1.3/driver': No such file or directory
root@rk3308b-buildroot:/# ls -l /sys/bus/usb/devices/2-1/2-1:1.4/driver
ls: cannot access '/sys/bus/usb/devices/2-1/2-1:1.4/driver': No such file or directory
root@rk3308b-buildroot:/#
如果想要让GobiNet.ko起作用,就需要修改Quectel_LTE5G_Linux_USB_Driver_V1.0-5/Quectel_LinuxAndroid_GobiNet_Driver_V1.6/GobiUSBNet.c文件,找到static const struct usb_device_id QuecGobiVIDPIDTable,在里面加上GOBI_FIXED_INTF( 0x2c7c, 0x6005 )。
因为static struct driver_info GobiNetInfo里面第1996行data=(1 << 4),而在第755-761行有下面的代码
// Verify correct interface (4 for UC20)
if ( !test_bit(pIntf->cur_altsetting->desc.bInterfaceNumber, &pDev->driver_info->data))
{
DBG( "invalid interface %d\n",
pIntf->cur_altsetting->desc.bInterfaceNumber );
return -ENODEV;
}
所以最后GobiUSBNet.ko会匹配上接口4。
在内核外编译GobiNet驱动代码,并将GobiNet.ko上传到板子上。
adb push "\\OCT1158-UBUNTU\oct1158\Documents\Code\C\Quectel_LTE5G_Linux_USB_Driver_V1.0-5\Quectel_LinuxAndroid_GobiNet_Driver_V1.6\GobiNet.ko" /root
在板子上插入GobiNet.ko模块,可以看到又出现了新的usb1接口,这才是GobiUSBNet.ko产生的网络接口。
root@rk3308b-buildroot:/# cd /root
root@rk3308b-buildroot:/root# insmod GobiNet.ko
[ 392.129124] GobiNet: Quectel_Linux&Android_GobiNet_Driver_V1.6
[ 392.132848] GobiNet 2-1:1.4 usb1: register 'GobiNet' at usb-ff440000.usb-1, GobiNet Ethernet Device, 2e:88:bc:88:ef:75
[ 392.134713] creating qcqmi1
[ 392.136384] usbcore: registered new interface driver GobiNet
root@rk3308b-buildroot:/root# [ 393.192237] IPv6: ADDRCONF(NETDEV_CHANGE): usb1: link becomes ready
root@rk3308b-buildroot:/root# ifconfig
eth0 Link encap:Ethernet HWaddr F2:2E:FE:02:6E:60
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:39
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:40 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2848 (2.7 KiB) TX bytes:2848 (2.7 KiB)
usb0 Link encap:Ethernet HWaddr AE:53:03:FF:64:0C
inet addr:192.168.43.100 Bcast:192.168.43.255 Mask:255.25e:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:61 errors:0 dropped:0 overruns:0 frame:0
TX packets:213 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2880 (2.8 KiB) TX bytes:24818 (24.2 KiB)
usb1 Link e:863:33f6/64 Scope:Link
UP BROADCAST RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:768 (768.0 B)
root@rk3308b-buildroot:/root#
可以看到,GobiNet.ko确实匹配的是4号接口(Mobile MODEM Interface),产生了usb1网络接口。
linux内核自带的Luckfox_Nova_SDK_250430/kernel/drivers/net/usb/rndis_host.c驱动依然还是匹配接口0-1(Mobile RNDIS Network Adapter),产生的是usb0网络接口。
root@rk3308b-buildroot:/root# lsmod
Module Size Used by Tainted: G
GobiNet 53248 0
aic8800_bsp 73728 0
root@rk3308b-buildroot:/root# ls -l /sys/bus/usb/devices/2-1/2-1:1.0/driver
lrwxrwxrwx 1 root root 0 Jan 1 00:00 /sys/bus/usb/devices/2-1/2-1:1.0/driver -> ../../../../../../bus/usb/drivers/rndis_host
root@rk3308b-buildroot:/root# ls -l /sys/bus/usb/devices/2-1/2-1:1.1/driver
lrwxrwxrwx 1 root root 0 Jan 1 00:01 /sys/bus/usb/devices/2-1/2-1:1.1/driver -> ../../../../../../bus/usb/drivers/rndis_host
root@rk3308b-buildroot:/root# ls -l /sys/bus/usb/devices/2-1/2-1:1.2/driver
ls: cannot access '/sys/bus/usb/devices/2-1/2-1:1.2/driver': No such file or directory
root@rk3308b-buildroot:/root# ls -l /sys/bus/usb/devices/2-1/2-1:1.3/driver
ls: cannot access '/sys/bus/usb/devices/2-1/2-1:1.3/driver': No such file or directory
root@rk3308b-buildroot:/root# ls -l /sys/bus/usb/devices/2-1/2-1:1.4/driver
lrwxrwxrwx 1 root root 0 Jan 1 00:06 /sys/bus/usb/devices/2-1/2-1:1.4/driver -> ../../../../../../bus/usb/drivers/GobiNet
root@rk3308b-buildroot:/root#
