What is the proper way to update?

Hi,

I am wondering what the intended way/most convenient way is to update RouterOS. I did notice the nice improvement that WinBox shows that a new version is available.

But why do I need to update through multiple steps?

  1. Check for Updates | Update and Install
  2. Reboot
  3. System | Routerboard | Upgrade
  4. Reboot

(Not sure if #2 really is a full reboot).

Why can't there be a one stop update functionality that performs both steps either in one or automatically? The above seems to require two reboots with extra wait time for remote devices (VPN needs to wait for system clock to be current to be able to re-established the connection for the second step).

What is the use case of updating the RouterOS package but not the RouterBoard?

How do those here in the forum that maintain a larger number of systems with updates? I don't think that you manually log into each machine and performs those steps in order.

Thanks for sharing!

Hardware = RouterBOARD
Firmware = RouterBOOT
Software = RouterOS

If you mix randomly the terms on the post...

You can update your router Ros7 and wifi packages (asuming your router has wifi), by just having them uploaded to the router files and rebooting, then you don't have to check -> download & install -> reboot, its u download the file once, drag and drop into routers files and reboot the router.

Routerboard firmware as far as i know you can use:

/system routerboard settings set auto-upgrade=yes
/system reboot

Not sure that I understand what you mean and where I have not used the correct terms in my post. In principle, I do understand that distinction.

Typical steps I take before mass updating:

  1. Read the changelog and then the forum
  2. Wait a few monthS
  3. Test the updates in the lab
  4. Go on-site to the crucial machines and quickly replace them with machines that are already updated and ready for use.
  5. Update a dozen nearby clients first, using a process I'll explain later.
  6. After a month or two of nearby clients works, gradually update more and more machines over a greater radius, but never all at once.

To update CPEs

  1. Verify that everything is backed up
  2. Verify that there are no errors in the current files inside the device
  3. Delete the local log files and terminal history
  4. Verify that there is enough space, as per lab tests
  5. Reboot the machine regardless
  6. Copy the latest firmware and software to the CPE (yes, both)
  7. Apply the RouterBOOT update (no reboot needed)
  8. Apply the RouterOS update (which reboots automatically)
  9. Upon reboot, the machine is already updated; there's no need to reboot again.
  10. Export the configuration again and compare it with the previous one to check for unexpected discrepancies.

Good question that we, forum users, do not know the answer. It's MT decision and we, long time users, had to accept that procedure as one of MT world oddities.

I just explained above that it's possible to do it with just a reboot... But the laziness in reading other people's posts... (steps on CPEs from 6 to 9)

Where to get these separately?

7-zip? :sweat_smile:

for example, inside routeros-7.16.2-arm64.npk folder "/etc"

I've been writing this on the forum for years...

Currently have 7.24 installed and downloaded routeros package for 7.23.3. Extracted the matching fwf file (look at routerboard firmware-type output), uploaded to device and indeed: upgrade-firmware: 7.23.3. That's neat. Thanks @rextended

Thanks for sharing. I learned a lot from this thread. I do understand that some users with large installations have more involved QA requirements for new firmware than we do. I suppose that @rextended is probably using LTS releases because otherwise it would not be practical to wait months before installing them in production (the release would be superseded by newer releases). I would imagine this timeline to be challenging with the current frequency of security updates.

To summarize: the easiest solution to update in one go for systems with auto-upgrade is:

  1. Download firmware, e.g. https://download.mikrotik.com/routeros/7.24/routeros-7.24-arm64.npk
  2. Unzip the file and find proper .fwf file from /etc. Use /system/routerboard/print to identify the required firmware file.
  3. Place both files (.npk and .fwf) in root folder of device
  4. Reboot Device

Also mildly interesting: some routerboot firmware is available for download separately. e.g. https://mikrotik.com/product/RB3011UiAS-RM

https://download.mikrotik.com/routeros/7.24/ipq8060-7.24.fwf

But tried for other firmware, e.g. https://download.mikrotik.com/routeros/7.24/ipq4000l-7.24.fwf or https://download.mikrotik.com/routeros/7.24/ipq4000L-7.24.fwf -> HTTP 404.

In fact, I suggested 7-zip, it's quicker than trying to find a working link...

AI wrote this for me years ago, works flawlessly.
Update ROS, second reboot is done by scheduler:

:if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={
/system routerboard upgrade
:delay 1s
/system reboot
}

BAD IDEA.
It's bad regardless anything, it could easily go into a boot loop.
Who knows if they change something, some names, values... (CONCRETE example: 7.24p like in SwOS...)
you'll lose the device until you do a netinstall.

Always start with :delay 110s, on this type of scripts...
so you have plenty of time to go in and delete the script before it reboots.

It depends. When I like to use ROS scripting, /tool/fetch is one command. Unpack routeros.npk on ROS is possible?

Is there a reason for 110? Why not 111? or multiple of 60?

Honestly,
if I had a few months, MAYBE I could write something to do it within RouterOS,
but why bother when, within Linux or Windows,
a few command lines can extract the files and make them available for download from the CPE?
(Okay, I'm always thinking in my work environment)

Even if you have a hotspot or something else,
the peripherals simply reach your server (or the isolated internal machine)
where you've placed the files and download them.
After all, updating production devices doesn't have to be done with every single version of RouterOS...
Or not? :rofl:

Oh, of all the questions, I wasn't expecting this one... 111... Well... :two_hearts:

If I remember correctly, the timeout is two minutes, 120 seconds, before the script is automatically blocked. I simply removed 10 seconds...

oh! there is a execution time limit?