Musings with Quectel EC25-EUX LTE Module
So I wanted to add Cellular connectivity to my GL.iNet Slate AX but because of regulations here, I needed to source my LTE module locally.
...After couple months, I finally did.
At first, I saw an EG25-G USB dongle from EXVIST on Amazon Turkey:
But, I remembered the entire IMEI Allowlist shenanigans after it arrived to me. So I started to play with it carefully, considering that I might return it soon.
Then I decided to look at EXVIST's own website, and found out that they sell configurable USB carrier board enclosures for Quectel mini-PCIe cards as well:
You might ask “mini-PCIe and USB? What?” and that's a valid question. Here's a fun tidbit, mini-PCIe spec actually has pins for direct USB 2.0 connection which Quectel actually markets this as an option on their product brochures.
The carrier board utilizes this and the other “reserved” pins for SIM card itself, here's a pinout from SixFab, where they also use USB D+ and D- pins (emphasis mine):
I immediately jumped onto Amazon Turkey and yep, the bare carrier enclosure is available to buy:
In the meantime, I looked at local e-commerce marketplaces other than Amazon, and I found an EC25-EUX on Trendyol:
To be extra sure, I asked the seller if the IMEIs of the stock they have are registered and they said yes:
You can guess that I immediately bought the module.
I started the return procedure of the EG25-G dongle and sent it away. I got the EC25-EUX module next day and the carrier enclosure arrived a week later.
First two cons:
- The status LED is blue. It is very bright.
- It has mounting flaps on the sides. If you want to carry this as an extension to your travel connectivity pack, you need to carefully Dremel out the flaps.
Now, let's get to how the software stuff up to speed.
I need to applaud EXVIST, because unlike Quectel themselves, they actually provide open documentation to do things:
You can grab the drivers at https://docs.exvist.com/dongle/ts/drivers.
Looking at the tools page, you will see two tools:
- Quectel's QCOM: It is a bulk configuration GUI tool which utilizes AT commands.
- Quectel's QNavigator: It is a GUI tool to manage your module (also uses AT commands). It also contains QCOM as a separate window inside the app.
Both tools will document the AT commands issued.
There will be 4 interfaces coming up when you plug the module in (gonna be using Linux paths):
/dev/ttyUSB0
: the “DM” interface, apparently its Qualcomm's QXDM./dev/ttyUSB1
: the NMEA/GNSS interface, which we don't use (because this is GPS, as you might have noticed)./dev/ttyUSB2
: the direct AT interface, you can manage your modem from this./dev/ttyUSB3
: the AT modem interface, which Windows utilizes it as a network interface (It is the last COM port), so it is invisible. I assume Windows also does QMI from here, so you need to do the settings I mention below for proper Windows support as well./dev/cdc-wdm0
: this is the direct QMI. It will use the (open-source)qmi_wwan
or the (proprietary)GobiNet
driver.
To “”“properly”“” use your module on OpenWrt based systems (aka “using the /dev/cdc-wdm0
interface”), you need to have some prerequisites, which SixFab helpfully provides it:
- Check if the modem is configured correctly by sending the
AT+QCFG="usbnet"
command. It should return 0. - If the command result shows a digit other than 0 at the end, set the option to 0 by sending the
AT+QCFG="usbnet",0
command. - Wait for 10 seconds and reboot the module by sending the
AT+CFUN=1,1
command.
If your system allows a protocol named “QCI” alongside “QMI”, you can use that for your Quectel module.
I'm still messing around with this, I hope I remember to update this post with further information (Written in 2023-09-27).
2023-09-28 Update:
Looking at OpenWrt Docs, I have found out what each usbnet
settings mean:
AT+QCFG="usbnet" # check the current mode
AT+QCFG="usbnet",0 # set QMI or RMNET mode
AT+QCFG="usbnet",1 # set ECM mode
AT+QCFG="usbnet",2 # set MBIM mode
AT+QCFG="usbnet",3 # set RNDIS mode
It is weird that Quectel doesn't mention any of this in their own AT documentation. Apparently they do, its just in a separate file.
To make things extra spicy, my modem had this set to I have updated the list above.3
, which I don't know what that means.
2023-10-02 Update:
I've been trying to get the module work on macOS, but it seems like I won't be able to without modifying Apple's own support kexts.
To make sure the module actually gets loaded requires me to use AppleWWANSupport or AppleWWANSupport1 driver kexts, but they have their own vendor ID list, which needs to include Quectel's vendor ID. And they obviously don't.
2023-11-01 Update:
I've been testing the module with my GL.iNet Slate AX for more than a month at this point and with the usbnet
mode set to 0
(QMI/RMNET) the modem is pretty much plug and play:
Copyright 2018-2024, linuxgemini (İlteriş Yağıztegin Eroğlu). Any and all opinions listed here are my own and not representative of my employers; future, past and present.