We826 + Huawei me909 (s-120) - trying and failing to get up and running

HI All,

So not realising the ins and outs of setting up OpenWRT on this modem I purchased this combo thinking it would fairly trivial... however I am finding it far from this.

Whilst I am technically competent I barely use linux and have never used OpenWRT before - so I am trying to learn as I go an follow guides, but nothing seems to be working for me.

I'll give a basic overview of what I have tried, but I may be missing the simplest things.

I began by installing the 16M version from this page: https://openwrt.org/toh/zbt/we-826

I then read quite a few guides, likely installed a couple of incorrect packages. But I believe this is the guide I should be following:
https://openwrt.org/docs/guide-user/network/wan/wwan/ltedongle

This installs qmi. However I dont think I am able to get the device started at all. If I run "root@OpenWrt:~# uqmi -d /dev/cdc-wdm0 --get-data-status" it just tells me there is no device.

The commands for checking things are working like "ls -l /dev/cdc-wdm0" and "cat /sys/kernel/debug/usb/devices" return that there is no such directory - so I dont know what I am missing there.

I wont go into too much more detail as I might just be waffling. If anyone can provide me with a little help to get me up and running I would be most grateful.

I used the WE826+ME909-u. Worked like a charm, but only succeeded to run it in Serial Mode (3g-wwan; pppd). I consider the correct config of QMI (almost) to be Black Magic.

Pretending I'm a complete idiot who knows nothing (I pretty much am) would you mind telling me how you got it running in serial mode?

Or perhaps easier if possible... Can you just do a backup of your firmware and packages setup and send it over to me?

Obviously sans your personal settings... If that's possible?

Sorry, it was a commercial project, so I can not share everything directly.
However, you find everything here: https://openwrt.org/docs/guide-user/network/wan/wwan/3gdongle
For the 909, you need to use

config interface 'wwan'
        option pincode '1234'
        option device '/dev/ttyUSB0'
        option apn 'your.apn'
        option service 'umts'
        option proto '3g'
        option disabled '0'

Thanks, I did see that guide but stopped when it said it was slower and most LTE modems use one of the other protocols for connection - did you get LTE working on it?

So here is a readout of dmesg as I think it's not quite right.

First I wiped everything I had done so far and then ran dmesg and it had a 'normal' boot readout.

After following the guide in my OP again I constantly get the following line repeated:
" [ 63.470082] usb 1-1.3: usbfs: process 3860 (usbmode) did not claim interface 1 before use"
I have added hundreds of lines deleted with same message at several intervals in place of hundreds of lines of the same readout to allow this to fit in the forum post.

Hopefully someone who knows a bit more than me can tell me whats up.

login as: root
root@192.168.1.1's password:


BusyBox v1.28.4 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 18.06.2, r7676-cddd7b4c77
 -----------------------------------------------------
