Produnis

uninteressant – aber wahr

Impressum

Archiv für Januar 2010

ALT: SUSPEND unterbinden wenn Musik spielt

Geschrieben am: 30.01.2010 von produnis

Die hier vorgestellte Methode funktioniert bei mir momentan nicht. Bitte lest euch meine Alternative Vorgehensweise durch!!!

Mein Hörspielserver kann fast alles so, wie ich es gerne hätte. Was noch fehlt, ist eine Funktion, die den Suspend unterbindet wenn Musik abgespielt wird. Rhythmbox und Amarok machen das schon von Haus aus, aber ich möchte lieber Songbird nutzen.

Es muss also ein Script her, welches abfragt, ob derzeit etwas über die Lautsprecher geht. Da ich Ubuntu benutze (derzeit 9.10), ist standardmäßig pulseaudio installiert. Hierfür gibt es nun eine recht einfache Methode, um den “Boxenstatus” auszulesen. Man gibt einfach ins Terminal ein:

pactl list | grep RUNNING

Wird gerade etwas abgespielt, meldet der Befehl “RUNNING” zurück. Wird nichts abgespielt, so bleibt die Rückmeldung leer.

Für meine Zwecke habe ich dieses Skript von Thelasko etwas umgebogen. Bei mir heisst es nun no.suspend.sh, liegt in meinem Scriptordner und hat folgenden Inhalt:

#!/bin/bash

# cleanup any bad state we left behind if the user exited while flash was running
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true

turn_it_off=0
sleepcomputer0=`gconftool-2 -g /apps/gnome-power-manager/timeout/sleep_computer_ac`
sleepdisplay0=`gconftool-2 -g /apps/gnome-power-manager/timeout/sleep_display_ac`

a=0
while true; do
        sleep 1
        SS_off=0

        # check if sound is sent to speaker
        if pactl list | grep RUNNING > /dev/null; then
                echo "Sound $a"
                SS_off=1
                a=$((a+1));
        else
                echo "Stille $a"
                a=$((a+1));
        fi

        # read current state of screensaver
        ss_on=`gconftool-2 -g /apps/gnome-screensaver/idle_activation_enabled`

        # change state of screensaver as necessary
        if [ "$SS_off" = "1" ] && [ "$ss_on" = "true" ]; then
                gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool false
                gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_computer_ac --type int 0
                gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_display_ac --type int 0
                turn_it_off=1
        elif [ "$SS_off" = "0" ] && [ "$ss_on" = "false" ] && [ "$turn_it_off" = "1" ]; then
                gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true
                gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_computer_ac --type int $sleepcomputer0
                gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_display_ac --type int $sleepdisplay0
                turn_it_off=0
        fi
done

Der Eintrag für “sleep” ist mit “1″ etwas eng (jede Sekunde wird die Überprüfung durchgeführt), ist aber zum debuggen ganz gut.

Songbird
Songbird hat leider die Eigenschaft, den Status weiterhin auf “RUNNING” zu belassen, auch wenn die Musik auf “Pause” steht. Nur ein wirklicher “Stop” ändert den Status. Dies ist zB der Fall, wenn die Wiedergabeliste ihr Ende erreicht hat. Leider gibt es unter Songbird keine “Stop”-Taste. Hierfür existiert aber ein Add-On, welches an die aktuelle Songbird-Version wie folgt angepasst werden muss:

Wenn man nun die Musik mit der Stop-Taste stoppt, dann erkennt das unser Script.

Gepostet in Ubuntu, ubuntuusers | 2 Kommentare »

ifupdown (eth0) loswerden

Geschrieben am: 24.01.2010 von produnis

Irgendwie hab ich meine Konfiguration so zerschossen, so dass meine Netzwerkkarte nicht mehr wirklich will. Über WLAN hab ich eine super Verbindung, aber wenn ich ein Kabel in den Ethernet-Port stecke, wird keine Verbindung aufgebaut. Im GNOME-Network-Manager ist für die Kabelverbindung nur der Modus ifupdown (eth0) verfübar und lässt sich nicht zurück auf Auto eth0 ändern.

Des Rätsels Lösung:
1. Die Datei /etc/network/interfaces benötigt bei mir nur diesen Eintrag:

auto lo
iface lo inet loopback

2. Die Datei /etc/NetworkManager/nm-system-settings.conf erhält folgenden Inhalt:

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

Nach einem Neustart funktioniert wieder alles wie gewohnt.

(via)

Gepostet in Ubuntu, ubuntuusers | Keine Kommentare »

Eine kleine Servergeschichte

Geschrieben am: 24.01.2010 von produnis

Mein alter Hörspielserver, ein eMac G4, geht nun in Rente, und so brauchte ich Ersatz.

Die Aufgabe des Servers besteht darin, MP3-Dateien abzuspielen und CDs zu rippen.
Gesteuert wird er über das Netzwerk per VNC und FreeNX.
Im Leerlauf soll der Server in den Ruhezustand fahren. Per Wake on LAN wird er dann bei Bedarf wieder aufgeweckt.

Folgende Hardware kommt zum Einsatz:

Mit einem Mini-Tower kostet die Hardware beim Laden um die Ecke ca 280,-.
Als System wird ein frisches Ubuntu Karmic Koala 32bit verwendet. Dieses hab ich von CD aus installiert. Da der Server keinen graphischen Schnick-Schnack machen muss, benutze ich keine proprietären Grafiktreiber (auf dem Board sitzt eine GeForce 7025 mit nForce 630a Chip. Ich hab hier gelesen, dass bei Verwendung der NVIDIA-Treiber evtl. noch ein BIOS-Update durchgeführt werden muss. Da hatte ich keine Lust drauf).

Systemeinrichtung

Scriptordner
Eigentlich habe ich auf so ziemlich jedem System meinen eigenen Scriptordner. Logisch also, dass auch der Hörspielserver einen bekommt. Ich erstelle daher einen eigenen bin/-Ordner im home-Verzeichnis:

cd ~
mkdir bin
chmod 744 bin

Damit auch alle Dateien des Verzeichnisses von “überall” in der Konsole aufgerufen werden können, muss noch der PATH entsprechend angeglichen werden. Hierzu editiert man im Homeverzeichnis die Datei .bashrc um folgenden Inhalt:

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/produnis/bin

Hierbei müsst ihr auf eurem System natürlich das “produnis” gegen euren Benutzernamen tauschen.

Wenn die Datei gespeichert wurde, müsst ihr euch einmal aus der Konsole aus- und wieder einloggen. Ab jetzt können alle Scripte im /home/BENUTZER/bin-Verzeichnis ohne ./ vorweg aufgerufen werden.

 
 
Wake on Lan
Damit Wake on LAN (WOL) funktioniert, muss zunächst im BIOS des Boards diese Funktion aktiviert werden. Ist das System wieder hochgefahren, muss das Paket ethtool installiert werden, z.B. per

sudo apt-get install ethtool

Mein Server besitzt nur die On-Board-Netzwerkkarte (eth0). Über diese Karte soll der Server per “Magic Package” geweckt werden. Um diese Funktion zu aktivieren gibt man ein:

sudo ethtool -s eth0 wol g

Damit diese Funktion auch beim Systemstart automatisch zur Verfügung steht, öffnet man die Datei /etc/rc.local und trägt den Befehl dort über dem “exit 0“-Eintrag ein.
Das sieht bei mir so aus:

#!/bin/sh -e
#
# (...)
#
# By default this script does nothing.
sleep 5
ethtool -s eth0 wol g
exit 0

Standardmäßig wird die Netzwerkkarte beim Herunterfahren deaktiviert, so dass sie keine Packages im Ruhezustand annehmen kann. Um dies zu verhindern, muss in der Datei /etc/init.d/halt der Eintrag NETDOWN=yes geändert werden in NETDOWN=no

Auf meinem Server funktioniert nun WOL ohne Probleme.

 
 
VNC
Der Server besitzt keinen eigenen Monitor, und überhaupt soll er hauptsächlich über das LAN, also per VNC oder FreeNX gesteuert werden. Ich persönlich finde vino (Ubuntus Standard-VNC-Server) nicht so dolle, und daher installiere ich mir lieber x11vnc:

sudo apt-get remove vino
sudo apt-get install x11vnc

