What's new

MerlinAU MerlinAU v1.3.6 - The Ultimate Firmware Auto-Updater (GNUTON SUPPORT!)

  • SNBForums Code of Conduct

    SNBForums is a community for everyone, no matter what their level of experience.

    Please be tolerant and patient of others, especially newcomers. We are all here to share and learn!

    The rules are simple: Be patient, be nice, be helpful or be gone!

ExtremeFiretop

Very Senior Member
Hello SNB Community,

This project is hosted on our GitHub

Changelog and release notes: Here

Summery:
We're pleased to RE-introduce the add-on for Asuswrt-Merlin: MerlinAU (Merlin AutoUpdate).
MerlinAU.sh is a versatile shell script designed to automate the firmware update process for ASUS routers running Asuswrt-Merlin firmware.
This tool is designed to streamline the firmware update procedure by automatically detecting your router model, fetches the latest firmware, and offers options for installation making your router maintenance simpler and smoother than ever.

1731919345206.png

1731919352312.png

1731919357599.png

1731919362638.png


What's MerlinAU All About?

MerlinAU is a sophisticated and comprehensive script designed for Asus routers running Asuswrt-Merlin firmware.
It's a collaborative effort by @ExtremeFiretop (myself) and @Martinski W. It offers an extensive range of features:
  1. Automatic router model detection and Automatic update detection.
  2. Automatically install updates to your router with the latest firmware from the Asuswrt-Merlin repository.
  3. Logic to customize scheduled cron jobs for automated firmware update checks.
  4. Notifications for new MerlinAU updates and download the latest version of MerlinAU
  5. User configurable wait periods. Wait for a set duration after a new firmware release.
  6. Menu switch to enable or disable automatic update checking within MerlinAU.
  7. A routine to cleanly uninstall the script, removing all related files and settings.
  8. Maintains logs for its update checks and flash operations which can be viewed from the logs menu
  9. Includes functions for cleanup tasks pre-flash and post-flash.
  10. A visual indicator before starting the firmware update.
  11. Checks the changelogs for very obvious red flags and prompts for approval.
  12. Menu option and notifications to pre-approve the changelog verification if enabled with risks before the flash.
  13. Ability to download the latest changelog notes for manual review from the logs menu.
  14. Functions to check and manage available memory for firmware update operations.
  15. Compatible with ROG and non-ROG routers; select ROG or Pure Build for ROG routers.
  16. Backup the new firmware version to the USB drive. (If USB is selected for storage)
  17. Email notifications if you configured email options in AMTM.
  18. Automatic backup with BACKUPMON if installed.
  19. Allow or Block Alpha/Beta upgrades to Production versions of the same cycle. (388.6.alpha1 or 388.6.beta1 --> 388.6.0)
  20. Automatically stops all Entware services before the flash if running.
  21. Automatically stops diversion if installed and running before the flash.
  22. Unmounts any physically attached storage via USB as the last step before the flash.
  23. AiMesh Node Update Check from Primary Router. (No Flashing from Primary, MerlinAU needs to be on each node for flashing)
  24. Automatically remove any loaded cron jobs from third party scripts.
  25. Menu switch to keep Tailscale or ZeroTier VPN access active while flashing over SSH in the advanced menu.

What update mechanism does MerlinAU use to Auto-Update?

MerlinAU actually implements a curl update mechanism. Curl can simulate almost all behaviors of the browser through get/post.
While hnd-write is unsafe and unpredictable, we instead use curl to simulate a browser for the router to upload the firmware through it's own GUI, which is the safest way. As discussed on the forums in length here.

Essentially the router logins to it's own WebUI like a person does, and uploads the firmware through the WebUI.
Doing this insures that the firmware checks done by the router when uploading a firmware via the webUI are not skipped, and the router can follow it's regular update process from there.

This has been tested extensively on the following devices since 388.4

SUPPORTED MERLIN MODELS: (Multi-image models) - i.e. Any model that uses a .w or a .pkgtb file​

  • GT-BE98_PRO (Tested)
  • GT-AX6000 (Tested)
  • GT-AXE16000 (Tested)
  • GT-AX11000 (Tested)
  • GT-AXE11000 (Tested)
  • GT-AX11000_PRO (Tested)
  • GT-AC2900 (Untested)
  • RT-BE96U (Untested)
  • RT-BE88U (Untested)
  • RT-BE86U (Untested)
  • RT-AX88U_PRO (Tested)
  • RT-AX88U (Tested)
  • RT-AC86U (Tested)
  • RT-AC2900 (Tested)
  • RT-AX86U (Tested)
  • RT-AX86U_PRO (Tested)
  • RT-AX86S (Tested)
  • RT-AX68U (Tested)
  • RT-AX58U V1 (Tested)
  • RT-AX56U (Tested)
  • RT-AX3000 V1 (Tested)
  • XT12 (Tested)

