Direct network mode for Hilink E3276 4G stick?

I'm setting up a Huawei Hilink E3276 4G USB stick as the WAN side on my WNDR3800 router that has LEDE 17.01.4 installed with all packages mentioned from the different "3G/4G" wiki pages.

The stick is automatically registered as a new eth2 interface and I can see in USB debug that Driver=cdc_ether. So this seems to be using USB tethering as described on
https://wiki.openwrt.org/doc/howto/usb.tethering

When configuring my WAN network to use eth2 I also notice that eth2 will receive a local IP 192.168.1.100 from the USB stick so this seems to add an extra layer of NAT. No good as I want to do port forwards.

Is it possible to configure a mode that bypasses the extra routing layer so the public IP is "owned" by LEDE?

[I've seen some oldish discussions that require various complicated steps to reflash stick firmware, but I'd like to do a sanity check here on the forums and check if there maybe are simpler steps nowadays on the current LEDE version...]

So after some digging I sorted this out myself. I posted in this thread where I found most helpful info:
https://forums.whirlpool.net.au/forum-replies.cfm?t=2147122&p=2#r23
and here is my text for completeness:

I've finally managed to flash my Huawei HiLink E3276-150 4G modem with non-HiLink firmware. Like many before me I had a bit of a struggle so here I describe the steps that worked for me as of February 2018.

You can find many guides from around 2013 and 2014 but using the downloads from those days never seemed to work for me - the update process would find the device but not the port, resulting in Error 10. I'm on Windows 10 64-bit which was definitely not available in those days and some people mention that Windows 7 has better mileage with Huawei flashing software so maybe that's the reason.

Anyway, before resorting to install Windows 7 I had success on Win10 by using the latest non-HiLink firmware version I could find, which at this time is 21.491.03.00.00.
(found at https://3ginfo.ru/downloads1462.html linked from https://3ginfo.ru/download59.html)
Note 1: 21.x is non-HiLink, 22.x is HiLink (avoid!)
Note 2: suffix .00 is generic unbranded version

An interesting fact about Huawei flashing is found in the latest HiLink download 22.470.13.00.00 (found at https://3ginfo.ru/downloads1102.html) where a pdf contains instructions about verifying the existence of an RNDIS device in Device Manager.
If you don't find this device when the modem is connected you should install the Huawei driver/service, f ex from http://modemsolution.com/wp-content/uploads/2013/12/Huawei-HiLink-Drivers.zip, or from the bundled CD partition on your modem.

My successful path for flashing was:

  • disconnect from my normal wifi (conflicting with 192.168.1.1)
  • install the driver/service from my modem and connect it
  • surf to http://192.168.1.1/ and open device info
  • verify hardware is "CH1E3276SM"
  • note IMEI (needed later)
  • I then entered manual mode and disconnected 4G (not sure if needed)
  • verify RNDIS device in Device Manager
  • start firmware update
  • when asking for flash password enter the result of IMEI to Flash Code calculation at http://www.mobilabredband.se/huawei-unlock-code-generator.php
  • done and all fine (modem now working great in NCM mode plugged into my OpenWRT/LEDE router)

BTW, for reference I will just mention that many guides point to the E3276 software at http://www.ofmodemsandmen.com/downloads.html which is no longer available. Looking at an old version of the site using the Wayback Machine (https://web.archive.org/web/20150308164626/http://ofmodemsandmen.com:80/downloads.html) shows that it actually points to the E3276 firmware at https://www.elisa.ee/UserFiles/blog_uus/failid/E3276%20W8/E3276Win8.zip which is still available. This is not the latest version any longer though.

Some guides also mention http://dl.mymodem.in/noroot/E303HiLink11.010.06.02.910.zip which is also no longer available. I found it at https://routerunlock.com/firmware-upgrade-for-huawei-e3276-e3131-e353-e352-modem-dongle-download/ and a good thing to know is that it is password protected with "NiRaV" which is also mentioned in a readme file.

AFAIK these two files were not part of my successful procedure but like many other I was trying all different combinations of installs and failing at first, so who knows if some side-effect got things working. Either way the E303 file immediately crashed after entering the password so it didn't seem to get very far.

I've also flashed my E3372 from v22 "HiLink" to v21 "Stick" firmware, it seems everyone has to find their own method that works for them!

For me it was E3372h-153Update_21.200.07.00.805_Universal.rar together with a flash/unlock code

My device is now using NCM drivers, rather than tethering, but I've not got it up and running yet.

If you haven't found this out yourself already, it might be good to know that the suggestion in the NCM wiki:
https://wiki.openwrt.org/doc/recipes/ethernetoverusb_ncm
to configure the new network connection through LUCI via luci-proto-ncm isn't so easy as this package hasn't been included in the official builds.

I found it easiest to ssh into my router and edit the configuration by hand. First check that the new network interface is there:

$ ifconfig -a
(look for wwan0)

and then add the configuration:

$ vi /etc/config/network
...
config interface 'wwan'
        option proto 'ncm'
        option ifname 'wwan0'
        option device '/dev/cdc-wdm0'
        option apn 'internet'
        option mode 'umts'
        option delay '5'
...

Thanks for the reply, I'm using a recent version of trunk, my config is currently

config interface 'LTE'
        option proto 'ncm'
        option device '/dev/cdc-wdm0'
        option mode 'preferlte'
        option apn '3internet'
        option ipv6 'auto'

though I have tried "auto" and "umts" instead of "preferlte"
I think my problem is that the /dev/cdc-wdm0 doesn't respond to AT commands, so no chance for the wwan0: interface to get activated ...

But you didn't include the option ifname 'wwan0' clause in your config?

I hadn't initially, as luci-proto-ncm doesn't seem to support it, I added it manually later and that didn't help directly.

Having noticed that the /dev/cdc-wdm0 device doesn't speak AT commands to the modem, I found that "force loading" drivers for /dev/ttyUSB0 and /dev/ttyUSB1, then setting a custom device, does allow me to start the interface ...

config interface 'LTE'
        option ifname 'wwan0'
        option proto 'ncm'
        option mode 'auto'
        option apn '3internet'
        option ipv6 'auto'
        option metric '100'
        option delegate '0'
        option device '/dev/ttyUSB1'
        option auto '0'

it doesn't retrieve an IP address from the mobile network, and it seems to crash while trying, so I need to get a serial console hooked up, but it's much closer to working than it has been for the past few days :slight_smile: