What's new
  • 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!

MerlinAU v1.5.7 - The Ultimate Firmware Auto-Updater

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.

WebUI:
1764635868804.png


CLI Shell Script:
1764635861969.png

1764635853291.png

1764635848449.png

1764635842868.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-BE19000AI
  • GT-BE98_PRO
  • GT-AX6000
  • GT-AXE16000
  • GT-AX11000
  • GT-AXE11000
  • GT-AX11000_PRO
  • GT-AC2900
  • RT-BE96U
  • RT-BE92U
  • RT-BE88U
  • RT-BE86U
  • RT-BE58_GO
  • RT-AX88U_PRO
  • RT-AX88U
  • RT-AC86U
  • RT-AC2900
  • RT-AX86U
  • RT-AX86U_PRO
  • RT-AX86S
  • RT-AX68U
  • RT-AX58U V1
  • RT-AX56U
  • RT-AX3000 V1
  • XT12

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

  • GT-BE98
  • DSL-AX82U
  • TUF-AX3000 V1
  • TUF-AX3000 V2
  • TUF-AX5400
  • RT-AX5400
  • RT-AX82U V1
  • RT-AX82U V2
  • RT-AX58U V2
  • RT-AX92U
  • RT-AX95Q
  • RT-AXE95Q
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!
 
Latest Changelog can be found here

-V1.5.7

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

-V1.5.5

-V1.5.4

-V1.5.3

-V1.5.2

-V1.5.1

-V1.5.0

-V1.4.9

-V1.4.8

-V1.4.7

-V1.4.6

-V1.4.5

-V1.4.4

-V1.4.3

-V1.4.2

-V1.4.1

-V1.4.0

-V1.3.12

-V1.3.11

-V1.3.10

-V1.3.9

-V1.3.8

-V1.3.7

-V1.3.6

-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 25th, 2025
 
@kriukas

Please provide your logs here.
 
@kriukas

Please provide your logs here.

No any other (newer) logs - if MerlinAU *internal logs* are your mind. Cron jobs info included in the OP.
Bellow is original post, which was not uploaded due to thread expiration:
We are simply asking for confirmation you meant the 102.6 full release and not the beta2, if you didn't mean beta2, there was no reason to include it...
You could of simply said: "it should have executed on +2 days after the FULL 102.6 release went to production on 2025-11-25, like 27th or 28th...?"
Instead you decided to include beta2 for no gain in information, so it causes confusion.

When there is a "gain function" in reporting with AI, I included all the relevant info from my POV, as I am not intimate with the SW module architecture.

We also wanted to confirm you had the option Beta-to-Release F/W Updates "ENABLED" and that no changes were made since the reported issue, as found below:

This info is completely evident from the original post just by reading text and looking at screenshots. If not - sorry for your wasted time. It is like 2:00AM locally and if burning personal time, effort and health is not appreciated - so be it.

However you still have not confirmed this, I can clearly see in the screenshot it's enabled NOW, but that does not answer if it was always enabled.

The "confirmation" is evident from the original post - no any changes to anything in like a month, albeit 102.6beta1 upload and (self-sufficient to oneself) confirmation, that it did not down the secondary router, caused instability or etc. I can keep repeating the facts, but they don't change.

If you do not care, and don't think you have anything further to add to the discussion when asking for clarification, then I have no fuel to change anything that is working for many people.

Sure, as I said - wasted time to report to "previous versions". Completely irrelevant for unknown size happy user base.

This clearly shows the logs being 2025-11-17, and you expected the update to run on 2025-11-27 or the 2025-11-28
Your own words:
So please provide logs for AFTER you expected it to run, not before....
And for this:

No any other (newer) MerlinAU internal logs. Cron jobs info included in the OP.

Just disable it from the WebUI instead of the shell script...

When I was still "debugging" this issue and reporting back to this thread, I did not "touch" anything in MerlinAU "ecosystem", albeit what the AMTM-MENU script did unexpectedly for me without confirmation.

As the script now is v1.5.7, and it now has *for itself* executed detection sequence, the current config and attitude is evident, let's not was any more time, what "is working for many people". Case closed.
 
I would never be hired, my level of support is far too caring...
Ring Ring Ring...

"You have reached MerlinAU Global Support. To expedite your call, please have your credit card ready. A customer support representative will be with you shortly."

"I'm sorry, you don't qualify for Premier Support, and your $450 "single support incident" credit card transaction was declined. Please call your bank or lender to resolve this issue."

***2 HOURS LATER***

"$450 credit card deposit accepted. You are number... 39... in line. Please press 1 to request a callback, or please continue to hold for the next representative."

***7 HOURS LATER***

"You are number... 1... in line. Please wait while we transfer you to the next support representative.... Click click... Ring ring ring... I'm sorry, our offices are closed right now. Please call back when our offices reopen at 7am Pacific time on weekdays."
 
Is there a full moon? 🌕
Sure is. When the direction of help is completely misinterpreted. Keep updating it.

