Kurioser eBay-Kauf

Mir ist heute was unglaubliches passiert.

Ich hab mir bei eBay für 2,49EUR Sofortkauf etwas gekauft. Versand inklusive.

Gekommen ist es dann in einem Luftpolsterumschlag mit einer hübschen Rechnung und die Sendung war mit 2,20EUR frankiert …

Was es alles gibt!

RTC-Wakeup für MythTV setzen

Erstaunlicherweise klappte der Wakeup ohne Probleme. Was nicht so ganz einfach war, war die MythTV-konfiguration.

Das Backend erlaubt die Einstellung von Idle-Zeiten und Kommandos zum Setzen der Weckzeit und dem Runterfahren des PCs. Hat das Backend nichts zu tun, kann es nach Ablauf der Idle-Zeit sich selbst herunterfahren und vorher noch eine Weckzeit setzen, zu der sich der PC selbst wieder starten soll. In der Theorie ist es einfach, in der Praxis aber wieder nicht.

Idle hat leider nicht funktioniert. Wenn man EIT konfiguriert hat, muss man eine Option setzen, dass der EIT-Update z.B. 11min später ausgeführt wird, nachdem das Backend in den Idle-Zustand gegangen ist. Der Idle-Timeout sollte kurz davor passieren, d.h. beispielsweise 10min. Der EIT-Update setzt nämlich den Idle-Counter zurück …

Das eingestellt, ging es trotzdem nicht. Es gab noch einen Housekeeping-Thread, der das Backend ständig aus dem Idlen geholt hat. Ich hab hierzu nichts gefunden.

Als Alternative gab es dann noch ein TurnOff-Script, das man statt den Einstellungen im Backend verwenden konnte. Es wird per Cronjob gestartet und macht diverse Checks. Unter anderem, ob das Backend idelt, oder ob NFS verwendet wird, ob User eingeloggt sind usw usf …

Das Problem war, dass wenn der Idle-Counter nicht richtig arbeitet, das Script auch nicht funktioniert.

Ich hab das Python-Script dann auseinandergenommen und hab mir selbst eins zusammengebaut, das alle 5min die Zeit der nächsten Aufnahme ermitteln und die Weckzeit auf diesen Wert stellt. So kann ich zumindest den PC runterfahren, wann ich will und kann mir sicher sein, dass dieser zur nächsten Aufnahme wieder aufgeweckt wird.

Hier ist es:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import os, sys, time
from logging.handlers import SysLogHandler
try:
    import MythTV
except Exception, e:
    print "Module MythTV not found"
    sys.exit(1)

offset_s = 4 * 60

def getNextRecording():
  myth = MythTV.MythBE()
  recordings = myth.getUpcomingRecordings()

  for recording in recordings:
    if recording.recpriority > -99:
      return recording.starttime
    else:
      log.info("Skipping recording '%s' at '%s' because it has too low priority (%d)", recording.title, recording.starttime, recording.recpriority)
  return None

def setWakeTime(l):
  fn = '/sys/class/rtc/rtc0/wakealarm'
  wakealarm = open(fn, 'w+')
  wakealarm.write(str(l)+"\n")
  wakealarm.close()

log = logging.getLogger()
log.setLevel(logging.INFO)
syslog = SysLogHandler(address='/dev/log')
formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s')
syslog.setFormatter(formatter)
log.addHandler(syslog)

date_time = str(getNextRecording())

if date_time == None:
  setWakeTime(0)
  log.info("No recording scheduled");
  sys.exit(0)
else:
  setWakeTime(0)
  pattern = '%Y-%m-%d %H:%M:%S'
  epoch = int(time.mktime(time.strptime(date_time, pattern)))
  log.info("Next scheduled recording at %s (%s)", date_time, epoch)
  epoch = epoch - offset_s
  date_new = time.strftime(pattern, time.localtime(epoch))
  log.info("Setting wakeup to %s (%s)", date_new, epoch)
  setWakeTime(epoch)

sys.exit(0)

Es versteht sich von selbst, dass das nur zusammengeschustert wurde und Sonderfälle nicht getestet wurden. Auch berücksichtigt es keine anderen System-Konfigurationen.

Erwähnenswert ist, dass ich die „Priorität -99“ Idee des Originalautors von TurnOff übernommen habe. Hat eine Aufnahme die Priorität -99, dann wird der Rechner nicht gestartet. Läuft er aber, wird die Sendung aufgenommen.

Zusätzlich hab ich in die /usr/share/themes/defaultmenu/mainmenu.xml noch hinzugefügt:

<button>
    <type>MENU_MY_SHUTDOWN</type>
    <text>Shutdown</text>
    <description>Shutdown PC</description>
    <action>EXEC sudo sh -c 'shutdown -h now'</action>
</button>

Nach dem Neustart der Frontends gibt es nun einen neuen Menupunkt „Shutdown“, mit dem man den Rechner runterfahren kann, wenn man ihn nicht mehr braucht.

Das ist gut genug …

Suspend to Ram/Disk (gelöst)

Na wer hätte es gedacht … In meiner 7jährigen Linux-Zeit hatte ich noch nie ein Mainboard, mit dem S3 oder S4 funktioniert hätte.

Optimistisch hab ich das mit meinem neuen Mainboard mal ausprobiert und festgestellt: Es geht nicht … Hängt sich nur auf, mehr nicht.

Überrascht war ich nicht … Das ist das große Problem an Linux. Es werden Funktionen eingebaut und die Oberfläche aufgepimpt, aber an grundlegenden Dingen krankt es einfach. Bei meiner letzten Ubuntu-Installation ging Audio wieder nicht. Mit Audio hatte ich mit Windows seit Win3.11 kein Problem mehr …

Ich würde mich freuen, wenn eine große Firma mit Willen, Manpower und Geld mal das Trauerspiel in die Hand nehmen würde. Ein Linux-Kernel-basiertes Betriebssystem bauen und unter der Haube richtig aufräumen. Ich hoffe, dass es Google mit ChromeOS schafft …

*update*: Diesmal scheint der fglrx-Treiber von AMD schuld zu sein.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/908268

*update2*: Es geht!
Es lag an meinen DVB-USB-Sticks. Ein kleines Suspend-Script, dass das mythtv-backend anhält und den DVB-Treiber entlädt, ermöglicht S3.

#!/bin/sh
case "$1" in 
 hibernate|suspend)
 stop mythtv-backend
 modprobe -r dvb_usb_dib0700
 ;;
 thaw|resume)
 modprobe dvb_usb_dib0700
 start mythtv-backend 
 ;;
 *) exit $NA
 ;;
esac

Das Script wird nach /etc/pm/sleep.d/50_dvb_usb_quirks kopiert. Quelle: http://forum.xbmc.org/showthread.php?tid=71490

Nun gehts ans RTC-Wakeup … Mal kucken, was da noch alles auf mich zukommt …