Can't get USB-tethering to work in 24.10.rc5

Hi,

Just successfully upgraded from OpenWrt v21.02 to 24.10.rc5 by doing the following steps:

21.02 > 22.03 > 23.05 > 24.10.rc5

# ubus call system board
{
        "kernel": "6.6.69",
        "hostname": "Test",
        "system": "Atheros AR9344 rev 1",
        "model": "D-LINK DIR-835 A1",
        "board_name": "dlink,dir-835-a1",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0-rc5",
                "revision": "r28304-6dacba30a7",
                "target": "ath79/generic",
                "description": "OpenWrt 24.10.0-rc5 r28304-6dacba30a7",
                "builddate": "1736026537"
        }
}

In v21 I used USB-tethering, so to get USB-tethering to work v24.10.rc5, I installed the following packages (just as I did in v21.02):

## Install USB-tethering related packages for openwrt v24.10.rc5
# opkg update
# opkg install kmod-usb-net-rndis
# opkg install kmod-usb-core kmod-usb-ehci kmod-usb2

# opkg list-installed | grep usb
kmod-phy-ath79-usb - 6.6.69-r1
kmod-usb-core - 6.6.69-r1
kmod-usb-ehci - 6.6.69-r1
kmod-usb-net - 6.6.69-r1
kmod-usb-net-cdc-ether - 6.6.69-r1
kmod-usb-net-rndis - 6.6.69-r1
kmod-usb2 - 6.6.69-r1

The problem is that when I try to create a new interface for the USB-tethered device, the device list does not contain anything USB related. In v21, where USB-tethering worked successfully for me, the device list contained the "usb0" device which I used to create the interface but now it's no longer there.

Any ideas? Thanks

I recently set it up using RC5 on a TR3000, no issues at all.

What's in the other end of the USB cable?

What's in the other end of the USB cable?

A cell phone, Moto G Power 2024, which worked without issues with OpenWrt v21.02 before the upgrade.

V24 is still in the oven
V23 is still up to date so I'd start here

just a note
I have had trouble with a hdd droping off USB with V24.rc5 with ipq806x
but ramips/mt7621 and mediatek/mt7622 no problem

OK, I got it working with v23.05, with 24.10 it still doesn't work for me no matter what I tried.

The following is what I did to get it working with 23.05.

# opkg update
# opkg install kmod-usb-net-rndis
# opkg install kmod-usb-core kmod-usb-ehci kmod-usb2

Thanks to everyone who responded.

pretty sure I only added kmod-usb-net-cdc-ether to RC5 firmware-builder, and all dependencies were automagically pulled.

1 Like

This is how it looks for me:

# opkg list-installed | grep usb
kmod-phy-ath79-usb - 5.15.167-1
kmod-usb-core - 5.15.167-1
kmod-usb-ehci - 5.15.167-1
kmod-usb-net - 5.15.167-1
kmod-usb-net-cdc-ether - 5.15.167-1
kmod-usb-net-rndis - 5.15.167-1
kmod-usb2 - 5.15.167-1

You need to check cat /sys/kernel/debug/usb/devices output first.

Spoke too soon. While USB-tethering does work for me in v23.05, the connection becomes unstable after a couple of hours of use: ping times increase to ~1s instead of ~50ms I usually get, many dropped packets and sometimes I see something like the following:

# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=52 time=632 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=52 time=472 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=52 time=199 ms
64 bytes from 1.1.1.1: icmp_seq=4 ttl=52 time=50.8 ms
64 bytes from 1.1.1.1: icmp_seq=5 ttl=52 time=100 ms
64 bytes from 1.1.1.1: icmp_seq=6 ttl=52 time=197 ms
wrong data byte #54 should be 0x36 but was 0x76
#16     10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
#48     30 31 32 33 34 35 76 cb
64 bytes from 1.1.1.1: icmp_seq=8 ttl=52 time=139 ms
wrong data byte #54 should be 0x36 but was 0x30
#16     10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
...
^C
--- 1.1.1.1 ping statistics ---
16 packets transmitted, 13 received, 18.75% packet loss, time 15037ms
rtt min/avg/max/mdev = 50.796/274.266/682.831/215.647 ms

Installing kmod-usb-net-cdc-ncm and then kmod-usb-net-cdc-eem doesn't seem to improve stability.

So the bottom line:

  • In v23.05 USB-tethering works for me but becomes unstable after 1-2 hours of use
  • In v24.10.rc5 USB-tethering doesn't work for me at all as usb0 device (or something similar) doesn't show up after installing kmod-usb-net-rndis. Installing kmod-usb-net-cdc-ncm in addition to kmod-usb-net-rndis also doesn't help, i.e. no usb0 device, hence no UBS-tethering interface can be created.

My solution so far is to use WiFi hotspot which does work.

Regards,

The TR3000 got an USB3 port, so packages will be slightly different, but this is what I've got installed

kmod-usb-core - 6.6.67-r1
kmod-usb-net - 6.6.67-r1
kmod-usb-net-cdc-eem - 6.6.67-r1
kmod-usb-net-cdc-ether - 6.6.67-r1
kmod-usb-net-cdc-ncm - 6.6.67-r1
kmod-usb-net-cdc-subset - 6.6.67-r1
kmod-usb-xhci-hcd - 6.6.67-r1
kmod-usb-xhci-mtk - 6.6.67-r1
kmod-usb3 - 6.6.67-r1

