TL-MR6400 v4 - LTE modem for WAN connection

Some update!
4G modem now is "connected" and seems to have established an internet connection.

conn

I have set everything else as per the guide but I cannot navigate to the internet.
I probably did something wrong. Any suggestions? Thanks

Here are the configurations as written in the guide

This may be due to rawIP mode not being detected, you may try:

in /etc/rc.local include the line:
echo "Y" > /sys/class/net/$ifname/qmi/raw_ip

https://mega.nz/folder/tj5yTTgb#FzUuQNF4XaPqB--pnzxFIA

here the firmware i change/add few line in qmi.sh & qmi.js...
after finish flashing need reboot the router... let me know if it working..

Thank you

1 Like

any update did you manage to get it working I have the same problem ?

1 Like

Hello! I'm having the same problem on my mr6400 v4, do you have a fix for this? I'm currently using the modem with modem manager provided in this image:

Hi @fachos first of all thanks for the effort, this image worked right away and survived reboot, promoting to most stable image I tried so far on the v4. I have noticed that it is based on 21.02.0. Since than the 21.02.1 is out and I am wondering, long term how can I upgrade without destroying the changes you made in order for this internal modem to work? I have never compiled an image myself but if you have a good reference it would give it a try. Thanks.

1 Like

Cool! Thank you @fachos ! It would be awesome if all of these changes could be available on the official image. Would that be possible in some way?

1 Like

Could you tell us which lines did you change?

Hi

I have a MR200v4 with this modem, Vendor=05c6 ProdID=9025 Rev= 3.18. I don´t know if it´s the same in MR6400v4.
I have a modified uqmi working for my modem.
uqmi ipk, 19.07.8, is available at: https://github.com/mrhaav/openwrt
and source code at: https://github.com/mrhaav/openwrt-packages

root@OpenWrt:~# cat /sys/kernel/debug/usb/devices
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=05c6 ProdID=9025 Rev= 3.18
S:  Manufacturer=Android
S:  Product=Android
S:  SerialNumber=0123456789ABCDEF
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=125us

Having the same issue, any updates on this?

Can this be updated to 21.02.1?

I have compliled uqmi_2021-12-22-0.3_mipsel_24kc.ipk with openwrt-sdk-21.02.1-ramips-mt76x8_gcc-8.4.0_musl.Linux-x86_64 and it´s available at https://github.com/mrhaav/openwrt/tree/master/21.02.1.

If luci-proto-qmi is not istalled. Install it and reboot.
Download and then install manually with opkg install uqmi_2021-12-22-0.3_mipsel_24kc.ipk.

Then configure your wwan interface from Luci - Network - Interfaces and add:

uci set network.wwan.dhcp=0
uci commit network

Restart interface.

You will see what happens in the System Log or logread | grep 'netifd: wwan'

I have not been able to test it on a MR6400v4.

May I know what the changes are from the one in your repo vs the official build? What's the issue that's preventing the official build from working?

Secondly, does anyone have issues with accessing the interface of the LTE modem? It's supposed to be accessible via 192.168.0.1, but doesn't seem to be working on the v4.

Hi
The main difference is that I use APN profiles to start the session. My version make sure that the default APN profile is configured correct before the modem attach the network.
If the default profile is wrong I will set the modem to Airplane mode on and change the profile and then set Airplane mode to off. Not all cellular operator accept an "empty" APN profile when the modem attach to the network.

Thank you for clarifying. May I know how do I access the LTE modem GUI interface? Been reading on the forum that some people were able to access this via 192.168.0.1, but this doesn't seem to be working on mine.

As far as I know most LTE modems are accessed via cli, with AT-command, QMI or MBIM. It´s not that common to use GUI.
My modem, in the MR200v4, has no GUI.

Hello there, I've been looking at commits for the TP-Link MR series routers (i.e. those with 4G modems) and keep seeing DTR. I tried looking this up, and seems like it means Digital Trunk Radio. The MR6400 lists a DTR Quirk Patch file in one of the commits for adding OpenWrt support. May I know the signficance of this file?

DTR in this context is https://en.wikipedia.org/wiki/Data_Terminal_Ready

And then you might ask what an RS232 terminal signal has to do with a USB connected digital radio... The DTR is mapped to a specific USB control request in the USB Communication class spec. A few years ago Qualcomm started using this request as a suspend/resume signal in their vendor specific QMI/RMNET protocol. So we have to send that request to the modem to wake it. Which is what the DTR patch is about.

(I've been talking about making this behaviour default for all devices for years, but never got around to actually doing that. should probably stop talking about it...)

1 Like

Thank you so much for clarifying this. That's very helpful, and finally makes sense to me. Haha, please don't stop talking about it. If something makes things easier for everyone else, then we should certainly be doing it :slightly_smiling_face:

After more than year, I have returned to this problem to work on it further. First of all I believe I got it working using the latest stable release at this time (openwrt-22.03.3-ramips-mt76x8-tplink_tl-mr6400-v4-squashfs-sysupgrade) to be specific. There are no custom compiled packages required.

After some trial an error, I noticed that the uqmi service often hangs out on very the first try, it would often fail on this step:

Fri Apr 14 11:33:16 2023 daemon.notice netifd: wwan (2142): Network registration failed (reason: '')
Fri Apr 14 11:33:16 2023 daemon.notice netifd: wwan (2502): Stopping network wwan
Fri Apr 14 11:33:16 2023 daemon.notice netifd: wwan (2502): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wwan" } (Permission denied)

I noticed that after killing these stale process(es) and restarting the network interface again the protocol works as expected. I also tried amending the qmi.sh script but wasn't lucky. Therefore I created a custom script that is invoked from /etc/rc.local after system start.

qmi-workaround

#!/bin/sh


max_retry=3
retry=1

if [ "$(ip addr show wwan0 | grep -c DOWN)" -ne 0 > /dev/null ]; then
    while ip addr show wwan0 | grep -c DOWN > /dev/null; do
        if [ "$retry" -le "$max_retry" ]; then
            if [ "$retry" -eq 1 ]; then
                logger -t netifd Trying to bring up wwan0
            else
                logger -t netifd Trying to bring up wwan0 - Retry $retry
            fi
            killall uqmi > /dev/null 2>&1
            ifdown wwan
            sleep 5
            ifup wwan
            let retry++
        sleep 10;
        else
            logger -t netifd Max retries reached
        return 1
        fi
    done
    logger -t netifd Successfully brought up wwan0
else
    logger -t netifd Interface wwan is not down, moving on
fi

For reference this is how the interface definition looks like in /etc/config/network.

config interface 'wwan'
        option proto 'qmi'
        option device '/dev/cdc-wdm0'
        option modes 'lte,umts'
        option apn 'internet'
        option dhcp '0'
        option pincode '0000'
        option auth 'none'
        option pdptype 'ipv4'

Hope it helps.