Fibocom FM350-GL Support

I'm facing issues trying to connect a Fibocom FM350-GL modem on a ZBT WG1608 router running OpenWRT 23.05.2 (openwrt-23.05.2-ramips-mt7621-zbtlink_zbt-wg1608-32m-squashfs-sysupgrade.bin). I have installed all the necessary packages, including kmod-usb-serial, kmod-usb-serial-wwan, kmod-usb-net-rndis, minicom, modemmanager, and luci-proto-modemmanager.

I have successfully unlocked the FCC on the modem, created the interface, and specified the correct APN in modemmanager. The device information obtained using the command cat /sys/kernel/debug/usb/devices is as follows:

:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
P:  Vendor=0e8d ProdID=7127 Rev= 0.01
S:  Manufacturer=Fibocom Wireless Inc.
S:  Product=FM350-GL
C:* #Ifs=10 Cfg#= 1 Atr=a0 MxPwr=896mA
A:  FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=ff Driver=rndis_host
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=125us
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbserial_generic
E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=87(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=88(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=07(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=89(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=08(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 9 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usbserial_generic
E:  Ad=8a(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=09(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

The interface status shows:

**Protocol:** ModemManager
**RX:** 0 B (0 Pkts.)
**TX:** 0 B (0 Pkts.)
**Error:** Connection attempt failed.

In the logs, I found the following error:

daemon.notice netifd: fibocom (7289): error: modem has no Simple capabilities.

and

daemon.notice netifd: fibocom (5107): error: couldn't connect the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.MobileEquipment.NotSupported: 0,NONE'

If anyone has any insights or ideas on why the connection is failing, I would greatly appreciate any information or guidance.

Full logs:

Mon Jan 22 09:32:36 2024 daemon.info dnsmasq[1]: read /etc/hosts - 12 names
Mon Jan 22 09:32:36 2024 daemon.info dnsmasq[1]: read /tmp/hosts/dhcp.cfg01411c - 2 names
Mon Jan 22 09:32:36 2024 daemon.info dnsmasq[1]: read /tmp/hosts/odhcpd - 2 names
Mon Jan 22 09:32:36 2024 daemon.info dnsmasq-dhcp[1]: read /etc/ethers - 0 addresses
Mon Jan 22 09:32:37 2024 daemon.warn odhcpd[2080]: No default route present, overriding ra_lifetime!
Mon Jan 22 09:32:39 2024 daemon.warn [2325]: <warn>  [modem0] could not load SIM identifier: Serial command timed out
Mon Jan 22 09:32:39 2024 daemon.info [2325]: <info>  [modem0] SIM identifier has changed: 89997779000071507933 -> <none>
Mon Jan 22 09:32:42 2024 daemon.warn [2325]: <warn>  [modem0] port ttyUSB4 timed out 2 consecutive times
Mon Jan 22 09:32:45 2024 daemon.warn [2325]: <warn>  [modem0] port ttyUSB4 timed out 3 consecutive times
Mon Jan 22 09:32:48 2024 daemon.warn [2325]: <warn>  [modem0] port ttyUSB4 timed out 4 consecutive times
Mon Jan 22 09:32:49 2024 daemon.err [2325]: <error> [modem0] failed to disable after SIM switch event: Too much time waiting to get to a final state
Mon Jan 22 09:32:49 2024 daemon.warn [2325]: <warn>  [modem0] couldn't enable interface: 'Operation was cancelled'
Mon Jan 22 09:32:49 2024 daemon.notice netifd: fibocom (5225): error: couldn't connect the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Cancelled: Operation was cancelled'
Mon Jan 22 09:32:49 2024 daemon.notice netifd: fibocom (6073): stopping network
Mon Jan 22 09:32:49 2024 daemon.notice netifd: fibocom (6073): error: couldn't find modem
Mon Jan 22 09:32:49 2024 daemon.notice netifd: fibocom (6073): couldn't load bearer path: disconnecting anyway
Mon Jan 22 09:32:49 2024 daemon.notice netifd: Interface 'fibocom' is now down
Mon Jan 22 09:32:50 2024 daemon.warn odhcpd[2080]: No default route present, overriding ra_lifetime!
Mon Jan 22 09:32:51 2024 daemon.info [2325]: <info>  [device /sys/devices/platform/1e1c0000.xhci/usb2/2-1/2-1.2] creating modem with plugin 'generic' and '9' ports
Mon Jan 22 09:32:51 2024 daemon.warn [2325]: <warn>  [plugin/generic] could not grab port ttyUSB2: Cannot add port 'tty/ttyUSB2', unhandled port type
Mon Jan 22 09:32:51 2024 daemon.warn [2325]: <warn>  [plugin/generic] could not grab port ttyUSB1: Cannot add port 'tty/ttyUSB1', unhandled port type
Mon Jan 22 09:32:51 2024 daemon.warn [2325]: <warn>  [plugin/generic] could not grab port ttyUSB0: Cannot add port 'tty/ttyUSB0', unhandled port type
Mon Jan 22 09:32:57 2024 daemon.warn [2325]: <warn>  [modem1] port ttyUSB4 timed out 2 consecutive times
Mon Jan 22 09:33:03 2024 daemon.warn [2325]: <warn>  [modem1] port ttyUSB4 timed out 2 consecutive times
Mon Jan 22 09:33:05 2024 daemon.warn [2325]: <warn>  [modem1] port ttyUSB4 timed out 2 consecutive times
Mon Jan 22 09:33:06 2024 daemon.warn [2325]: <warn>  [modem1] modem couldn't be initialized: Failed to load current capabilities: Failed to determine modem capabilities.
Mon Jan 22 09:33:06 2024 daemon.info [2325]: <info>  [modem1] state changed (unknown -> failed)
Mon Jan 22 09:33:06 2024 daemon.warn [2325]: <warn>  [modem1] port ttyUSB4 timed out 3 consecutive times
Mon Jan 22 09:33:09 2024 daemon.warn [2325]: <warn>  [modem1] port ttyUSB4 timed out 4 consecutive times
Mon Jan 22 09:33:09 2024 daemon.warn [2325]: <warn>  [modem1] error initializing: Modem in failed state: unknown-capabilities
Mon Jan 22 09:35:17 2024 daemon.notice netifd: Interface 'fibocom' is setting up now
Mon Jan 22 09:35:17 2024 daemon.notice netifd: fibocom (6292): modem available at /org/freedesktop/ModemManager1/Modem/1
Mon Jan 22 09:35:17 2024 daemon.notice netifd: fibocom (6292): starting connection with apn 'internet.tele2.kz'...
Mon Jan 22 09:35:17 2024 daemon.notice netifd: fibocom (6292): error: modem has no Simple capabilities
Mon Jan 22 09:35:17 2024 daemon.notice netifd: fibocom (6320): stopping network
Mon Jan 22 09:35:17 2024 daemon.notice netifd: fibocom (6320): couldn't load bearer path: disconnecting anyway
Mon Jan 22 09:35:18 2024 daemon.notice netifd: Interface 'fibocom' is now down

after restarting wg1608 and recreating the interface

Mon Jan 22 10:14:34 2024 daemon.info [2336]: <info>  [modem0] power state updated: on
Mon Jan 22 10:14:34 2024 daemon.warn [2336]: <warn>  [modem0] 3GPP CSFB registration state is consolidated: home-sms-only
Mon Jan 22 10:14:34 2024 daemon.warn [2336]: <warn>  [modem0] could not set default storage: Cannot set default storage when current mem1 storage is unknown
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (4/10): wait to get fully enabled
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] state changed (enabling -> enabled)
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (5/10): wait after enabled
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] 3GPP registration state changed (unknown -> registering)
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] 3GPP registration state changed (registering -> home)
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] state changed (enabled -> registered)
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (6/10): register
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (7/10): wait to get packet service state attached
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (8/10): bearer
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] simple connect state (9/10): connect
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] state changed (registered -> connecting)
Mon Jan 22 10:14:35 2024 daemon.warn [2336]: <warn>  [modem0/bearer0] connection attempt #1 failed: 0,NONE
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0] state changed (connecting -> registered)
Mon Jan 22 10:14:35 2024 daemon.info [2336]: <info>  [modem0/bearer0] connection #1 finished: duration 0s
Mon Jan 22 10:14:35 2024 daemon.notice netifd: fibocom (5107): error: couldn't connect the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.MobileEquipment.NotSupported: 0,NONE'
Mon Jan 22 10:14:35 2024 daemon.notice netifd: fibocom (5334): stopping network
Mon Jan 22 10:14:35 2024 daemon.notice netifd: fibocom (5334): running disconnection (common)
Mon Jan 22 10:14:35 2024 daemon.notice netifd: fibocom (5334): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "fibocom" } (Permission denied)
Mon Jan 22 10:14:36 2024 daemon.notice netifd: fibocom (5334): successfully disconnected all bearers in the modem
Mon Jan 22 10:14:36 2024 daemon.info [2336]: <info>  [modem0] state changed (registered -> disabling)
Mon Jan 22 10:14:36 2024 daemon.info [2336]: <info>  [modem0] 3GPP registration state changed (home -> unknown)
Mon Jan 22 10:14:36 2024 daemon.info [2336]: <info>  [modem0] state changed (disabling -> disabled)
Mon Jan 22 10:14:36 2024 daemon.notice netifd: fibocom (5334): successfully disabled the modem
Mon Jan 22 10:14:36 2024 daemon.notice netifd: fibocom (5334): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "fibocom" } (Permission denied)
Mon Jan 22 10:14:36 2024 daemon.notice netifd: Interface 'fibocom' is now down

