OpenWrt Support for Armor G5 (NBG7815)

Hello @neonman63
I think that if the router is blocked you cannot access it in any way.
Under normal conditions you should get access to ssh through the serial port with the openwrt firmware.
I've never had any problems with it.

I advise you to return to the factory firmware with the process described in the wiki and reinstall openwrt installed its most recent version (which is very stable) downloading it from here.

Download zyxel_nbg7815-squashfs-sysupgrade.bin and use it for the openwrt installation process

EDIT: you can try stopping the boot process to check if your ttl modem is working properly.

I can interrupt boot in the bootloader, but uart sends garbage to cli instead of normal characters. This usb-ttl works fine with Netgear R7800. I have a flash programmer, I can try to download the firmware directly from the chips. But what to do next?

That is an unknown world for me.
I would try another usb ttl.
Make sure you have only connected the ground, TX and RX wires. Do not connect the Vcc wire. Make sure the voltage is set to 3.3v at ttl level.
No one has complained so far about serial port issues on this device.

1 Like

I solved the problem - I replaced the usb-ttl adapter. I installed a different version of the firmware, the problem turned out not to be that the router was frozen, but that the wrong device names were indicated in the network configs - in the router it is lan1-lan4, wan, and in the configs everywhere eth0-eth5, etc. After I manually changed the configs, after rebooting everything worked.

1 Like

Hi, I'm considering trying a G5 to replace my owrt VM since I've found a very good price online. I don't really need the wireless part, just the multigig routing. Is there something I should be aware of? Is it usable as a daily driver? I've read here that the wiki is outdated, can someone point me in the right direction for the install instructions?

Most of the wiki is still accurate. Just the last part 2 is outdated. You don't have to use the script to change boot partitions.

I flashed now two G5 routers and it worked great following the wiki. I used telnet to initially connect to the router. Used the password provided in the wiki. After that I used scp to transfer the firmware and the flash_to_openwrt script from my ssh server. wget did not work because it complained about the https link. After using the script the router restarted and openwrt was installed. That's it. You can then connect to ssh and install luci.

Unfortunately I did not have much time to test the functions, yet. So maybe somebody else can report about pros and cons. What I read from above is that LED and fan does not work yet - missing driver in snapshots. I saw that 8x8 wlan connectivity is not supported. Instead there are two 5 GHz devices probably each with 4x4 connectivity.

  • Ad. to wget, You can use curl instead of wget.
  • Ad. to daily driver. I have two NBG7815 one on stock and one on OpenWRT Snapshot. The one on OpenWRT Snapshot is my main GW. On the stock one the WiFi speed is more stable, but I don't have any 160Mhz device to test :frowning:
  • Ad. to the LEDs and fan, yes, the LED driver and fan are still missing.

I have a 10Gig network and use 10Gig as a wan with VLANs and everything is fine.
If you want I can test something for you.


This happens if you pull the fan and led patch from @itorK or @avalentin / ddimension repo.
There is still an outdated declartion within the dts file which is causing this issue.
Just execute:

sed -i 's/mac-address-ascii/mac-address/g' target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/ipq8074-nbg7815.dts

after pulling it.


This annyoing issue/bug is still there. Maybe this issue should be mentioned in the Wiki for ppl. doing their own builds.


There are differences what configuration options can be set and not set in term of it is working or not working (this differs on devices). Stay as close as possible to vanilla settings. E. g. time_zone nobody needs normally. Setting mobility_domain is often problematic (auto should work without issue).
Another point is wolfssl vs openssl. Using openssl e. g. you cannot set he_bss_color. If you do so you will get an hostapd error about "integer out of range".

4.) @itorK / @avalentin

Is there an effort to get the fan patch into OpenWrt? I have faced issues under load if I just use vanilla OpenWrt. I can reproduce it. But 1st it takes a while and 2nd you have to have attached an USB device (idle is enough). Because this is increasing the heat produced generally.
My impression is that the CPU is throttled if its getting to hot because there is no fan starting at all. The system is getting unresponsive (login via ssh is delayed) and normal internet traffic is kind a "laggy".

