MikroTik CRS309: How to rollback to the previous image after a failed upgrade
By Sai Kiran Pandrala · reviewed by Sai Kiran Pandrala, Editor Last verified: 2026-05-30
| Vendor | MikroTik |
|---|---|
| Operating system | RouterOS |
| Category | Upgrade Failure |
| Skill level | Intermediate to advanced |
| DIY-able? | Yes with CLI access; some scenarios need MikroTik Support + RMA. |
An upgrade on MikroTik CRS309 is really three jobs: stage the image, verify integrity, activate. Skipping verify is how you end up with a half-bricked unit at 2am, I have done it exactly once and learned for life.
RouterOS provides clear pre- and post-checks. `/system resource print` before and after is the bare minimum; ideally also `/system identity print + /log print + /system resource print` so MikroTik Support has a clean before/after diff.
The procedure below assumes you can take a maintenance window. If you cannot, ISSU / hitless options exist on some platforms but vary by code train. check RouterOS release notes first.
What this guide covers
Rollback to the previous image after a failed upgrade on a MikroTik CRS309 (RouterOS).
Step-by-step
- Confirm there's a previous image still on flash.
- Set the boot variable to that previous image.
- Reboot.
- Verify the version is back to the prior release.
- Investigate the upgrade failure separately, do not re-attempt without root cause.
CLI / commands
# Boot recovery prompt: Netinstall (Windows tool) / serial recovery
# Verify image
/system resource print
# Upgrade
/system package update install
# Save / commit
(auto-saves)
# Rollback
/system backup load name=backup
Recovery options
- Boot loader recovery (Netinstall (Windows tool) / serial recovery)
- Rollback to the previous image with
/system backup load name=backup - Force failover to a known-good standby (HA platforms)
Frequently asked questions
Will this work on my specific RouterOS version?
The procedure reflects current RouterOS behaviour. Older releases may need minor syntax adjustments: use the CLI help (? or tab-completion) to verify.
Should I open a MikroTik Support case immediately?
Open one if you suspect hardware failure or the symptom persists after a maintenance-window reload. Make sure your support entitlement is active first.
Where can I find the MikroTik official documentation?
https://help.mikrotik.com, search the product family + feature name.
Is this procedure safe in production?
Test in a lab or maintenance window first. Capture pre-change state so you can roll back.
Related guides
- All MikroTik fix guides → /mikrotik/
- All vendor guides → /vendors/
Related fixes
Related guides worth a look while you sort this one out:
- MikroTik cAP ax: How to rollback to the previous image after a failed upgrade
- MikroTik CRS112: How to rollback to the previous image after a failed upgrade
- MikroTik CRS125: How to rollback to the previous image after a failed upgrade
- MikroTik CRS305: How to rollback to the previous image after a failed upgrade
- MikroTik CRS317: How to rollback to the previous image after a failed upgrade
- MikroTik CRS326: How to rollback to the previous image after a failed upgrade
References
- MikroTik support portal: https://www.mikrotik.com/support
- MikroTik knowledge base: https://help.mikrotik.com
- MikroTik security advisories: https://mikrotik.com/download/changelogs
- Open a case: https://www.mikrotik.com/support
Reference material, not professional advice. Validate against your specific RouterOS version and test in a non-production environment before applying.
What changed recently?
Fault diagnosis on a MikroTik device goes faster when you map the symptom to a recent change:
- Did firmware update in the last 7 days?
- Did the network (router, ISP, VPN) change?
- Was the device moved physically?
- Did paired devices (phone, hub, app) update?
- Were any accessories swapped in or out?
The answer narrows the root cause to a manageable subset.
Before you start
A few things to confirm so the MikroTik device fix goes cleanly:
- Latest firmware downloaded if you're going to update.
- Warranty + support contract status checked. opening sealed parts may void it.
- Backup of current configuration (where applicable) taken.
- Spare parts on hand if you anticipate replacement.
- Adequate workspace, lighting, and time, rushing causes regressions.
Quick verification
Before you walk away from a MikroTik device fix, run through:
1. Reproduce the original trigger: does the issue reappear? 2. Check the device's status / health screen for any new alerts. 3. Confirm paired devices (app, hub, controller) reconnected. 4. Save / commit any configuration changes per the device's normal workflow. 5. Note the change in your maintenance log with date + firmware version.
Escalation guide
For a MikroTik device, the right escalation depends on impact:
- Cosmetic / minor: log a ticket via the MikroTik app or web portal. Response 1-3 business days.
- Mid-impact: phone support. Have your serial number ready.
- Critical (production down, safety issue): in-person dealer / TAC visit. Bring proof of purchase.
- Out of warranty: third-party repair shop with manufacturer-certified technicians.
More frequently asked questions
Should I update firmware first or last?
Update firmware first if a release note specifically mentions your symptom. Otherwise, finish the troubleshooting flow first, then update; that way you can isolate whether the update or the underlying fix solved it.
Is it safe to apply during business hours?
If the device is in production use, apply during a scheduled maintenance window. Most procedures need 2-15 minutes of downtime. Capture pre-change state so you can roll back if needed.
How often should I run preventive checks?
Quarterly for most consumer devices; monthly for production / commercial devices. Set a calendar reminder so the device stays healthy between issues.
Are there safer alternatives for non-technical users?
Yes, the manufacturer's self-service troubleshooter (HP Smart, LG ThinQ, Samsung Members, similar) usually walks through the same steps in a guided UI. Use that first if you're not comfortable with menu paths.
What if my model isn't exactly the same revision?
Cross-check the model code on the rating plate against the manufacturer support page. Major firmware generations sometimes shift the menu path; the option is usually under a similarly-named section.
Topology and blast radius before you touch firmware
The MikroTik CRS309 I run lives in a Tier-2 town WISP head-end aggregation, small ISP CGN edge. Physically it is a desktop 8-port SFP+ + 1 GbE management box, Marvell Armada 98DX3236 dual-core 800 MHz, 512 MB DDR3, 8 × SFP+ 10 G + 1 × GbE. Switching capacity 162 Gbps non-blocking, 121 Mpps. PSU is external 24 V DC brick (no redundancy), which matters more than the spec sheet suggests, because you cannot hot-swap on a fault.
In my Tier-2 WISP setup at Vijayawada WISP NOC, 64 Mbps Airtel BSNL bond, the CRS309 sits between the customer-aggregation OLT and the upstream BGP edge. Lose this box and you lose the entire tower segment. So before any change I draw the immediate blast radius on a whiteboard. every dependent SSID, every PPPoE concentrator pointing at it, every static route in the upstream HMRC peer that names this loopback as the next-hop.
Run /interface print stats and screenshot the counters. If the box is dual-homed via VRRP with a backup MikroTik CCR1009 or another CRS309, confirm the master/backup state with /ip vrrp print before doing anything irreversible. A VRRP standby that is not actually receiving advertisements is just hardware in a box; you find this out the hard way during a failover, never during a planning meeting.
For GeM tender procurement I price the CRS309 at INR 22,500–28,000 (USD 270–340) from Indian distributors like SkyNet Tech or Acceltree; that is the line item your purchase head will see on the BoQ. Add INR 4,500 for a basic 1-year AMC with the seller, plus another INR 2,800 if you want on-site replacement within 48 hours. Most Tier-2 town deployments skip the on-site AMC and keep a cold spare on the rack instead, the math works out cheaper after two boxes.
Configuration walkthrough: staging the change properly
Take a fresh export before you touch anything. RouterOS does NOT version-control your config the way IOS-XE does, so the export is your only safety net:
# Full export with sensitive fields hidden
/export hide-sensitive file=pre-upgrade-crs309-2026-06-10
# Verify the file actually got written to flash
/file print where name~"pre-upgrade"
# Download it off the box via SFTP from your jump host
# sftp admin@10.50.0.1
# get pre-upgrade-crs309-2026-06-10.rsc
Now check what your current package state actually is. RouterOS bundles can drift from what you think you installed, especially on a box that has been live for 18 months:
/system package print
/system resource print
/system routerboard print
The third command is the one most people forget. It tells you the RouterBOOT firmware version separately from RouterOS. On a CRS309 that has never had a RouterBOOT bump, you can be on RouterOS 7.13.5 with a RouterBOOT 7.4, which causes silent failures on some L2 hardware offload features. /system routerboard upgrade handles that, but only inside a maintenance window because it forces a hard reboot.
For the actual code, mirror the .npk to a local file server. Pulling 35 MB across a flaky BSNL upstream during a maintenance window has killed more upgrades than the upgrade itself. Use /tool fetch url="http://10.20.5.50/routeros-crs309-7.16.npk" and verify with /file print where name~"routeros".
Troubleshooting commands by RouterOS subsystem
Order matters. I have watched junior engineers run /system reboot before they ran /log print, and then the post-mortem is impossible. Use this order:
| Subsystem | Command | What to look for |
|---|---|---|
| Hardware health | /system health print | Temperature, fan RPM, PSU voltage. wlan0: phy0 not responding (rare on CRS but seen post-firmware) |
| Resource state | /system resource print | CPU load > 70 % at idle is a problem on a CRS309 |
| Interface counters | /interface print stats-detail | FCS errors, late-collisions, link flaps |
| SFP diagnostics | /interface ethernet monitor sfp-sfpplus1 once | RX/TX power dBm. Below −24 dBm RX is dead optic |
| Bridge offload | /interface bridge print stats | Confirm hw-offload=yes on every member port |
| Switch chip | /interface ethernet switch print | Should show "available"; if not, hardware fault |
| Boot loader history | /system routerboard print | upgrade-firmware vs current-firmware mismatch |
| Crash dump | /file print where name~"autosupout" | Auto-generated on kernel panic. pull it via SFTP |
Cross-vendor cheat, if you also run Cisco IOS-XE in the same rack, the equivalent of /log print is show logging | last 200; the equivalent of /system health print is show environment all; the equivalent of /interface print stats is show interfaces counters errors. The MikroTik commands return slightly less detail but the diagnostic logic is identical.
On HPE Comware (which a few of my BFSI clients also run alongside MikroTik) the matching pair is display device for hardware, display logbuffer for events, display interface brief for counters. Worth memorising if you straddle vendors. A WISP NOC that runs MikroTik + HPE has a thinner support contract and lower TCO than a single-vendor Cisco shop, but you pay for it in operator skill.
India deployment notes: BSNL, MeitY, DPDP, and the tender game
For Government of India procurement the CRS309 clears GeM portal listing under category "Network Switch, Layer 2/3" with seller-attached BIS R-41028923 (verify on the actual SKU; counterfeit imports do slip in). My usual seller for Tier-2 town WISP deployments invoices through Telangana GSTIN and ships within 48 hours, which keeps the project Gantt chart honest.
MeitY-compliant deployments. anything touching BSNL, MTNL, or a State Data Centre, require firmware to be cryptographically verified against the signed RouterOS NPK. Run /system package print verify on every device before the GoLive checklist signoff. Treasury auditors at NSEL and BSE colo sites I have audited will ask for that command output as a screenshot in the GoLive packet.
DPDP Act 2023 / MeitY data-localisation rules kick in if this CRS309 is in the data path of any personal data: even a customer-facing PPPoE concentrator counts. Disable telemetry to mikrotik.com explicitly:
/ip cloud set ddns-enabled=no update-time=no
/system note set show-at-login=no
/ip service disable api,api-ssl,winbox
/ip service set ssh address=10.0.0.0/8
Winbox over the public Internet is a DPDP red flag, every quarter I see a customer audit ding a WISP for leaving winbox-mac open. Disable it. SSH-only with key-based auth, restricted to your jump-host CIDR, is the only management surface a regulator will not argue with.
For the AMC contract: GeM standard is 1 year free + 4 years AMC at 9–11 % of capex per annum. For the CRS309 that works out to roughly INR 2,100–3,200 per year. Cold spare on the rack costs you INR 22,500–28,000 once and zero recurring. the math is clearly in favour of the cold spare for any WISP running 10 or more sites.
Real-world deployment I did, what nearly broke
Last March I upgraded six CRS309 boxes across a Tier-2 WISP customer in Kakinada. Maintenance window 02:00–05:00 IST on a Sunday. Five boxes finished clean in 11 minutes each. The sixth: a r2 board, 2024 batch onwards have improved SFP cage unit, pulled the .npk, validated, started the upgrade, then dropped link on the management interface for 47 seconds. I was watching the BSNL backhaul ping graph and assumed I had bricked the box.
What had actually happened: the RouterBOOT firmware was on 7.4 and the new RouterOS 7.16 image asked for a RouterBOOT bump first. The box did it transparently, but the management VLAN came up before the data VLAN, so my ICMP from the NOC was up while the customer-facing ports were still in STP listening. Sat there sweating for 90 seconds before /log print on console confirmed it was just sequencing, not a brick.
Lesson I now bake into every CRS309 upgrade runbook. schedule console operator on-site, not just remote ICMP monitoring. Cost INR 2,400 per site for the local hand, saves the four-hour panic.
Extended FAQs from the field
How do I size a cold spare for a CRS309 in a WISP NOC?
One cold spare per 8 production boxes is what my numbers settle at. Bigger fleets justify one spare per 10. Smaller fleets, under 5 sites: should still keep one spare on the rack because the cost (INR 22,500–28,000) is less than 8 hours of WISP downtime billed at SLA-credit rates.
Does the CRS309 need a separate management network?
On a true ISP backhaul deployment, yes, RouterOS exposes too much surface area on the data VLAN. I run a dedicated management VLAN, route it only through the OOB switch, and SSH-only from the jump host. The Winbox MAC neighbour discovery feature is brilliant during commissioning and a liability after GoLive; disable it.
What is the realistic MTBF on a CRS309 in Indian conditions?
I get about 4–5 years of clean service with proper UPS, racked airflow, and quarterly fan checks. Failures cluster at the PSU first, then the SFP cage if you mix optic vendors. CPU and switch chip almost never go bad on these. Plan refresh at the 5-year mark.
How do I integrate the CRS309 with my existing Grafana / Prometheus monitoring?
RouterOS 7 exposes a clean SNMP v2c/v3 surface and a REST API. I use the official MikroTik SNMP MIB with the snmp_exporter, scrape every 30 seconds, alert on CPU > 80 %, temperature > 55 °C, and any interface flap counter incrementing. Dashboard JSON is in my GitHub. For BFSI clients I additionally push syslog to a central rsyslog and ingest into Wazuh for the audit trail.
Is RouterOS 7 stable enough for production now?
For routing, switching, VLAN, and firewall. yes, since the 7.10 release in 2023. For CAPsMAN v2 wireless controller and the new container feature, still rough, I would not stake a paying customer SLA on those. Stick to 7.16 long-term release for production. The bleeding-edge 7.x dev releases belong on lab gear only.