How to establish a USB tether to a phone

Is there a guide to setting up a USB tether to a phone?

"OpenWrt USB tether" @ google is a good start.

3 Likes

It seems like there is quite a bit of hit and miss with the instructions.

When the required drivers have been installed, am I aiming for a USB interface to appear when I run ifconfig? I presume that I don’t need to use the GUI for this interface to appear.

Don't remember, probably, after you've enabled tethering on your phone.

You can always run logread -f while plugging in the phone, and switching on tethering.

3 Likes

Please show the output of cat /sys/kernel/debug/usb/devices with your phone connected. No pictures please.

Please follow https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_rndis

root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 6.06
S: Manufacturer=Linux 6.6.110 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1b000000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=05e3 ProdID=0610 Rev=32.98
S: Product=USB2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2717 ProdID=ff80 Rev= 2.23
S: Manufacturer=Xiaomi
S: Product=Redmi Note 14 Pro 5G
S: SerialNumber=C6PJ4PZDEIEIIFU8
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=04b4 ProdID=0006 Rev= 0.00
S: Manufacturer=Cypress Semiconductor
S: Product=USB-UART LP
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=00 Driver=(none)
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=05 Prot=00 Driver=(none)
root@OpenWrt:~#root@OpenWrt:~# cat /sys/kernel/debug/usb/devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
B: Alloc= 0/800 us ( 0%), #Int= 1, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 6.06
S: Manufacturer=Linux 6.6.110 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1b000000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=05e3 ProdID=0610 Rev=32.98
S: Product=USB2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms

T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 5 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2717 ProdID=ff80 Rev= 2.23
S: Manufacturer=Xiaomi
S: Product=Redmi Note 14 Pro 5G
S: SerialNumber=C6PJ4PZDEIEIIFU8
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=04b4 ProdID=0006 Rev= 0.00
S: Manufacturer=Cypress Semiconductor
S: Product=USB-UART LP
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=00 Driver=(none)
E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=05 Prot=00 Driver=(none)
root@OpenWrt:~#

Install kmod-usb-net-rndis, dependencies will also be installed. Connect the smartphone and activate tethering.
Create a new interface, assign usb0 device. Under firewall tab assign to the WAN zone.
That's it. It took me more time to write this than to do it :wink:

1 Like

root@OpenWrt:~# logread -f
Sun Nov 30 11:30:35 2025 daemon.warn odhcpd[1866]: No default route present, setting ra_lifetime to 0!
Sun Nov 30 11:35:49 2025 kern.info kernel: [109094.795684] usb 1-1.1: USB disconnect, device number 5
Sun Nov 30 11:35:49 2025 kern.info kernel: [109094.801245] rndis_host 1-1.1:1.0 usb0: unregister 'rndis_host' usb-1b000000.usb-1.1, RNDIS device
Sun Nov 30 11:35:55 2025 kern.info kernel: [109100.975635] usb 1-1.1: new high-speed USB device number 6 using ehci-platform
Sun Nov 30 11:35:57 2025 kern.info kernel: [109102.475686] usb 1-1.1: USB disconnect, device number 6
Sun Nov 30 11:35:57 2025 kern.info kernel: [109102.985561] usb 1-1.1: new high-speed USB device number 7 using ehci-platform
Sun Nov 30 11:35:58 2025 kern.info kernel: [109103.150686] rndis_host 1-1.1:1.0 usb0: register 'rndis_host' at usb-1b000000.usb-1.1, RNDIS device, 82:b3:c9:a2:7d:0d

So I need to use the GUI to create this interface?

It's much faster this way. Stay tuned, I'm going to unbox my spare tethering device and see what the log looks like ...

EDIT
[ 42.286184] usb 1-1: USB disconnect, device number 2
[ 42.765094] usb 1-1: new high-speed USB device number 3 using ehci-platform
[ 43.036027] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-1b000000.usb-1, RNDIS device, 16:a9:f7:da:xx:xx

Only this.
The router is already configured and ready to work (using previous instructions). I just need to plug the smartphone. It's really easy.

1 Like

Something like this: OpenWRT ONE USB OTG - Take 2 - #12 by frollic.

I remember that the usb device name changed in earlier version of 24.10 (to an eth port). It was related to change in mainstream Linux. This has been reversed.

might explain why it worked on .0, but not .1, .2 and .3, haven't tried .4.

1 Like

I have a vintage spare device when is only used for tethering. I updated it a each minor version. I remember having issue when the change occurs, quickly finding about it. And again when the change was reversed. It works fine under 24.10.4 (with usb0 device).

Same here, a TR3000, every time I upgrade from .0, using owut, it fails to recognize the phone, but I haven't tried .4.

In my case the phone is always recognized whatever version. It was just the device name that change (usb0 or eth2). I have also used 23.05 and 22.03 before.

In my case thethering isn't detected properly after .0.

I had a similar problem last week. Once I finally installed the correct USB driver, usb0 showed up when I went to add a device in Luci. You can see my thread here, it includes a command which gave me a hint to the driver I needed:

Also worth noting, if you have the correct USB to Ethernet adapter (apparently only ASIX devices work consistently right now) you can use that without the headaches of the drivers you may need to USB tethering. Follow the same link in my previous post and take note of the paragraph about USB to Ethernet tethering.