FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

ZBT Router Topics
nontheist
Posts: 4
Joined: Sun Apr 15, 2018 5:36 pm

FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by nontheist » Mon Jul 16, 2018 10:08 pm

I just flashed a dev build from ofmodemsandmen and they mention doing some builds for LTEFix. Not sure if this is the best place to post this but this is a link to the dev builds.

UPDATE 03-08-2019: Our latest WiFiX 2019 version of GoldenOrb contains an internal ping script that runs in the background that resets/reboots the modem upon loss of internet. As always when upgrading a router's firmware, be certain to UNCHECK the box to Save Settings.

All GoldenOrb 2019 stock firmware builds.

The OEM firmware for the WE826 and the WG3526 | WE1326 can be downloaded from HERE

curdean
Posts: 4
Joined: Thu Jul 19, 2018 2:43 pm

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by curdean » Fri Jul 20, 2018 11:43 am

If I tried this firmware, and I wanted to return back to the current golden orb, how would I do that? When I go to the firmware flashing option, it returns an error about not being a correct image format.
Thank you
Curdean

User avatar
JimHelms
Site Admin
Posts: 701
Joined: Tue Dec 19, 2017 8:59 pm
Location: DFW Texas
Contact:

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by JimHelms » Fri Jul 20, 2018 11:53 am

curdean wrote:
Fri Jul 20, 2018 11:43 am
If I tried this firmware, and I wanted to return back to the current golden orb, how would I do that?
If you are down grading from a newer kernel you can use the boot loader mode.

curdean
Posts: 4
Joined: Thu Jul 19, 2018 2:43 pm

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by curdean » Fri Jul 20, 2018 12:22 pm

JimHelms wrote:
Fri Jul 20, 2018 11:53 am
If you are down grading from a newer kernel you can use the boot loader mode.
thank you.

RockinBandit
Posts: 8
Joined: Wed Jul 11, 2018 12:47 am

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by RockinBandit » Wed Aug 08, 2018 10:31 pm

New GO Image for WE826 released today.

jameshilliard
Posts: 4
Joined: Wed Oct 03, 2018 1:33 pm

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by jameshilliard » Wed Oct 10, 2018 4:36 pm

So I recently bought a WG3526-P with the MC7455 LTE modem and needed to update the firmware on the MC7455 but it seems these firmware builds don't have the correct firmware update tools compiled in for some reason, I was able to update it using these firmware files successfully after compiling my own custom OpenWRT firmware with the modemmanager packages.
These are the commands I used to update it:

Code: Select all

qmicli -d /dev/cdc-wdm0 --dms-set-firmware-preference="02.30.01.01,002.045_000,GENERIC"
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=offline
qmicli -d /dev/cdc-wdm0 --dms-set-operating-mode=reset
qmi-firmware-update --update-qdl -t /dev/ttyUSB0 SWI9X30C_02.30.01.01.cwe SWI9X30C_02.30.01.01_GENERIC_002.045_000.nvu
FYI the SWI9X30C_02.30.01.01.cwe firmware update file is too large to fit on the onboard flash so I had to put it on a SD card(see this guide for mounting the SD card).

