Can't get Fibocom NL678-E LTE modem working

Hi guys,

I'm trying to get a 4G router working (ZBT WE826) that uses a Fibocom NL678-E LTE modem (Qualcomm MDM9x40 chipset). I've followed several paths (QMI and MBIM), but for some reason I just cannot get it working.

I can see the interface with the "cat /sys/kernel/debug/usb/devices" command:

T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2cb7 ProdID=0105 Rev= 3.10
S:  Manufacturer=Fibocom
S:  Product=Fibocom NL678-E Modem
S:  SerialNumber=12345678
C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=500mA
A:  FirstIf#= 4 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00
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= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) 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=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=84(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=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=86(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= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=(none)
E:  Ad=89(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
I:* If#= 5 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
I:  If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=(none)
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

However, whatever I try, the drivers just keep presenting "(none)" making it unrecognized and unusable.

As this is my first time tinkering with OpenWrt, I am completely at a loss and hoping someone here could help me.

Thank you very much in advance.

Install kmod-usb-serial-option picocom, then connect to the modem with picocom /dev/ttyUSB2 (I could be wrong with the port number) and send AT+GTUSBMODE=22
If the modem will not restart on its own, send AT+CFUN=1,1
Wait for the modem to come back and post the new result of cat /sys/kernel/debug/usb/devices

1 Like

Hi Andrew,

I tried this, but got the following message when sending the AT+GTUSBMODE=22 command:

FATAL: read zero bytes from port
term_exitfunc: reset failed for dev UNKNOWN: Not a tty

After that, the cat /sys/kernel/debug/usb/devices looks like this:

T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2cb7 ProdID=0109 Rev= 3.10
S:  Manufacturer=Fibocom
S:  Product=Fibocom NL678-E Modem
S:  SerialNumber=12345678
C:* #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=82(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
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= 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=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

And the ttyUSBx devices are completely gone, even after a reboot:

root@OpenWrt:~# ls /dev
bus        log        mtd4       mtdblock3  random     ttyS11     ttyS6
console    mtd0       mtd4ro     mtdblock4  shm        ttyS12     ttyS7
fd         mtd0ro     mtd5       mtdblock5  stderr     ttyS13     ttyS8
full       mtd1       mtd5ro     mtdblock6  stdin      ttyS14     ttyS9
gpiochip0  mtd1ro     mtd6       null       stdout     ttyS15     urandom
gpiochip1  mtd2       mtd6ro     port       tty        ttyS2      watchdog
gpiochip2  mtd2ro     mtdblock0  ppp        ttyS0      ttyS3      watchdog0
hwrng      mtd3       mtdblock1  ptmx       ttyS1      ttyS4      zero
kmsg       mtd3ro     mtdblock2  pts        ttyS10     ttyS5

That means that Vendor=2cb7 ProdID=0109 combination is unknown to the drivers.
Temporary add it:
echo 2cb7 0109 ff > /sys/bus/usb-serial/drivers/option1/new_id

Then use terminal again and send AT+GTUSBMODE=17, etc.

1 Like

It seems to work so far, after that. Something doesn't seem completely right, as I do have an IP assigned by my carrier and everything looks good from the modem/SIM side, but traffic doesn't seem to run through it as I can't load any page. But that's an entirely different issue.

Thank you very much for your help!!!

Make sure you follow the guide
https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle

1 Like

Honestly, I don't think it's a config issue as I do get an IP. It's probably more to with the SMA extension cables and/or antennas I'm using.

Want to hear something fun?

I'm an idiot :joy:.
All this work, and I forgot to activate data on this SIM card :see_no_evil:

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.