Flash on Zyxel NR7101

Many ways to do that. If using ModemManager you could look at access tech:

# mmcli -m any|grep access
           |          access tech: lte

Don't know exactly what it will say for 3g. There are quite som options:

Probably "umts" or "hspa" or something similar. It's been a while since we had 3G around here :slight_smile:

1 Like

Thanks. I'm trying to diagnose non bufferbloat related ping having increased from circa 35ms to circa 60ms when unloaded. Any idea? Cell tower maintenance? Signal stats excellent and same cell tower.

root@OpenWrt:~# mmcli -m any --signal-get
  Signal | refresh rate: 5 seconds
  LTE    |         rssi: -44.00 dBm
         |         rsrq: -7.00 dB
         |         rsrp: -72.00 dBm
         |          s/n: 19.60 dB

But this ping increase only affects the Zyxel NR7101 and not my Pixel 3a.

Is it possible to hide number when sending SMS (I have redirect to SIM and don't want SIM number coming up)?

This is decided by the SMS service operator. It might be offered as a premium service. Or not. You don't want anyone else spoof your number, do you?

But this is just a simple option on any Android phone to show or hide number.

Isn't there a counterpart to this?

That's for calls, isn't it? Does it hide your number in SMS messages too? I guess it does.

Well, looks like the modem in the NR7101 supports AT+CLIP and AT+CLIR, so you could try those:

root@OpenWrt:/# mmcli -m any --command='AT+CLIP=?'
response: '+CLIP: (0,1)'
root@OpenWrt:/# mmcli -m any --command='AT+CLIR=?'
response: '+CLIR: (0-2)'
1 Like

This is how I got Zyxel firmware:

root@linux:~$ zyxel_pwgen/getsupervisor.sh SN


Open 12 screws, connect usb-serial adapter


Login putty, root / pass (com3, serial, 57600)

iptables -F

Manual ip:,,,

From linux shell (Ubuntu):

  • sudo nano /etc/ssh/ssh_config
  • port 22022
  • ctrl-x
  • ssh root@

Log in as β€œroot” on port 22022

sudo scp firmware.bin [root@]
(Downloaded from Advanced Downloads for 5G devices – Zyxel Support Campus EMEA)

Prepare bootloader config by running:

nvram setro uboot DebugFlag 0x1

nvram setro uboot CheckBypass 0

nvram commit

Run mtd_write -w write initramfs-recovery.bin Kernel and reboot

Wait for the new firmware to boot and ssh to root@

Log into with supervisor and supervisor password if installed Zyxel firmware

If installed OpenWRT you need to set password

Thanks to this forum and @bmork for all the hints

1 Like

What is this ?

It's the serial pinout:

Sorry, but that's in norwegian:


[o] GND (black)
[ ] key - no pin
[o] RX (orange) (TX on cable)
[o] TX (red) (RX on cable)
[o] 3.3V Vcc (brown)

1 Like

Hi, Morgan

Nob, and trying to do this. HAve a Telenor like you.
Got the CP2102, and it works.
But do you breake the boot, or do you need to get the root psw for shell session?


These are the high level steps I used to get back to stock FW:

  1. Get a USB Serial adapter and connect to the on-board connector.
  2. Connect with a terminal application as the device boots up. This will give you a shell session on the device, but without using the network.
  3. Temporarily enable http/https/ssh connectivity (iptables). This will open the device to allow you to connect to it through its internal Wifi AP.
  4. Use Web GUI to flash stock Zyxel FW.
  5. Flash OpenWRT from the Zyxel web GUI (optional).

Why do you gents want to go back to original firmware?

I have found 22.03.2 to work extremely well with this device, which has been running for months now with great LTE stats and without any issues whatsoever.

The only caveat was that to keep the device connected following ISP disconnects I had to upgrade ModemManager to version 1.18.12 (by manually installing .ipk) and edit the 10-report-down script to:

root@OpenWrt:/usr/lib/ModemManager/connection.d# cat 10-report-down-and-reconnect

# Report modem disconnect to netifd and reconnect if the interface was up

# require program name and at least 4 arguments
[ $# -lt 4 ] && exit 1


[ "${STATE}" = "disconnected" ] || exit 0

. /usr/share/ModemManager/modemmanager.common
. /lib/netifd/netifd-proto.sh
INCLUDE_ONLY=1 . /lib/netifd/proto/modemmanager.sh

MODEM_STATUS=$(mmcli --modem="${MODEM_PATH}" --output-keyvalue)
[ -n "${MODEM_STATUS}" ] || exit 1

MODEM_DEVICE=$(modemmanager_get_field "${MODEM_STATUS}" "modem.generic.device")
[ -n "${MODEM_DEVICE}" ] || exit 2

CFG=$(mm_get_modem_config "${MODEM_DEVICE}")
[ -n "${CFG}" ] || exit 3

IFUP=$(ifstatus ${CFG} | jsonfilter -e '@.up')

logger -t "modemmanager" "interface ${CFG} (network device ${INTERFACE}) ${STATE}"
proto_init_update $INTERFACE 0
proto_send_update $CFG

[ "${IFUP}" = "true" ] && ifup ${CFG}

exit 0

That is, conditionally bring wan back up if it was up prior to having been brought down following the disconnect.

Without this modification then upon any disconnection, the modem would remain disconnected and I would not have any internet access.

This modification has worked just fine for months now, even if it is a bit of a hack.

Can someone provide a link where you can download the ROOter software on nr 7101?

Here I think:

but I am perplexed why anyone would want stock firmware.

I keep an eye on the modem files there from time to time to check for any updates. R11A07 has been the latest for some time now.

Outdoors equipment is fun. No heat issues this time of year :slight_smile:


1 Like

Mine is burning up:

root@OpenWrt:/etc/init.d# mmcli -m any --command 'AT+QTEMP'
response: '+QTEMP:"qfe_wtr_pa0","0"

Cool how we can send such AT commands so easily!

BTW any disadvantage to editing the /etc/init.d/modemmanager service file to replace 'INFO' with 'DEBUG' and run ModemManager permanently in debug mode to enable sending such AT commands now and then? Or better not to run with 'DEBUG' when not strictly needed?

I don't see any problems with that, except that it will generate lots of logging. I've been doing it on my laptop for years.

Thanks. And just curious - what's your actual ambient temperature? 1C here.

It was down to -15Β°C yesterday.

Is there an 'ondemand' equivalent for this device?

root@OpenWrt:~# cat /etc/rc.local
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

echo "ondemand" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

exit 0
root@OpenWrt:~# cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
cat: can't open '/sys/devices/system/cpu/cpufreq/policy0/scaling_governor': No such file or directory

MT7621 does not support run-time variable CPU clock frequency.

1 Like