Damit nicht jeder aus meinem Heimnetz den Server ansteuern kann (es soll Leute geben, die Die drei ??? nicht mögen, und daher lieber auf Point Whitmark umschalten! Frechheit!), hinterlege ich ein VNC-Passwort.
Im Terminal wird hierzu folgender Befehl eingegeben:

x11vnc -storepasswd

Man wird nach dem neuen VNC-Passwort gefragt (plus Bestätigung). Dieses ist anschließend in der Datei ~/.vnc/passwd gespeichert.

Nun bastel ich mir ein kleines Startscript für x11vnc mit dem Namen x11vnc.start.sh:

cd ~/bin/
touch x11vnc.start.sh
chmod +x x11vnc.start.sh
vim x11vnc.start.sh

Dieses bekommt folgenden Inhalt:

#!/bin/bash
echo "Kille evtl. laufende x11vnc-Prozesse"
killall -9 x11vnc
echo "starte x11vnc neu"
x11vnc -avahi -display :0 -usepw -forever & bg
echo "fertig"

Die Parameter des Scripts bedeuten:

Damit das Script bei jedem Systemstart ausgeführt wird, trage ich es unter “System/Einstellungen/Startprogramme” als zusätzliches Programm ein. Alternativ kann man auch per Terminal ins Verzeichnis ~/.config/autostart wechseln, und dort eine neue Datei mit Endung .desktop anlegen, z.B. x11vnc.desktop. Diese bekommt folgenden Inhalt:

[Desktop Entry]
Type=Application
Exec=/home/produnis/bin/x11vnc.start.sh
Hidden=false
X-GNOME-Autostart-enabled=true
Name[de_DE]=x11vnc
Name=x11vnc
Comment[de_DE]=x11vnc
Comment=x11vnc

Sollte wider Erwartens x11vnc mal absaufen, kann man einfach das eben erstellte Script im Terminal aufrufen:

x11vnc.start.sh

 
 
automatische Useranmeldung
Auf dem Server gibt es nur einen Benutzer, und desses GNOME-Session wird dazu verwendet, die Musikwiedergabe und -verwlatung zu regeln. Es gibt keine “kritischen” oder “privaten” Daten, und daher darf “jeder” die Session dieses Users (per VNC) benutzen, sofern er das VNC-Passwort kennt. Deshalb möchte ich, dass beim Booten direkt in die Usersession gestartet wird (automatische Useranmeldung). Hierfür editiert man die Datei /etc/gdm/custom.conf und setzt AutomaticLoginEnable auf true, sowie AutomaticLogin auf den entsprechenden User. Bei mir sieht das dann so aus:

[daemon]
TimedLoginEnable=false
AutomaticLoginEnable=true
TimedLogin=produnis
AutomaticLogin=produnis
TimedLoginDelay=30

 
 
Bildschirmauflösung
Da beim Booten des Servers kein Monitor angeschlossen ist, setzt das System die maximale Bildschirmaulösung auf 800×600. Damit man per VNC eine höhere Auflösung erhält, wird die Datei /etc/X11/xorg.conf mit folgendem Inhalte (neu) angelegt (Die Datei xorg.conf wird vom System nicht mehr benötigt und fehlt daher bei der Standardinstallation bzw. wenn keine proprietären Treiber installiert wurden. Wenn man sie aber neu anlegt, dann wird sie vom System gelesen und verwendet):

Section "Device"
Identifier "VNC Device"
Driver "vesa"
EndSection

Section "Screen"
Identifier "VNC Screen"
Device "VNC Device"
Monitor "VNC Monitor"
SubSection "Display"
Modes "1024x768"
EndSubSection
EndSection

Section "Monitor"
Identifier "VNC Monitor"
HorizSync 30-70
VertRefresh 50-75
EndSection

 
 
Ruhezustand
Der Server soll Musik abspielen, namentlich Hörspiele für abends zum Einschlafen. Wird keine Musik abgespielt, soll er in den Ruhezustand fahren. Per Wake on LAN wird er bei Bedarf wieder aufgeweckt.
In GNOME kann dies unter System/Einstellungen/Energieverwaltung unter “Rechner bei Leerlauf in Energiesparmodus versetzen” eingestellt werden (bei mir: 10 Minuten).

