RM551E-GL in PCIe mode (as opposed to USB)

Hello, I have several RM551E-GL modems (engineering samples) and they are extremely fast - they work well in USB 3 connection.

However, all the AliExpress vendors I have bought them from say PCIe connection is not supported. I’ve browsed this forum and there are some threads talking about PCIe connection to this modem - can someone tell me if it’s supported or not, please? If it is supported, what is the AT command to put the modem into PCIe mode…

Thanks!

PCIE EP or RC?
AT+QCFG="PCIe/mode"
Default PCIe EP should already be set
AT+QCFG="PCIe/mode",0
PCIe RC if you are using direct Ethernet or providing the modem some other PCIe endpoint
AT+QCFG="PCIe/mode",1

If PCIe EP, what host device?

Thanks. Can you briefly explain the difference between EP and RC modes?

Iamromulan has a good article on the topic in his wiki:
https://github.com/iamromulan/cellular-modem-wiki/blob/main/quectel/m.2_formfactor.md

RM551E-GL does work well in PCIe EP mode in Topton N100 mini PC connected to M.2 key M slot via M.2 key B adapter with SIM card.
Router runs under OpenWrt snapshot built with Quectel Connect Manager and drivers: https://github.com/FUjr/QModem

Challenging part is getting a host system to perform PCI scan when the modem is ready for it – about 3 seconds after powering up.
With N100 this was achieved by connecting a separate power source to the modem. Thus it turns on first and boots to a state ready for PERST# PCI signal before host is powered up.

Some systems have a BIOS setting for delay before PCI scan or can be modified.

Wiring for PCIe signals of host M.2 slot as well as adapter need to be verified.
E.g. signal pins of M.2 slot in popular Hiveton H5000M are not connected to the PCIe controller.
Many of M.2 adapters have only USB lines between connectors omitting this fact in description.
None of a few tested M.2 adapters with ribbon cable and present PCIe lines allowed N100 to connect with the modem.
M.2 key E slots in Intel-based systems are likely supporting only CNVI protocol and not compatible with PCIe modules.

Two adapters confirmed working with RM551E-GL for PCIe connection:
referenced by Iamromulan in the above mentioned article and on the photo below.

2 Likes

Many thanks for all the useful information.
However, all the AliExpress vendors I have got RM551E-GL cards from say PCIe is not supported. The cards are all engineering samples, and from the serial numbers I think they are 2024 ‘vintage’.

The vendor’s information says PCIe not supported (but I know Qflash is supported because I’ve flashed the firmware several times - so maybe it’s wrong about PCIe)…
6. Currently, the following software features are not supported:

:black_circle: Backup and restore: CEFS backup; A&B partition

:black_circle: Upgrade: QFlash upgrade; DFOTA/WU upgrade

:black_circle: PCIe, GPIO, All Pin Test

:black_circle: MBIM driver, etc.