SUPPORTED GNUTON MODELS (Multi-image models) - i.e. Any model that uses a .w or a .pkgtb file​

  • GT-BE98 Known issues due to missing from manifest2.txt file in Gnuton
  • DSL-AX82U (Untested)
  • TUF-AX3000 V1 (Untested)
  • TUF-AX3000 V2 (Tested)
  • TUF-AX5400 (Tested)
  • RT-AX5400 (Untested)
  • RT-AX82U V1 (Tested)
  • RT-AX82U V2 (Untested)
  • RT-AX58U V2 (Untested)
  • RT-AX92U (Tested)
  • RT-AX95Q (Untested)
  • RT-AXE95Q (Untested)
All tests were successful on all subsequent firmware updates, the firmware upgraded correctly, and no issues with compatibility with other addons were identified.

UNSUPPORTED MERLIN MODELS: (Single image models) - i.e. Any model that uses a .trx file​

Blocked due to being single image models.
  • RT-AC87U (Blocked)
  • RT-AC56U (Blocked)
  • RT-AC66U (Blocked)
  • RT-AC3200 (Blocked)
  • RT-AC88U (Blocked)
  • RT-AC5300 (Blocked)
  • RT-AC3100 (Blocked)
  • RT-AC68U (Blocked)
  • RT-AC66U_B1 (Blocked)
  • RT-AC68UF (Blocked)
  • RT-AC68P (Blocked)
  • RT-AC1900 (Blocked)
  • RT-AC1900P (Blocked)
  • RT-N66U (Blocked)
  • RT-N16 (Blocked)

UNSUPPORTED GNUTON MODELS: (Single image models) - i.e. Any model that uses a .trx file​

Blocked due to being single image models.
  • DSL-AC68U (Blocked)

How to Get MerlinAU

AVAILABLE THROUGH AMTM!
MerlinAU is also available for download on our GitHub repository here: https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router

Installation and update information are provided on the same github page.
For any questions please visit our FAQ on Github here

PLEASE READ ALL THE DETAILS AND BACKUP BEFORE STARTING!

Post-Install Notes for MerlinAU Users

  • Confirm your entered crons with Crontab.guru here: https://crontab.guru/ and review the below FAQ questions in the second post.
  • After installing or updating MerlinAU, it's recommended to review the new settings and adjust them as per your preference.
  • If using a USB drive for firmware storage, ensure it's properly connected and mounted.
## NOTE: It is highly recommended to configure backups using BACKUPMON
For any additional questions the FAQ was moved to Github here: https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/wiki before posting.

We're eager to hear your feedback and experiences with MerlinAU. Your suggestions and comments are invaluable in making MerlinAU even better!
MerlinAU is available under the GNU General Public License version 3 (GPL-3.0).

## Contribution
- Before any contributions, please review: https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/blob/main/CONTRIBUTING.md
- Also please review the: https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/blob/main/CODE_OF_CONDUCT.md

Thank you, and enjoy a hassle-free firmware updating experience with MerlinAU!
 
Last edited:
Latest Changelog can be found here

-V1.3.6

Previous Changelogs can be found below for historical reference:
-V1.3.5

-V1.3.4

-V1.3.3

-V1.3.2

-V1.3.1

-V1.3.0

-V1.2.7

-V1.2.6

-V1.2.5

-V1.2.4

-V1.2.3

-V1.2.2

-V1.2.1

-V1.2.0

-V1.1.5

-V1.1.4

-V1.1.3

-V1.1.2

-V1.1.1

-V1.1.0

-V1.0.10

-V1.0.9

-V1.0.8

-V1.0.7

-V1.0.6

-V1.0.5

-V1.0.4

-V1.0.3

-V1.0.2

-V1.0.1

-V1.0.0

-Pre-Release V0.2.54

-Updated November 18th, 2024
 
Last edited:
MerlinAU Version 1.2.7 released.

What's Changed/Fixed?:

PR: #271 - Minor change to the "Help" output
-Added the ".sh" file extension to the listed script commands in the "Help" output screen to make it clear that the extension is definitely needed as part of the script filename.
(Thanks @Martinski4GitHub)!

