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!

spdMerlin spdMerlin v4.4.16 [2025-Nov-16] - Internet Speedtest and Monitoring Tool for AsusWRT Merlin

Code:
# l /jffs/addons/spdmerlin.d
-rw-rw-rw-    1 Gilly    root           339 Aug  9 20:42 .interfaces.bak
-rw-rw-rw-    1 Gilly    root         35149 Jul 25 19:28 LICENSE
-rw-rw-rw-    1 Gilly    root          2621 Jul 25 19:27 README.md
drwxrwxrwx    2 Gilly    root         17704 Aug  9 20:43 csv/
drwxrwxrwx    2 Gilly    root           376 Jul 25 19:27 ookla/
drwxrwxrwx    2 Gilly    root           160 Jul 25 19:27 ooklalicense/
-rw-rw-rw-    1 Gilly    root         89381 Jul 25 19:27 spdstats_www.asp

That's it, all I have. I don't have connmon installed.
 
That's it, all I have.
Thanks for sharing your files list. I'm planning on re-installing the script and start using it normally by tomorrow. I'll do uninstall, manual cleanup, fresh install, move storage, cleanup remnant files, and I'm done for now.
I'll stop debugging for the meantime until I get real and effective feedback from the code owners.
 
I just uninstalled spdMerlin and then made sure there are no files left related to the script both at JFFS and USB locations. Then, I made a fresh install and changed all the settings to my preference right away to get it ready to work for me.
Now that I checked what has remained in the JFFS storage location, nothing seems wrong to me (except for .interfaces.bak file). I even don't have the csv folder @Ripshod has in his own setup.

Code:
# l /jffs/addons/spdmerlin.d
-rw-rw-rw-    1 atr      root           339 Sep  6 05:30 .interfaces.bak
-rw-rw-rw-    1 atr      root         35149 Sep  6 05:32 LICENSE
-rw-rw-rw-    1 atr      root          2621 Sep  6 05:24 README.md
drwxrwxrwx    2 atr      root             0 Sep  6 05:22 ookla/
drwxrwxrwx    2 atr      root             0 Sep  6 05:22 ooklalicense/
-rw-rw-rw-    1 atr      root         89381 Sep  6 05:25 spdstats_www.asp

I'll keep monitoring the JFFS location to see when files begin to show up in my setup.
 
After many hours of troubleshooting, code understanding, fixing, testing, and then doing my very first code commit in GitHub.
Finally, I submitted my very first pull request to the develop branch of spdMerlin script to address the bug of losing the "excluded" mark on interfaces when their status switch between up and down, with a minor improvement to relevant code.
After the fresh install, now I can confirm -again- the bug of "excluded interfaces" getting re-included after each "open-vpn" event.

It can be easily reproduced as simple as:
1- Exclude VPNC1 interface from automatic speed test interfaces
2- Stop your OVPN Client 1
3- Start again your OVPN Client 1
Done! There you get your VPNC1 included into automatic speed test interfaces again!!
 
Last edited:
@ExtremeFiretop
Testing again the proposed fix for the "excluded interfaces" bug, then reviewing again my rejected Pull Request's code change, especially now that I have a healthy instance of the script; I just found out that the proposed fix did indeed generate another bug instead of fixing the original bug, as commented by @Martinski yesterday.
The bug is deeper than I thought before. I'll do more troubleshooting to see if it's setup-related or a valid script bug.
 
OMG, I can't believe it!
It is a significant script bug that has been introduced in the latest stable version (4.4.14) and is still present right now in the development branch!

It literally resets interface states every time you have an OpenVPN going down or up. So, whatever interfaces you exclude from automatic speed tests in vesion 4.4.14, every time you have "openvpn-event" script executed by the system, spdMerlin calls for an interface states reset, hence re-including all excluded interfaces again!!!
This bug got extended to WireGuard clients in the development branch now, hoping it does not reach the stable branch!
@ExtremeFiretop @Martinski
 
Last edited:
OMG, I can't believe it!
It is a significant script bug that has been introduced in the latest stable version (4.4.14) and is still present right now in the development branch!

It literally resets interface states every time you have an OpenVPN going down or up. So, whatever interfaces you exclude from automatic speed tests in vesion 4.4.14, every time you have "openvpn-event" script executed by the system, spdMerlin calls for an interface states reset, hence re-including all excluded interfaces again!!!
This bug got extended to WireGuard clients in the development branch now, hoping it does not reach the stable branch!
@ExtremeFiretop @Martinski
I already have a fix for this bug in the latest 'develop' branch v4.4.15 version. Please retest using this very latest code.

Thanks.
 
I already have a fix for this bug in the latest 'develop' branch v4.4.15 version. Please retest using this very latest code.
Thank you.
Yes, this fixed the bug as I just tested bringing my VPNC1 down then up, twice. This is after updating to your pull request #47 to be specific for your records.
I'll stay on the "develop" branch for now waiting for a new stable release.
 
Release Notes for spdMerlin v4.4.15 production version now available
[2025-Nov-07]


1) FIXED: Modified code to better handle VPN client interfaces coming up while the 'startup' call is also executed during reboot. This fixes 2 intermittent issues: WebUI not getting mounted, and losing VPN client interface settings for automated speed tests.
[Thanks to @Ripshod for finding/reporting the bug, and for providing the critical logs from reboot that were needed to figure out the root cause of the problem].​

2) FIXED: Additional check for duplicate entries in the interface list.
[Thanks to @Ripshod for finding/reporting the bug]​

3) FIXED: Bug when parsing a Speedtest Server name that included parentheses, which caused the 'ServerName' and 'ServerID' database fields to be set incorrectly.
[Thanks to @cristian.ionica for finding/reporting the bug]​

4) IMPROVED: Whenever any WireGuard or OpenVPN client is set to enabled or disabled by the user from the built-in VPN WebUI tab, new code will update the corresponding interfaces in the configuration file for spdMerlin.

5) IMPROVED: Modified code to re-initialize global parameters after the USB-attached drive has been mounted and Entware is found.

6) IMPROVED: Cosmetic changes/improvements on the WebUI page to show preferred server entries that were longer than the width of the reserved space.

7) IMPROVED: More checks to clean up files when switching from JFFS to USB and vice versa.

8) IMPROVED: Added code to get "vpnclient" service events.

9) IMPROVED: Removed old Tomato JavaScript file references.

10) Miscellaneous improvements and fine-tuning.



The fork from @Jack Yaz's spdMerlin add-on is now hosted on the AMTM-OSR GitHub repo:
 
I don't know how I have not been credited for two of the changes in this latest production release...

Change #1:
and losing VPN client interface settings for automated speed tests.
I was the only one who reported the issue that resulted in this part of the change/fix. Additionally, although it is a high-importance issue, and causes users of the previous production release to lose their relevant script settings, releasing a new version was intentionally postponed, regardless of the settings loss I had, and raised warning for.
Refer to my own post #106 in this thread.
Still, @Ripshod reported the issue that resulted in the first part of the change indeed, and I have no credit for that whatsoever.

Change #7:
7) IMPROVED: More checks to clean up files when switching from JFFS to USB and vice versa.
I was the only one who raised concerns and the alert for remnant files/folders and their critical consequences, including complete data loss; as I had a lot of remnant files and folders in my JFFS script's folder, while having my script storage location switched to USB.
Additionally, in order to conclude and report this particular issue; I completely lost all my historic test results a few times before pin-pointing the bug after a lot of troubleshooting.
Refer to my own post #100 in this thread.

Not giving proper credit in this release is really upsetting to me, especially given all the circumstances around these bugs discovery.

[EDIT] Language and syntax improvements only.
 
Last edited:
I don't know how I have not been credited for two of the changes in the this latest release...

Change #1:

I was the only one who reported the issue that resulted in this part of the change. Additionally, although it is a high-importance issue, and causes users of the previous release to lose their script settings, releasing a new version was intentionally postponed, regardless of the settings loss I had, and raised the warning for it.
Refer to my own post #106 in this thread.
Still, @Ripshod reported the first part of the change indeed, and I got no credit for that.

Change #7:

I was the only one who raised the concerns and alert to remnant files/folders; as I had a lot of remnant files and folders in my JFFS script's folder, as I had my script storage location switched to USB in my setup and still had too many remnants.
Additionally, in order to conclude and report this particular issue; I completely lost all my historic test results a few times before pin-pointing the bug.
Refer to my own post #100 in this thread.

Not giving proper credit in this release is really upsetting to me, especially given all the circumstances around these bugs discovery.

@Tarek Yag

First, thank you sincerely for the time, testing, and detailed reports you’ve put into spdMerlin. None of that has gone unnoticed.

I can guarantee the missing credit in the notes isn’t intentional by @Martinski. I know due to the fact that forgetting to include credits happens with me as well on occasion.

The truth is between the multiple long add-on threads we handle, overlapping reports, and changes evolving over time, it’s unfortunately easy for specific posts to get buried, or lost when pulling together final notes. But that’s an explanation, not an excuse.

I agree the release notes should be updated to reflect your role in the VPN interface issue, and the JFFS/USB cleanup concerns.

You’ve been providing constructive feedback, and we genuinely appreciate it. Please don’t read the omission as anything personal. I read it as nothing more than a human miss in a busy cycle.

Thanks again for sticking with it and helping improve spdMerlin, for everyone.
 
None of that has gone unnoticed.
Glad to hear this. Nonetheless, I want to emphasize that I'm not waiting for anything in return of my efforts whatsoever, but as it is always the case in open-source software, credits are a very nice payback that keeps participation from everyone going on.

I can guarantee the missing credit in the notes isn’t intentional
I have no doubt that this wasn't intentional and never speculated about this in my previous post. No offence on this matter from my side.

The truth is between the multiple long add-on threads we handle, overlapping reports, and changes evolving over time, it’s unfortunately easy for specific posts to get buried, or lost when pulling together final notes. But that’s an explanation, not an excuse.
Thank you for explaining, and I totally understand the overall situation. But, if I think it again, improving remnant file/folder checks where it has been done in some of the most recent script releases, they were all done after my relevant report for spdMerlin, however, I didn't ask for the credit for those too, and will not, but this pisses me off more.
See my own post #94 in this thread.

I agree the release notes should be updated to reflect your role in the VPN interface issue, and the JFFS/USB cleanup concerns.
No need, and it would be too late. I just wanted to express my objection.

You’ve been providing constructive feedback, and we genuinely appreciate it. Please don’t read the omission as anything personal. I read it as nothing more than a human miss in a busy cycle.

Thanks again for sticking with it and helping improve spdMerlin, for everyone.
Thank you for your kind response and support. It's not personal at all, and I understand the case, no worries.
 
Last edited:
Hi there,

I'm running the latest spdMerlin - 4.4.15
I just loaded up the new beta - 3006.102.6 Beta 1
Despite the recent fixes, there was no WebUI for spdMerlin until I went into amtm and typed 'j4'.
Then, the following messages appeared in syslog and the WebUI was loaded.

Code:
12-Nov 10:32:34 AX spdMerlin_[10971]: Mounting WebUI tab for spdMerlin
12-Nov 10:32:34 AX spdMerlin_[10971]: Mounted spdMerlin WebUI page as user3.asp
 
Despite the recent fixes, there was no WebUI for spdMerlin until I went into amtm and typed 'j4'.
Then, the following messages appeared in syslog and the WebUI was loaded.
Initially, it appears that calling the script from inside AMTM triggered the related spdMerlin's startup checks and got the WebUI mounted on-demand.

If you want to troubleshoot this further more, please bear with me.
First make sure you're using the master branch version (not develop branch), and if you want to be more proactive in fixing this issue, you can proceed with making a forced update too, and then report back if you still have the same issue, preferably after a full router reboot, so that script developers start troubleshooting this with you immediately.

The currently used branch appears in the header of the script's command-line interface as in:
1762978812046.png

If you find your router not on the master branch, you can easily switch back using these two commands (as recommended by the developing team):
Code:
/jffs/scripts/spdmerlin stable
/jffs/scripts/spdmerlin forceupdate

If your router is already on the master branch, but you want to do a forced update proactively before doing more troubleshooting, you can either use the related option (uf) from inside the script's main menu, or execute the following command which both do the exact same process:
Code:
/jffs/scripts/spdmerlin forceupdate

I hope this helps!
 
Last edited:
My spdMerlin is already running the latest release from the Master branch...

Code:
################################################################
##                     _  __  __              _  _            ##
##                    | ||  \/  |            | |(_)           ##
##     ___  _ __    __| || \  / |  ___  _ __ | | _  _ __      ##
##    / __|| '_ \  / _  || |\/| | / _ \| '__|| || || '_ \     ##
##    \__ \| |_) || (_| || |  | ||  __/| |   | || || | | |    ##
##    |___/| .__/  \__,_||_|  |_| \___||_|   |_||_||_| |_|    ##
##         | |                                                ##
##         |_|                                                ##
##                  v4.4.15 on RT-AX88U_Pro                   ##
##                      [Branch: master]                      ##
##                                                            ##
##            https://github.com/AMTM-OSR/spdMerlin           ##
##      Forked from https://github.com/jackyaz/spdMerlin      ##
##                                                            ##
################################################################
 
It's strange as this latest stable release fixes this exact error.
The forceupdate option will make sure the latest files are installed correctly.
 
It's strange as this latest stable release fixes this exact error.
This is why I suggested doing a force update to make sure we are all on the same page or in the same boat.
I Just want to make sure, is the firmware version in your signature up-to-date? In other words, are you still on the same firmware version as the reported one with the issue?
The forceupdate option will make sure the latest files are installed correctly.
Yes, thank you for confirming this. I hope @alan6854321 does this as suggested.
 
OK, I did the forceupdate which resulted in the following two entries in syslog

Code:
12-Nov 21:00:13 AX spdMerlin_[1353]: Downloading latest version (v4.4.15) of spdMerlin
12-Nov 21:00:50 AX spdMerlin_[1353]: spdMerlin successfully updated

Then I rebooted but the results were the same, no WebUI.
I also checked crontab, and the two jobs spdMerlin_generate & spdMerlin_trimDB were not present.

I did the amtm -> j4, the two syslog entries appeared as I noted before and the two crontab jobs have now appeared.
 
OK, I did the forceupdate which resulted in the following two entries in syslog
Thank you for ruling out the first possible reason. Both log entries you reported are normal and they get logged at the same time they're shown on-screen in the command-line interface while updating the script.

Then I rebooted but the results were the same, no WebUI.
I also checked crontab, and the two jobs spdMerlin_generate & spdMerlin_trimDB were not present.

I did the amtm -> j4, the two syslog entries appeared as I noted before and the two crontab jobs have now appeared.
Now this gives enough information about your issue, and confirms the possible issue/bug.

I Just want to make sure, is the firmware version in your signature up-to-date? In other words, are you still on the same firmware version as the reported one with the issue?
@Ripshod, my question was for you. If you're still on the same firmware version (3006.102.6 Beta 1) as shown in your signature, would you please try to reproduce the issue now by simply rebooting?
I'll try to do so in an hour or so, and will report back here...
 
Just gone through 5 reboots - no error.
 

Similar threads

Latest threads

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