Mikrotik RouterOS v7.x and OpenWrt sysupgrade

Just to clarify this:

If someone upgrades to 7.19.6 routerboot (or later on we will see devices coming with this version from the factory), that means this “I had to change a security setting and verify physical access to the device when changing the bootloader config” will be a mandatory step?

Because up until now (on routerboot v.7) I did not needed to do anything like this. Just netboot into initramfs, then flash Openwrt and thats it.

I thought when I have seen this fix in the MikroTik commit log, I expected it will just work, but if this means we have to do manual config under ROS first…

So far, in order to have the option to return to ROS, one would have to store the license key.
This requires a brief manual interaction with ROS anyway, before flashing OpenWrt.
A few extra commands wouldn't hurt much I think, when clearly documented.

When I am converting hundreds of devices, it does hurt. In the previous case, you were also able to back up the license if you wanted to, but now each and every devices must boot into ROS, and change these parameters otherwise it wont even boot initramfs.

Interesting. That alone didn’t work for me. I also had to echo "1" > /sys/firmware/mikrotik/soft_config/commit else it would just reboot to RouterOS without applying the sysupgrade.

Some info:

Device shipped with RouterOS 6.49.7, sysupgrade through openwrt initramfs just wouldn’t apply. Upgraded ROS + BL to v7.21 (by running system routerboard upgrade twice).

Some devices have the routerboard mode unlocked already, to check, run system/device-mode print and system/device-mode update routerboard=yes if needed.

system routerboard settings set boot-device=nand-if-fail-then-ethernet
system routerboard settings set force-backup-booter=no # backup-BL didn't help
system reboot

Boot the Openwrt initramfs, scp the nightly sysupgrade-v7.bin, ssh into openwrt:

root@OpenWrt:~# for i in /sys/firmware/mikrotik/soft_config/*; do echo -n "$(basename $i): "; cat $i; done
bios_version: 7.20.7
boot_delay: 1 [2] 3 4 5 6 7 8 9
boot_device: eth [flasheth] ethonce flash cfg cfgonce
boot_key: [any] del
boot_proto: [bootp] dhcp
booter: [regular] backup
commit: clean
cpu_mode: [powersave] regular
cpufreq_index: a b [c] d e
silent_boot: [off] on
uart_speed: off 1200 2400 4800 9600 19200 38400 57600 [115200]

root@OpenWrt:~# echo "1" > /sys/firmware/mikrotik/soft_config/commit
root@OpenWrt:~# cat /sys/firmware/mikrotik/soft_config/commit
clean
root@OpenWrt:~# sysupgrade -n /tmp/squashfs-sysupgrade-v7.bin

And it boots OpenWrt from now on :tada:

Hi, this looks very promising, I have similar problem mentioned here.

Can I after flashing NIGHTLY V7 build reflash to stable?

Thanx Jan

Sorry for the late reply. I stayed on nightly so IDK.
Did you try to reflash stable OpenWrt and if so, is it working ?

I finally had time to play with my router, but had no luck!

I followed your advice, but after doing sysupgrade i got “Command failed: Connection failed“ error, and the device rebooted back to RouterOS.

What i did:

  • updated my RB951Ui-2nD to 7.20.6
  • booted initramfs OpenWrt 24.10.5
  • uploaded SNAPSHOT v7 sysupgrade to /tmp
  • ran: echo "1" > /sys/firmware/mikrotik/soft_config/commit
  • ran: sysupgrade -n -v sysupgrade-v7.bin

after that i got the “Command failed: Connection failed“ error, and reboot back to RouterOS