What's new

Upstream patch to enable Android tethering (tested: moto g play 2021, potentially: REVVL 5G)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

Following for interest. I have a newer [2019] Moto G series phone with a Google Fi data card, and would to be able to use it as a failover data connection device.
 
I'm not sure if this has any relevance. However I have tmobile and was curious the other day about having a backup to Comcast. so I pulled out an rt-ac68u on merlins latest and greatest as well as 2 different phones. My note 10 plus was able to be used without issue as a USB tether. My Revvl 5G phones (I tried 2 of them) could not using identifier settings and setup. I don't recall what the log said but it's as of the router could not really detect the phones properly (the revvl 5g that is).
 
Thank you for your interest in the patch, ChatmanR and umrico.
Could you run a command when your Android phone is connected to Asus and not recognized as modem/tether device like below?
You need to ssh into Asus to do this.

Manufacturer/Product/SerialNumber are not relevant, so feel free to remove them.


Code:
cat /proc/bus/usb/devices

Output will look something like this (it will be longer to show usb-hub device etc)

Code:
cat /proc/bus/usb/devices
<snip>
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 27 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=22b8 ProdID=2e24 Rev= 4.19
S:  Manufacturer=motorola
S:  Product=moto g play (2021)
S:  SerialNumber=<<masked>>
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
<snip>
 
Here it is! Thanks!

ASUSWRT-Merlin RT-AC68U 386.2_0 Fri Apr 2 02:49:55 UTC 2021
admin@RT-AC68U-F548:/tmp/home/root# cat /proc/bus/usb/devices

T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev= 2.06
S: Manufacturer=Linux 2.6.36.4brcmarm ohci_hcd
S: Product=OHCI Host Controller
S: SerialNumber=0000:00:0b.0
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= 2 Ivl=255ms

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 2
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 2.06
S: Manufacturer=Linux 2.6.36.4brcmarm ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=0000:00:0b.1
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=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1bbb ProdID=af10 Rev= 4.19
S: Manufacturer=TCL
S: Product=REVVL 5G
S: SerialNumber=XXXXXXX
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=(none)
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=?? MxCh= 1
B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 3.00 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev= 2.06
S: Manufacturer=Linux 2.6.36.4brcmarm xhci_hcd
S: Product=xHCI Host Controller
S: SerialNumber=0000:00:0c.0
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=12ms
admin@RT-AC68U-F548:/tmp/home/root#
 
Highly likely this device (REVVL 5G) would work as tether device with the proposed patch.

Basically the patch will help to assign rndis_host driver to device with "Cls=ef(misc ) Sub=04 Prot=01" attributes.
Which in turn creates usb0 device then Asus-wrt can run "udhcpc usb0" to fetch/assign IP address on that interface to communicate over android device.

I'm new to this forum and not familiar with the productization process nor confident enough to provide private image.
Hope RMerlin/ASUS could pick this up in near future :)

Code:
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 4 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1bbb ProdID=af10 Rev= 4.19
S: Manufacturer=TCL
S: Product=REVVL 5G
S: SerialNumber=XXXXXXX
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=(none) <<<<
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
 
@YoshiT
I have 2 questions:

Question1: is there anyway to be able to make the changes through SSH/terminal into the router? or atleast any way to be able to manually run some commands to get the device to detect properly until the patch is incorporated?

Question2: were you able to patch the files yourself for the ac68u? if so do you mind posting the 3 files located in /lib/modules/2.6.36.4brcmarm/kernel/drivers/net/usb

cdc_ether.ko rndis_host.ko usbnet.ko
 
Last edited:
Hi. Recently I encountered the exact issue this post addressed, and USB tethering is mandatory for me, so I am looking for a solution for my RT-AC66U+. I did check that my phone reports itself as the Novatel modem mentioned above, so I really want to try if the patch works for me. However, the PR was closed, and seemed no updates on @YoshiT's repo since then. As @RMerlin had stated that this will not be merged into Merlin, I decided to fork Merlin and backport on my own.

What I did is, based on the latest Merlin codebase, apply the upstream patch on each model. If anyone is struggling with this problem, my repo may be helpful to you. Here's the backported commit: https://github.com/s25g5d4/asuswrt-merlin.ng/commit/a1f3c305fe89b6eb4acf7f92814eeae974ffe6cd . The patch is rather simple. As I only have the RT-AC66U+, I work on the 386_x branch only, despite that I patched every model available in the repo. AC66U+ is the only model that tested and worked for me.

Follow the official instruction on RMerl/asuswrt-merlin.ng Wiki to compile the firmware. There's nothing changed in the build toolchains and steps.

My phone is Xperia 1 V.
 
After searching the net for days on why my phone (OnePlus N200 5G) wasn't registering as an Android Modem when connected to my AC5300, I found this thread and realized my phone has the same USB classification as the Novatel Verizon handset that has been patched in the official release of the linux kernel. Unfortunately I'm not savvy enough to patch and compile my own fork of the 386.12_4 release, and I even looked into using a tool like CFW Manager, but was unsuccessful. Is it possible that someone can throw up a patched AC5300 386.12_4 .trx file? If not, looking for any help to get me going in the right direction. Thanks!
 

Latest threads

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top