Und noch eine Erkenntnis:
Wenn man eine neue TrueType-Schriftart, die man auf der Platte hat, in der MythTV-Konfiguration auswählbar haben will, muss man die entweder im Verzeichnis /usr/share/mythtv haben oder aber eine symbolischen Link anlegen, bspw. habe ich das Ganze mit der schon installierten Liberation-Schriftart gemacht:
sudo ln -s /usr/share/fonts/truetype/ttf-liberation/LiberationSans-Regular.ttf /usr/share/mythtv/LiberationSans-Regular.ttf
Freitag, 31. Dezember 2010
Videotext in richtiger Größe
Schon ewig auf der TODO-Liste. Der Videotext bedeckte ungefähr nur ein Viertel des Fernsehers, war oben links zu sehen und damit eigentlich etwas zu klein. Habe mich heute mal im Quellcode ein wenig umgesehen. Ausgehend von der Datei avformatdecoder.cpp, die wir ja schon hier kennengelernt haben, bin ich über nuppelvideoplayer.cpp (sic!) auf die osd.cpp gekommen. Und was sehen da meine Augen in der Methode "InitTeletext" (Zeile 347)? Schöne hartverdrahtete Koordinatenwerte:
QRect area = QRect(20, 20, 620, 440);
Mal flugs geändert in:
QRect area = QRect(106, 60, 1067, 600);
Dann war zwar der Videotext größer, die Schrift sah aber auch etwas mickrig aus. Kein Wunder, wenn man ein paar Zeilen später im Quellcode auf diese Zeile stößt:
int fontsize = 440 / 26;
Habe ich dann geändert in:
int fontsize = 20;
Wie kommt man auf diese Koordinaten? Der Bildschirm ist 1280 x 720 groß. Ich wollte ursprünglich den ganzen Bildschirm bedecken, aber das kann man bei der Schrift vergessen (bei Videotext hat jeder Buchstabe diesselbe Breite). Ich hatte mich nun für 600 Pixel als Höhe entschieden, dadurch steht die Breite wegens des 16:9-Verhältnisses auch fest. Die X- und Y-Koordinaten errechnet man dann einfach dadurch, dass man das Fenster zentriert haben möchte. Bei der Fontsize habe ich dann ein wenig rumprobiert :-)
QRect area = QRect(20, 20, 620, 440);
Mal flugs geändert in:
QRect area = QRect(106, 60, 1067, 600);
Dann war zwar der Videotext größer, die Schrift sah aber auch etwas mickrig aus. Kein Wunder, wenn man ein paar Zeilen später im Quellcode auf diese Zeile stößt:
int fontsize = 440 / 26;
Habe ich dann geändert in:
int fontsize = 20;
Wie kommt man auf diese Koordinaten? Der Bildschirm ist 1280 x 720 groß. Ich wollte ursprünglich den ganzen Bildschirm bedecken, aber das kann man bei der Schrift vergessen (bei Videotext hat jeder Buchstabe diesselbe Breite). Ich hatte mich nun für 600 Pixel als Höhe entschieden, dadurch steht die Breite wegens des 16:9-Verhältnisses auch fest. Die X- und Y-Koordinaten errechnet man dann einfach dadurch, dass man das Fenster zentriert haben möchte. Bei der Fontsize habe ich dann ein wenig rumprobiert :-)
Donnerstag, 30. Dezember 2010
Neue Menüstruktur
Habe gerade das Hauptmenü von MythTV geändert :-) Ist supersimpel (wenn man ein wenig XML oder auch HTML kann): man muß nur die Datei mainmenu.xml im Verzeichnis /usr/share/mythtv/themes/defaultmenu editieren und kann dort nach Herzenslaune die Reihenfolge ändern. Außerdem habe ich noch einen Punkt hinzugefügt: Fernsehprogramm (geklaut ähem gecovert aus der Datei tv_schedule.xml). Dadurch sieht mein Hauptmenü jetzt folgendermaßen aus:
Fernsehen
Mediathek
Fernsehprogramm
Aufnahmen verwalten
CD/DVD
Informationen
Zubehör/Konfiguration
Leider ist ein Punkt nicht mehr sichtbar, so dass ein Scrollpfeil eingeblendet wird. Naja. Aber ich finde es superklasse, dass man das Programm selber anpassen kann!!!
Fernsehen
Mediathek
Fernsehprogramm
Aufnahmen verwalten
CD/DVD
Informationen
Zubehör/Konfiguration
Leider ist ein Punkt nicht mehr sichtbar, so dass ein Scrollpfeil eingeblendet wird. Naja. Aber ich finde es superklasse, dass man das Programm selber anpassen kann!!!
Aufwachen und einschlafen...
Schon fast das ganze Jahr über habe ich versucht, meinen Mythbuntu-Rechner dazu zu bewegen, automatisch zu starten, wenn eine Aufnahme ansteht und sich wieder abzuschalten, wenn nix zu tun ist. Ich bin nach diesem HOW-TO vorgegangen:
http://www.mythtv.org/wiki/ACPI_Wakeup
bin aber schon an dem Punkt "Manually test wakup" gescheitert - er fuhr zwar runter aber nicht wieder hoch *grmpff* Habe im BIOS probehalber alles eingeschaltet - aber es tat sich nix, außer einem schönen kleinen Nebeneffekt: Immer wenn ich nun den Schalter der Steckerleiste anschalte, fährt der Rechner automatisch hoch :-)
Irgendwann beim endlosen Recherchieren ("das muss doch gehen!") bin ich dann mal darauf gekommen, es mit "Standby" oder "Ruhezustand" auszuprobieren - dazu nicht mit shutdown den Rechner runterfahren, sondern mit pm-suspend bzw. pm-hibernate. Und es tat!!! Also gleich mal MythTV entsprechend dem Artikel eingerichtet.
Dumm ist nur, dass die Technotrend S2-3200 diese Modi nicht richtig unterstützt (beim Wiederhochfahren bekam das Backend keinen Lock auf irgendeinen Sender) - man muss beim hibernaten/suspenden (ich weiß, ein tolles Deutsch!) das Backend beenden und die Kernel-Module für die Karte entladen und das Ganz beim hochkommen vice versa. Dies hatte ich dann auch mit einem kleinen Skript in /usr/lib/pm-utils/sleep.d/ gelöst, welches diese Schritte enthielt und konnte selber den Rechner in den Winterschlaf schicken, er wachte zur nächsten Aufnahme auf - prima! Als ich dann allerdings probierte, dass das Backend selber entscheidet, ob es nix zu tun hat und sich dann runterfährt, blieb der Rechner mitten während des Hibernate stecken - da lief nix mehr!!! Ist im Nachhinein auch logisch, denn folgende Sachen passieren:
1. Backend entscheidet, dass es Zeit ist, herunterzufahren und ruft pm-hibernate auf.
2. pm-Hibernate ruft alle Skripte auf, die bei einem Hibernate etwas machen, darunter meins, was das Backend beenden will.
Und dabei kommt es zu einem Deadlock: Das Backend wartet darauf, das pm-hibernate sich beendet, während pm-hibernate darauf wartet, dass das Backend sich beendet. Kann ja nicht gutgehen...
Den Anfang einer Lösung habe ich hier gefunden (vielen Dank dafür!):
http://bml303.blogspot.com/2009/11/suspending-mythtv-backend.html
Hier wird vom Backend einfach nur ein Mini-Skript aufgerufen, welches ein upstart-event aufruft. Dann braucht man nur noch ein anderes Skript, was auf dieses event hin gestartet wird und das Backend beendet. Bei mir sehen die Skripte nun folgendermassen aus:
/etc/init/suspending.conf:
start on (suspending)
script
/etc/init.d/lirc stop
/etc/init.d/mysql stop
pm-hibernate
end script
/usr/lib/pm-utils/sleep.d/01mythtv:
#!/bin/bash
case "$1" in
suspend|hibernate)
;;
resume|thaw)
/etc/init.d/lirc start
/etc/init.d/mysql start
;;
*)
echo "Unhandled argument: $1"
;;
esac
/usr/bin/dosuspend.sh:
#!/bin/sh
initctl emit suspending
Zusätzlich habe ich in /etc/pm/config.d/00sleep_module die Module angegeben, die bei hibernate/suspend entladen und beim hochkommen wieder geladen werden sollen:
SUSPEND_MODULES="$SUSPEND_MODULES saa7146 budget_ci dvb-core budget-core lirc_dev lirc_i2c"
Bei den Modulen bin ich mir nicht ganz sicher, welche gebraucht werden und welche nicht, aber da es funktioniert, habe ich keinen Bock mehr, die Minimalkonfiguration herauszufinden.
Ach ja, auch sehr wichtig: über "sudo visudo" muss noch angegeben werden, welche Sachen der mythtv-User ausführen darf und da muss man alle Sachen angeben, die in den Skripten gemacht werden. Bei mir sieht die Zeile folgendermassen aus:
%mythtv ALL = NOPASSWD: /usr/bin/irexec, /usr/bin/dosuspend.sh, /usr/bin/killall, /sbin/shutdown, /bin/sh, /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend, /usr/bin/setwakeup.sh, /usr/bin/mythshutdown, /sbin/rmmod, /sbin/modprobe, /etc/init.d/lirc, /etc/init.d/mysql, /bin/sleep, /usr/bin/killall
You get the idea :-D
Dann hatte ich noch das Problem, dass der Rechner zu einer Aufnahme nicht aufwachen wollte. Ich habe vermutet, dass er mit der Zeit ein Problem hatte und lasse den Zeitstempel im Bakend-Setup nicht mehr von mythshutdown setzen, sondern von setwakeup.sh (im Format time_t) -genau wie es auch im Setup von Mythwelcome steht - klappt. Bei mir sehen die Einstellungen bei Mythwelcome so aus:
Backend-setup:
http://www.mythtv.org/wiki/ACPI_Wakeup
bin aber schon an dem Punkt "Manually test wakup" gescheitert - er fuhr zwar runter aber nicht wieder hoch *grmpff* Habe im BIOS probehalber alles eingeschaltet - aber es tat sich nix, außer einem schönen kleinen Nebeneffekt: Immer wenn ich nun den Schalter der Steckerleiste anschalte, fährt der Rechner automatisch hoch :-)
Irgendwann beim endlosen Recherchieren ("das muss doch gehen!") bin ich dann mal darauf gekommen, es mit "Standby" oder "Ruhezustand" auszuprobieren - dazu nicht mit shutdown den Rechner runterfahren, sondern mit pm-suspend bzw. pm-hibernate. Und es tat!!! Also gleich mal MythTV entsprechend dem Artikel eingerichtet.
Dumm ist nur, dass die Technotrend S2-3200 diese Modi nicht richtig unterstützt (beim Wiederhochfahren bekam das Backend keinen Lock auf irgendeinen Sender) - man muss beim hibernaten/suspenden (ich weiß, ein tolles Deutsch!) das Backend beenden und die Kernel-Module für die Karte entladen und das Ganz beim hochkommen vice versa. Dies hatte ich dann auch mit einem kleinen Skript in /usr/lib/pm-utils/sleep.d/ gelöst, welches diese Schritte enthielt und konnte selber den Rechner in den Winterschlaf schicken, er wachte zur nächsten Aufnahme auf - prima! Als ich dann allerdings probierte, dass das Backend selber entscheidet, ob es nix zu tun hat und sich dann runterfährt, blieb der Rechner mitten während des Hibernate stecken - da lief nix mehr!!! Ist im Nachhinein auch logisch, denn folgende Sachen passieren:
1. Backend entscheidet, dass es Zeit ist, herunterzufahren und ruft pm-hibernate auf.
2. pm-Hibernate ruft alle Skripte auf, die bei einem Hibernate etwas machen, darunter meins, was das Backend beenden will.
Und dabei kommt es zu einem Deadlock: Das Backend wartet darauf, das pm-hibernate sich beendet, während pm-hibernate darauf wartet, dass das Backend sich beendet. Kann ja nicht gutgehen...
Den Anfang einer Lösung habe ich hier gefunden (vielen Dank dafür!):
http://bml303.blogspot.com/2009/11/suspending-mythtv-backend.html
Hier wird vom Backend einfach nur ein Mini-Skript aufgerufen, welches ein upstart-event aufruft. Dann braucht man nur noch ein anderes Skript, was auf dieses event hin gestartet wird und das Backend beendet. Bei mir sehen die Skripte nun folgendermassen aus:
/etc/init/suspending.conf:
start on (suspending)
script
/etc/init.d/lirc stop
/etc/init.d/mysql stop
pm-hibernate
end script
/usr/lib/pm-utils/sleep.d/01mythtv:
#!/bin/bash
case "$1" in
suspend|hibernate)
;;
resume|thaw)
/etc/init.d/lirc start
/etc/init.d/mysql start
;;
*)
echo "Unhandled argument: $1"
;;
esac
/usr/bin/dosuspend.sh:
#!/bin/sh
initctl emit suspending
Zusätzlich habe ich in /etc/pm/config.d/00sleep_module die Module angegeben, die bei hibernate/suspend entladen und beim hochkommen wieder geladen werden sollen:
SUSPEND_MODULES="$SUSPEND_MODULES saa7146 budget_ci dvb-core budget-core lirc_dev lirc_i2c"
Bei den Modulen bin ich mir nicht ganz sicher, welche gebraucht werden und welche nicht, aber da es funktioniert, habe ich keinen Bock mehr, die Minimalkonfiguration herauszufinden.
Ach ja, auch sehr wichtig: über "sudo visudo" muss noch angegeben werden, welche Sachen der mythtv-User ausführen darf und da muss man alle Sachen angeben, die in den Skripten gemacht werden. Bei mir sieht die Zeile folgendermassen aus:
%mythtv ALL = NOPASSWD: /usr/bin/irexec, /usr/bin/dosuspend.sh, /usr/bin/killall, /sbin/shutdown, /bin/sh, /usr/sbin/pm-hibernate, /usr/sbin/pm-suspend, /usr/bin/setwakeup.sh, /usr/bin/mythshutdown, /sbin/rmmod, /sbin/modprobe, /etc/init.d/lirc, /etc/init.d/mysql, /bin/sleep, /usr/bin/killall
You get the idea :-D
Dann hatte ich noch das Problem, dass der Rechner zu einer Aufnahme nicht aufwachen wollte. Ich habe vermutet, dass er mit der Zeit ein Problem hatte und lasse den Zeitstempel im Bakend-Setup nicht mehr von mythshutdown setzen, sondern von setwakeup.sh (im Format time_t) -genau wie es auch im Setup von Mythwelcome steht - klappt. Bei mir sehen die Einstellungen bei Mythwelcome so aus:
Command to set wakeup time : sudo sh -c "/usr/bin/setwakeup.sh $time"
Wakeup time format : time_t
nvram-wakeup Restart command :
Command to restart : sudo shutdown -r now
Command to shutdown : sudo /usr/bin/pm-hibernate
Command to start the frontend : /usr/bin/mythfrontend
Backend-setup:
Block shutdown before client connected : unchecked
Idle shutdown timeout (secs) : 120
Max. wait for recording (min) : 15
Startup before rec. (secs) : 120
Wakeup time format : time_t
Command to set Wakeup Time : sudo sh -c "/usr/bin/setwakeup.sh $time"
Server halt command : sudo /usr/bin/dosuspend.sh
Pre Shutdown check-command : mythshutdown --check
Auf der Seite vorher
Bsckend-Leerlaufzeit vor EIT-Suche (Sek.): 120
Donnerstag, 2. Dezember 2010
HD-Patches
Wie schon geschrieben, sollte man eine VDPAU-fähige Grafikkarte sein eigen nennen, um vernünftig HD sehen zu können. Durch die folgenden zwei Bugreports hatte ich allerdings Hoffnung, auch ohne so eine zumindest in den Genuß von 720p-HD-Programmen wie Das Erste HD, ZDF HD schauen zu können:
http://code.mythtv.org/trac/ticket/7481
http://code.mythtv.org/trac/ticket/7522
Habe beide Fixes in meine 0.22-Version aufgenommen und kompiliert, viel gebracht hat es allerdings nicht :-(
http://code.mythtv.org/trac/ticket/7481
http://code.mythtv.org/trac/ticket/7522
Habe beide Fixes in meine 0.22-Version aufgenommen und kompiliert, viel gebracht hat es allerdings nicht :-(
Mittwoch, 1. Dezember 2010
Die richtige Startreihenfolge...
Manchmal kommt es vor, dass die Sachen nicht in der richtige Reihenfolge gestartet werden. Da kann es bei Systemstart schonmal vorkommen, dass sich das Frontend meldet mit der Meldung, ob denn das Backend nicht gestartet wurde? Doch wurde es, aber es war leider schneller als die MySQL-Datenbank und war dann beleidigt :-)
Man sollte also beide Sachen miteinander koppeln (zumindest, wenn man alle Sachen, also MySQL, Backend und Frontend, auf einer Maschine hat). Wie man das macht, habe ich hier gefunden:
http://bml303.blogspot.com/2009/11/suspending-mythtv-backend.html
Schonmal nicht schlecht. Allerdings kam es jetzt doch tatsächlich vor, dass das Frontend (bzw. Mythwelcome) schneller war als das Backend und MySQL, was sich dadurch bemerkbar macht, dass sich das Frontend im Standard-Theme meldet und ersteinmal die Sprache wissen möchte (es denkt also, es wäre der initiale Start auf diesem System und muss erstmal konfiguriert werden) *seufz* Wie also kann man dem System mitteilen, dass das Frontend bzw. Mythwelcome erst gestartet werden soll, wenn das Backend da ist? Die Lösung habe ich hier gefunden:
https://bugs.launchpad.net/ubuntu/+source/mythtv/+bug/470672/comments/11
Man muss nur dem GDM mitteilen, dass er erst starten darf, wenn das Backend soweit ist.
Bin mal gespannt, ob ich hoffentlich nie wieder das Frontend im Standard-Theme sehen muss... ;-)
Man sollte also beide Sachen miteinander koppeln (zumindest, wenn man alle Sachen, also MySQL, Backend und Frontend, auf einer Maschine hat). Wie man das macht, habe ich hier gefunden:
http://bml303.blogspot.com/2009/11/suspending-mythtv-backend.html
Schonmal nicht schlecht. Allerdings kam es jetzt doch tatsächlich vor, dass das Frontend (bzw. Mythwelcome) schneller war als das Backend und MySQL, was sich dadurch bemerkbar macht, dass sich das Frontend im Standard-Theme meldet und ersteinmal die Sprache wissen möchte (es denkt also, es wäre der initiale Start auf diesem System und muss erstmal konfiguriert werden) *seufz* Wie also kann man dem System mitteilen, dass das Frontend bzw. Mythwelcome erst gestartet werden soll, wenn das Backend da ist? Die Lösung habe ich hier gefunden:
https://bugs.launchpad.net/ubuntu/+source/mythtv/+bug/470672/comments/11
Man muss nur dem GDM mitteilen, dass er erst starten darf, wenn das Backend soweit ist.
Bin mal gespannt, ob ich hoffentlich nie wieder das Frontend im Standard-Theme sehen muss... ;-)
Samstag, 1. Mai 2010
Backup, Backup, Backup...
So, es ist mal an der Zeit, von meiner Systemfestplatte ein Backup zu machen. Man will ja nicht alles verlieren und die Platte an sich ist schon was älter. Habe dann festgestellt, dass die gängigen Backup-Programme von Linux ext4 (noch) nicht unterstützen. Juhu!
Dann aber doch noch herausgefunden, dass auf der SystemRescueCD das Programm fsarchiver drauf ist, was das können soll. Also, ISO heruntergeladen, auf CD gebrannt und von der CD gebootet. Dort sind folgende drei Schritte nötig (sda ist meine Systemfestplatte, sdb die andere):
a) mkdir /WD15
b) mount /dev/sdb1 /WD15
c) fsarchiver -v savefs /WD15/backup.fsa /dev/sda1
So, ab sofort ist nun der Plan, jeden Monat so ein Backup anzufertigen. Hoffentlich werde ich es nie brauchen...
Dann aber doch noch herausgefunden, dass auf der SystemRescueCD das Programm fsarchiver drauf ist, was das können soll. Also, ISO heruntergeladen, auf CD gebrannt und von der CD gebootet. Dort sind folgende drei Schritte nötig (sda ist meine Systemfestplatte, sdb die andere):
a) mkdir /WD15
b) mount /dev/sdb1 /WD15
c) fsarchiver -v savefs /WD15/backup.fsa /dev/sda1
So, ab sofort ist nun der Plan, jeden Monat so ein Backup anzufertigen. Hoffentlich werde ich es nie brauchen...
Donnerstag, 1. April 2010
Wartung des Systems
Hier übrigens meine Schritte zur Wartung des Systems:
1. DB-Optimierung (mag sein, dass ich hier Sachen doppelt mache):
/usr/share/doc/mythtv-backend/contrib/maintenance/optimize_mythdb.sh
mysqlcheck -r -u mythtv -pE6EG1CKu mythconverg
sudo su
sudo myisamchk -f /var/lib/mysql/mythconverg/*.MYI
2. Skript zum Entdecken und Löschen von Waisen (d.h. wenn man entweder in der MySQL-Datenbank Einträge hat, aber nicht auf der Festplatte oder umgekehrt):
/usr/share/doc/mythtv-backend/contrib/maintenance/myth.find_orphans.pl
3. Defragmentieren (ich benutze XFS als Dateisystem, da muss man das ab und zu machen):
sudo xfs_fsr -v -t 600
Die 600 ist die maximale Sekundenzahl, xfs_fsr hört also nach 10 Minuten spätestens auf.
1. DB-Optimierung (mag sein, dass ich hier Sachen doppelt mache):
/usr/share/doc/mythtv-backend/contrib/maintenance/optimize_mythdb.sh
mysqlcheck -r -u mythtv -pE6EG1CKu mythconverg
sudo su
sudo myisamchk -f /var/lib/mysql/mythconverg/*.MYI
2. Skript zum Entdecken und Löschen von Waisen (d.h. wenn man entweder in der MySQL-Datenbank Einträge hat, aber nicht auf der Festplatte oder umgekehrt):
/usr/share/doc/mythtv-backend/contrib/maintenance/myth.find_orphans.pl
3. Defragmentieren (ich benutze XFS als Dateisystem, da muss man das ab und zu machen):
sudo xfs_fsr -v -t 600
Die 600 ist die maximale Sekundenzahl, xfs_fsr hört also nach 10 Minuten spätestens auf.
Dienstag, 2. März 2010
Samba
Auf meinem Laptop hatte ich mit Samba schon gekämpft, bis ich es geschafft hatte, in unserem LAN Verzeichnisse freizugeben. Deshalb hatte ich mir hier etwas ähnlich Problematisches vorgestellt. Aber es war alles ganz einfach:
Im Mythbuntu Kontrollzentrum unter "Services" Samba eingeschaltet und dann unter "Applications" - "System" - "SharedFolders" die Verzeichnisse angegeben und den Namen der Domain/Workgroup angegeben. Fertig. Funktioniert. In solchen Momenten ist man einer vorgefertigten Distri wie Mythbuntu super dankbar. :-) Gut gemacht, Jungs und Mädels!
Im Mythbuntu Kontrollzentrum unter "Services" Samba eingeschaltet und dann unter "Applications" - "System" - "SharedFolders" die Verzeichnisse angegeben und den Namen der Domain/Workgroup angegeben. Fertig. Funktioniert. In solchen Momenten ist man einer vorgefertigten Distri wie Mythbuntu super dankbar. :-) Gut gemacht, Jungs und Mädels!
Mittwoch, 10. Februar 2010
Bootzeit
Bei Ubuntu gibt es ja das klare Ziel, die Bootzeit zu verringern. Und von Release zu Release wird es auch immer besser. Mir kam dann mal in den Sinn, den Bootvorgang der MythTV-Machine zu untersuchen, der kam mir schon recht lang vor (insbesondere, wenn man nach Hause kommt und fernsehen will). Habe dann bootchart installiert, um die Zeit zu messen und um zu sehen, wer denn da so lang braucht.
Der Bootvorgang braucht dann ca. 1:25 min + die Bootzeit des Computers selber! Uff! Nicht schlecht. Habe dann mal BUM (BootUp-MAnager) installiert, um alle nicht gebrauchten Dienste abzuschalten (waren allerdings nicht so viele).
Weitere Tipps kamen dann von dieser Seite: http://wiki.ubuntuusers.de/Tuning, umgesetzt habe ich das Abschalten von Textkonsolen (habe jetzt nur noch eine, bringt aber für die Performance praktisch nix), das Einstellen der Swapiness (von 60 auf 10, brachte auch kaum was) und das installieren von ureadahead. Und das brachte was! ureadahead liest alle Dateien, die für den weiteren Bootvorgang gebraucht werden, in den Arbeitsspeicher ein, damit die dann startenden Programme nicht alle auf die Platte zugreifen müssen. Und obwohl ureadahead prinzipiell auf meiner Kiste 12 Sekunden benötigt für das Einlesen, hat es den Bootvorgang um ca. 20 Sekunden beschleunigt!!!!! Bin also jetzt bei ca 1:05 Bootzeit und recht zufrieden damit.
Ach ja: ich habe den I/O-Scheduler noch von cfg auf deadline umgestellt, weil dieser ein besserer Scheduler für eine Mysql-Umgebung sein soll. Gemerkt habe ich allerdings nicht viel.
Der Bootvorgang braucht dann ca. 1:25 min + die Bootzeit des Computers selber! Uff! Nicht schlecht. Habe dann mal BUM (BootUp-MAnager) installiert, um alle nicht gebrauchten Dienste abzuschalten (waren allerdings nicht so viele).
Weitere Tipps kamen dann von dieser Seite: http://wiki.ubuntuusers.de/Tuning, umgesetzt habe ich das Abschalten von Textkonsolen (habe jetzt nur noch eine, bringt aber für die Performance praktisch nix), das Einstellen der Swapiness (von 60 auf 10, brachte auch kaum was) und das installieren von ureadahead. Und das brachte was! ureadahead liest alle Dateien, die für den weiteren Bootvorgang gebraucht werden, in den Arbeitsspeicher ein, damit die dann startenden Programme nicht alle auf die Platte zugreifen müssen. Und obwohl ureadahead prinzipiell auf meiner Kiste 12 Sekunden benötigt für das Einlesen, hat es den Bootvorgang um ca. 20 Sekunden beschleunigt!!!!! Bin also jetzt bei ca 1:05 Bootzeit und recht zufrieden damit.
Ach ja: ich habe den I/O-Scheduler noch von cfg auf deadline umgestellt, weil dieser ein besserer Scheduler für eine Mysql-Umgebung sein soll. Gemerkt habe ich allerdings nicht viel.
Montag, 25. Januar 2010
Videotext
Der Videotext tat es auch nicht, zumindest meistens nicht. Und wenn, dann gab es soviele Sonderzeichen auf der Seite, dass man nix erkennen konnte. Lösung war eine kleine Neukompilierung einer Library von MythTV, Anleitung siehe hier: http://forum.ubuntuusers.de/topic/mythtv-mythbuntu-teletext-und-teletext-untert/#post-2373252
Leider ist die dort verlinkte Seite nicht mehr gültig, so dass ich nicht mehr weiß, wie man MythTV kompilieren muss (bzw. wie man das configure am besten aufruft) :-( Außerdem war ich zu feige, um das komplette MythTV auszutauschen - habe alss nicht "sudo make install" am Ende aufgerufen, sondern nur die entsprechende lib ausgetauscht.
Jetzt funktioniert der Videotext auf jeden Fall, leider ist er relativ klein, bedeckt nur ca. 1/4 des kompletten Bildschirms. Insgesamt muß ich aber sagen, daß sich mit Videotext entweder niemand groß beschäftigt oder aber es funktionieren bei allen anderen ohne Probleme. Man findet nämlich kaum Sachen im Internet dazu. :-(
Leider ist die dort verlinkte Seite nicht mehr gültig, so dass ich nicht mehr weiß, wie man MythTV kompilieren muss (bzw. wie man das configure am besten aufruft) :-( Außerdem war ich zu feige, um das komplette MythTV auszutauschen - habe alss nicht "sudo make install" am Ende aufgerufen, sondern nur die entsprechende lib ausgetauscht.
Jetzt funktioniert der Videotext auf jeden Fall, leider ist er relativ klein, bedeckt nur ca. 1/4 des kompletten Bildschirms. Insgesamt muß ich aber sagen, daß sich mit Videotext entweder niemand groß beschäftigt oder aber es funktionieren bei allen anderen ohne Probleme. Man findet nämlich kaum Sachen im Internet dazu. :-(
Samstag, 23. Januar 2010
Tuning
Immer wieder gibt es bei uns Ruckler im Bild. Das kommt daher, dass irgendwann die Synchronisierung von Ton und Bild nicht mehr passt und dann ein wenig vom Bild weggeschnitten wird - ein Sprung eben. Deswegen mußte ich mich mal ein wenig mit der Performance des Systems auseinandersetzen.
Prinzipiell können diese Buffer overruns (so heißen dann die Meldungen im Frontend-log) an sehr vielen Sachen liegen. Letztendlich muss beim Fernsehen das Backend die Infos der TV-Karte auf die Platte schreiben und das Frontend von der Platte lesen und das Mpeg2-Format dekodieren und anzeigen. Als erstes habe ich mich auf diesen Artikel gestürzt: http://www.mythtv.org/wiki/Optimizing_Performance
Ausprobiert habe ich von diesem Artikel die Realtime Threads und ein Rumprobieren mit den Wiedergabeprofilen (Playback Profiles) im Setup des Frontends. Außerdem habe ich eine neue schnelle Festplatte (eine Western Digital mit 1,5TB) gekauft, war ein Tipp aus einem Forum. Nun liegt das eigentliche System auf der älteren 80GB-Platte, während die Aufnahmen auf der neuen, schnelleren Platte landen. Solch eine Architektur ist auch aus Backup-Gründen zu empfehlen. Zuerst habe ich dort auch das ext4-Dateisystem gewählt, bin aber auf XFS umgestiegen (weil es dafür auch in dem verlinkten Artikel viele Tipps zu gab und es früher wohl auch die Standardempfehlung war). XFS kann von der Performance her gut mit großen Dateien umgehen, daher wollte ich es mal ausprobieren. Ob es wirklich was geholfen hat, kann ich allerdings nicht wirklich sagen. Ich könnte mir vorstellen, dass XFS schon besser für MythTV-Aufnahmen als ext3 ist, aber ext4 schien mir da genausogut zu sein. Naja, egal, jetzt war es eh schon drauf :-)
Was es jetzt von den ganzen Sachen wirklich gebracht hat, kann ich gar nicht sagen, ich würde auf die neue Festplatte und die Wiedergabeprofile (ich habe CPU+ genommen) tippen. Der absolute Königsweg ist aber wahrscheinlich, eine Grafikkarte mit VDPAU-Unterstützung zu haben (eine nvidia-Technik, die es erlaubt, Dekodierungsarbeit von der CPU auf die Grafikkarte abzuwälzen), hier eine Übersicht von Karten, die das können: http://www.mythtv.org/wiki/VDPAU#Supported_Cards
Mit VDPAU kann man dann auch HD schauen, ohne eine leistungsfähige CPU zu besitzen, bei mir ruckeln die entsprechenden Sender :-(
PS: Ach ja, noch ne Performance-Seite: http://www.mythtv.org/wiki/Troubleshooting:Prebuffering_pause
Prinzipiell können diese Buffer overruns (so heißen dann die Meldungen im Frontend-log) an sehr vielen Sachen liegen. Letztendlich muss beim Fernsehen das Backend die Infos der TV-Karte auf die Platte schreiben und das Frontend von der Platte lesen und das Mpeg2-Format dekodieren und anzeigen. Als erstes habe ich mich auf diesen Artikel gestürzt: http://www.mythtv.org/wiki/Optimizing_Performance
Ausprobiert habe ich von diesem Artikel die Realtime Threads und ein Rumprobieren mit den Wiedergabeprofilen (Playback Profiles) im Setup des Frontends. Außerdem habe ich eine neue schnelle Festplatte (eine Western Digital mit 1,5TB) gekauft, war ein Tipp aus einem Forum. Nun liegt das eigentliche System auf der älteren 80GB-Platte, während die Aufnahmen auf der neuen, schnelleren Platte landen. Solch eine Architektur ist auch aus Backup-Gründen zu empfehlen. Zuerst habe ich dort auch das ext4-Dateisystem gewählt, bin aber auf XFS umgestiegen (weil es dafür auch in dem verlinkten Artikel viele Tipps zu gab und es früher wohl auch die Standardempfehlung war). XFS kann von der Performance her gut mit großen Dateien umgehen, daher wollte ich es mal ausprobieren. Ob es wirklich was geholfen hat, kann ich allerdings nicht wirklich sagen. Ich könnte mir vorstellen, dass XFS schon besser für MythTV-Aufnahmen als ext3 ist, aber ext4 schien mir da genausogut zu sein. Naja, egal, jetzt war es eh schon drauf :-)
Was es jetzt von den ganzen Sachen wirklich gebracht hat, kann ich gar nicht sagen, ich würde auf die neue Festplatte und die Wiedergabeprofile (ich habe CPU+ genommen) tippen. Der absolute Königsweg ist aber wahrscheinlich, eine Grafikkarte mit VDPAU-Unterstützung zu haben (eine nvidia-Technik, die es erlaubt, Dekodierungsarbeit von der CPU auf die Grafikkarte abzuwälzen), hier eine Übersicht von Karten, die das können: http://www.mythtv.org/wiki/VDPAU#Supported_Cards
Mit VDPAU kann man dann auch HD schauen, ohne eine leistungsfähige CPU zu besitzen, bei mir ruckeln die entsprechenden Sender :-(
PS: Ach ja, noch ne Performance-Seite: http://www.mythtv.org/wiki/Troubleshooting:Prebuffering_pause
Freitag, 15. Januar 2010
Fernbedienung
Da man ja nicht mit der Tastatur fernsehen will und bei der S2-3200 eh eine Fernbedienung dabei war, galt es nun, diese einzurichten. Dieser Kampf hat mich insgesamt ca. 2 Wochen gekostet und ich war auch nahe davor aufzugeben. Egal. Ausgangspunkt war dieser Artikel im Ubuntuuser-Wiki: http://wiki.ubuntuusers.de/lirc . Folgende Schritte sind nötig, um die FB unter Mythbuntu 9.10 zum Laufen zu bringen:
PS: Es gab während der Zeit schon lustige Effekte (zumindest von der heutigen Sichtweise - damals fand ich es nicht ganz so witzig): Wenn man das mit der HAL nicht weiß, dann klaut diese Schicht die Signale der FB und versucht diese zu interpretieren. Das Ergebnis war bei mir, dass nur wenige Tasten funktioniert haben, u.a. die Nummern-Tasten, allerdings versetzt um den Faktor 2. Wenn man also die "1" drückte, machte die HAL eine "3" daraus! ;-)
- Zuerst muß die HAL dazu gebracht werden, die FB zu ignorieren. Dazu muss in der Datei /usr/share/hal/fdi/preprobe/20thirdparty/lirc.fdi dieses zusätzliche Device eingetragen werden:
<device>
<match key="info.product" contains_ncase="Budget-CI dvb ir receiver saa7146">
<merge key="info.ignore" type="bool">true</merge>
</match>
<device> - Dann muß das V4L-DVB-Modul des Kernels um eine Zeile Code ergänzt und kompiliert werden. Details finden sich unter http://forum.ubuntuusers.de/topic/tote-tasten-auf-meiner-fernbedienung-tt-s2-32. Das liegt daran, dass Technotrend teilweise ältere FBs mit der S2-3200 ausliefert. Wenn man diesen Schritt nicht macht, hat man Tasten auf der FB, die nicht funktionieren und das Syslog mit Meldungen der Art "Unknown Key" vollmüllen.
- Mit inputlirc habe ich zwar etwas rumgespielt, aber nur bevor ich den Schritt 2 entdeckt habe. Kann also sein, dass man nur noch inputlirc installieren muss und glücklich ist. Ich bin aber den manuellen Weg gegangen; so schwer bzw. aufwendig ist der auch nicht. Also: inputlirc deinstallieren (wenn nötig), den Lirc-Dämon stoppen ( sudo /etc/init.d/lirc stop), eine hardware.conf in /etc/lirc erstellen/anpassen. Dafür muss man mit cat /proc/bus/input/devices herausbekommen, welches event die FB ist (bei mir war es event5), so dass das Verzeichnis, an dem die Signale ankommen, /dev/input/event5 ist. Also, einfach die hardware.conf und die lircd.conf aus dem Thread von Schritt 2 nehmen und in der hardware.conf das event an das eigene anpassen.
- Mit "irw" testen, ob alle Tasten funktionieren. Wenn nicht, muss man die FB selber anlernen. Dabei hilft das Programm irrecord. Der Aufruf könnte bspw. lauten: "sudo irrecord -H devinput -d /dev/input/event5 /etc/lirc/lircd.conf". Dabei muss man den Tasten Namen geben (z.B. KEY_VOLUME_UP) und dann die entsprechende Taste auf der FB drücken.
- Aus dem Thread in Schritt 2 die mythtv-Datei nehmen, in /home/USERNAME/.lirc kopieren und Lirc wieder starten: "sudo /etc/init.d/lirc start".
- Im MythTV-Frontend in die Konfiguration gehen und in den allgemeinen Einstellungen bei LIRC-Server-Socket /var/run/lirc/lircd eingeben (ist so in der hardware.conf eingestellt). Anschließend sollte man die FB in MythTV nutzen können.
- Zusätzlich sollte noch irexec -d bei jedem Systemstart gestartet werden: "Applications" - "Einstellungen" - "Sitzung und Startverhalten". In der mythtv-Datei gibt es nämlich einen Eintrag, der beim Drücken der "Power"-Taste der FB den Rechner herunterfährt. :-)
PS: Es gab während der Zeit schon lustige Effekte (zumindest von der heutigen Sichtweise - damals fand ich es nicht ganz so witzig): Wenn man das mit der HAL nicht weiß, dann klaut diese Schicht die Signale der FB und versucht diese zu interpretieren. Das Ergebnis war bei mir, dass nur wenige Tasten funktioniert haben, u.a. die Nummern-Tasten, allerdings versetzt um den Faktor 2. Wenn man also die "1" drückte, machte die HAL eine "3" daraus! ;-)
Abonnieren
Kommentare (Atom)