Works tethering a phone (didn't try long term, just PoC), and using a ZTE F50.

I did however notice it was running RC4, not RC5 ...

root@OpenWrt:~# ubus call system board
{
        "kernel": "6.6.67",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "Cudy TR3000 v1",
        "board_name": "cudy,tr3000-v1",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.0-rc4",
                "revision": "r28211-d55754ce0d",
                "target": "mediatek/filogic",
                "description": "OpenWrt 24.10.0-rc4 r28211-d55754ce0d",
                "builddate": "1734915335"
        }
}

It's not necessary to install kmod-usb-core and kmod-usb-ehci as those will be present by default in any release build for a chipset with a USB port. (ECHI is for support of USB1 clients on certain hardware and will be omitted if not required)

When running 24.10, when you plug the phone in and enable USB tethering on it, is anything logged in the router's system log?

Have you ever used the USB port for any other function or device?

Let me rephrase that since this is a fresh install: Have you plugged anything else in since the install?

No, but I can get USB-tethering to work for me in v23.05.5 with the same setup: same phone, same router, same USB port, same cable.

True but installing them again does no harm, opkg just says that those packages are up-to-date.

OK, installed kmod-usb-net-rndis (and then kmod-usb-net-cdc-ncm just to be sure) but still there's no usb0 device seen anywhere.

kernel log
[15192.440183] kmodloader: done loading kernel modules from /etc/modules.d/*
[15298.959686] usb 1-1: USB disconnect, device number 50
[15299.314444] usb 1-1: new high-speed USB device number 51 using ehci-platform
[15339.573290] usb 1-1: USB disconnect, device number 51
[15339.921802] usb 1-1: new high-speed USB device number 52 using ehci-platform
[15387.480407] usb 1-1: USB disconnect, device number 52
[15388.048230] usb 1-1: new high-speed USB device number 53 using ehci-platform
...
---> Turn off and then turn on USB-tethering on the phone
[15861.251902] usb 1-1: USB disconnect, device number 59
[15861.810944] usb 1-1: new high-speed USB device number 60 using ehci-platform
[15862.017956] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-1b000000.usb-1, RNDIS device, 0e:e2:40:87:cb:7f
syslog
---> Turn off and then turn on USB-tethering on the phone
Fri Jan 17 15:17:19 2025 kern.info kernel: [15856.516279] usb 1-1: USB disconnect, device number 58
Fri Jan 17 15:17:19 2025 kern.info kernel: [15856.521617] rndis_host 1-1:1.0 eth1: unregister 'rndis_host' usb-1b000000.usb-1, RNDIS device
Fri Jan 17 15:17:20 2025 kern.info kernel: [15857.080635] usb 1-1: new high-speed USB device number 59 using ehci-platform
Fri Jan 17 15:17:24 2025 kern.info kernel: [15861.251902] usb 1-1: USB disconnect, device number 59
Fri Jan 17 15:17:24 2025 kern.info kernel: [15861.810944] usb 1-1: new high-speed USB device number 60 using ehci-platform
Fri Jan 17 15:17:25 2025 kern.info kernel: [15862.017956] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-1b000000.usb-1, RNDIS device, 0e:e2:40:87:cb:7f
...
---> Install kmod-usb-net-cdc-ncm
17 15:21:00 2025 user.info kernel: [16077.144921] kmodloader: loading kernel modules from /etc/modules.d/*
Fri Jan 17 15:21:00 2025 kern.info kernel: [16077.168219] usbcore: registered new interface driver cdc_ncm
Fri Jan 17 15:21:00 2025 user.info kernel: [16077.176762] kmodloader: done loading kernel modules from /etc/modules.d/*
...
---> Turn off and then turn on USB-tethering on the phone
17 15:22:50 2025 kern.info kernel: [16187.271784] usb 1-1: USB disconnect, device number 60
Fri Jan 17 15:22:50 2025 kern.info kernel: [16187.277137] rndis_host 1-1:1.0 eth1: unregister 'rndis_host' usb-1b000000.usb-1, RNDIS device
Fri Jan 17 15:22:51 2025 kern.info kernel: [16187.853671] usb 1-1: new high-speed USB device number 61 using ehci-platform
Fri Jan 17 15:22:52 2025 kern.info kernel: [16189.468031] usb 1-1: USB disconnect, device number 61
Fri Jan 17 15:22:53 2025 kern.info kernel: [16190.033830] usb 1-1: new high-speed USB device number 62 using ehci-platform
Fri Jan 17 15:22:53 2025 kern.info kernel: [16190.241107] rndis_host 1-1:1.0 eth1: register 'rndis_host' at usb-1b000000.usb-1, RNDIS device, 0e:e2:40:87:cb:7f
---> Still there is no usb0 device or anything similar

iOS has issues with timing out due to inactivity.
What phone are you using?

kmod-usb-net-rndis is the only module that needs to be installed by the user, the rest will be installed automatically as dependencies.

Your device is eth1.
Pay attention to what is written in the wiki:
https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_rndis

3 Likes

Yeah, my phone popped up as eth2, when tethering.
Had to create a new wan device.

Good advise but I don't have eth1. All I have is br-wan, eth0, eth0.1 and eth0.2.

Moto G Power 5G 2024 (XT2415-1), which I used in the same setup with v21.02 and it worked pretty well.

Disconnect the phone, run logread -f, connect the phone, enable tethering if required.
Let it run for some time then stop and post the log collected.
According to previously posted log, eth1 is the interface created by the driver. If you don't see it later, I can only assume that it disappears at some point.

1 Like