1723164502541.png


PR: #273 - Allow script to continue flashing F/W if connection is terminated.
-Made changes to allow script to continue with the F/W flash "curl" command after connection is terminated due to stopping Entware services, including TailScale.
(Thanks @Martinski4GitHub)!

PR: #278 - Keep ZeroTier connection during F/W updates.
-Updated code to keep ZeroTier VPN connection alive during F/W updates. Also, if OpenSSH is being used for remote SSH access the server is kept alive as well.
(Thanks @Martinski4GitHub)!

BUG FIX: PR: #280 - Clarify Email Content
- Clarify Email Content as requested by: @maghuro here: https://www.snbforums.com/threads/m...dater-now-available-in-amtm.88577/post-920655
-Also fixed a bug related to the email subject when a node had an update (sent from the primary router)

PR: #282 - Increased Maximum Postponement Days
-Increased the maximum number of postponement days to 199. This gives users plenty of time to wait and decide when to do the F/W Update, especially for those users who prefer to do it manually. Requested by @Jeff-
(Thanks @Martinski4GitHub)!

As always, we highly recommend you update ASAP as this includes lots of functional improvements and little bug fixes.

Significant screenshots:
(Small Wording Changes below)
1723164482610.png
 
Overnight, my RT-AX58U router auto-updated from 3004.388.7.0 to 3004.388.8.2 (automatically skipping over flawed release 3004.388.8.0). Everything is running smoothly this morning. This time I left it completely hands-off, all I did was review the changelog. Thanks again for a great script!
 
Overnight, my RT-AX58U router auto-updated from 3004.388.7.0 to 3004.388.8.2 (automatically skipping over flawed release 3004.388.8.0). Everything is running smoothly this morning. This time I left it completely hands-off, all I did was review the changelog. Thanks again for a great script!

It's only getting better with time 😉 The more development time we get, the smoother it becomes!
 
My RT-AX56U just updated from 3004.388.7.0 to 3004.388.8.2 with the script, no problems.

Primary List updated in the OP and Github.
Thank you for reporting and confirming that model is functional as well! :)

Enjoy automated updates!
 
Primary List updated in the OP and Github.
Thank you for reporting and confirming that model is functional as well! :)

Enjoy automated updates!
If there are any future updates for the RT-AX56U, that is...
 
If there are any future updates for the RT-AX56U, that is...

Fair point!
But I'm still happy to know MerlinAU *will* work if there is any future updates ;)
 
MerlinAU Version 1.3.0 released.

What's Changed/Fixed?:

OFFICIAL GNUTON SUPPORT!

