Sonntag, 27. Februar 2011

Verbindungsproblem mit Apple Wireless Keyboard

Seit einiger Zeit plagte mich folgendes Problem bei der Benutzung des Apple Wireless Keyboards unter Debian Lenny und neuerdings Squeeze: nach dem Boot des Systems funktionierte die Tastatur nicht. Wenn man aber die Bluetooth-Verbindung zur Tastatur trennt und neu herstellt, funktionierte die Tastatur problemlos. Das Problem äußerte sich in der folgenden Kernel-Fehlermeldung:
apple 0005:05AC:023A.0003: parse failed
apple: probe of 0005:05AC:023A.0003 failed with error -14
Der Grund für das Problem ist, dass das Kernel-Modul hid_apple beim Boot nicht geladen wird. Man kann das Problem beheben, indem man das Modul in /etc/modules einträgt und danach das Boot-Image anpasst mit dem Befehl:
update-initramfs -u
Danach arbeitet die Tastatur wieder einwandfrei.

Mittwoch, 19. Januar 2011

Die Feststelltaste (Caps Lock) zu einer Steuerungstaste (Ctrl) machen

Mit der Version 4 hat sich das Verhalten von VirtualBox unter Linux beim Sender von Tasten geändert. Bislang konnte man über die Konfiguration des X-Servers die CapsLock-Taste zu einer Ctrl-Taste machen. Als 10-Finger-Schreiber ist das meine Standardkonfiguration, da es mir fast nicht möglich ist, mit dem kleinen Finger die Ctrl-Taste am unteren Ende der Tastatur zu erreichen. Eine Ctrl-Taste neben dem A ist dagegen sehr angenehm zu erreichen.


Diese Konfiguration wurde bislang an eine virtuelle Maschine weitergegeben. Dadurch war es ohne weitere Konfiguration möglich dieses Verhalten auch unter Windows zu nutzen. Mit der Version 4 geht das aber nicht mehr. Jetzt erkennt VirtualBox die Konfiguration des Hosts und neutralisiert eine abweichende Konfiguration des Tastatur-Layouts. Dadurch ist es notwendig in jedem Gast das Mapping von CapsLock auf Ctrl erneut zu konfigurieren.

Unter Windows XP muss man dafür eine REG-Datei mit folgendem Inhalt anlegen:

REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Die Datei muss in die Registry importiert werden und danach muss das System neu gebootet werden. Danach hat man auch im Windows-Gast neben dem A eine Ctrl-Taste.

Montag, 1. November 2010

Flac-Dateien mit Lame codieren.

Da ich die Archivierung meiner Audio-CDs speziell der Hörbücher im verlustlosen Flac-Format mache, stellt sich bei der Wiedergabe im Auto das Problem, dass nur die wenigsten Auto-Radios das Flac-Format unterstützen. Daher müssen die Daten für die Wiedergabe im Auto umgewandelt werden.

Ich gruppiere die Audio-Tracks meiner Hörbücher nach CDs. Dadurch ergibt sich eine zweistufige Ordnerstruktur. Auf der obersten Ebene werden die Verzeichnisse nach Autor und Titel benannt, darunter befinden sich die Ordner für die einzelnen CDs und darin befinden sich die Tracks der jeweiligen CD. Das sieht folgendermaßen aus:


Bei der Codierung für das Auto muss diese Ordnerstruktur natürlich erhalten bleiben. Außerdem müssen die Attribute (Tags) der einzelnen Tracks erhalten bleiben, damit im Auto nicht nur kryptische Dateinamen angezeigt werden.

Insgesamt benötigt man die drei Programme flac, metaflac und lame, um die Codierung durchführen zu können. Die Decodierung übernimmt flac, die Attribute werden mit metaflac ausgelesen und lame codiert alles zu entsprechenden MP3-Dateien, die von jedem MP3-fähigen Autoradio abgespielt werden können.

