What's new

REQUESTING HELP PLEASE: Use of uQMI Protocol on ASUSWRT-MERLIN

  • 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!

JoeBurman1987

Occasional Visitor
Hello everyone.

I am a long time reader of SNB, and this is my first time posting... I have spent hundreds of dollars, and many nights with less than 4 hours of sleep after scouring the internet in the last four weeks attempting to get a home network with 4G NDIS/QMI as WAN operational here...but have hit a brick wall when pairing a specific wireless module to my Merlin router. I have plenty of experience with ASUSWRT-MERLIN, and LOVE this router OS, but I am intermediate (at best) with linux scripting and console commands. I am humbly requesting the assistance of someone more skilled in Linux (specifically the UQMI protocol) than I.

I live in the middle of nowhere, with no other WAN available other than a T-Mobile tower 4.5 miles away, not even DSL or Satellite (tree cover is a problem) is available here. I discussed my intentions with a sales rep at T-Mobile prior to starting this account (and this never-ending process), and this was neither condoned nor denied. He happily added a tablet line to our plan, and gave me a SIM card to use. After installing an external directional antenna attached to a 10' home-brew electrical conduit mast on top of the house , a cellular amplifier in the basement, all coaxial cabling/grounds between the two, a Sierra Wireless MC7455 mPCIE module on a mPCI to USB bridge card, and running Ethernet to several hardwired PCs...I can't seem to run this module on ASUSWRT-MERLIN without the use of UQMI through console commands, which I will assume will need to be ran as scripts on the jffs partition at service-start.

I currently have this 4G module connected via USB to an older Win10 laptop sitting next to the cellular amplifier in the basement, sharing the Windows "Cellular" network over the laptop's LAN port to the AC87U's WAN port. Only problem is, any other network devices which share this connection on the laptop through the network are limited to 60kb/s. The laptop with the 4G module connected to itself is running a solid 8-10mb/s. I suspect all network traffic is being assigned separate IP address (on a different subnet) by the Win10 laptop, and T-Mobile may be somehow identifying and throttling these separate connections as "tethered" devices on a registered device on their network. Regardless, I don't want my laptop on 24/7, and to never be able to remove it from the basement. I really want this USB device paired with that beefy RT-AC87U.

From what I understand; by default, the Sierra Wireless MC7455 is set to direct-IP mode, and can be controlled via AT, UQMI, libqmi, and others.

When initially connected, the "lsusb" command displays the USB device as recognized on the router (ID 1199:9071.) However, the device times out and disappears/disconnects when there is no activity after a little while.

Code:
Bus 001 Device 001: ID 1d6b:0003
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 002: ID 1199:9071

I found that someone else had provided a walkthrough of another Sierra Wireless direct-IP module (the MC7453) which is in the same series, and (is assumed) can be issued the same commands as mine:
http://tiebing.blogspot.com/2015/03/linux-running-4g-lte-modem.html



This is where I hit a brick wall. The blogger's reference command for $device (below), does not apply to ASUSWRT-MERLIN's file structure/location, and any following commands referencing $device error out and fail.

Code:
device="/dev/cdc-wdm1"

I found that there is a kernal module referencing "cdc-wdm" that I believe I could have the system install after boot with a "start-services" script,

Code:
insmod /lib/modules/2.6.36.4brcmarm/kernel/drivers/usb/cdc-wdm

But then, the reference to "/dev/cdc-wdm1" would still incorrect, I believe.




What am I doing wrong, and what would be the next step? I've been banging my head on this desk over this for weeks now. If anyone is able to provide me with a complete solution, or even tid-bits of information that would move me a single step forward, it would be greatly appreciated.


Please and thank you,

Joe Burman
 
This was a pain to get up, running, dialed in to the correct direction, and finally connected. But yeah, it works! Now, just need to get the USB modem as WAN on the router...
1.jpg


2.jpg
 
Not sure about AsusWRT, but OpenWRT can do this...

This was an avenue that I explored after my initial attempts failed. OpenWRT has all of the libraries/commands that I would need to get this functional, and could be flashed to the AC87U in theory.