Regarding adaptors, I have used Techship adaptors with are USB2 and PCIe… Techship MP301-S Adapter (M.2 Key B - mPCIe, USB2/PCIe, Dual SIM. This item is EoL but they supply MP302 now:

Finally - I can’t see a reference to the above adaptor in that article… sorry. Could you give me a pointer?

1 Like

Thats a m.2 to mPCIE adapter. Thought those created a bottleneck.

M.2 on its own also does PCIe and USB.

You asked about the difference between EP and RC modes:

Connection Methods

The modems M.2 B-Key interface is a combination of both USB 3.1 and PCIe 4.0 along with additional pins for things like the SIM slots. For exact information about what pin is what, see the hardware design document. The modem supports being used in 3 different ways:

  • USB 3.1
  • PCIe EP (Endpoint)
  • PCIe RC (Root Complex mode)

To further understand; take a look at the following graph:

  • Initiators refers to what is in charge of initially connecting and keeping the connection up.
    • TE refers to the host (whatever the modem is hooked up to) will be in charge of connection management
    • AP refers to the Linux OS running on the modem itself (the modem will be in charge of itself)
  • Both USB and PCIe can be used at the same time to connect. In PCIe Endpoint mode only the TE initiator is available to be used.
  • In TE modes the IP address(es) is always passed through to the host.
  • :x: It is recommended to not use PCIe and USB both in a TE mode at the same time. This causes the modem to request 2 IPv4 and IPv6 addresses from the cell carrier. While this is posable, and I have seen it work, it tends to be pretty unstable.
  • In AP modes the modems onboard DHCP server is used by default. If you want to enable IP passthrough in AP mode then AT+QMAP="mpdn_rule" must be used to specify where you want the IP to passthrough to. You have a choice between passing it to a USB device (using an AP protocol) or the PCIe RC’s endpoint, like the ethernet chipset of a RJ45/PHY board for example.

USB modes

  • When presented as a USB modem to a device/host there are 4 different USB modes (protocols/standards) that it can present itself as. 2 of them, the modem is presented as a full cellular modem to the host and the host will be in charge (TE). Those modes are NDIS (Referred to as QMI in the past) and MBIM. The other 2; ECM and RNDIS; the modem is in charge (AP) and the host will view it as a USB ethernet port. It will simply ask for an IP address and that’s it.
  • You can view what USB mode the modem is in with the AT command: AT+QCFG="usbnet"
    • To set it to a particular USB mode:
      • AT+QCFG="usbnet",0 (NDIS/QMI) (TE) (Default)
      • AT+QCFG="usbnet",1 (ECM) (AP)
      • AT+QCFG="usbnet",2 (MBIM) (TE)
      • AT+QCFG="usbnet",3 (RNDIS) (AP)
  • :bulb: After setting a USB mode reboot to have it take effect with AT+CFUN=1,1

PCIe modes

  • PCIe devices can take 2 different roles. Its either an endpoint device or a root complex (host) device. For example, a desktop computer/PC has a graphics card or WiFi card installed to a PCIe slot. The computer would be (have) the Root Complex, while the Graphics Card or WiFi card would be the endpoint device.
  • To check what PCIe mode the modem is currently in run the AT command AT+QCFG="pcie/mode"
    • To set the PCIe mode to Endpoint mode (TE) run the AT command AT+QCFG="pcie/mode",0
    • To set the PCIe mode to Root complex mode (AP) run the AT command AT+QCFG="pcie/mode",1

PCIe EP (Endpoint Mode)(TE)

  • In PCIe endpoint mode (default) the modem will act as a PCIe endpoint device. It can be installed as a device to system with a PCIe slot/Root Complex.
  • :v: I personally have never used the modem in this mode, however I have recently ordered a PCIe adapter to see how the modem works in this mode so I can provide more details here. Here is what I ordered to test out PCIe EP mode

PCIe RC (Root Complex Mode)(AP)

  • In PCIe root complex mode the modem will act as a PCIe host/root complex device. In this way the modem can be provided with an endpoint device like an Ethernet chipset or a WiFi chipset for it to use. On the RM50x, RM52x, and RM530 modems, after setting this mode you must enable the correct driver for the endpoint device you are using.
    • For Ethernet chipsets you’ll use the AT+QETH="eth_driver" command to see what driver is currently enabled, and for a list of supported drivers.
      • For example: AT+QETH="eth_driver","r8125",1 would enable the driver for the RTL8125 ethernet chipset. A good example of a ready to use board with the 2.5Gig RTL8125 ethernet chipset would be the Rework.Network PHY Board
    • For WiFi chipsets, for example, you’d use the command AT+QCFG="wifi/model","fc64e" to select the driver for the fc64e WiFi chip
      • For now, only Quectel WiFi chips can be used. The following models are supported:
        • “fc64e”,“fc06e”,“fc06e-33”,“fc60e”,“fc08e”
      • :v: I Personally have not seen a board on the market offering a WiFi chip other than the Quectel EVB kits.

For your main point/question though…
What router are you trying to use it with?

Thanks for all the information…

I’m currently testing (playing with) RM551E-GL in several routers. Huasifei WH3000 Pro - both in their original case and a bare board in a case I’m made so I can easily swap out modems, BRi-R4, and these M2 to USB adaptors (I have several, and bought them without the RM520N-GL card)

I use other routers like Comfast WR632AX and the adaptors, and play with ROOter, OpenWRT and QWRT firmware. Annoyingly ROOter currently hangs with the RM551E-GL at ‘initialising QMI connection’ and no-one from the ROOter forum has yet sorted it out. The RM551 works fine with OpenWRT (with 4IceG’s packages to monitor it) and QWRT, which is what the Huasifei WH3000 Pro is supplied with.

The AliExpress vendors (as I noted above) say only QMI works with the RM551 - no MBIM, no PCIe - so I am wary about issuing the command to change the data mode to PCIe as I’ve bricked a modem in the past issuing a similar ‘impossible’ command…

Thanks for your GIT site and all the useful info there!
Cheers!

1 Like

Oh, I forgot to say, I ordered a couple of these adaptors which look similar to the one referred to by Storm-10:

https://www.aliexpress.com/item/1005010306413023.html

PS I’m currently connected with and using a RM551E-GL in a Huasifei WH3000 Pro router with the latest QWRT firmware I can find (fildunsky (Fil Dunsky) · GitHub) - something like 450 meg down and 80 meg upload on EE (UK) 5Gnr…

I am sure you are aware of all these sites and more!

Per Claude Opus most likely issue is uqmi’s generic QMI. Particularly:

  • 802.3 Ethernet framing data format instead of raw-ip mode for QMAP multiplexing of X75;
  • no MuxId binding (WDS_BIND_MUX_DATA_PORT) required by X75 when QMAP is active.

The easiest way to make Rooter work with this modem appears to be a switch from uqmi to quectel-CM-M.

Log of successful connection in OpenWrt:

[2026-03-03 20:46:10] modem_dial:modem_path=/sys/bus/pci/devices/0000:03:00.0/,driver=mhi,interface=modem,at_port=/dev/mhi_DUN,using_sim_slot:1,dns_list: 
[2026-03-03 20:46:15] modem_dial:info sim card is ready 
[2026-03-03 20:46:15] modem_dial:create interface modem with proto dhcp and metric 11 
[2026-03-03 20:46:16] modem_dial:network reload 
[2026-03-03 20:46:16] modem_dial:firewall reload 
[2026-03-03 20:46:16] modem_dial:dhcp reload 
[2026-03-03 20:46:16] modem_dial:interface modem already set to rmnet_mhi0.1 
[2026-03-03 20:46:16] modem_dial:dialing /sys/bus/pci/devices/0000:03:00.0/ driver mhi 
[2026-03-03 20:46:16] modem_dial:dialing: quectel-CM-M -4 -6 -i rmnet_mhi0 -b -d -M 11 -f /var/run/qmodem/0000_03_00_0_dir/dial_log 
[03-03_20:46:16:333] network interface 'rmnet_mhi0' or qmidev '' is not exist
[03-03_20:46:16:333] netcard driver = pcie_mhi, driver version = V1.3.8
[03-03_20:46:16:333] qmap_mode = 1, qmap_version = 9, qmap_size = 15360, muxid = 0x81, qmap_netcard = rmnet_mhi0.1
[03-03_20:46:16:333] Modem works in QMI mode
[03-03_20:46:16:386] cdc_wdm_fd = 8
[03-03_20:46:17:386] QmiWwanInit message timeout
[03-03_20:46:18:396] Get clientWDS = 20
[03-03_20:46:18:400] Get clientWDS = 23
[03-03_20:46:18:403] Get clientDMS = 1
[03-03_20:46:18:410] Get clientNAS = 1
[03-03_20:46:18:413] Get clientUIM = 2
[03-03_20:46:18:417] Get clientWDA = 1
[03-03_20:46:18:421] requestBaseBandVersion RM551EGL00AAR02A02M8G
[03-03_20:46:18:421] Modem model RM551EGL00AAR02A02M8G does not require FCC authentication
[03-03_20:46:18:426] qmap_settings.rx_urb_size = 15360
[03-03_20:46:18:426] qmap_settings.ul_data_aggregation_max_datagrams  = 11
[03-03_20:46:18:426] qmap_settings.ul_data_aggregation_max_size       = 8192
[03-03_20:46:18:426] qmap_settings.dl_minimum_padding                 = 0
[03-03_20:46:18:443] Skipping FCC authentication - not required for this modem model
[03-03_20:46:18:447] requestGetSIMStatus SIMStatus: SIM_READY
[03-03_20:46:18:455] requestGetProfile[pdp:1 index:1] fast.t-mobile.com///0/IPV4V6
[03-03_20:46:18:459] requestRegistrationState2 MCC: 310, MNC: 260, PS: Attached, DataCap: 5G_SA
[03-03_20:46:18:462] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[03-03_20:46:18:465] requestQueryDataCall IPv6ConnectionStatus: DISCONNECTED
[03-03_20:46:18:465] ip link set dev rmnet_mhi0 down
[03-03_20:46:18:466] ip addr flush dev rmnet_mhi0.1
[03-03_20:46:18:467] ip link set dev rmnet_mhi0.1 down
[03-03_20:46:18:506] requestSetupDataCall WdsConnectionIPv4Handle: 0xe3ddb310
[03-03_20:46:18:522] requestSetupDataCall WdsConnectionIPv6Handle: 0xe3903ea0
[03-03_20:46:18:546] change mtu 1500 -> 1472
[03-03_20:46:18:546] ip link set dev rmnet_mhi0 up
[03-03_20:46:18:552] ip link set dev rmnet_mhi0.1 up
[03-03_20:46:18:553] echo '0xc0000002' > /sys/class/net/rmnet_mhi0.1/bridge_ipv4
[03-03_20:46:18:813] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[03-03_20:46:18:816] requestQueryDataCall IPv6ConnectionStatus: DISCONNECTED
[03-03_20:46:18:821] ip link set dev rmnet_mhi0 down
[03-03_20:46:18:822] ip addr flush dev rmnet_mhi0.1
[03-03_20:46:18:822] ip link set dev rmnet_mhi0.1 down
[03-03_20:46:19:481] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-03_20:46:19:485] requestRegistrationState2 MCC: 0, MNC: 0, PS: Detached, DataCap: UNKNOW
[03-03_20:46:19:845] requestRegistrationState2 MCC: 310, MNC: 260, PS: Detached, DataCap: UNKNOW
[03-03_20:46:19:848] requestRegistrationState2 MCC: 310, MNC: 260, PS: Detached, DataCap: UNKNOW
[03-03_20:46:20:367] requestRegistrationState2 MCC: 310, MNC: 260, PS: Attached, DataCap: 5G_SA
[03-03_20:46:21:091] requestSetupDataCall WdsConnectionIPv4Handle: 0xe3ddb310
[03-03_20:46:21:110] requestSetupDataCall WdsConnectionIPv6Handle: 0xe3903ea0
[03-03_20:46:21:130] ip link set dev rmnet_mhi0 up
[03-03_20:46:21:136] ip link set dev rmnet_mhi0.1 up

