The WRT1900ACv1 stock image ships an /etc/crontabs/root with these contents:
# mamba fan script runs once every five minutes
*/5 * * * * /sbin/fan_ctrl.sh
This used to work, but ever since I updated to 25.12 it no longer has any effect. I cranked the cron log level up as high as it will go and I see nothing helpful in the logs:
# uci set system.@system[0].cronloglevel="0"
# service cron restart
# ps w | grep [c]ron
5288 root 1132 S /usr/sbin/crond -f -c /etc/crontabs -l 0
# logread -f
Thu Jun 4 13:47:16 2026 cron.err crond[5288]: crond (busybox 1.37.0) started, log level 0
Thu Jun 4 13:48:00 2026 cron.err crond[5288]: wakeup dt=44
Thu Jun 4 13:49:00 2026 cron.err crond[5288]: wakeup dt=60
Thu Jun 4 13:50:00 2026 cron.err crond[5288]: wakeup dt=60
Thu Jun 4 13:51:00 2026 cron.err crond[5288]: wakeup dt=60
(...)
Running /sbin/fan_ctrl.sh manually from the shell prompt works fine (no errors, and the fan stops running full blast). Any idea what might be wrong here? I am really tired of listening to the fan noise but I don't want to just turn it off and leave it like that.
I was using the independent shell loop recipe from Logread, sbin/fan_ctrl.sh, wrt1900ac, dc502wrt - #2 by anomeome but owut erases that every time I run an update and I have to put it back, so if anyone knows how to make owut not do that, that'd be just as good an answer as one that fixes cron.
Edit your /etc/sysupgrade.conf and go the end of the file. Add etc/init.d/fan_control and usr/sbin/fan_monitor. Save the edited /etc/sysupgrade.conf. That should:
Thanks. Do I also need to mention the /etc/rc.d/S65fan_control link, or is that automatically preserved because it links to a preserved file or something like that?
I’m also seeing cron failure. In my case, the daily acme update [3 Jun 2026 at 12:00:00 AM SGT] cron.err: crond[2596]: USER root pid 21729 cmd /etc/init.d/acme renew [4 Jun 2026 at 12:00:00 AM SGT] cron.err: crond[2596]: USER root pid 30337 cmd /etc/init.d/acme renew [5 Jun 2026 at 12:00:00 AM SGT] cron.err: crond[2596]: USER root pid 6462 cmd /etc/init.d/acme renew
Ok, but in my case I am certain that the cron job is not actually getting run, because the fan keeps running at 100%. I think the cron-related log messages I'm getting with cron's internal log level cranked all the way up to 0,
Thu Jun 4 13:48:00 2026 cron.err crond[5288]: wakeup dt=44
Thu Jun 4 13:49:00 2026 cron.err crond[5288]: wakeup dt=60
Thu Jun 4 13:50:00 2026 cron.err crond[5288]: wakeup dt=60
Thu Jun 4 13:51:00 2026 cron.err crond[5288]: wakeup dt=60
mean that cron thinks it doesn't have anything to do. But the file /etc/crontabs/root exists, and it's part of the base system image, so someone other than me thought it would be honored... what gives?
Yesiree Bub, I figure you have encountered a fault in the BusyBox cron.
Just for giggles I set my Snapshot from "r34654+5-a302626ef4" (9-10 days ago) using this in my /etc/crontabs/root: */5 * * * * ntpdate 10.10.1.240 */5 * * * * logger -t "cron executed"
I also set up my WRT1900ACS AP running a down version Release with the same entries.
Here are my results from both:
Snapshot Build
Thu Jun 4 18:17:45 2026 cron.err crond[7211]: crond (busybox 1.37.0) started, log level 0
Thu Jun 4 18:18:00 2026 cron.err crond[7211]: wakeup dt=15
Thu Jun 4 18:19:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:20:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:21:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:22:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:23:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:24:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:25:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:26:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:27:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:28:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:29:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:30:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:31:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:32:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:33:00 2026 cron.err crond[7211]: wakeup dt=60
Thu Jun 4 18:40:00 2026 cron.err crond[7211]: wakeup dt=60
Down version Release Build
Thu Jun 4 18:32:15 2026 cron.err crond[5510]: crond (busybox 1.36.1) started, log level 5
Thu Jun 4 18:35:00 2026 cron.err crond[5510]: USER root pid 5547 cmd ntpdate 10.10.1.240
Thu Jun 4 18:35:00 2026 cron.err crond[5510]: USER root pid 5548 cmd logger -t "cron executed"
Thu Jun 4 18:40:00 2026 cron.err crond[5510]: USER root pid 5553 cmd ntpdate 10.10.1.240
Thu Jun 4 18:40:00 2026 cron.err crond[5510]: USER root pid 5554 cmd logger -t "cron executed"
Thu Jun 4 18:45:00 2026 cron.err crond[5510]: USER root pid 5567 cmd ntpdate 10.10.1.240
Thu Jun 4 18:45:00 2026 cron.err crond[5510]: USER root pid 5568 cmd logger -t "cron executed"
Thu Jun 4 18:50:00 2026 cron.err crond[5510]: USER root pid 5572 cmd ntpdate 10.10.1.240
Thu Jun 4 18:50:00 2026 cron.err crond[5510]: USER root pid 5573 cmd logger -t "cron executed"
Thu Jun 4 18:55:00 2026 cron.err crond[5510]: USER root pid 5577 cmd ntpdate 10.10.1.240
Thu Jun 4 18:55:00 2026 cron.err crond[5510]: USER root pid 5578 cmd logger -t "cron executed"
Thu Jun 4 19:00:00 2026 cron.err crond[5510]: USER root pid 5598 cmd ntpdate 10.10.1.240
Thu Jun 4 19:00:00 2026 cron.err crond[5510]: USER root pid 5599 cmd logger -t "cron executed"
BusyBox v1.37.0 (2026-05-29 11:11:15 UTC) built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt 25.12.4, r32933-4ccb782af7 Dave's Guitar
-----------------------------------------------------
# ls -la /etc/crontabs
drwxr-xr-x 1 root root 224 Dec 31 1969 .
drwxr-xr-x 1 root root 1936 May 13 18:42 ..
-rw-r--r-- 1 1000 1000 171 Jun 4 14:44 root
# ls -l /sbin/fan_ctrl.sh
-rwxr-xr-x 1 root root 753 May 13 18:42 /sbin/fan_ctrl.sh
Seeing that, I thought maybe crontabs files need to be owned by the user they apply to, so I did chown root:root /etc/crontabs/root, but that did not change anything.
No effect. The cron.update file was deleted the next time cron woke up, but it still believes it has nothing to do.
Thu Jun 4 22:41:00 2026 cron.err crond[12550]: wakeup dt=60
Thu Jun 4 22:42:00 2026 cron.err crond[12550]: wakeup dt=60
Thu Jun 4 22:43:00 2026 cron.err crond[12550]: wakeup dt=60
Thu Jun 4 22:44:00 2026 cron.err crond[12550]: wakeup dt=60
Thu Jun 4 22:45:00 2026 cron.err crond[12550]: wakeup dt=60
Thu Jun 4 22:46:00 2026 cron.err crond[12550]: wakeup dt=60
Curiously, however, I restarted cron again (to crank up the log level again) and now it's actually working!
Fri Jun 5 09:33:12 2026 cron.err crond[23804]: crond (busybox 1.37.0) started, log level 0
Fri Jun 5 09:33:12 2026 cron.err crond[23804]: user:root entry:(null)
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: user:root entry:(null)
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: wakeup dt=48
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: file root:
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: line logger -p user.warn "cron executed"
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: job: 0 logger -p user.warn "cron executed"
Fri Jun 5 09:34:00 2026 cron.err crond[23840]: child running /bin/ash
Fri Jun 5 09:34:00 2026 cron.err crond[23804]: USER root pid 23840 cmd logger -p user.warn "cron executed"
Fri Jun 5 09:34:00 2026 user.warn root: cron executed
Fri Jun 5 09:34:10 2026 cron.err crond[23804]: wakeup dt=10
Fri Jun 5 09:35:00 2026 cron.err crond[23804]: wakeup dt=50
Fri Jun 5 09:35:00 2026 cron.err crond[23804]: file root:
Fri Jun 5 09:35:00 2026 cron.err crond[23804]: line logger -p user.warn "cron executed"
Fri Jun 5 09:35:00 2026 cron.err crond[23804]: job: 0 logger -p user.warn "cron executed"
Fri Jun 5 09:35:00 2026 cron.err crond[23853]: child running /bin/ash
Fri Jun 5 09:35:00 2026 cron.err crond[23804]: USER root pid 23853 cmd logger -p user.warn "cron executed"
Fri Jun 5 09:35:00 2026 user.warn root: cron executed
Fri Jun 5 09:35:09 2026 cron.err crond[23901]: crond (busybox 1.37.0) started, log level 7
Fri Jun 5 09:36:00 2026 cron.err crond[23901]: USER root pid 23934 cmd logger -p user.warn "cron executed"
Fri Jun 5 09:36:00 2026 user.warn root: cron executed
Fri Jun 5 09:37:00 2026 cron.err crond[23901]: USER root pid 23955 cmd logger -p user.warn "cron executed"
Fri Jun 5 09:37:00 2026 user.warn root: cron executed
My best guess is that the problem was that root didn't own the file, and last night it didn't occur to me to restart the daemon after changing the file permissions, but restarting it for some other reason made it notice that root owns the file now.
If that's right, the bug is that busybox cron silently ignores non-root-owned files in /etc/crontabs even with the log level cranked up as far as it will go. It should instead log a warning message about ignoring each such file.