Thanks for the detailed log, it helps narrow this down. Two things are going on here.
The cdce0: No valid alternate setting found error is a compatibility issue between the module’s default ECM USB network mode and FreeBSD’s cdce driver, which expects a data-interface alternate setting that the ECM gadget doesn’t present. This is why the interface never comes up in OpnSense. The recommended fix is to switch the module to RNDIS mode, which FreeBSD handles via a different driver (urndis):
Connect to the module’s AT command port (a USB serial terminal on a Windows/Linux PC is easiest for this step).
Query the current mode: AT+QCFG="usbnet"
Set RNDIS: AT+QCFG="usbnet",3
Power-cycle the module and re-check for a ue0 interface.
Separately, the repeating disconnect/reconnect in your log suggests the module may be resetting during enumeration, which is often power-related in an mPCIe slot (LTE transmit current peaks). To confirm, could you test the module briefly on a PC via a powered mPCIe-to-USB adapter and let me know whether it enumerates stably there? That will tell us whether we’re chasing a driver issue, a power issue, or both.
Could you also confirm the module is your only cellular device in that slot, and share the output of usbconfig when it’s connected?
Thank you for your comprehensive reply.
I will test with RNDIS mode.
Regarding the potential power related issues; I have connected this module to a PC via a USB to mPCIe adapter and I was able to see it as a device in Windows Device Manager, connect to it via its COM port and run AT commands on it, without issue.
Is this a sufficient test to confirm stability? If not, please direct me as to the test I should perform.
Thanks for running that test, it’s a helpful result. Being able to enumerate the module and issue AT commands over the COM port on a PC confirms the module itself is healthy and rules out a defective unit, so we can set that aside.
One thing to keep in mind, though is that test exercised the module in an essentially idle state. The instability we’re trying to rule out is most likely linked to LTE transmit current peaks, which are significantly higher than the near-zero draw at an idle AT prompt. Since the module wasn’t registered on the network or passing data, the power rail was never actually loaded, so this doesn’t yet confirm stability under real operating conditions, and a PC USB port (or an adapter with its own regulation) is also a different supply from the mPCIe 3.3V rail on your OpnSense board.
That said, the good news is that the RNDIS test you’re already planning is the most efficient next step, because it will help separate the two possible causes. FreeBSD’s failed ECM (cdce) attach can itself trigger a USB port reset, which would produce exactly the disconnect/re-enumeration loop you saw, so that loop may have been a driver mismatch rather than a power problem. The plan:
On the PC, set the module to RNDIS: AT+QCFG=“usbnet”,3
Power-cycle the module, then reinstall it into the OpnSense box.
Check whether a ue0 interface appears (RNDIS is handled by FreeBSD’s in-kernel urndis driver, so no additional driver is needed on OpnSense).
If it comes up as ue0 and the disconnect loop is gone, the loop was the ECM driver mismatch and power was never the issue.
If the loop persists in the firewall even though the module is stable on the PC, then power/slot becomes the likely cause. In that case, please run a loaded test rather than an idle one: insert the SIM and connect the antenna, let the module register (AT+CEREG?), bring up the data call (AT+QNETDEVCTL=1,1,1), then push sustained traffic such as a continuous download or ping and watch for drops during the active transfer. If you have the equipment, monitoring the module’s 3.3V rail for voltage sag during transmit is the definitive check.
Please give the RNDIS step a try and let me know how it enumerates in OpnSense.
Thanks for that info @fazrulredzuan , setting the USBNet mode to 3 has resolved the looping issue and the interface now shows as “ue0” in the OpnSense UI!
Thank you very much for your assistance with this issue!