Many thanks for replying but that’s a bit over my head! Can you explain how i could implement this in rooter, please!?

No issues observed with my modem switch to PCIe and back by AT commands:

AT+QCFG="data_interface",1,0

AT+QCFG="data_interface",0,0

Were you able to determine what happened to that unfortunate EM160RGLAP?

Gosh, you have a long memory! It’s a bit of a story - I got a gl-inet Spitz with the EM160GLAP in it, and swapped it for one of my RM520N-GL modems. I issued the command to change to USB data interface on the EM160 - but of course, as it was a AP modem, it couldn’t do that so I bricked it. I was unable to get it into ‘emergency’ mode or whatever, to recover it - so it went to WEEE waste…

My silly fault of course, and that explains why I am reluctant to try to change one of my (expensive and fast) RM551E-GL modems from USB to PCIe, when the suppliers all claim PCIe is not implemented. Are your modems ‘engineering samples’ - and does the serial number contain Y24K - which I believe means it is 2024?

Cheers!

1 Like

I see after a bit of Googling, Quectel Connection Manager. Is there an OpenWRT (or ROOter) package for this?

Mine also has ‘engineering sample’ on the cover, SN starts with D1Y25K.

Zigmabeta in the very same Rooter thread reported using mode switch commands in May 2024 in similar situation:

I just received my Quectel SDX75 RM551E-GL.

I was told that the firmware is only supporting USB mode as of now.

I have tried:
AT+QCFG=“data_interface”,0,0 I also tried 1,0

posted 2024-May-17, 2:58 am AEST

His subsequent posts on continued work with the modem indicate it survived the experience.

.

Starting with your working OpenWrt configuration would be appropriate.
BPI-R4 or other router with PCIe from your impressive collection.

Repeating my x64 PC build will be easiest if you have some old box with compatible or adaptable slot.

Follow the QModem instruction: https://github.com/FUjr/QModem/blob/main/docs/user-guide.md

At the ‘menuconfig’ step make following selections (exclude all oter luci-app-qmodem-* items):

        Qualcomm QMI WWAN Driver Selection (Vendor QMI driver)  --->             
        MHI PCIe Modem Driver Selection (Use Vendor MHI PCIe Driver)  --->       
        Quectel Connect Manager Selection (Tom customized Quectel CM)  --->      
[*]     Add PCIe Modem SUPPORT                                                   
...
<*>     luci-app-qmodem-next.. LuCI Modern UI for QModem(Not Support Lua Version)

Once it builds and works with OpenWrt repeat same for Rooter, check what is missing or incompatible in case of issues.

A friendly reminder that typical M.2 slots have an insertion rating of 60 cycles.
Thought one in N100 was about to wear out with numerous experiments.

Damaged SIM slot on BPI-R4 can be restored with an extender like this:
https://www.aliexpress.com/item/3256810458576228.html

Put solder blobs on contact pads of a male end. Should it not work cut off the metal top of a damaged slot and solder contact remains to wires connected to the extender.
This is assuming that replacing the entire slot assembly on the board considered impractical.

1 Like

Regarding repair of SIM slot on BPi-R4, the sim extender is an EXCELLENT idea! I have several SIM extenders in stock so I could try that immediately. That is really a superb idea! Many thanks…

I will have to (carefully) cut the top metal off - I can’t replace the entire assembly as I don’t have the right soldering facilities…

Thank-you again…

I have X64 mini-PC with M2 slot (thanks for the warning about safe number of insertions for M2 slots!).
I have this running ROOter and have a RM520N-GL in the M2 slot.

https://www.aliexpress.com/item/1005008431108576.html

PS I would like to add, I am not really a linux person but I suppose I will have to fire up a linux PC to continue this work… What distro would you suggest is best, please?

PPS sorry, for Linux, would WSL on Windows work, and which distro would you suggest please?

Why would I? OpenWrt guide recommends Debian 12 Bookworm:
https://openwrt.org/docs/guide-developer/buildserver_virtualbox.

No need for separate HW either. Setup tried and true VirtualBox, get a proper image from osboxes.org.
Start building in under 10 minutes, depending on download speed for the above.

WSL might work as well.
Having indecent amount of my blood spoiled by decades of exposure to Microsoft software, trying to avoid any of it by all means.