However, if I am remembering what I researched correctly; OpenWRT does not support the Broadcom 5GHz wireless chipset in the 87U, or USB functionality. I could do without the 5GHz band, but USB support is absolutely necessary...:(
 
This was an avenue that I explored after my initial attempts failed. OpenWRT has all of the libraries/commands that I would need to get this functional, and could be flashed to the AC87U in theory.

However, if I am remembering what I researched correctly; OpenWRT does not support the Broadcom 5GHz wireless chipset in the 87U, or USB functionality. I could do without the 5GHz band, but USB support is absolutely necessary...:(

Not so sure about the RT-AC87U with OpenWRT due to the unique architecture that it is (the Quantenna 5GHz and LAN1 side of it) - and there's questions about the Broadcom driver source...

Perhaps just to dummy something up - I was thinking as proof of concept to set up a Pi3 or something similar - putting the Sierra card on one of the USB ports, and then ethernet over to the WAN port of the Asus...

Setting up a simple bridged interface on Linux isn't that challenging - and if the Pi3 works, then replicate that setup on something a bit more robust and powerful...
 
So, doing a little more digging here with "dmesg", and it appears that the router is automatically installing all necessary drivers for a USB modem on Merlin's firmware...

Code:
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
usbcore: registered new interface driver usblp
usbcore: registered new interface driver asix
usbcore: registered new interface driver cdc_ether
usbcore: registered new interface driver rndis_host
cdc_ncm: 14-Mar-2012
usbcore: registered new interface driver cdc_ncm
usbcore: registered new interface driver cdc_wdm
usbcore: registered new interface driver qmi_wwan
cdc_mbim: loaded
usbcore: registered new interface driver cdc_mbim
usb 2-2: new high speed USB device using ehci_hcd and address 2
usb 2-2: config 1 has an invalid interface number: 8 but max is 4
usb 2-2: config 1 has an invalid interface number: 10 but max is 4
usb 2-2: config 1 has no interface number 1
usb 2-2: config 1 has no interface number 4
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for GSM modem (1-port)
option 2-2:1.0: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB0
option 2-2:1.2: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB1
option 2-2:1.3: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB2
option 2-2:1.8: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB3
option 2-2:1.10: GSM modem (1-port) converter detected
usb 2-2: GSM modem (1-port) converter now attached to ttyUSB4
usbcore: registered new interface driver option
option: v0.7.2:USB Driver for GSM modems
nvram: consolidating space!

But, I still can't seem to find where to reference the actual device for UQMI to use...none of the locations in the screenshot below work...
cdc-wdm.png
 
Perhaps just to dummy something up - I was thinking as proof of concept to set up a Pi3 or something similar - putting the Sierra card on one of the USB ports, and then ethernet over to the WAN port of the Asus...

LOL! I researched/attempted that avenue too, since Win10 won't allow me to bridge connections to the Direct-IP "Cellular" network... But I couldn't find any specific firmware to flash over on to a Pi3 that would be able to run a Sierra Wireless Direct-IP module via QMI.

As I am just beginning my adventures in to linux, I am completely lost on how to compile and install drivers for the Pi3...

QMI Drivers from Sierra Wireless
https://source.sierrawireless.com/r...rivers-linux-qmi-software-s2,-d-,26n2,-d-,39/
 
Even my attempts here failed too, because I can't can't figure out how to compile or cross-compile the appropriate QMI drivers...

20161124_140744_resized.jpg
 
LOL! I researched/attempted that avenue too, since Win10 won't allow me to bridge connections to the Direct-IP "Cellular" network... But I couldn't find any specific firmware to flash over on to a Pi3 that would be able to run a Sierra Wireless Direct-IP module via QMI.

As I am just beginning my adventures in to linux, I am completely lost on how to compile and install drivers for the Pi3...

Should be able to do it all in Raspbian directly, no third party FW needed...

Would have to suss out the QMI driver support for the USB side, but once that's done, it's some quick config work...

Alternately - there is an OpenWRT build target for the BCM2709 (that image supports both Pi2 and Pi3) that one can flash and go that route - then the rest of the OpenWRT recipe should just work.

Worst case there - I could spin an OpenWRT build for the Pi that would do the trick perhaps...
 
Even my attempts here failed too, because I can't can't figure out how to compile or cross-compile the appropriate QMI drivers...

I got to get the turkey in the oven - maybe later this evening (after the game) or tomorrow - I need to update my build environment anyways..
 
Thank you! I am download and flashing a Micro-SD with OpenWRT... I didn't even think that was an option, but it makes sense!

Wish me luck!
 
Thank you! I am download and flashing a Micro-SD with OpenWRT... I didn't even think that was an option, but it makes sense!

Wish me luck!

Definitely - the OpenWRT Wiki has a couple of tips on getting the Pi up and running - the big one is the IP addresses and setting the first password for admin...

One there, it might need some extra work to sort the driver situation..

Pi3 isn't going to be awesomely fast at this solution, but it might be enough for an LTE connection - but as proof of concept, then port things over to something with some more bandwidth (USB is going to be the limiting factor here)
 
Yeah, but with the 700MHz LTE-A spectrum, throughput is small... literally 12MB/s maximum. And that is without network congestion at the tower, at 3:30am in the morning... Off peak daytime hours averages 6MB/s, and Peak hours is limited to about 3MB/s.
 
Yeah, but with the 700MHz LTE-A spectrum, throughput is small... literally 12MB/s maximum. And that is without network congestion at the tower, at 3:30am in the morning... Off peak daytime hours averages 6MB/s, and Peak hours is limited to about 3MB/s.

So we might have something then that works - and it's aligned with the rest of the DIY side of this project ;)
 
So we might have something then that works - and it's aligned with the rest of the DIY side of this project ;)

I appreciate all of your help here... Will try this OpenWRT via Pi3 angle, and will reply back to let everyone know how it went. Hopefully, this is the solution.
 
...there is an OpenWRT build target for the BCM2709 (that image supports both Pi2 and Pi3) that one can flash and go that route - then the rest of the OpenWRT recipe should just work.

  1. Downloaded and verified SHA-256 on "openwrt-15.05.1-brcm2708-bcm2709-sdcard-vfat-ext4.img"
  2. Flashed image over to SD card, and then verified disk image before popping it out.

  3. Tried booting Pi3. Froze up during GPU test of bootup. Several power cycles/bootups left me at same freeze point.

  4. I flashed NOOBs bootloader/installer on SD card. The Pi3 booted right up.

  5. Rinse and repeat with a fresh downloaded (and verified) copy of OpenWRT image again...and same result.

I don't think the BCM2709 image intended for the Pi2 works on Pi3 Model B without some type of modification.
 
Yeah - I'm suspecting it's the device tree - will look into this later today...
 
Here - this is built off the trunk, so it might be a bit sketchy - haven't had a chance to test it myself, as my spare card ended up being bad...

https://dl.dropboxusercontent.com/u/9266262/openwrt-brcm2708-bcm2710-rpi-3-ext4-sdcard.img.gz

Burn that to a card and give it a try to see if it boots... opkg should be working, so if one needs to grab something there...

SHA256(openwrt-brcm2708-bcm2710-rpi-3-ext4-sdcard.img.gz)= d2cd30bfc7954726d7311ea06d2eb1ec41226033dd081d11dc308ece674dd5f5

SHA256(openwrt-brcm2708-bcm2710-rpi-3-ext4-sdcard.img)= 5e4e5a3c4007339c42e8f0c979df56f8dc026e0721c87963306d9b2ba7265b35
 
Last edited:
freezing during the gpu test leads me to think that the firmware (the gpu code in the dos partition) isn't right for your board. Maybe for pi2?

You can mount the filesystem on your pc and compare the sizes of the firmware files between your openwrt sdcard and your noobs sdcard. if they aren't the same you can copy the firmware files from the noobs card to the openwrt card

Code:
joel@ubnt:/var/run$ ssh raspi
Last login: Mon Nov 21 15:56:35 2016 from joel-ux303ua.home
joel@raspi ~ $ cd /boot
joel@raspi /boot $ ls
LICENCE.broadcom        bcm2710-rpi-cm3.dtb  fixup_cd.dat  overlays
bcm2708-rpi-b-plus.dtb  bootcode.bin         fixup_db.dat  start.elf
bcm2708-rpi-b.dtb       cmdline.SAVE         fixup_x.dat   start_cd.elf
bcm2708-rpi-cm.dtb      cmdline.txt          issue.txt     start_db.elf
bcm2709-rpi-2-b.dtb     config.txt           kernel.img    start_x.elf
bcm2710-rpi-3-b.dtb     fixup.dat            kernel7.img

the firmware files are bootcode.bin and the *.elf files. The *.dtb files are the device tree files that sfx2000 mentioned.
 
freezing during the gpu test leads me to think that the firmware (the gpu code in the dos partition) isn't right for your board. Maybe for pi2?

The brcm2708-brcm2709 image is specifically for the Pi2 - it is the device tree, but it's also A53 vs. A7 cores in the CPU itself..

The image I linked above should work for the Pi3 only - it's not built off the 15.05.1 branch, but rather off the trunk itself... but it is for A53-VFP4, and it also includes the appropriate device tree file (along with wireless driver for the onboard wifi)
 

Similar threads

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