5.) @robimarko

I'm writing it here just for information and to avoid spamming on github issue.
I've tested your ssdk-make backport and it is working for both devices (AX3600/NBG7815) flawlessly. I've tested ssdk-12.4 including nss-dp-12.4 also (while I didn't know what patches to drop. I just deleted gmac-syn-xgmac and reworked switchdev-fix-FDB to succeed). It's working flawlessly.
Kernel 5.15.113. I didn't test Kernel 6.1 so far.


Fyi I've just followed the wiki on a brand new G5 and got a partially working owrt installation after that the install script returned a bunch of "no space left on device" for some partitions.

Luci isn't working (no response from http/https ports), luckily ssh is ok and I can connect (without a password btw). Any suggestion to try a clean reinstall?

What is the current state? Is it still OEM or OpenWrt already? What is the output of:

ubus call system board

on ssh shell?

If its already OpenWrt SNAPSHOT (line description) then you have OpenWrt and you can issue a:

opkg update
opkg install luci

LuCI is not part of a snapshot image.

Thank you for your comments.
About your 1.) commet i wil try a new build to test.
About your 3.) commet, I'm using mbedtls which is used by default in the main and 23.05 branch, if I'm not wrong.

I suppose you have noticed that by disabling one of the Wi-Fi radios you can lower the general temperature by 3-4 ºC.
I have had to include the fan support because the room where the router is located can easily reach 28ºC and I'm still waiting for the summer months to arrive...

Sorry, I was not precise enough here. My point here is that certain configuration options do not play well with end-devices (Andriod devices are often picky) and/or with the device firmware itself (what is supported/works). Another reason is the wpad flavor is used. I just mentioned an example where I'm aware of (bss_color setting does not work well with wpad-openssl but it does with wolfssl and propably with mbedtls also).

WolfSSL was standard for a few years. They changed back to mbedtls a few month ago.

Thanks for this hint. Didn't know this. But its not a solution for me.

Yes, that's why I'm in favor to push the fan script into OpenWrt to avoid those issues for others who are not able to do their own builds to fix this.

1 Like

Hi guys I think I break my armor g5. After running change partition script it want dark blue anymore. I'm able to connect to ssh what can I do to turn i back?

Right, I realized after posting that snapshots do not have Luci installed, sorry for the needless request.

I can confirm I'm on OpenWRT

root@OpenWrt:~# ubus call system board
	"kernel": "5.15.113",
	"hostname": "OpenWrt",
	"system": "ARMv8 Processor rev 4",
	"model": "Zyxel NBG7815",
	"board_name": "zyxel,nbg7815",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "SNAPSHOT",
		"revision": "r23104-ef98dc3b3e",
		"target": "ipq807x/generic",
		"description": "OpenWrt SNAPSHOT r23104-ef98dc3b3e"

now I just need to understand how to install packages offline since I need some of them to make the WAN work...

Btw another strange thing I noticed is related to the partitions:

root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro,relatime,errors=continue)
proc on /proc type proc (rw,nosuid,nodev,noexec,noatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,noatime)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/loop0 on /overlay type ext4 (rw,noatime)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work,xino=off)
tmpfs on /dev type tmpfs (rw,nosuid,noexec,noatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,noatime,mode=600,ptmxmode=000)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
bpffs on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,noatime,mode=700)
root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 7.0M      7.0M         0 100% /rom
tmpfs                   434.1M     64.0K    434.0M   0% /tmp
/dev/loop0               44.8M    192.0K     40.9M   0% /overlay
overlayfs:/overlay       44.8M    192.0K     40.9M   0% /
tmpfs                   512.0K         0    512.0K   0% /dev

It looks like It's missing something, isn't it? As I said in a previous message, I got some errors from the script, could it be that it mangled the partitions?

What did you do before the device got bricked?
There is a section "Debricking" within the device' wiki. If you are in real trouble you would need serial access to the device.
But you could try a reset first and see if it helps:

E. g. As you have SSH access:

firstboot -y && reboot now

For me the output of "mount" and "df -h" looks fine. I think you refer to the output of "cat /proc/partitions".

If you need a special protocol for WAN just download the package and use "opkg install $package".

Last command was execute flash_to_opewrt or change_boot_partition

I'll try thanks

If I think about. Maybe you are in the same boat as @psychowood? Just a thought as you have SSH access.

I did basically nothing: unpacked a brand new G5 (was still cellophane wrap), force reset to get telnet access, configured dropbear to be persistent, uploaded bin image and script, and run them both. Perhaps I should have run a complete first boot on the official firmware? Or I have a different revision (how should I check it)?

I also tried a full manual reinstall from openwrt (I basically followed the flash script by hand) to check the steps, more or less it looks like it flashed everything correctly, I just had some errors with proc partitions, I believe these where because of I run them in openwrt:

root@OpenWrt:/tmp/ApplicationData# tar xvf ./openwrt-ipq807x-generic-zyxel_nbg7815-squashfs-sysupgrade.bin
root@OpenWrt:/tmp/ApplicationData# primaryboot_hlos=$(cat /proc/boot_info/0:HLOS/primaryboot)
cat: can't open '/proc/boot_info/0:HLOS/primaryboot': No such file or directory
root@OpenWrt:/tmp/ApplicationData# echo $primaryboot_hlos
root@OpenWrt:/tmp/ApplicationData# dd if=/dev/zero of=/dev/mmcblk0p7
dd: error writing '/dev/mmcblk0p7': No space left on device
12289+0 records in
12288+0 records out
root@OpenWrt:/tmp/ApplicationData# dd if=/tmp/ApplicationData/sysupgrade-zyxel_nbg7815/kernel of=/dev/mmcblk0p7
9458+1 records in
9458+1 records out
root@OpenWrt:/tmp/ApplicationData# echo 1 > /proc/boot_info/0:HLOS/primaryboot
-ash: can't create /proc/boot_info/0:HLOS/primaryboot: nonexistent directory
root@OpenWrt:/tmp/ApplicationData# primaryboot_rootfs=$(cat /proc/boot_info/rootfs/primaryboot)
cat: can't open '/proc/boot_info/rootfs/primaryboot': No such file or directory
root@OpenWrt:/tmp/ApplicationData#      dd if=/dev/zero of=/dev/mmcblk0p8
dd: error writing '/dev/mmcblk0p8': No space left on device
122881+0 records in
122880+0 records out
root@OpenWrt:/tmp/ApplicationData#      dd if=/tmp/ApplicationData/sysupgrade-zyxel_nbg7815/root of=/dev/mmcblk0p8
13952+0 records in
13952+0 records out
root@OpenWrt:/tmp/ApplicationData# mkdir /tmp/ApplicationData/boot
root@OpenWrt:/tmp/ApplicationData# cat /proc/boot_info/getbinary_bootconfig > /tmp/ApplicationData/boot/bootconfig_new.bin
cat: can't open '/proc/boot_info/getbinary_bootconfig': No such file or directory
root@OpenWrt:/tmp/ApplicationData# echo 1 > /proc/mtd_writeable
-ash: can't create /proc/mtd_writeable: nonexistent directory
root@OpenWrt:/tmp/ApplicationData# dd if=/tmp/ApplicationData/boot/bootconfig_new.bin 2>/dev/null | mtd -e "/dev/mtd2" write - "/dev/mtd2" 2>/de
root@OpenWrt:/tmp/ApplicationData# dd if=/tmp/ApplicationData/boot/bootconfig_new.bin 2>/dev/null | mtd -e "/dev/mtd3" write - "/dev/mtd3" 2>/de
root@OpenWrt:/tmp/ApplicationData# sync
root@OpenWrt:/tmp/ApplicationData# reboot

Anyways, I've just mirrored the whole openwrt repository to be able to serve it from my laptop, I should be able to install packages now. I'll try the suggested firstboot command later.