Das hat aber folgenden Effekt:
Wenn man sich nicht per VLC sonder per NX verbindet, dann wird nach 10 Minuten “nur” die virtuelle NX-Sitzung in den Ruhestand geschickt. Oder andersherum: obwohl man per NX recht aktiv ist, die “richtige” GNOME-Session aber im Leerlauf ist, dann fährt der Rechner nach 10 Minuten in den Suspend. Das ist übrigens der Grund, warum ich den Server (vor allem abends) ausschließlich per VNC steuer.

Hierbei kann es Probleme mit VNC geben, wenn nach dem Aufwachen der GNOME-Bildschirm gesperrt ist, und man das Benutzerpasswort eingeben muss um die Sitzung zu entsperren.
Um diesen “Lock”-Modus abzuschalten, verbindet man sich per VNC mit dem Server, öffnet dann in der VNC-Session ein Terminal und tippt ein:

gconf-editor

Es öffnet sich der Konfigurationseditor. Hier wählt man aus der linken Leiste apps/gome-power-manager/lock aus, und entfernt die Häkchen bei “hibernate” und “suspend“.

apps/gnome-power-manager/lock

apps/gnome-power-manager/lock

 
Anschließen wählt man in der linken Spalte desktop/gnome/lockdown und setzt bei “disable_lock_screen” ein Häkchen.

desktop/gnome/lockdown

desktop/gnome/lockdown

Musikplayer

Tja, auf dem alten eMac habe ich natürlich iTunes verwendet. Daher möchte ich bestimmte Funktionen, an die ich mich 8 Jahre lang gewöhnt habe, weiterhin nutzen:

So ziemlich alle Player unter Linux haben Probleme mit dem Speichern der Covers innerhalb des ID3Tags. Lediglich bei aTunes und Songbird habe ich diese Funktion entdeckt. Während aTunes Probleme mit dem Dateimanagement hat, kann Songbird den Suspend-Modus nicht unterdrücken (betrifft aTunes auch).
Für Rhythmbox steht hierfür ein Plug-In zur Verfügung, und Amarok verhindert wohl auch, dass bei Musikwiedergabe der Ruhezustand aktiviert wird. Bei beiden fehlt aber wieder dieses Cover-in-Tag-speichern-Feature. Die Auswahl ist also schwierig, aber so hab ich es für mich gelöst:

Ich verstehe gar nicht, warum dieses Cover-Metadata-Feature sich noch nicht wirklich durchgesetzt hab. Ich hab mich da so dran gewöhnt, ich möchte es nicht mehr missen…

[UPDATE:]
Mittlerweile habe ich einen Workaround herausgefunden, so dass auch bei Songbird ein Suspend verhindert wird.

 
 
Links:

Gepostet in Ubuntu, ubuntuusers | 10 Kommentare »

“headless” Server hatte über VNC nur eine Auflösung von 800×600

Geschrieben am: 24.01.2010 von produnis

Ich habe meinen alten G4-eMac-Hörspielserver in Rente geschickt.
Der Ersatzserver (Karmic Koala 32bit) ist mittlerweile einsatzbereit, und gerade eben hab ich mein größtes Problem gelöst:

Während der Installation hatte ich einen Monitor am Server. Die Auflösung des Bildschirms war 1024×768. Alle wunderbar. Mittlerweile steht die Kiste aber dort, wo sie hin soll: Im Dachgeschoss in einer Ecke, ohne Monitor (“headless”).

Das Problem: Per VNC hatte ich immer nur eine maximale Auflösung von 800×600. Das lag wohl daran, dass kein Monitor angeschlossen ist.

Die Lösung: im Verzeichnis /etc/X11/ fehlte bei mir die Datei xorg.conf (die wird wohl nicht mehr benötigt). Dennoch kann man diese “einfach” anlegen, und das System liest sie dann auch brav aus. Also, lange Rede, folgender Eintrag in der neu erstellen xorg.conf löst bei mir alle Probleme:

Section "Device"
Identifier "VNC Device"
Driver "vesa"
EndSection

Section "Screen"
Identifier "VNC Screen"
Device "VNC Device"
Monitor "VNC Monitor"
SubSection "Display"
Modes "1024x768"
EndSubSection
EndSection