I don't think ModemManager supports this modem in the given configuration (USB+RNDIS).
From what I see this modem needs to be connected to PCI bus first, then MM will be able to talk MBIM to it.

What you can probably do right now is remove MM, manually initiate connection from a terminal and read IP address(es), then manually configure the interface with the IP obtained from the modem.
If you're comfortable with scripting you can probably automate this procedure.

1 Like

Thank you for the prompt response! I'm reaching out for further clarification on the suggestion you provided. I'm relatively new to this, and I appreciate your patience.

I've followed your advice and executed the AT commands AT+CGDCONT=1,"IPV4V6","internet.tele2.kz", AT+CGACT=1,1, and AT+CGPADDR=1. The response I received is +CGPADDR: 1,"10.248.106.37","0.0.0.0.0.0.0.0.0.1.0.0.103.104.209.100".

Now, I'm uncertain about the next steps in manually initiating the connection. Could you kindly provide more details or steps on how to proceed from here?

Once again, thank you for your help, and apologies for any novice questions.

No, as I wrote earlier the next step is "manually configure the interface".
Just create an interface with static IP in a standard way, don't forget to assign it to a WAN firewall zone.

You may also query your modem with at+cgcontrdp, that will give you a netmask, gateway and DNS IPs.

how do you mange to unlock the FCC in usb mode? Could you share how to unlock the FCC with USB mode.