Mittels metaflac können die Tags eines jeden Tracks ermittelt werden:
$ metaflac --export-tags-to=- CD1/01\ -\ Nordemoor\ CD1_01_Die\ Worte\ Waren\ Mit\ Bleistift....flac 
TITLE=Nordemoor CD1_01_Die Worte Waren Mit Bleistift...
ARTIST=Arnaldur Indridason
TRACKNUMBER=1
TRACKTOTAL=16
ALBUM=Nordermoor
ARTISTSORT=Arnaldur Indridason
DISCNUMBER=1
DISCID=01102e10
MUSICBRAINZ_DISCID=KJNYnzSmMvZBLYakHUtVxKAy5uw-
Dabei entsteht eine einfache Liste, die aus dem Tag-Namen, dem Gleichheitszeichen und dem jeweiligen Tag-Wert besteht.

Dekodiert man die Flac-Datei mit dem Befehl
$ flac -dcs
kann die Ausgabe direkt in den Lame-Codierer gepipet werden. Beim Aufruf von Lame müssen die zuvor ermittelten Tags als Komandozeilenargumente angegeben werden:
$ lame -S -b $BITRATE -h --tt "$TITLE" --tn "$TRACKNUMBER" \
--ty "$DATE" --ta "$ARTIST" --tl "$ALBUM" --add-id3v2 - "$MP3"
Das muss für jede Datei gemacht werden und die Verzeichnishierarchie muss erhalten bleiben. Man will das also nicht per Hand machen. Es bietet sich an, dafür ein kleines Bash-Script zu erstellen. Mit dem Script f2m kann die Umwandlung problemlos für viele Hörbücher in einem Rutsch durchgeführt werden:
$ f2m ~/Audio/Hörbuch/*
Dabei werden für alle Verzeichnisse in den Komandozeilenargumenten entsprechende Verzeichnisse für die MP3-Dateien erstellt.
Alle Flac-Dateien werden unter Beibehaltung der Tags in entsprechende MP3-Dateien
umgewandelt.

Der Quellcode des Scriptes ist in einem Mercurial-Repository auf Google-Code zu finden.

Samstag, 30. Oktober 2010

Google sperrt Debian aus

Mit einem der letzten Updates bei Google funktioniert der Dienst "Text & Tabellen" mit dem Debian-Standardbrowser nicht mehr:


Bis vor ein paar Tagen war der Zugriff problemlos möglich.

Es sieht so aus als ob es sich dabei um einen weiteren Versuch handelt den eigenen Chrome-Browser zu pushen, da auf einem Debian-Stable-System der Google-Dienst nur noch mit Googles Browser erreichbar ist.

Man kann das Problem lösen, indem man die Bezeichnung des Browsers auf der Konfigurationsseite about:config auf Firefox ändert:


Dadurch ändert sich die Browseridentifikation von:
Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.19)
Gecko/2010091807
Iceweasel/3.0.6 (Debian-3.0.6-3)
zu:
Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.19)
Gecko/2010091807
Firefox/3.0.6 (Debian-3.0.6-3)
Man kann sehen, dass sich der Debian-Browser vor der Änderung ziemlich eindeutig als ein Browser der Mozilla-Familie mit einer Gecko-Engine auszeichnet. Diese beiden Kennzeichnungen sind für die Kompatiblität des Browsers signifikant. Warum Google meint, darauf bestehen zu müssen, dass beim Browser-Namen auch noch Firefox steht, wissen nur die Götter.

Freitag, 5. März 2010

ORA-29516: Aurora assertion failure

Die obige Fehlermeldung erhält man, wenn man auf einer Oracle 10gR2 Datenbank eine Java Stored Procedure aufruft, die man zuvor zwar erfolgreich mit dem JDeveloper 11gR1 in die Datenbank exportiert hat, wobei man aber die folgende Warnung übersehen hat:
ORA-29552: verification warning: java.lang.UnsupportedClassVersionError: Class1 (Unsupported major.minor version 50.0)
Hintergrund des Problems ist, das die in Oracle 10g verwendete Java-Version nicht mit der Version übereinstimmt, die im JDeveloper 11g standardmäßig verwendet wird. Abhilfe kann man dadurch schaffen, dass man in den Project Properties des betreffenden JDeveloper Projekts in der Rubrik Compiler die Option JDK Version Compatibility für Generated Class Files auf "1.4" setzt.


Danach läuft der Export ohne Fehler durch und der Aufruf der Stored Procedure funktioniert ebenfalls. Voraussetzung dafür ist aber, dass die Session beendet und neu aufgebaut wird, da bei Oracle die virtuellen Maschinen an den Sessions hängen und nicht damit klarkommen, wenn man eine Java-Klasse für eine laufende virtuelle Maschine redefiniert.

RemoteOperationException: ERROR: Wrong password for user

Nach der Installation von Oracle 10gR2 auf einem WindowsXP-System schlägt die Anmeldung am Oracle Enterprise Manager fehl, wenn der Benutzer mit dem man sich anmelden möchte auf dem System keine Rechte zum "Anmelden als Stapelverarbeitungsauftrag" hat (meine Hochachtung an die Microsoft-Übersetzter). Der Fehler tritt bei der Anmeldung folgendermaßen in Erscheinung:


Das Problem kann dadurch behoben werden, dass das betreffende Konto, mit dem man die Anmeldung durchführt, in die Liste derer aufnimmt, die die Berechtigung "Anmelden als Stapelverarbeitungsauftrag" besitzten:


Die Berechtigung ist in der Rubrik "Zuweisen von Benutzerrechten" unter den "Lokalen Richtlinien" zu finden.

Sonntag, 21. Februar 2010

Radio-Musik mit Streamtuner aufzeichnen

MP3-Radios kann man mit den beiden Programmen Streamtuner und Streamripper aufzeichnen. Sie gehören bei Debian zum Standardumfang und können mit
apt-get install streamripper streamtuner
installiert werden. Streamripper kann einen definierten MP3-Datenstrom aufzeichnen und den Datenstrom nach Liedern zerteilen während Streamtuner eine Oberfläche bietet, um in diversen Internet-Verzeichnissen interessante MP3-Sender zu finden.

Bei der Aufzeichnung wird aber leider nicht nur Musik aufgezeichnet. Zusätzlich finden sind auf der Festplatte je nach Sender noch Werbung und Jingles, auf die man eigentlich gut verzichten kann. Den Junk kann man aber erfreulicherweise einfach anhand der Dateilänge der MP3-Datei erkennen. Alle Dateien, die kleiner als ca. 2 MB sind enthalten höchstwahrscheinlich kein komplettes Lied. Um den Müll loszuwerden, muss man mit zwei Verzeichnissen arbeiten. Das erste ist ein temporäres Verzeichnis, in das Streamripper die MP3-Dateien schreibt und das zweite ist das Verzeichnis, in dem man die fertigen Musikstücke ablegt. Ein Cron-Job kümmert sich darum, dass nur die richtigen Musikstücke in das dafür vorgesehene Verzeichnis verschoben werden. Die folgende Anleitung beschreibt die Konfiguration, mit der man genau das erreichen kann.

Zuerst muss man ein Verzeichnis für die temporären Daten machen:
$ mkdir ~/.streamripper
Dann muss man Streamtuner so konfigurieren, dass Streamripper die Daten in dem Verzeichnis ablegt.


Als nächstes kann das Verzeichnis anlegen, in das die fertige Musik gespeichert werden soll.
$ mkdir -p ~/Audio/Webradio
Und nun fehlt nur noch ein Cron-Job, der die MP3-Dateien entsprechend verschiebt. Der Befehl ist etwas komplizierter und sieht folgendermaßen aus:
$ crontab -l
# m h  dom mon dow   command
*/5 * * * * find ~/.streamripper -type f -name \*.mp3 -mmin +5 -size +2000k -not -path '*/incomplete/*' -print0 |xargs -i -0 mv --backup=numbered \{\} ~/Audio/Webradio/.
Alle fünf Minuten werden im temporären Verzeichnis unter den vollständigen MP3-Dateien die gesucht, die sich innerhalb der letzten 5 Minuten nicht geändert haben und die größer als 2 MB sind, um sie in das Verzeichnis für die fertige Musik zu verschieben.

Wenn man jetzt noch Zielverzeichnis im Streamtuner konfiguriert


zeigt das Programm auch die fertige Musik schon nach wenigen Minuten an.


Es sei noch angemerkt, dass sich mit der Zeit im temporären Verzeichnis ziemlich viel Müll ansammelt, den man von Zeit zu Zeit entsorgen sollte.