Section "Monitor"
Identifier "VNC Monitor"
HorizSync 30-70
VertRefresh 50-75
EndSection

Wenn man weiß wie es geht, dann ist es ganz einfach… :)

(via)

Gepostet in Ubuntu, ubuntuusers | 2 Kommentare »

Jabber 4 all

Geschrieben am: 20.01.2010 von produnis

Nachdem auf Campino2k.de bemängelt wurde, dass die freie Instant-Messaging-Software Jabber (heute XMPP) leider noch viel zu unbekannt und wenig sichtbar ist, hat sich /home/zero der Sache angenommen und ein Tutorial-Mockup sowie ein Brainstorm-Wiki unter http://wiki.firefly-it.de/doku.php/jabber-projekt eingerichtet.

Super Idee!!!

UPDATE

Das Projekt ist nun unter einfachjabber.de erreichbar! WEITERSAGEN!

Gepostet in Professor Hastig, Ubuntu | Keine Kommentare »

“LittleSnitch”-Pendant für Ubuntu – das wär schön

Geschrieben am: 15.01.2010 von produnis

In meiner OSX-Zeit war ich total begeistert von dem Programm “LittleSnitch“. Dieses nette Programm macht kurzgesagt folgendes:

Unter Ubuntu gibt es so ein Tool derzeit nicht. Zwar existieren Firewall-Programme wie z.B. iptables, aber ich vermisse vor allem diese Systemleisten-Icon und die GUI zum bearbeiten der Regeln. Darüber hinaus können mit den derzeit verfügbaren Programmen keine applikationsspezifischen Regeln gesetzt werden.

Lange Rede schwacher Sinn:
Ich habe auf Brainstorms soeben eine “Idea” verfasst, die dieses Umstand beschreibt und ein entsprechendes Ubuntu-Feature vorschlägt: http://brainstorm.ubuntu.com/idea/23333/

Für Ubuntu wäre ein solches Feature sicherlich sehr werbewirksam:

“Möchten Sie wissen wohin ihr PC gerade “telefoniert”? Kein Problem, dieses Icon zeigt Ihnen den aktuellen Datenverkehr an!”

Oder

“Habt keine Angst! Ubuntu kommt mit einer Firewall daher, mit der sich der gesamte Netzwerkverkehr sehr einfach und individuell über eine äußerst schicke und leicht-bedienbare GUI einstellen lässt.”

Ich würde mich sehr freuen, wenn ihr – so ihr denn den selben Wunsch habt – für diese Idea voten würdet.

Gepostet in Ubuntu, ubuntuusers | 10 Kommentare »

Firmware-Aktualisierung am Asus O!Play HDP-R1

Geschrieben am: 7.01.2010 von produnis

Ich habe einen Asus O!Play HDP-R1-Multimedia-Player. Leider ist in der beigelegten Anleitung nicht beschrieben, wie man die Firmware aktualisieren kann.
Mein Gerät hat noch Version 1.07P, mittlerweile (Januar 2010) ist jedoch bereits Version 1.17P draussen.

Nuja,
also so geht’s:

Gepostet in Jean Pütz | Keine Kommentare »

.img-Images nach .iso konvertieren unter Ubuntu

Geschrieben am: 5.01.2010 von produnis

Gerade bin ich auf das Programm iat gestoßen. Dieses Programm wandelt Images der Formate .BIN, .MDF und .IMG in .ISO-Images um.

Dies ist recht nützlich, da ich die ersteren Formate unter UBUNTU nicht ohne weiteres (z.B. mit Hilfe von CDemu) mounten kann.

Also, man installiert iat aus den Paketquellen:

sudo apt-get install iat

und ruft es wie folgt auf:

iat /Pfad/zu/Image.img /Pfad/zum/Zielordner/Ziel.iso

Das so erstellte ISO-Image lässt sich dann wie gewohnt mounten, zB per

sudo mount -o loop Ziel.iso /media/loop

(Verzeichnis loop muss existieren!)

Tolle Sache, man lernt jeden Tag was dazu :-)

 

Links

Gepostet in Ubuntu, ubuntuusers | 6 Kommentare »