Is this mobile device anywhere near usable for OpenWRT yet, I wouldn't mind ordering one if it is?

I use this https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/blob/main/data/dispatcher-fcc-unlock/14c3?ref_type=heads )

What packages did you use when i tried this and installed packages modem manager still doesn't detect it can you tell me what procedure did you do and packages you used

In my case, the modem would intermittently appear and disappear from the list of available modems. However, despite appearing in the list and ModemManager attempting to connect to the internet, the attempt was unsuccessful. In the logs, there was a line: "Mon Jan 22 09:32:49 2024 daemon.notice netifd: fibocom (5225): error: couldn't connect the modem: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Cancelled: Operation was cancelled'." I suspect that ModemManager does not yet fully support this modem.

Can you verify if the steps i've done is correct

Boot to openwrt

Create the script in /usr/share/ModemManager/fcc-unlock.available.d/

Then name the script as it was like 14c3

Then find the /etc/ModemManager/fcc-unlock.d/

I didn't find it so i just ended up creating it then
Executing the linking command

sudo ln -sft /usr/share/ModemManager/fcc-unlock.available.d/14c3 /etc/ModemManager/fcc-unlock.d/

Then restart after that modemmanager should be able to detect the modem ?

Hi
Im new here but Im happy to be with you :slight_smile:
Im also struggling with my FM350GL and trying to make it working under BPI-R4 with snapshot openwrt soft (kernel 6.1).
At first step I was trying to follow https://radenku.com/fibocom-l850-gl-l860-gl-mode-ncm-openwrt/ but it didnt work for me...
Im really appreciated for any steps/instructions to follow or tests to be done.
Kindly