root@OpenWrt:~# dmesg
[    0.000000] Linux version 4.14.95 (buildbot@builds-03.infra.lede-project.org) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r7627-753531d)) #0 Mon Jan 28 08:54:32 2019
[    0.000000] Board has DDR2
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: MediaTek MT7620A ver:2 eco:6
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019650 (MIPS 24KEc)
[    0.000000] MIPS: machine is ZBT-WE826 (16M)
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat 80421050, node_mem_map 81000040
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] random: get_random_bytes called from 0x8042472c with crng_init=0
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyS0,115200 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=000583d1
[    0.000000] Readback ErrCtl register=000583d1
[    0.000000] Memory: 125212K/131072K available (3590K kernel code, 178K rwdata, 464K rodata, 176K init, 214K bss, 5860K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 256
[    0.000000] CPU Clock: 580MHz
[    0.000000] clocksource: systick: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 583261500 ns
[    0.000000] systick: enable autosleep mode
[    0.000000] systick: running - mult: 214748, shift: 32
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6590553264 ns
[    0.000013] sched_clock: 32 bits at 290MHz, resolution 3ns, wraps every 7405115902ns
[    0.007598] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.073536] pid_max: default: 32768 minimum: 301
[    0.078270] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.084647] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.097459] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.106998] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.112990] pinctrl core: initialized pinctrl subsystem
[    0.119373] NET: Registered protocol family 16
[    0.129005] Can't analyze schedule() prologue at 8037d498
[    0.609290] mt7620-pci 10140000.pcie: PCIE0 no card, disable it(RST&CLK)
[    0.615787] mt7620-pci: probe of 10140000.pcie failed with error -1
[    0.640023] rt2880_gpio 10000600.gpio: registering 24 gpios
[    0.645418] rt2880_gpio 10000600.gpio: registering 24 irq handlers
[    0.651811] rt2880_gpio 10000638.gpio: registering 16 gpios
[    0.657184] rt2880_gpio 10000638.gpio: registering 16 irq handlers
[    0.663567] rt2880_gpio 10000688.gpio: registering 1 gpios
[    0.668860] rt2880_gpio 10000688.gpio: registering 1 irq handlers
[    0.679790] clocksource: Switched to clocksource systick
[    0.686116] NET: Registered protocol family 2
[    0.691320] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.698046] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.704270] TCP: Hash tables configured (established 1024 bind 1024)
[    0.710539] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.716166] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.722555] NET: Registered protocol family 1
[    0.726747] PCI: CLS 0 bytes, default 32
[    0.729536] rt-timer 10000100.timer: maximum frequency is 1220Hz
[    0.736270] Crashlog allocated RAM at address 0x3f00000
[    0.743120] workingset: timestamp_bits=30 max_order=15 bucket_order=0
[    0.755420] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.761065] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.781201] io scheduler noop registered
[    0.784949] io scheduler deadline registered (default)
[    0.790953] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    0.800064] console [ttyS0] disabled
[    0.803517] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 2500000) is a Palmchip BK-3103
[    0.813161] console [ttyS0] enabled
[    0.820199] bootconsole [early0] disabled
[    0.828993] cacheinfo: Failed to find cpu0 device node
[    0.834275] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.847947] spi spi0.0: force spi mode3
[    0.861487] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.866343] 4 fixed-partitions partitions found on MTD device spi0.0
[    0.872840] Creating 4 MTD partitions on "spi0.0":
[    0.877737] 0x000000000000-0x000000030000 : "u-boot"
[    0.883742] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.890101] 0x000000040000-0x000000050000 : "factory"
[    0.896113] 0x000000050000-0x000001000000 : "firmware"
[    2.699785] random: fast init done
[    2.815943] 2 uimage-fw partitions found on MTD device firmware
[    2.822021] 0x000000050000-0x0000001aef28 : "kernel"
[    2.827969] 0x0000001aef28-0x000001000000 : "rootfs"
[    2.833927] mtd: device 5 (rootfs) set to be root filesystem
[    2.841320] 1 squashfs-split partitions found on MTD device rootfs
[    2.847650] 0x000000416000-0x000001000000 : "rootfs_data"
[    2.854868] libphy: Fixed MDIO Bus: probed
[    2.862510] gsw: setting port4 to ephy mode
[    2.866831] mtk_soc_eth 10100000.ethernet eth0 (uninitialized): port 3 link up (100Mbps/Full duplex)
[    2.876151] mtk_soc_eth 10100000.ethernet eth0 (uninitialized): port 4 link up (100Mbps/Full duplex)
[    2.887180] mtk_soc_eth 10100000.ethernet: loaded mt7620 driver
[    2.893971] mtk_soc_eth 10100000.ethernet eth0: mediatek frame engine at 0xb0100000, irq 5
[    2.902977] rt2880_wdt 10000120.watchdog: Initialized
[    2.909536] NET: Registered protocol family 10
[    2.918078] Segment Routing with IPv6
[    2.922016] NET: Registered protocol family 17
[    2.926602] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    2.939836] 8021q: 802.1Q VLAN Support v1.8
[    2.960003] VFS: Mounted root (squashfs filesystem) readonly on device 31:5.
[    2.968163] Freeing unused kernel memory: 176K
[    2.972740] This architecture does not have kernel memory protection.
[    4.430491] init: Console is alive
[    4.434216] init: - watchdog -
[    6.608281] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    6.928005] usbcore: registered new interface driver usbfs
[    6.933788] usbcore: registered new interface driver hub
[    6.939315] usbcore: registered new device driver usb
[    6.950431] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.958796] ehci-platform: EHCI generic platform driver
[    6.974546] phy phy-usbphy.0: remote usb device wakeup disabled
[    6.980607] phy phy-usbphy.0: UTMI 16bit 30MHz
[    6.985157] ehci-platform 101c0000.ehci: EHCI Host Controller
[    6.991082] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[    6.999273] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000
[    7.014042] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00
[    7.021483] hub 1-0:1.0: USB hub found
[    7.025788] hub 1-0:1.0: 1 port detected
[    7.033065] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    7.040963] ohci-platform: OHCI generic platform driver
[    7.046696] ohci-platform 101c1000.ohci: Generic Platform OHCI controller
[    7.053657] ohci-platform 101c1000.ohci: new USB bus registered, assigned bus number 2
[    7.061880] ohci-platform 101c1000.ohci: irq 26, io mem 0x101c1000
[    7.095754] hub 2-0:1.0: USB hub found
[    7.099986] hub 2-0:1.0: 1 port detected
[    7.116784] MTK MSDC device init.
[    7.138015] mtk-sd: MediaTek MT6575 MSDC Driver
[    7.146858] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    7.158527] init: - preinit -
[    7.311870] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    7.529521] hub 1-1:1.0: USB hub found
[    7.535953] hub 1-1:1.0: 4 ports detected
[    8.104673] random: procd: uninitialized urandom read (4 bytes read)
[    8.427948] usb 1-1.3: new full-speed USB device number 3 using ehci-platform
[    8.692478] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
[    9.159036] 8021q: adding VLAN 0 to HW filter on device eth0
[   12.225106] jffs2: notice: (406) jffs2_build_xattr_subsystem: complete building xattr subsystem, 5 of xdatum (3 unchecked, 2 orphan) and 33 of xref (2 dead, 0 orphan) found.
[   12.253064] mount_root: switching to jffs2 overlay
[   12.294462] overlayfs: upper fs does not support tmpfile.
[   12.317465] urandom-seed: Seeding with /etc/urandom.seed
[   12.454535] procd: - early -
[   12.457602] procd: - watchdog -
[   13.233529] procd: - watchdog -
[   13.237033] procd: - ubus -
[   13.495342] random: jshn: uninitialized urandom read (4 bytes read)
[   13.502495] random: ubusd: uninitialized urandom read (4 bytes read)
[   13.606122] random: ubusd: uninitialized urandom read (4 bytes read)
[   13.615078] procd: - init -
[   14.871232] usb 1-1.3: usbfs: process 495 (usbmode) did not claim interface 1 before use
[   15.105890] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   15.277618] kmodloader: loading kernel modules from /etc/modules.d/*
[   15.314438] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   15.363181] usbcore: registered new interface driver cdc_wdm
[   15.373682] Loading modules backported from Linux version wt-2017-11-01-0-gfe248fc2c180
[   15.381929] Backport generated by backports.git v4.14-rc2-1-31-g86cf0e5d
[   15.410541] ip_tables: (C) 2000-2006 Netfilter Core Team
[   15.466860] nf_conntrack version 0.5.0 (2048 buckets, 8192 max)
[   15.802180] usb 1-1.3: usbfs: process 607 (usbmode) did not claim interface 1 before use
[   15.828112] usbcore: registered new interface driver usbserial
[   15.834257] usbcore: registered new interface driver usbserial_generic
[   15.841075] usbserial: USB Serial support registered for generic
[   15.936037] xt_time: kernel timezone is -0000
[   16.060301] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   16.235923] PPP generic driver version 2.4.2
[   16.253440] NET: Registered protocol family 24
[   16.285536] usbcore: registered new interface driver qmi_wwan
[   16.352025] usbcore: registered new interface driver option
[   16.357814] usbserial: USB Serial support registered for GSM modem (1-port)
[   16.366014] option 1-1.3:2.2: GSM modem (1-port) converter detected
[   16.372745] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[   16.380332] option 1-1.3:2.3: GSM modem (1-port) converter detected
[   16.387026] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[   16.394610] option 1-1.3:2.4: GSM modem (1-port) converter detected
[   16.401360] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
[   16.408884] option 1-1.3:2.5: GSM modem (1-port) converter detected
[   16.415660] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
[   16.423241] option 1-1.3:2.6: GSM modem (1-port) converter detected
[   16.430013] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB4
[   16.704160] usb 1-1.3: usbfs: process 722 (usbmode) did not claim interface 1 before use
[   16.750090] rt2800_wmac 10180000.wmac: loaded eeprom from mtd device "factory"
[   16.757497] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 6352, rev 0500 detected
[   16.765459] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 7620 detected
[   16.773197] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   16.802144] kmodloader: done loading kernel modules from /etc/modules.d/*
[   16.944385] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   17.585475] usb 1-1.3: usbfs: process 814 (usbmode) did not claim interface 1 before use
*hundreds of lines deleted with same message*
[   40.926051] usb 1-1.3: usbfs: process 2331 (usbmode) did not claim interface 1 before use
[   41.073821] 8021q: adding VLAN 0 to HW filter on device eth0
[   41.100630] br-lan: port 1(eth0.1) entered blocking state
[   41.106158] br-lan: port 1(eth0.1) entered disabled state
[   41.112111] device eth0.1 entered promiscuous mode
[   41.117019] device eth0 entered promiscuous mode
[   41.158121] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   41.203098] br-lan: port 1(eth0.1) entered blocking state
[   41.208628] br-lan: port 1(eth0.1) entered forwarding state
[   41.214608] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   42.092305] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
*hundreds of lines deleted with same message*
[   51.762382] usb 1-1.3: usbfs: process 2976 (usbmode) did not claim interface 1 before use
[   51.997328] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   52.163651] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   52.185164] br-lan: port 2(wlan0) entered blocking state
[   52.190675] br-lan: port 2(wlan0) entered disabled state
[   52.196479] device wlan0 entered promiscuous mode
[   52.277803] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   52.284609] br-lan: port 2(wlan0) entered blocking state
[   52.290069] br-lan: port 2(wlan0) entered forwarding state
[   56.710852] usb 1-1.3: usbfs: process 3283 (usbmode) did not claim interface 1 before use
*hundreds of lines deleted with same message*
[   63.151077] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   63.280066] random: crng init done
[   63.283558] random: 6 urandom warning(s) missed due to ratelimiting
[   63.470082] usb 1-1.3: usbfs: process 3860 (usbmode) did not claim interface 1 before use
*hundreds of lines deleted with same message*
[  145.447883] usb 1-1.3: usbfs: process 10669 (usbmode) did not claim interface 1 before use
root@OpenWrt:~# cat /sys/kernal/debug/usb/devices
cat: can't open '/sys/kernal/debug/usb/devices': No such file or directory
root@OpenWrt:~# ls -l /dev/cdc-wdm0
ls: /dev/cdc-wdm0: No such file or directory
root@OpenWrt:~# ^C
root@OpenWrt:~# ^C
root@OpenWrt:~#

I did not use LTE, but UMTS only, about 15MBit/s download.
Was good enough for our purpose.

Just bumping this to see if anyone can help, I guess I'll be needing to sell the Huawei pci-e card and find a more compatible one if i can't get this working :slightly_frowning_face:

You might consider Quectel EC25 as an alternative.

Thanks, are they one of the better supported modems?

Yes, I think. Check the number of posts referring to the EC25. Also cheaper than the Huawei, if still available.

Forget about EC-25. I used to have it and under heavy load it freezes. Eg. when I download and upload 10+mbit at the same time. Also it has its own set of bugs.
For example: https://bugs.openwrt.org/index.php?do=details&task_id=1252

I switched from EC25 to ME909s-120 recently and no more freezing...I don't know if there is update for EC-25 to fix the issues, because there is no firmware updates to it unlike ME909s-120 which gets bugfixes.

You only need to edit /etc/usb-mode.json file to get it working.

            "12d1:15c1": {
                    "*": {
                            "mode": "Huawei",
                            "msg": [  ]
                    }
            },

Then you can follow the NCM modem documentation https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_ncm

Use DHCP as protocol on WWAN interface. If you follow the old 3G dongle manual, you will be limited to speeds of ~20mbit due to PPP, so unless your requirements are much less than 20mbit, don't use it...

Hi,

Thanks a lot for your reply. Can I just ask - the file /etc/usb-mode.json does not exist after a fresh reset of the router. Should I just create this file or should it already exist?

Ok so quick update, still not working :frowning:

So I at first followed the guide, installing the following:

opkg update
opkg install comgt-ncm kmod-usb-net-huawei-cdc-ncm usb-modeswitch

This installed the /etc/usb-mode.json file.

I then added the entry you put in your post and rebooted.

Upon reboot I then ran the 'test' in the NCM guide you linked:

ls -l /dev/cdc-wdm0

Which just returns a file/directory not found error.

I checked in the Luci config and there is no WWAN interface to configure. The only interfaces I can select are:
Ethernet switch "eth0"
Switch VLAN "eth0.1" (lan)
Switch VLAN "eth0.2" (wan, wan6)
Wireless Network Master "OpenWRT" (lan)

So I tried installing the "optional packages":

opkg install kmod-usb-serial kmod-usb-serial-option kmod-usb-serial-wwan

But this made no difference, with the result the same as above.

So I am still stuck :frowning:

The file comes with usb-modeswitch package (as you found out). However it did not work for me out of the box and I had to modify it as I mentioned.

You have 2 options.

Option 1:

If you are using usb-modeswitch, you can make the change I made in the json file:

            "12d1:15c1": {
                    "*": {
                            "mode": "Huawei",
                            "msg": [  ]
                    }
            },

and reboot. There will NOT be a cdc-wdm0 device! You will have /dev/ttyUSB[0-4] and wwan0 when you boot you should see a line like this if you check dmesg:

[ 12.480301] cdc_ether 1-2:2.0 wwan0: register 'cdc_ether' at usb-1e1c0000.xhci-2, Mobile Broadband Network Device, XX:XX:XX:XX:XX:XX

I have these USB related packages installed

root@OpenWrt:~# opkg list-installed |grep usb
kmod-usb-core - 4.14.95-1
kmod-usb-net - 4.14.95-1
kmod-usb-net-cdc-ether - 4.14.95-1
kmod-usb-net-cdc-mbim - 4.14.95-1
kmod-usb-net-cdc-ncm - 4.14.95-1
kmod-usb-net-huawei-cdc-ncm - 4.14.95-1
kmod-usb-net-qmi-wwan - 4.14.95-1
kmod-usb-net-rndis - 4.14.95-1
kmod-usb-serial - 4.14.95-1
kmod-usb-serial-option - 4.14.95-1
kmod-usb-serial-wwan - 4.14.95-1
kmod-usb-wdm - 4.14.95-1
kmod-usb3 - 4.14.95-1
libusb-1.0 - 1.0.22-1
usb-modeswitch - 2017-12-19-f40f84c2-1
usbutils - 007-9
root@OpenWrt:~#

Not all are required but I sometimes put some USB 4G cards etc. so I have all popular choices ready.

root@OpenWrt:~# ifconfig |grep wwan
wwan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
root@OpenWrt:~#

You need to use NDISDUP to dial to your provider and setup DHCP client on wwan0. I use this method because I need access to AT commands to disable voice calls on the device.

Option 2:

Look at this and read carefully:
https://bugs.openwrt.org/index.php?do=details&task_id=1424
He has the same card and problem.

The problem is because usb-modeswitch has a bug. Please read carefully (and vote for fix!):
https://bugs.openwrt.org/index.php?do=details&task_id=2319
This bug effected the original usb_modeswitch and it should be fixed in it. but the OpenWRT rewrite still has this bug. In the bug report is link to usb_modeswitch forum also. Please read that thread too.

As you can see Sydney Meyer who made the bug report uses a script to set bConfigurationValue to 0 then to 3 to get this card work in MBIM mode.

I do not know if he uninstalled usb-modeswitch completely (I think he may have done that).

If you see his message sent at 14.06.2019 13:35 he shared his configuration settings. In MBIM mode, you will have /dev/cdc-wdm0. However in my case there were no ttyUSBX ports so I am not able to use them. If you try this, you can let me know if you see any ttyUSBX ports

This should be enough information for you to get things rolling. Let us know how it goes.

Thanks,

Thanks for all that, I tried what I could but I am either running into walls of me not understanding things well enough (I can follow guides, but my knowledge is very limited) or getting different results than expected.

Here is where I am:
I initially printed out a dmesg and searched for any instance of "wwan0" - there were none.
I then installed all the packages you have installed to see if it made a difference.
I could now see the line:

[   16.720068] cdc_ether 1-1.3:2.0 wwan0: register 'cdc_ether' at usb-101c0000.ehci-1.3, Mobile Broadband Network Device, xx:xx:xx:xx:xx:xx

However below it was a line reading:

[   18.748975] cdc_ether 1-1.3:2.0 wwan0: unregister 'cdc_ether' usb-101c0000.ehci-1.3, Mobile Broadband Network Device

I don't know if that is significant, but when I run ifconfig:

root@OpenWrt:~# ifconfig |grep wwan
ifconfig: ▒: error fetching interface information: Device not found

At the end of this first option I'm afraid I dont know how to NDISDUP to dial my provider.

I did see the scripts for starting NDIS manually - but I am unsure how to send an AT command to the modem. This guide: https://openwrt.org/docs/guide-user/network/wan/wwan/ethernetoverusb_ncm
that you posted earlier has troubleshooting which says that if wdm0 does not respond (which it doesn't) then you can start the modem manually by " sending the following to */dev/ttyUSB1". - I assume it means an AT command as this is the command it says to send:

AT^NDISDUP=1,1,"your_apn_address"

so is there a simple way for me to send AT commands to the device through OpenWRT?

For Option 2:

In the linked discussion poster Evren Yurtesen says that adding those lines to his json file stopped the looping - this did not work for me. Am I adding it correctly by adding it along with the other devices or should it be the only entry in the entire file?

 ],

        "devices" : {
                "12d1:15c1": {
                        "*": {
                                "mode": "Huawei",
                                "msg": [  ]
                        }
                },
                "03f0:002a": {
                        "*": {
                                "t_class": 7,
                                "msg": [ 0 ]
                        }
                },
                "03f0:032a": {
                        "*": {
                                "t_class": 7,
                                "msg": [ 0 ]
...(this continues on with hundreds of other devices)

The posts and links go on to explain that the usb-modeswitch needs to switch to 0 first then 3. As you say he mentions running a script that sets bConfigurationValue to 0 then to 3 - but I dont know how to achieve this.

Here is my dmesg in case it helps - thanks a lot for helping me with this, would love to crack it.

edit: Oh and I couldn't see how to vote for a bugfix?

login as: root
root@192.168.1.1's password:


BusyBox v1.28.4 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 18.06.2, r7676-cddd7b4c77
 -----------------------------------------------------
root@OpenWrt:~# dmesg
[    0.000000] Linux version 4.14.95 (buildbot@builds-03.infra.lede-project.org) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r7627-753531d)) #0 Mon Jan 28 08:54:32 2019
[    0.000000] Board has DDR2
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: MediaTek MT7620A ver:2 eco:6
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019650 (MIPS 24KEc)
[    0.000000] MIPS: machine is ZBT-WE826 (16M)
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat 80421050, node_mem_map 81000040
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] random: get_random_bytes called from 0x8042472c with crng_init=0
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyS0,115200 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=0005a3d1
[    0.000000] Readback ErrCtl register=0005a3d1
[    0.000000] Memory: 125212K/131072K available (3590K kernel code, 178K rwdata, 464K rodata, 176K init, 214K bss, 5860K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 256
[    0.000000] CPU Clock: 580MHz
[    0.000000] clocksource: systick: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 583261500 ns
[    0.000000] systick: enable autosleep mode
[    0.000000] systick: running - mult: 214748, shift: 32
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6590553264 ns
[    0.000013] sched_clock: 32 bits at 290MHz, resolution 3ns, wraps every 7405115902ns
[    0.007598] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.073551] pid_max: default: 32768 minimum: 301
[    0.078285] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.084662] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.097475] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.107014] futex hash table entries: 256 (order: -1, 3072 bytes)
[    0.113006] pinctrl core: initialized pinctrl subsystem
[    0.119388] NET: Registered protocol family 16
[    0.129019] Can't analyze schedule() prologue at 8037d498
[    0.609305] mt7620-pci 10140000.pcie: PCIE0 no card, disable it(RST&CLK)
[    0.615802] mt7620-pci: probe of 10140000.pcie failed with error -1
[    0.640039] rt2880_gpio 10000600.gpio: registering 24 gpios
[    0.645436] rt2880_gpio 10000600.gpio: registering 24 irq handlers
[    0.651827] rt2880_gpio 10000638.gpio: registering 16 gpios
[    0.657201] rt2880_gpio 10000638.gpio: registering 16 irq handlers
[    0.663584] rt2880_gpio 10000688.gpio: registering 1 gpios
[    0.668877] rt2880_gpio 10000688.gpio: registering 1 irq handlers
[    0.679807] clocksource: Switched to clocksource systick
[    0.686132] NET: Registered protocol family 2
[    0.691336] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.698062] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.704287] TCP: Hash tables configured (established 1024 bind 1024)
[    0.710555] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.716182] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.722571] NET: Registered protocol family 1
[    0.726763] PCI: CLS 0 bytes, default 32
[    0.729553] rt-timer 10000100.timer: maximum frequency is 1220Hz
[    0.736288] Crashlog allocated RAM at address 0x3f00000
[    0.743138] workingset: timestamp_bits=30 max_order=15 bucket_order=0
[    0.755437] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.761083] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.781219] io scheduler noop registered
[    0.784967] io scheduler deadline registered (default)
[    0.790971] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    0.800081] console [ttyS0] disabled
[    0.803534] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 20, base_baud = 2500000) is a Palmchip BK-3103
[    0.813178] console [ttyS0] enabled
[    0.820217] bootconsole [early0] disabled
[    0.829010] cacheinfo: Failed to find cpu0 device node
[    0.834293] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    0.847965] spi spi0.0: force spi mode3
[    0.861503] m25p80 spi0.0: w25q128 (16384 Kbytes)
[    0.866360] 4 fixed-partitions partitions found on MTD device spi0.0
[    0.872856] Creating 4 MTD partitions on "spi0.0":
[    0.877753] 0x000000000000-0x000000030000 : "u-boot"
[    0.883757] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.890116] 0x000000040000-0x000000050000 : "factory"
[    0.896129] 0x000000050000-0x000001000000 : "firmware"
[    2.699800] random: fast init done
[    2.815961] 2 uimage-fw partitions found on MTD device firmware
[    2.822040] 0x000000050000-0x0000001aef28 : "kernel"
[    2.827988] 0x0000001aef28-0x000001000000 : "rootfs"
[    2.833946] mtd: device 5 (rootfs) set to be root filesystem
[    2.841339] 1 squashfs-split partitions found on MTD device rootfs
[    2.847669] 0x000000416000-0x000001000000 : "rootfs_data"
[    2.854886] libphy: Fixed MDIO Bus: probed
[    2.862528] gsw: setting port4 to ephy mode
[    2.866849] mtk_soc_eth 10100000.ethernet eth0 (uninitialized): port 4 link up (100Mbps/Full duplex)
[    2.877876] mtk_soc_eth 10100000.ethernet: loaded mt7620 driver
[    2.884667] mtk_soc_eth 10100000.ethernet eth0: mediatek frame engine at 0xb0100000, irq 5
[    2.893672] rt2880_wdt 10000120.watchdog: Initialized
[    2.900306] NET: Registered protocol family 10
[    2.908784] Segment Routing with IPv6
[    2.912722] NET: Registered protocol family 17
[    2.917308] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    2.930543] 8021q: 802.1Q VLAN Support v1.8
[    2.950718] VFS: Mounted root (squashfs filesystem) readonly on device 31:5.
[    2.958880] Freeing unused kernel memory: 176K
[    2.963459] This architecture does not have kernel memory protection.
[    4.421136] init: Console is alive
[    4.424862] init: - watchdog -
[    6.598948] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    6.918696] usbcore: registered new interface driver usbfs
[    6.924478] usbcore: registered new interface driver hub
[    6.930043] usbcore: registered new device driver usb
[    6.941131] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.949493] ehci-platform: EHCI generic platform driver
[    6.965242] phy phy-usbphy.0: remote usb device wakeup disabled
[    6.971303] phy phy-usbphy.0: UTMI 16bit 30MHz
[    6.975852] ehci-platform 101c0000.ehci: EHCI Host Controller
[    6.981778] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[    6.989982] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000
[    7.004507] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00
[    7.011986] hub 1-0:1.0: USB hub found
[    7.016288] hub 1-0:1.0: 1 port detected
[    7.023634] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    7.031535] ohci-platform: OHCI generic platform driver
[    7.037271] ohci-platform 101c1000.ohci: Generic Platform OHCI controller
[    7.044230] ohci-platform 101c1000.ohci: new USB bus registered, assigned bus number 2
[    7.052453] ohci-platform 101c1000.ohci: irq 26, io mem 0x101c1000
[    7.086233] hub 2-0:1.0: USB hub found
[    7.090525] hub 2-0:1.0: 1 port detected
[    7.107139] MTK MSDC device init.
[    7.128451] mtk-sd: MediaTek MT6575 MSDC Driver
[    7.137223] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    7.148892] init: - preinit -
[    7.302378] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    7.520143] hub 1-1:1.0: USB hub found
[    7.526576] hub 1-1:1.0: 4 ports detected
[    8.095432] random: procd: uninitialized urandom read (4 bytes read)
[    8.418580] usb 1-1.3: new full-speed USB device number 3 using ehci-platform
[    8.682042] usb 1-1.3: new high-speed USB device number 4 using ehci-platform
[    9.149263] 8021q: adding VLAN 0 to HW filter on device eth0
[   11.783286] jffs2: notice: (406) jffs2_build_xattr_subsystem: complete building xattr subsystem, 9 of xdatum (3 unchecked, 6 orphan) and 70 of xref (16 dead, 7 orphan) found.
[   11.814093] mount_root: switching to jffs2 overlay
[   11.851039] overlayfs: upper fs does not support tmpfile.
[   11.877883] urandom-seed: Seeding with /etc/urandom.seed
[   12.028789] procd: - early -
[   12.031855] procd: - watchdog -
[   12.826399] procd: - watchdog -
[   12.830455] procd: - ubus -
[   13.058107] random: ubusd: uninitialized urandom read (4 bytes read)
[   13.172141] random: jshn: uninitialized urandom read (4 bytes read)
[   13.189219] random: ubusd: uninitialized urandom read (4 bytes read)
[   13.198316] procd: - init -
[   14.526651] usb 1-1.3: usbfs: process 495 (usbmode) did not claim interface 1 before use
[   14.772871] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   15.092158] usb 1-1.3: usbfs: process 591 (usbmode) did not claim interface 1 before use
[   15.312362] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   15.949319] kmodloader: loading kernel modules from /etc/modules.d/*
[   15.983339] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   16.324096] usbcore: registered new interface driver cdc_wdm
[   16.341802] Loading modules backported from Linux version wt-2017-11-01-0-gfe248fc2c180
[   16.350045] Backport generated by backports.git v4.14-rc2-1-31-g86cf0e5d
[   16.381224] ip_tables: (C) 2000-2006 Netfilter Core Team
[   16.407671] nf_conntrack version 0.5.0 (2048 buckets, 8192 max)
[   16.625069] usbcore: registered new interface driver usbserial
[   16.631229] usbcore: registered new interface driver usbserial_generic
[   16.638026] usbserial: USB Serial support registered for generic
[   16.702624] xt_time: kernel timezone is -0000
[   16.720068] cdc_ether 1-1.3:2.0 wwan0: register 'cdc_ether' at usb-101c0000.ehci-1.3, Mobile Broadband Network Device, 02:1e:10:1f:00:00
[   16.732966] usbcore: registered new interface driver cdc_ether
[   16.789484] usbcore: registered new interface driver cdc_ncm
[   16.929031] usbcore: registered new interface driver huawei_cdc_ncm
[   17.058784] PPP generic driver version 2.4.2
[   17.088581] NET: Registered protocol family 24
[   17.114275] usbcore: registered new interface driver qmi_wwan
[   17.127016] usbcore: registered new interface driver rndis_host
[   17.172491] usbcore: registered new interface driver cdc_mbim
[   17.206049] usbcore: registered new interface driver option
[   17.211946] usbserial: USB Serial support registered for GSM modem (1-port)
[   17.220097] option 1-1.3:2.2: GSM modem (1-port) converter detected
[   17.226786] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB0
[   17.234373] option 1-1.3:2.3: GSM modem (1-port) converter detected
[   17.241157] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB1
[   17.248734] option 1-1.3:2.4: GSM modem (1-port) converter detected
[   17.255438] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB2
[   17.263009] option 1-1.3:2.5: GSM modem (1-port) converter detected
[   17.269756] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB3
[   17.277330] option 1-1.3:2.6: GSM modem (1-port) converter detected
[   17.284044] usb 1-1.3: GSM modem (1-port) converter now attached to ttyUSB4
[   17.428705] rt2800_wmac 10180000.wmac: loaded eeprom from mtd device "factory"
[   17.436100] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 6352, rev 0500 detected
[   17.444074] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 7620 detected
[   17.451817] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   17.487557] kmodloader: done loading kernel modules from /etc/modules.d/*
[   18.748975] cdc_ether 1-1.3:2.0 wwan0: unregister 'cdc_ether' usb-101c0000.ehci-1.3, Mobile Broadband Network Device
[   18.782125] usb 1-1.3: usbfs: process 854 (usbmode) did not claim interface 1 before use
[   19.013273] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   19.648481] usb 1-1.3: usbfs: process 923 (usbmode) did not claim interface 1 before use
[   19.878221] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   20.613799] usb 1-1.3: usbfs: process 986 (usbmode) did not claim interface 1 before use
[   20.853970] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   21.814798] usb 1-1.3: usbfs: process 1065 (usbmode) did not claim interface 1 before use
[   22.071796] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   22.668150] usb 1-1.3: usbfs: process 1129 (usbmode) did not claim interface 1 before use
[   22.887003] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   23.462484] usb 1-1.3: usbfs: process 1176 (usbmode) did not claim interface 1 before use
[   23.692501] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   24.674874] usb 1-1.3: usbfs: process 1239 (usbmode) did not claim interface 1 before use
[   24.906022] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   26.057356] usb 1-1.3: usbfs: process 1318 (usbmode) did not claim interface 1 before use
[   26.323144] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   27.026877] usb 1-1.3: usbfs: process 1358 (usbmode) did not claim interface 1 before use
[   27.260116] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   28.143121] usb 1-1.3: usbfs: process 1426 (usbmode) did not claim interface 1 before use
[   28.378135] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   29.777711] usb 1-1.3: usbfs: process 1493 (usbmode) did not claim interface 1 before use
[   30.008761] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   31.750129] usb 1-1.3: usbfs: process 1622 (usbmode) did not claim interface 1 before use
[   31.998510] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   33.005757] usb 1-1.3: usbfs: process 1699 (usbmode) did not claim interface 1 before use
[   33.258179] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   34.110471] usb 1-1.3: usbfs: process 1770 (usbmode) did not claim interface 1 before use
[   34.340866] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   35.139975] usb 1-1.3: usbfs: process 1838 (usbmode) did not claim interface 1 before use
[   35.388381] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   36.275884] usb 1-1.3: usbfs: process 1912 (usbmode) did not claim interface 1 before use
[   36.518610] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   37.399981] usb 1-1.3: usbfs: process 1977 (usbmode) did not claim interface 1 before use
[   37.638263] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   38.566988] usb 1-1.3: usbfs: process 2051 (usbmode) did not claim interface 1 before use
[   38.805861] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   39.569198] usb 1-1.3: usbfs: process 2123 (usbmode) did not claim interface 1 before use
[   39.799066] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   40.398645] usb 1-1.3: usbfs: process 2175 (usbmode) did not claim interface 1 before use
[   40.520487] 8021q: adding VLAN 0 to HW filter on device eth0
[   40.534006] br-lan: port 1(eth0.1) entered blocking state
[   40.539601] br-lan: port 1(eth0.1) entered disabled state
[   40.545486] device eth0.1 entered promiscuous mode
[   40.550611] device eth0 entered promiscuous mode
[   40.590791] br-lan: port 1(eth0.1) entered blocking state
[   40.596321] br-lan: port 1(eth0.1) entered forwarding state
[   40.602299] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   40.638525] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   41.527625] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   42.202163] usb 1-1.3: usbfs: process 2248 (usbmode) did not claim interface 1 before use
[   42.464429] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   44.210290] usb 1-1.3: usbfs: process 2397 (usbmode) did not claim interface 1 before use
[   44.468239] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   45.953798] usb 1-1.3: usbfs: process 2544 (usbmode) did not claim interface 1 before use
[   46.182382] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   47.028405] usb 1-1.3: usbfs: process 2610 (usbmode) did not claim interface 1 before use
[   47.254942] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   47.795316] usb 1-1.3: usbfs: process 2658 (usbmode) did not claim interface 1 before use
[   48.019118] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   48.391042] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[   48.430911] br-lan: port 2(wlan0) entered blocking state
[   48.436349] br-lan: port 2(wlan0) entered disabled state
[   48.442245] device wlan0 entered promiscuous mode
[   48.466414] usb 1-1.3: usbfs: process 2706 (usbmode) did not claim interface 1 before use
[   48.517739] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[   48.524486] br-lan: port 2(wlan0) entered blocking state
[   48.529966] br-lan: port 2(wlan0) entered forwarding state
[   48.691024] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   49.429705] usb 1-1.3: usbfs: process 2774 (usbmode) did not claim interface 1 before use
[   49.666300] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   50.331837] usb 1-1.3: usbfs: process 2842 (usbmode) did not claim interface 1 before use
[   50.588290] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   51.322751] usb 1-1.3: usbfs: process 2922 (usbmode) did not claim interface 1 before use
[   51.549659] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   51.966923] usb 1-1.3: usbfs: process 2982 (usbmode) did not claim interface 1 before use
[   52.207825] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   52.519844] usb 1-1.3: usbfs: process 3030 (usbmode) did not claim interface 1 before use
[   52.748965] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   53.072160] usb 1-1.3: usbfs: process 3078 (usbmode) did not claim interface 1 before use
[   53.298145] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   53.969029] usb 1-1.3: usbfs: process 3152 (usbmode) did not claim interface 1 before use
[   54.188750] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   54.546914] usb 1-1.3: usbfs: process 3200 (usbmode) did not claim interface 1 before use
[   54.768483] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   55.122799] usb 1-1.3: usbfs: process 3248 (usbmode) did not claim interface 1 before use
[   55.350873] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   55.693153] usb 1-1.3: usbfs: process 3296 (usbmode) did not claim interface 1 before use
[   55.924288] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   56.272861] usb 1-1.3: usbfs: process 3344 (usbmode) did not claim interface 1 before use
[   56.499037] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   56.852382] usb 1-1.3: usbfs: process 3392 (usbmode) did not claim interface 1 before use
[   57.078419] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   57.433039] usb 1-1.3: usbfs: process 3440 (usbmode) did not claim interface 1 before use
[   57.658053] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   58.198092] usb 1-1.3: usbfs: process 3504 (usbmode) did not claim interface 1 before use
[   58.422472] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   58.769332] usb 1-1.3: usbfs: process 3552 (usbmode) did not claim interface 1 before use
[   58.996805] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   59.339269] usb 1-1.3: usbfs: process 3600 (usbmode) did not claim interface 1 before use
[   59.558548] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   59.879902] usb 1-1.3: usbfs: process 3648 (usbmode) did not claim interface 1 before use
[   60.109098] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   60.447402] usb 1-1.3: usbfs: process 3696 (usbmode) did not claim interface 1 before use
[   60.669308] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   60.998073] usb 1-1.3: usbfs: process 3744 (usbmode) did not claim interface 1 before use
[   61.228550] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   61.558892] usb 1-1.3: usbfs: process 3792 (usbmode) did not claim interface 1 before use
[   61.778770] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   62.119024] usb 1-1.3: usbfs: process 3840 (usbmode) did not claim interface 1 before use
[   62.337526] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   62.661419] usb 1-1.3: usbfs: process 3888 (usbmode) did not claim interface 1 before use
[   62.888041] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   63.243816] usb 1-1.3: usbfs: process 3936 (usbmode) did not claim interface 1 before use
[   63.469154] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   63.819435] usb 1-1.3: usbfs: process 3984 (usbmode) did not claim interface 1 before use
[   64.054459] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   64.409049] usb 1-1.3: usbfs: process 4032 (usbmode) did not claim interface 1 before use
[   64.633949] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   65.156433] usb 1-1.3: usbfs: process 4108 (usbmode) did not claim interface 1 before use
[   65.379243] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   65.798007] usb 1-1.3: usbfs: process 4170 (usbmode) did not claim interface 1 before use
[   66.024005] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   66.369767] usb 1-1.3: usbfs: process 4218 (usbmode) did not claim interface 1 before use
[   66.599424] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   66.980376] usb 1-1.3: usbfs: process 4270 (usbmode) did not claim interface 1 before use
[   67.209513] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   67.551212] usb 1-1.3: usbfs: process 4318 (usbmode) did not claim interface 1 before use
[   67.779904] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   68.206706] usb 1-1.3: usbfs: process 4380 (usbmode) did not claim interface 1 before use
[   68.430146] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   68.760591] usb 1-1.3: usbfs: process 4428 (usbmode) did not claim interface 1 before use
[   68.989788] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   69.319658] usb 1-1.3: usbfs: process 4476 (usbmode) did not claim interface 1 before use
[   69.547956] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   69.898067] usb 1-1.3: usbfs: process 4524 (usbmode) did not claim interface 1 before use
[   70.128548] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   70.480650] usb 1-1.3: usbfs: process 4572 (usbmode) did not claim interface 1 before use
[   70.709766] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   71.042538] usb 1-1.3: usbfs: process 4620 (usbmode) did not claim interface 1 before use
[   71.270428] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   71.600541] usb 1-1.3: usbfs: process 4668 (usbmode) did not claim interface 1 before use
[   71.829946] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   72.148412] usb 1-1.3: usbfs: process 4716 (usbmode) did not claim interface 1 before use
[   72.370706] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   72.711268] usb 1-1.3: usbfs: process 4764 (usbmode) did not claim interface 1 before use
[   72.935875] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   73.143886] random: crng init done
[   73.147380] random: 6 urandom warning(s) missed due to ratelimiting
[   73.287700] usb 1-1.3: usbfs: process 4812 (usbmode) did not claim interface 1 before use
[   73.510025] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
[   73.839117] usb 1-1.3: usbfs: process 4860 (usbmode) did not claim interface 1 before use
[   74.062157] usb 1-1.3: usbfs: interface 1 claimed by usbfs while 'usbmode' sets config #0
...more of the same..
root@OpenWrt:~#

This is because you did NOT modify /etc/usb-mode.json as I told you. You should be able to completely remove usb-modeswitch. I did not test this but I think it does nothing but harm for me909s-120. If you don't know how to edit the file, just uninstall usb-modeswitch and try again.

No, I never said I "added" the lines. I said I edited /etc/usb-mode.json file. There is already an entry for device "12d1:15c1". You need to change the existing entry. Then the looping will stop. Search inside the file for 12d1:15c1. Or just uninstall usb-modeswitch I am not 100% sure but that should fix the problem you are having.

The problem is that you are adding same entry second time. The one you add probably gets ignored because it will be overwritten by the 2nd entry. You need to update/edit the json file.

Firstly even if you do this, you can NOT configure the link using luci. You need to configure it using uci or by manually editing the config. Because AFAIK luci does not know MBIM.

For me the file is at /sys/devices/platform/1e1c0000.xhci/usb1/1-2/bConfigurationValue you can check existing value cat /sys/devices/platform/1e1c0000.xhci/usb1/1-2/bConfigurationValue or change it echo 0 > /sys/devices/platform/1e1c0000.xhci/usb1/1-2/bConfigurationValue and then echo 3 > /sys/devices/platform/1e1c0000.xhci/usb1/1-2/bConfigurationValue

Just keep in mind, depending on your hardware, the path will be different.

There is already examples in documentation

If you look at the script /etc/init.d/ncm-network example in there. You can see that you can send it easily like this echo -ne "AT^NDISDUP=1,1,\"${APN}\"\r\n" > ${DEVICE} You need to change ${APN} with your APN and ${DEVICE} with /dev/ttyUSB2 (I think it should be 2, you can check the devices in /dev) Or you can just use the script which does it for you!

On second thought, you could also setup NCM using luci and give /dev/ttyUSB2 (or whatever your serial port appears as) as the device and it should dial for you. Check it with logread -f But I found out that this won't work well at boot, the card initializes too slow.
https://forum.openwrt.org/t/ncm-interface-with-delayed-start/38942

Ok so baby steps - thanks for the clarification on how to modify usb-mode.json.

I have now modified the entry as you suggest and it has indeed stopped the repeating error message, it has also created the interface 'wwan0' - so at least I am getting somewhere slowly!

As this is the first time this has worked I then wanted to try sending the AT command with the APN. You said to check the devices in '/dev' but I couldn't find out how this location would indicate which was which. I did follow another guide to locate the devices in /sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.3/1-1.3:2.(2-6)

These locations contain a file called interface - this is how they correspond:
1-1.3:2.2 - ttyUSB0 : "Huawei Mobile Connect - Modem"
1-1.3:2.3 - ttyUSB1 : "Huawei Mobile Connect - Application"
1-1.3:2.4 - ttyUSB2 : "Huawei Mobile Connect - Pcui"
1-1.3:2.5 - ttyUSB3 : "Huawei Mobile Connect - Ctrl"
1-1.3:2.6 - ttyUSB4 : "Huawei Mobile Connect - SerialB"

This didn't confirm things 100% for me, but I thought I would start with 'modem' so ran this command:

echo -ne "AT^NDISDUP=1,1,\"three.co.uk\"\r\n" > /dev/ttyUSB0

Viewing the interface in Luci it caused a reaction - the interface connected and began to receive (RX) packets. However this did not seem to be an internet connection as I could not access the internet.

I then rebooted and ran the above command against ttyUSB1, then the same for 2-4. Each time the same thing happened, the interface connected, assigned an i.p., received a few packets but would not provide an internet connection.
I should mention that when connecting the modem to a Windows laptop via an adapter, this modem and sim worked 'plug and play' - so I know they definitely work.

So - I am stumped by the above. I also tried to make a script incase that made a difference, I tried copying and pasting that script example in the linked guide with nano /etc/init.d/ncm-network with 'ttyUSB0' and 'three.co.uk' but this did not work at all, the interface did not start or begin to receive packets. I also tried the same script in '/etc/hotplug.d/usb/ncm-network' but I dont know if I'm doing this right here - it didn't work in any case.

I then moved on to trying to set the bConfigurationValue to 0 followed by 3, to do this I at first navigated to what appeared to be the equivalent of the folder you suggested: '/sys/devices/platform/101c0000.ehci/usb1/1-1' but the bConfigurationValue here could only be set to 1 or 2.
However the same file in '/sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.3' was currently set to '2' and could be changed.
As soon as I run the command 'echo 0 > /sys/devices/platform/101c0000.ehci/usb1/1-1/1-1.3/bConfigurationValue' all of the ttyUSB0-4 disappear, if I run dmesg:

[  449.709072] option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
[  449.717502] option 1-1.3:2.2: device disconnected
[  449.722899] option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
[  449.731351] option 1-1.3:2.3: device disconnected
[  449.736670] option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
[  449.745128] option 1-1.3:2.4: device disconnected
[  449.750849] option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3
[  449.759814] option 1-1.3:2.5: device disconnected
[  449.765139] option1 ttyUSB4: GSM modem (1-port) converter now disconnected from ttyUSB4
[  449.773618] option 1-1.3:2.6: device disconnected

So I checked the cdc devices on 'ls -l /dev/cdc-wdm0'
and sure enough:

`crw-------    1 root     root      180, 176 Jun 17 15:22 /dev/cdc-wdm0'

So I decided to try the mbim settings from the OpenWRT bugs forum, I installed the packages from the QMI mode guide and then edited my '/etc/config/network' with the below settings:

config interface 'WWAN'
        option proto 'mbim'
        option ifname 'wwan0'
        option device '/dev/cdc-wdm0'
        option apn 'three.co.uk'
        option mode 'preferlte'
        option delay '5'

This showed an unmanaged protocol, and no packets sent or received.

I think that's everything I have tried, still to no avail unfortunately.

Edit:
Oh and one more thing just tried. If I set up NCM via Luci whilst the modem is still on ttyUSB - if I use ttyUSB0 or 2 it will 'connect' but with no ipv4/6 address (check edit2) and no internet connection. Although it does send and receive a few packets. It frustratingly feels so close!

edit2:
After a few minutes it actually creates a new interface called 'WWAN_4' which is a 'Virtual Dynamic Interface (DHCP Client)' - this has an ipv4 address. Still no internet connection.

I also came across this in my Googling: https://gitlab.freedesktop.org/mobile-broadband/mobile-broadband-openwrt

Not sure if it holds any answers but it came up when searching for these problems. I'm not sure how to even try it in any case as its suggested method of installation by adding a 'feed' to the 'feeds.conf' file does not seem to work.

If I'm just piling more problems on then just ignore this, I thought it might be worth mentioning however.