[Solved] Can't initialize a RNDIS-based 5G Modem

Hi,

I am trying to connect a Inseego FX2000 5G (cellular) router to a Raspberry Pi 4B running OpenWRT 22.03.3. The FX2000 has been changed from router to the 5G modem, using the "IP Pass-through" mode. Currently, the pass-through is set to the Gigabit Ethernet port on the FX2000, and it's working great. The device connected to the Gigabit Ethernet port of the FX2000 receives a public IP from T-Mobile. The FX2000 is not doing any NAT because it's set to the "IP Pass-through" mode, effectively becoming a 5G-to-Ethernet bridge (or modem, if you wish).

The task I'm working on right now is to try to get the OpenWRT to initialize the USB connection to the Inseego FX2000 as a network interface in OpenWRT. Once this works, I will try to switch the "IP Pass-through" mode in the FX2000 from the GibabitEthernet port to the USB port. Hopefully, this will pass the public IP that T-Mobile hands to my FX2000 straight to the USB-based network interface in OpenWRT, and I can make interface to become the "wan" interface.

The problem I'm facing is that even thought the FX2000 is recognized as a USB device, the network interface doesn't get set up for this USB connection.

I've read documentation on the FX2000, and it says that RNDIS is used to emulate Ethernet via its USB port. So, I followed the OpenWRT wiki article on setting up a RNDIS device in OpenWRT.

This is what I see in dmesg:

[  778.082658] usb 2-1: new SuperSpeed Gen 1 USB device number 3 using xhci_hcd
[  778.116949] usb 2-1: New USB device found, idVendor=1410, idProduct=b020, bcdDevice= 4.14
[  778.125141] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  778.132301] usb 2-1: Product: M2100
[  778.135802] usb 2-1: Manufacturer: Novatel Wireless
[  778.140674] usb 2-1: SerialNumber: 7fffffff
[  778.152765] usb 2-1: Enable of device-initiated U1 failed.
[  778.158991] usb 2-1: Enable of device-initiated U2 failed.
[  778.172932] cdc_ether 2-1:1.0 eth1: register 'cdc_ether' at usb-0000:01:00.0-1, CDC Ethernet Device, 00:15:ff:11:67:07
[  778.188779] usb 2-1: Enable of device-initiated U1 failed.
[  778.195161] usb 2-1: Enable of device-initiated U2 failed.

All the packages that this article calls for are installed:

root@OpenWrt:~# opkg list-installed kmod-usb-net-rndis
kmod-usb-net-rndis - 5.10.161-1

root@OpenWrt:~# opkg list-installed usb-modeswitch
usb-modeswitch - 2022-02-24-3c8595a4-1

root@OpenWrt:~# opkg list-installed kmod-mii
kmod-mii - 5.10.161-1

root@OpenWrt:~# opkg list-installed kmod-usb-net-rndis
kmod-usb-net-rndis - 5.10.161-1

root@OpenWrt:~# opkg list-installed kmod-usb-net
kmod-usb-net - 5.10.161-1

root@OpenWrt:~# opkg list-installed kmod-usb-net-cdc-ether
kmod-usb-net-cdc-ether - 5.10.161-1

Any help will be greatly appreciated. Thank you!

The log shows a eth1 device was created, so if you change the wan Device to eth1, can it access the internet?

You are right. It created eth1

How come I can't see it? Was I supposed to restart the network?

root@OpenWrt:/etc# ifconfig
br-lan    Link encap:Ethernet  HWaddr DC:A6:32:02:DE:BB  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fdf2:a9e3:f5b2::1/60 Scope:Global
          inet6 addr: fe80::dea6:32ff:fe02:debb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68480 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8713 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7632972 (7.2 MiB)  TX bytes:2379831 (2.2 MiB)

eth0      Link encap:Ethernet  HWaddr DC:A6:32:02:DE:BB  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68492 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8993 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8592484 (8.1 MiB)  TX bytes:2398311 (2.2 MiB)

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:1725 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1725 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:134874 (131.7 KiB)  TX bytes:134874 (131.7 KiB)

root@OpenWrt:/etc# 

I had to create an interface in Luci. Interface eth1 was listed. I guess I should have restarted the network service to see eth1 when I ssh'ed to OpenWRT and issued the ifconfig command.

Everything is working now. I'm getting this speed:

It's about 150 Mbps give or take less for the download throughput than I get when the Inseego FX2000 bridges (IP Pass-through) to its Ethernet port instead of to its USB port (as it is the case here). I guess the RNDIS driver that emulates Ethernet has a lot of overhead. For the upload, this result is about 20 Mbps lower than what I get over the bridged Ethernet port from the same Inseego FX2000.

This morning I've measured the bandwidth that I get on the T-Mobile 5G service with the Inseego FX2000 device.

  1. Inseego FX2000 in bridge mode (IP Pass-through) to its USB3 interface:

  1. Inseego FX2000 in bridge mode (IP Pass-through) to its Gigabit Ethernet interface:

The Gigabit Ethernet connection has much more download throughput than the USB3 connection. In fact, it's 50% more throughput over the Gigabit Ethernet connection.

Bridging to a USB3 port on the Inseego FX2000 is done via the RNDIS Ethernet emulation protocol. Other cellular modems utilize other Ethernet emulation protocols, such s QMI, MBIM, and NCM. I will be trying a QMI 5G modem next and will post results.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.