That is already explained in this thread. Other Fibocoms are different, you don't need to try all these guides written for them.
Make sure the drivers are in place, set the APN, initiate the connection, query the modem for IP information, create an interface with these data. Once this works you can try to make a script to automate the procedure.

Hi
thanky you for your replay but as I mentioned Im new and that's why asking for some steps or help here.
I have no idea which packages/modes should be added to my image, which commands to check... etc, something like a small guide for dummies :wink:
Regards

Some general guidelines: https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_rndis
However, this modem does not have a DHCP server functionality, so you will need to manually initiate the connection and get some data from the modem (using standard AT commands shown above) and apply them to the interface in OpenWrt.

1 Like

Just to confirm as with help of AndrewZ the modem works under my BPI-R4 :slight_smile:
Now working on forcing 5G on it....

That is possible with the provider running StandAlone (SA) 5G network.
In Non-StandAlone (NSA) network the modem will always connect to LTE (4G) first and then connect to additional NR (5G) band(s).

I have small mobile modem 5G (aliexpress) and it connects to NSA 5G (showing 5G :wink: ) and test 100Mb/s. If I try to connect only 5G it fails... True. But if it can use some 5G bands with FM350GL I will try to get advantage. As per now, no success. That modem has not a lot of AT commands to config but maybe in manual maner (or manual+automat) it could be possible.

In this repo @Prusa pr for FM350GL luci-proto and modeminfo, but it got bug on auth.

I have this modem as well. Mine came from aliexpress and seems to be unlocked.
I'm running OpenWrt 23.05 (kernel 5.15) as a VM under proxmox, it is installed in a USB adapter, and I have the USB device in passthrough mode.
In the VM I have several ttyUSB devices and figured out that AT port is at /dev/ttyUSB5. I'm able to communicate in AT commands and this is how I know it is FCC unlocked.
However, I don't know what to do next. I've installed ModemManager, usb utils, drivers etc, but when I try to add an interface through GUI and select ModemManager, it does not detect my modem - "modem device" dropdown is empty.

I also tried to connect to LTE with AT commands:
AT+GTDUALSIM=0 - to switch to my SIM, this works well.
AT+GTDUALSIM? - to check connection status, this says it's connected to LTE.
AT+CPOL? - to check the list of allowed operators by the SIM. It reports several, so all is still good.
AT+CGDCONT=0,"IPV4V6","internet.tele2.lt","",,,1,0,2 - SET APN and DHCP. Returns OK.
AT+CGCONTRDP=0 - returns what seems to be a bit different APN and DNS addresses, but no gateway address.
AT+CGPADDR=0 - returns PDP IP address. I guess this is the IP address I'm handed by DHCP?

so it kind of is working. But what next, how do I get it recognized by ModemManager?

you could start by scrolling back approx 1,5 mo.

1 Like