目前,板子開機後,不需要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#
