I don’t do the 2nd reboot but I do set Auto Update for firmware.
either a power loss/recovery will take care of reboot at which point firmware will be in line with ROS. Doesn’t happen that often around here.
either a next install will take care of reboot (and then device will remain 1 version behind since a new one will be ready then but it is no biggy at all for 99% of releases). Happens more frequently then previous case.
What is possible to do to avoid double reboots, but requires quite some manual work:
download main package of new ROS version for correct device platform
open it using 7zip and extract correct routerboot firmware file. It’s inside etc/ folder, but most platform packages contain multiple firmware files. The correct one has name -.fwf, where
is exact string, returned by /system/routerboard/print in firmware-type field
E.g. there are “ipq4000” and “ipq4000L” … and that ultimate “L” matters … a lot
is same as in npk name, e.g. “7.13beta1”
So example firmware file name for hAP ac2 would be: ipq4000L-7.13beta1.fwf.
I just tried: one can copy all the FWF files to device and routerboot updater will select the right one (and ignore the rest).
push the file to device (e.g. using winbox or scp) to root of user-accessible storage (e.g. on hAP ac2 that means default RAM disk, not flash/ directory)
on device go into /system/routerboard/ … it’ll show available “upgrade-firmware” … you should be able to execute upgrade
Then you proceed with ROS upgrade any way you’re used to (either by executing /system/packages/upgrade/install or by uploading npk files to device or any other way). When ROS upgrade procedure reboots the device to load new ROS, also new (already flashed) routerboot will load.
The routerboot upgrader, executed in bullet #4 above, will delete FWF file it used in the process. After that one can manually remove any FWF files, which were left behind in file storage (and this step is not necessary if root of file storage is RAM disk, which gets purged on reboot anyway).
And since this whole ordeal is possible to execute manually, I’m 100% sure it would be possible to do automatically. The only tricky part is to make the new fwf file available to routerboot installer prior to installing whole new version of ROS (which copies all the fwf files to flash anyway), but that shouldn’t be too hard either.
if the user can put all the fwf on another device, for example by ftp:
/tool fetch mode=ftp ascii=no upload=no address=ex.am.pl.e port=21 user=“uxer” password=“pazzword” keep-result=yes
src-path=“/disk1/firmware/[/system routerboard get firmware-type]-7.12.fwf”
dst-path=“$[/system routerboard get firmware-type]-7.12.fwf”
:delay 10s
/sys routerboard upgrade
/sys pack up check
/sys pack up in
But only do that afte some month the firmware is out and no tremendous bug are found…
I guess I never thought about just copying the “.fwf” file. That’s cleaver.
I take @holvoetn auto-update approach myself for firmware and in our defconf since it will update, at some point. Now RouterOS packages… that where auto-update is NOT best plan IMO & “waiting period” is generally good after a new RouterOS release.
But I’ve never seen an issue with keeping the firmware match if you update RouterOS…while I have seen the reverse: mismatched firmware has caused trouble for stuff like LTE modems in past…