P.S. I have just read this one:
Interesting stuff and interesting comments correlation with it. Have a nice time!

😘
 
No any other (newer) logs - if MerlinAU *internal logs* are your mind.

If you have no additional logs it means it didn't run.

Likely the cron jobs were deleted, and then re-added by MerlinAU when loading it to check on it.

I do believe this explains it best. Why the cron jobs were deleted, I couldn't tell you unfortunately.
 
P.S. I have just read this one:
Interesting stuff and interesting comments correlation with it. Have a nice time!

😘

Have I not been nice and straight up respectful with you this entire time while trying to get further details and clarification from you? If not please quote me so I can correct my mistakes.

I am unfortunately not a mod here on these forums, so I can't control what others might say or do. You can PM me if you prefer.
 
If you have no additional logs it means it didn't run.

Likely the cron jobs were deleted, and then re-added by MerlinAU when loading it to check on it.

I do believe this explains it best. Why the cron jobs were deleted, I couldn't tell you unfortunately.
I'm going to bed, but in OP, there was an idea to extend cron jobs comments "suffixes" with audit data entries, but it got completely lost in translation this night. If script constantly on updates/upgrades/anything "touches" cron entries and leave no traces about its actions, or WebUI whole "department" runs, displays the current situation and does not detect, that it is for unknown reason week(-s) behind the current time/schedule - system simply "doesn't fly". Sure it had fuselage, wings and motor. But no lift. Just my opinion.
 
Have I not been nice and straight up respectful with you this entire time while trying to get further details and clarification from you? If not please quote me so I can correct my mistakes.

Simply put - yours and others here ridicule with up-votes in "sheets" of tasteless humor, when wrongly assuming, that it was I *asking for help*, when in fact *I was rightfully assuming that it was me, providing help - with - the beta - very possibly - corner case*, requires all the involved to re-evaluate all the dump on my person. I did not got offended though, because all this was simple misdirection at me.

I was just "walking by" and "extending a hand" 😉
 
I'm going to bed, but in OP, there was an idea to extend cron jobs comments "suffixes" with audit data entries, but it got completely lost in translation this night. If script constantly on updates/upgrades/anything "touches" cron entries and leave no traces about its actions, or WebUI whole "department" runs, displays the current situation and does not detect, that it is for unknown reason week(-s) behind the current time/schedule - system simply "doesn't fly". Sure it had fuselage, wings and motor. But no lift. Just my opinion.

The script does not touch the cron jobs constantly. The script only touches the cron jobs in 4 instances:

1. The cron jobs are missing when the script runs manually. It re-adds them assuming it's configuration file says they should exist.
2. The cron jobs are being changed/updated by the user, either by the WebUI, or the shell script.
3. The script is being uninstalled/removed it will delete them.
4. If auto updates are disabled by the user it will delete them.

In those branches of the code, the script touches the cron jobs.
But if the cron jobs are deleted by some external factor, such as the user, another script, or some unknown factor like a beta firmware update, then the script won't run again to re-add the cron jobs until the user initiates a start of the script manually.

Based on your lack of logs it looks like they were deleted by some external factor on the 17th.
Adding logs to when MerlinAU when it touches the cron jobs would only log anything in one of those 4 instances but won't tell us what external factor deleted the cron jobs.
 
Last edited:
requires all the involved to re-evaluate all the dump on my person.

Again I would like to know where I "dumped on your person" as I feel I've been helpful this entire time in helping find the answers you seek.
I did like some comments, I do that for many reasons, sometimes just to confirm I've read the messages without having to dirty the thread to say so.

when wrongly assuming, that it was I *asking for help*, when in fact *I was rightfully assuming that it was me, providing help - with - the beta - very possibly - corner case*

Your request was taken as a need for help when asking if anyone wanted to investigate the cause here:

Hi everyone,

Any interest to dig in, why there was no upgrade from beta to production?

The answer appears to be that your cron jobs were missing until MerlinAU re-added them when you checked on it manually.
I will consider your idea / suggestion to add logging in the instances MerlinAU touches the cron jobs, but I don't currently have any evidence the cron jobs were removed my MerlinAU in the first place.

I have evidence they were likely added when you clicked to check the changelog first before looking at the cron jobs:
When I got to this MerlinAU screen, of course, I pushed "Latest ChangeLog" button. The correct version was downloaded - 2025-11-25 production one, without XX-XX'es for the release dates. I scrolled to the bottom, then back up, chose the "Close" button on the top of change log presentation form, and that was it... No "Approve Change Log" check-box enabled. No Script Update Check. No F/W update check. Did not delve in, as short on personal time. Like cron job were unavail... but from ATMT:

50 19 * * * sh /jffs/scripts/MerlinAU.sh run_now #MerlinAU_FWUpdate#
35 19 * * * sh /jffs/scripts/MerlinAU.sh checkupdates #MerlinAU_ScriptUpdate#
 
Last edited:

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!
Back
Top