PR: [#186 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/186
- Requested on Github report: #89 by @micron888 and many others in the forums such as @Johndoe85 and many thanks to all the testers that volunteered such as @nullvoid, @novusB, @lilkidsuave, @explorer and of course @GNUton for merging our required PRs!

PR: [#289 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/289
- General Code improvements for Gnuton PR. (Thanks @Martinski4GitHub @Martinski)

PR: [#292 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/292
- Detect Access Restrictions... Issue reported on Github #290 by @SolidRhino . The script now has smarts to detect if the "Web Access restrictions" feature on the router will block successful login, depending on if the feature is enabled or the routers IP is within rule ranges.

PR: [#293 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/293
- Modified message when router login failed. (Thanks @Martinski4GitHub @Martinski )

PR: [#294 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/294
- Improvements when detecting WebGUI access rules (Thanks @Martinski4GitHub @Martinski)

PR: [#295 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/295
- More improvements for detecting WebGUI access rules (Thanks @Martinski4GitHub @Martinski)

PR: [#296 ] https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/pull/296
- Match between Gnuton and Merlin for Changelog Behavior (Small change identified when testing pre-release)

As always, we highly recommend you update ASAP as this includes lots of functional improvements and little bug fixes.

Significant screenshots:
1725260665728.png
1725260673629.png
 
Last edited:
Currently the only known issue is with the GT-BE98 (listed in the OP)
@GNUton is aware of this already and I am positive he has plans to add the GT-BE98 to the manifest file once it's out of beta stages. Either way MerlinAU does not support flashing of beta releases. Only stable releases.

Also MerlinAU will only work with Gnuton releases 388.8_2 and above. You will need to manually update to 388.8_2 for MerlinAU 1.3.0 to function correctly.

Please everyone report and advise if you notice of any issues with this beta release of 1.3.0
 
Last edited:
Do I still need to manually update to 388.8_2 for MerlinAU 1.3.0 to function correctly?

Or is this only for Gnuton f/w versions?
 
@Diablo99 if you are using Gnuton, then yes:

Also MerlinAU will only work with Gnuton releases 388.8_2 and above. You will need to manually update to 388.8_2 for MerlinAU 1.3.0 to function correctly.

1726660642372.png
 
MerlinAU 1.3.1 Released

What's Changed/Fixed?:

PR: [ #301 ]
  • Small Improvements to Changelog Verification. Fixed a minor bug with changelog verification.
PR: [ #302 ]
  • Removing Cron Jobs from 3rd-party Add-Ons. Added code to remove cron jobs from 3rd-party Add-Ons right before ejecting the USB-attached drive and starting the actual F/W Update process. This is an effort to eliminate the possibility of a cron job starting to execute and accessing the USB drive filesystem. (Thanks @Martinski4GitHub @Martinski)
PR: [ #305 ]
  • Update Minimum Version to 3004.386.12.6. our minimum version is currently 6 versions behind production or about 8 months behind production. Upping to 3 versions behind production. Last update in this regard was about 10 months ago.
PR: [ #308 ]
  • Checking for the Minimum F/W Version supported now takes into account the F/W Branch of the currently installed F/W version. (Thanks @Martinski4GitHub @Martinski)

As always, we highly recommend you update ASAP as this includes lots of functional improvements and little bug fixes.

Significant screenshots:
1728027268330.png
 
Last edited:
MerlinAU 1.3.2 Released!

What's Changed/Fixed?:

PR: [ #311 ]
Code Improvements. Various behind the scene code improvements & fine-tuning when it comes to messaging.
(Thanks @Martinski4GitHub @Martinski)

As always, we highly recommend you update ASAP as this includes lots of functional improvements and little bug fixes.

Significant screenshots:
1728831307197.png
 
Last edited:
MerlinAU 1.3.3 Released!

What's Changed/Fixed?:

PR: [ #342]
General code improvements around versioning regex.

As always, we highly recommend you update ASAP as this includes functional improvements and little bug fixes.

Significant screenshots:
 
MerlinAU 1.3.4 Released!

What's Changed/Fixed?:

PR: [ #346 ]
Blocked Unsupported Models and Documentation Updated. Rather be safe then sorry.
Models added to the block list include: RT-AC1900P, RT-N16, RT-AC68UF, RT-AC68P

Updated Wiki: https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router/wiki
To document new additional features.

As always, we highly recommend you update ASAP as this includes functional improvements and little bug fixes.
 
Last edited:
Latest Flash from 3006.102.2.0_Beta1 to the full release working perfectly on the GT-BE98_Pro...
Below is an example of the latest workflow for flashing the update:

1730715942708.png


1730716169160.png


1730715728177.png
 
MerlinAU 1.3.5 Released!

What's Changed/Fixed?:

PR: [ #353 ]
Code Improvements for Post-Reboot Script Calls.
  • Increased wait timers in the post-update reboot
  • Little fixes around the settings file using dos2unix and chmod 0664
  • (Thanks @Martinski4GitHub @Martinski)

PR: [ #354 ]
Trace log for update email notifications.
  • Added code to add some trace log for the post-reboot update email notifications (for debugging purposes).
  • (Thanks @Martinski4GitHub @Martinski)

BUG FIX: PR: [ #355 ]
Various Small Fixes.
  • More Regex fixes around versioning.
  • Fixed an issue around emails mis-identifying as failed when it was really a success.

BUG FIX: PR: [ #356 ]
Improvements to Acquiring Lock File.
  • Fixes an issue where during the post-update reboot, 2 instances of MerlinAU would be called and the 2nd one encountered the lock file, causing the post-update email notification to not get sent.
  • Code improvements when the script is trying to obtain a lock file by allowing a 2nd instance to wait for the 1st instance to perform its job and exit. This now means that 2 or more instances could execute in a staggered pattern and not terminate immediately when a lock file is found.
  • (Thanks @Martinski4GitHub @Martinski)

As always, we highly recommend you update ASAP as this includes functional improvements and little bug fixes.
Tested against the latest 3004.388.8_4 and 3006.102.2_2
Significant screenshots:
1731916886120.png
 

Support SNBForums w/ Amazon

If you'd like to support SNBForums, just use this link and buy anything on Amazon. Thanks!

Sign Up For SNBForums Daily Digest

Get an update of what's new every day delivered to your mailbox. Sign up here!
Top