After been using MythTV for several years, I’m now looking for many different tunes etc – for saving power, use different remotes etc. So this is a little site to test all these small tweaks etc I’ve done through the time! After using many different setups I’m ended up with a system where I want access to all the time – No matter what – So what to do.
At this point I’ve fixed the following in my setup:
- Using less power by shuttingdown the MasterBackend.- OK
- Waking the MasterBackend up – when needed – OK
- Setting Wakeup time through Webinterface.
Since I’m using Dell PowerEdge (at the moment) for MBE – I cannot use the rtf for waking up the MasterBackend, since in my Dell – its only possible to use this feature within 24hours – so instead I did this:
Powersave on MasterBackEnd:
In mythtv-setup –> General settings, we need to set these settings under wake up :
- Block shutdown before client connected : unchecked
- Idle shutdown timeout (secs) : 1200 –> (20min)
- Max. wait for recording (min) : 120
- Startup before rec. (secs) : 600 –> (10min)
- Wakeup time format : time_t
- Command to set Wakeup Time : sudo su -c “/storage/scripts/backends/wakebackend.sh $time_t”
- Server halt command :sudo /sbin/shutdown -h now
- Pre Shutdown check-command : (empty)
For this to work we’ll need the script called /storage/scripts/backends/wakebackend.sh :
#!/bin/bash echo $2 > /tmp/wakeup.txt echo "shutdown from mythtv will wake up at $@" >> /var/log/mythtv/mythbackend.[0-9].[0-9].log scp /tmp/wakeup.txt email@example.com:/tmp/wakeup.txt
This script takes the wakeup time and put it into /tmp/wakeup.txt – and put it on our little wakeupmachine( evt. Router if running Linux) . Afterwards it’ll shutdown the MasterBackEnd (It self) and wait for a WOL package to wake it up.
On the other host:
Using crontab on this host – We’ll check /tmp/wakeup.txt for the time in there – so the script checks each 2 minute. The script is /scripts/check_wakeup.sh:
#!/bin/bash now11=`date "+%Y%m%d%H%M"` echo "checking for wake up at $now11" > /tmp/wakeup.log #now11=`date "+%s"` if [ ! -f /tmp/wakeup.txt ] then exit fi read wakeupat < /tmp/wakeup.txt if [ "$wakeupat" -lt "$now11" ] then /usr/bin/wakecore.sh rm /tmp/wakeup.txt echo "woke up mythtv $now11" >> /tmp/wakeup.log fi
If the time match – it called the next script /usr/bin/wakecore.sh:
Which send the WOLpackage and wake up the MasterBackEnd Server.
Using NFS shares from MasterBackEnd on the Frontends using powersaving:
This is only need if running a symlike system – with NFS-shares on the MBE, and using Powersaving like mine. This means the frontends are powered on – and sending the WOL package to the MBE using a init.d script – this normally means the FE are up and ready before the MBE are ready -. so the drives don’t get mounted (if using fstab) – So instead I did this:
on the Frontend created a script – /etc/init.d/wol
#! /bin/sh ### BEGIN INIT INFO # Provides: WOL Mythbackend # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: network # Should-Stop: network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop WOL-package to MBE ### END INIT INFO NAME="Wake Backendserver" PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="Waking up MBE using Wakeonlan" # MAC address of backend SERVER_MAC=b8:ac:6f:82:d2:73 # case "$1" in start) # Issue wakeonlan at intervals until our own network interface # is active and the magic packet is successfully sent. # until /usr/bin/wakeonlan $SERVER_MAC > /dev/null 2>&1 ; do sleep 1 done ;; *) esac exit 0
and add it for boot time :
chmod +x /etc/init.d/wol
Since I’m using fluxbox as desktop – I added a few lines in /home/myth/.fluxbox/startup:
#!/bin/sh # fluxbox startup-script: # # Lines starting with a '#' are ignored. # Change your keymap: xmodmap "/home/myth/.Xmodmap" # Applications you want to run with fluxbox. # MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END. # # unclutter -idle 2 & # wmnd & # wmsmixer -w & # idesk & # # Debian-local change: # - fbautostart has been added with a quick hack to check to see if it # exists. If it does, we'll start it up by default. which fbautostart > /dev/null if [ $? -eq 0 ]; then fbautostart fi # And last but not least we start fluxbox. # Because it is the last app you have to run it with ''exec'' before it. /usr/bin/mythfe.sh & exec fluxbox # or if you want to keep a log: # exec fluxbox -log "/home/myth/.fluxbox/log"
And then in the last point – we’re starting /usr/bin/mythfe.sh
#! /bin/bash # IP address of backend SERVER_IP=192.168.20.10 # SERVER_MAC=xx:xx:xx:xx:xx:xx # Could optionally send a wakeup packet here, if # a) it is decided that the early-running script above is not needed, or # b) to cover the rare case that backend was shutting down when first one sent # # Use mythTV status port as backend connectivity test until [ -n "`telnet $SERVER_IP 6544 |grep -i connected`" ]; do sleep 3 done # remove old logfiles rm -rf /var/log/mythtv/* # Mounting the different directories sudo sh -c "/bin/mount -t nfs 192.168.20.10:/data /storage/data" sudo sh -c "/bin/mount -t nfs 192.168.20.10:/music /storage/music" sudo sh -c "/bin/mount -t nfs 192.168.20.10:/pictures /storage/pictures" sudo sh -c "/bin/mount -t nfs 192.168.20.10:/records /storage/records" sudo sh -c "/bin/mount -t nfs 192.168.20.10:/movies /storage/movies" sudo sh -c "/bin/mount -t nfs 192.168.20.10:/scripts /storage/scripts" # Start mythfrontend mythfrontend --logpath /var/log/mythtv --verbose general --loglevel info --nodblog & exit 0
Then make sure that fluxboxare your primary desktop. I needed to logout and then choose fluxbox (between fluxbox,gnome,gnomedesktop). But thenit’ll actually wait until the MasterBackEnd is up and running- before it’ll try mount the NFS shares from MBE, and first then start mythfrontend – if needed without the different params for logging.
But that’s whats working for me(and the kids) and that makes me happy 🙂