Watchdog
What is Watchdog
Watchdog reboots the Apple TV it if the GUI isn't running.
How to disable Watchdog
Yet another failed attempt:
pmset autorestart 0 pmset -g System-wide power settings: SleepDisabled 1 Active Profiles: AC Power -1* Currently in use: disksleep 0 hibernatemode 0 displaysleep 0 powerbutton 0 sleep 0 autorestart 0 hibernatefile /var/vm/sleepimage
Apparently BackRow.framework tells Watchdog that "we are up and running":
strings /System/Library/PrivateFrameworks/BackRow.framework/Versions/A/BackRow (...) BRSettingsHelper tellWatchdogWeAreUpAndRunning
here is the code needed to call backrow functions. Note you must add the backrow framework to your project.
//BRSettingsHelper.h #import <Cocoa/Cocoa.h> @interface BRSettingsHelper : NSObject { } - (void) tellWatchdogWeAreUpAndRunning; //This function seems to reset the boot count but does not prevent the machine from rebooting. - (void) reboot; @end
And now to test it:
#import <Cocoa/Cocoa.h> #include "BRSettingsHelper.h" int main(int argc, char *argv[]) { BRSettingsHelper * test = [[BRSettingsHelper alloc] init]; [test reboot]; return NSApplicationMain(argc, (const char **) argv); }
Note that to get this to work, the app had to be run as root.
There is also the key:
_kRUIAutoRestartIntervalKey
which is probably used in one of:
-[RUIPreferences boolForKey:]
-[RUIPreferences boolForKey:withValueForMissingPrefs:]
-[RUIPreferences canSetPreferencesForKey:]
-[RUIPreferences descriptionForKey:]
-[RUIPreferences floatForKey:]
-[RUIPreferences integerForKey:]
-[RUIPreferences objectForKey:]
-[RUIPreferences setBool:forKey:]
-[RUIPreferences setFloat:forKey:]
-[RUIPreferences setInteger:forKey:]
-[RUIPreferences setObject:forKey:]
-[RUIPreferences stringForKey:]
This seems to indicate that the auto reboot interval is stored as a key somewhere. I don't know if this is simply used for the Finder.app or if there is something else on the system that will use this.
SettingsHelper has a reference to "/sbin/shutdown -r now"
Symlinking /sbin/shutdown to /usr/bin/true makes the shutdown command do nothing
Background information
This Apple document about Watchdog may shed some light:
http://docs.info.apple.com/article.html?artnum=106588&coll=cp (However, on the Apple TV, there is no /etc/watchdog.conf, other than what this document is saying)
Watchdog is not used in Mac OS X 10.4: look at launchd. This is referring to a software watchdog and is probably unrelated to the rebooting problem.