Is there any reason why these tools aren't built into the WiFiX firmware already? I couldn't find another way to update the MC7455 without taking the card out of the router and putting it in an adapter(which I don't have) and connecting to a normal computer to do the update.

By the way where can I find the source code for the WiFiX firmware, it's different from the GoldenOrb firmware source I assume?
Embedded Linux firmware developer

User avatar
JimHelms
Site Admin
Posts: 701
Joined: Tue Dec 19, 2017 8:59 pm
Location: DFW Texas
Contact:

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by JimHelms » Wed Oct 10, 2018 5:41 pm

jameshilliard wrote:
Wed Oct 10, 2018 4:36 pm
So I recently bought a WG3526-P with the MC7455 LTE modem and needed to update the firmware on the MC7455 but it seems these firmware builds don't have the correct firmware update tools compiled in for some reason
Yes, this would be a great tool to have compiled into the GoldenOrb firmware.
Is there any reason why these tools aren't built into the WiFiX firmware already? I couldn't find another way to update the MC7455 without taking the card out of the router and putting it in an adapter(which I don't have) and connecting to a normal computer to do the update.
There is no specific reason. I generally use a USB to Mini PCI-E adapter to update the firmware or the Sierra Wireless AirVantage platform.

GoldenOrb/ROOter has been around for a good while, but only in the past year has it implemented the drivers and support for the line of Sierra Wireless (and other Mini PCI-e and M.2) modems. The firmware update addition is well worth exploring.

By the way where can I find the source code for the WiFiX firmware, it's different from the GoldenOrb firmware source I assume?
The WiFiX uses a newer kernel that the stable release of GoldenOrb, but it uses the same ROOter packages with a small amount of customization.

You may try THIS which is fairly new. Or, you might want to visit the Whirlpool forum and ask about the latest source code.

jameshilliard
Posts: 4
Joined: Wed Oct 03, 2018 1:33 pm
Been thanked: 2 times

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by jameshilliard » Wed Oct 10, 2018 6:00 pm

JimHelms wrote:
Wed Oct 10, 2018 5:41 pm
Yes, this would be a great tool to have compiled into the GoldenOrb firmware.
I'll attach my build to this post in case anyone needs it, it's essentially stock OpenWRT master with the modemmanager package feed added. I also compiled in the necessary packages for mounting and formatting the SD card. I'm able to flash back and forth between it and the LTEFix GoldenOrb/ROOter builds using the normal webif sysupgrade.
JimHelms wrote:
Wed Oct 10, 2018 5:41 pm
There is no specific reason. I generally use a USB to Mini PCI-E adapter to update the firmware or the Sierra Wireless AirVantage platform.

GoldenOrb/ROOter has been around for a good while, but only in the past year has it implemented the drivers and support for the line of Sierra Wireless (and other Mini PCI-e and M.2) modems. The firmware update addition is well worth exploring.
I wonder if modemmanager conflicts with the GoldenOrb/ROOter customizations, it seems to use the mmcli tool for configuration of the LTE modem instead of raw AT commands like GoldenOrb/ROOter. Using raw AT commands seems a bit sketchy to me and I suspect it may be the source of reliability issues.
JimHelms wrote:
Wed Oct 10, 2018 5:41 pm
The WiFiX uses a newer kernel that the stable release of GoldenOrb, but it uses the same ROOter packages with a small amount of customization.

You might want to visit the Whirlpool forum and ask about the source code.
I did a github search and think I found it here.
Attachments
openwrt-ramips-mt7621-zbt-wg3526-16M-squashfs-sysupgrade.bin.zip
(7.3 MiB) Downloaded 79 times
These users thanked the author jameshilliard for the post:
JimHelms (Wed Oct 10, 2018 6:26 pm)
Embedded Linux firmware developer

jameshilliard
Posts: 4
Joined: Wed Oct 03, 2018 1:33 pm
Been thanked: 2 times

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by jameshilliard » Thu Oct 11, 2018 4:46 am

I managed to get my WG3526-P to connect to sprint using my custom OpenWRT build(I'm attaching an updated version where I removed a package that could potentially conflict with modemmanager), I had to manually configure a number of the settings.

I set these AT commands, I'm not entirely sure if these are all necessary or if there's a way to do this without using the AT command interface(modemmanager is designed to be used without having to use manual AT commands), the command syntax is a little different from normal, you must escape quotes otherwise you will get errors and you should not put "AT" at the start like normal as mmcli automatically adds it to the start of the command:

Code: Select all

mmcli -m 0 --command=!entercnd=\"A710\"
mmcli -m 0 --command=!usbcomp = 1,1,1009
mmcli -m 0 --command=!selrat=06
mmcli -m 0 --command=!custom=\"IPV6ENABLE\",1
mmcli -m 0 --command=!reset
The mmcli AT command interface only works when you run modemmanager in debug mode, to do this edit the file /etc/init.d/modemmanager and change

Code: Select all

procd_set_param command /usr/sbin/ModemManager
to

Code: Select all

procd_set_param command /usr/sbin/ModemManager --debug
and reboot or restart the modemmanager service.

You'll need to add an entry like this for modemmanager in /etc/config/network, make sure the "option device" line matches what you see in "mmcli -m 0" under System->device, note that the -m flag selects the modem(usually you only have one), you can get a list of your modems using "mmcli -L":

Code: Select all

config interface 'broadband'
	option device '/sys/devices/platform/1e1c0000.xhci/usb1/1-2'
	option proto 'modemmanager'
	option apn 'n.ispsn'
You'll also need to add the "broadband"(or whatever you name the interface in /etc/config/network) interface to the wan zone in /etc/config/firewall otherwise only the router itself will have internet access and not any LAN clients:

Code: Select all

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	option network 'wan wan6 broadband'
Once I got this working it appears to be more reliable at reconnecting and maintaining a connection compared to other firmware builds probably since modemmanager automatically handles a lot of things instead of a bunch of shell scripts doing AT commands like GoldenOrb/ROOter uses.
Attachments
openwrt-ramips-mt7621-zbt-wg3526-16M-squashfs-sysupgrade.bin.zip
(7.28 MiB) Downloaded 76 times
These users thanked the author jameshilliard for the post:
JimHelms (Fri Oct 12, 2018 10:19 am)
Embedded Linux firmware developer

jameshilliard
Posts: 4
Joined: Wed Oct 03, 2018 1:33 pm

Re: FIRMWARE FOR WE826 | WG3526 | WE3926 | WE1326 | WE1026

Post by jameshilliard » Fri Oct 12, 2018 7:20 pm

I found that the bearer can sometimes get stuck in a disconnected state, you can run this script as a cronjob every minute to fix it:

Code: Select all

#!/bin/sh

# save dog.sh in /root/dog.sh. 
# You can use winscp with scp protocol to do this.
# Using ssh set executation permission and replace the crontab:
# chmod +x /root/dog.sh
# echo "* * * * * /root/dog.sh" | crontab -

modemmanager_get_field() {
  local text=$1
  local inblock=$2
  local infield=$3
  local fieldindex=${4:-0}

  [ -z "${text}" ] || [ -z "${infield}" ] || [ -z "${inblock}" ] && return

  # Sample output:
  #
  # /org/freedesktop/ModemManager1/Modem/0 (device id '391a4fbdb14113ecdd101a23c927ab1e82c51a8e')
  # -------------------------
  # Hardware |   manufacturer: 'QUALCOMM INCORPORATED'
  #      |      model: '8'
  #      |     revision: '8200C-FACPASZQ-30350  1  [Dec 15 2011 15:00:00]'
  #      |    supported: 'gsm-umts'
  #      |      current: 'gsm-umts'
  #      |   equipment id: '863745010845895'
  # -------------------------
  # System   |       device: '/sys/devices/pci0000:00/0000:00:16.0/usb1/1-1/1-1.3'
  #      |      drivers: 'option, qmi_wwan'
  #      |       plugin: 'Generic'
  #      |   primary port: 'cdc-wdm0'
  #      |      ports: 'ttyUSB0 (qcdm), ttyUSB2 (at), cdc-wdm0 (qmi), wwan0 (net)'
  # -------------------------
  # Numbers  |       own : 'unknown'
  # -------------------------
  # Status   |       lock: 'sim-pin2'
  #      | unlock retries: 'sim-pin (3), sim-pin2 (3), sim-puk (10), sim-puk2 (10)'
  #      |      state: 'registered'
  #      |    power state: 'on'
  #      |    access tech: 'umts'
  #      | signal quality: '54' (recent)
  # -------------------------
  # Modes  |    supported: 'allowed: 2g; preferred: none
  #      |          allowed: 3g; preferred: none
  #      |          allowed: 2g, 3g; preferred: none
  #      |          allowed: 2g, 3g; preferred: 2g
  #      |          allowed: 2g, 3g; preferred: 3g'
  #      |      current: 'allowed: any; preferred: none'
  # -------------------------
  # Bands  |    supported: 'unknown'
  #      |      current: 'unknown'
  # -------------------------
  # IP     |    supported: 'ipv4, ipv6, ipv4v6'
  # -------------------------
  # 3GPP   |       imei: '863745010845895'
  #      |  enabled locks: 'none'
  #      |    operator id: '21401'
  #      |  operator name: 'vodafone ES'
  #      |   subscription: 'unknown'
  #      |   registration: 'home'
  # -------------------------
  # SIM    |       path: '/org/freedesktop/ModemManager1/SIM/0'
  #
  # -------------------------
  # Bearers  |      paths: 'none'

  # Iterate block by block
  echo ${text} | awk '{
      split($0,array,"-------------------------")
      for(i in array) {
        print array[i];
      }
    }' | while read -r line ; do
    # Look for a matching block title
    local block=$(echo ${line} | awk -F '\|' '{print $1}')
    block="$(echo -e "${block}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
    [ "${block}" = "${inblock}" ] && {
      # Iterate field by field
      echo ${line} | awk '{
          split($0,array,"|")
          for(i in array) {
            print array[i];
          }
        }' | while read -r subline ; do
        local field=$(echo ${subline} | awk -F ':' '{print $1}')
        field="$(echo -e "${field}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
        [ "${field}" = "${infield}" ] && {
          local realindex=$(expr 2 \* ${fieldindex} + 2)
          local value=$(echo ${subline} | awk -F "'" "{print \$${realindex}}")
          echo "$value"
          return 0
        }
      done
    }
  done

  # Not found
  return 2
}

modemmanager_list_bearers() {
  /usr/bin/mmcli --modem $1 --list-bearers | grep "/org/freedesktop/ModemManager1/Bearer/" 2>/dev/null
}

modemmanager_get_bearer() {
  local device="$1"

  local bearers n_bearers

  bearers=$(modemmanager_list_bearers "${device}")
  n_bearers=$(echo "${bearers}" | wc -l)
  [ ${n_bearers} -eq 1 ] || return
  echo $bearers
}

# Load connected bearer information
device="0"
bearerpath=$(modemmanager_get_bearer "${device}")
bearerstatus=$(/usr/bin/mmcli --bearer "${bearerpath}")

# Load network interface and method information
beareriface=$(modemmanager_get_field "${bearerstatus}" "Status" "interface")
bearermethod=$(modemmanager_get_field "${bearerstatus}" "IPv4 configuration" "method")
echo "connection setup required in interface ${beareriface}: ${bearermethod}"
if [ $bearermethod = "unknown" ]; then
  echo "connection reset required in interface ${beareriface}: ${bearermethod}"
  ifup broadband
fi
Embedded Linux firmware developer

Post Reply
  • Similar Topics
    Replies
    Views
    Last post