AnsiWeather: Wetteranzeige für die Shell

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : Linux, OpenSource, Shell

Gerade bei den Recherchen zu einem Projekt gefunden: AnsiWeather, eine Wetteranzeige für die Shell.
Dieses Script zeigt kompakt die aktuellen Wetterbedingungen für einen Ort im Terminal an, dabei werden ANSI-Farben und Unicode-Symbole unterstützt. Die Daten werden über die OpenWeatherMap-API abgerufen. Alle Optionen (Ort, Einheiten, Sonnenauf- und Untergang etc) werden dem Script per Parameter beim Aufruf übergeben oder können auch über die Datei .ansiweatherrc im Home-Verzeichnis des Benutzers angepasst werden. Die Auswahl des Ortes ist im Gegensatz zu anderen Wetter-API's vergleichsweise einfach und besteht lediglich aus den Werten "Ortsname,CC", wobei CC für einen Ländercode steht. Für Deutschland könnte eine solche Ortsangabe also "Berlin,DE" lauten.
Das Umleiten in eine Textdatei, wie es für mein Projekt beabsichtigt war, ist in der Standard-Konfiguration zwar generell möglich, sorgt aber für unschönen Zeichensalat im Text, der durch die Unicode-Symbole in der Ausgabe zu erklären sein dürfte. Eine Anpassung des Scripts ist also ratsam.

Orca im MATE-Desktop nutzen

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : A11Y, Linux, MATE, OpenSource, Orca

Auch wenn die MATE-Desktopumgebung eine Abspaltung des GNOME-2-Desktops ist, funktioniert der Screen-Reader Orca nicht so, wie man es von GNOME her erwarten würde. Startet man Orca über den Anwendungsdialog (Alt+F2), ertönt zunächst nur die Meldung "Willkommen bei Orca", der Bildschirm lässt sich jedoch nicht auslesen. Grund hierfür ist, dass MATE (und vermutlich auch einige andere Desktop-Umgebungen) ein GTK-Modul benötigen, welches die notwendigen Schnittstellen für Orca bereitstellt.

Um es zu laden, muss im Ordner /etc/profile.d eine Datei beliebigen Namens (z. B. gtk-access.sh) mit folgendem Inhalt erstellt und mit chmod 755 für den Benutzer "root" ausführbar gemacht werden:

#!/bin/bash
export GTK_MODULES=gail:atk-bridge
Nun noch die Zugänglichkeitsoptionen für MATE über das Terminal oder die Shell setzen:
gsettings set org.mate.interface accessibility true
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true

Bzw. als Shell-Befehl:
dbus-launch gsettings set org.mate.interface accessibility true
dbus-launch gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true

Jetzt sollte sich Orca auch in MATE starten lassen und die Arbeitsfläche vorlesen. Soll der Screen-Reader automatisch nach der Anmeldung starten, muss dies im Systemmenü unter Einstellungen -> bevorzugte Anwendungen auf der Registerkarte Barrierefreiheit aktiviert werden.
Die Navigation unter MATE ist dann größtenteils so, wie man es von GNOME her kennt, wenn auch hier und da mit einigen unschönen Bugs. So ist es z. B. nicht möglich, mehr als eine Seitenleiste auszulesen. Dieser Bug scheint dabei kein Orca-Problem zu sein, sondern ein direktes MATE-Problem. Da das obere Panel von den meisten Anwendern wahrscheinlich häufiger genutzt werden wird, standardmäßig mit STRG+Alt+Tab jedoch nicht angesprungen werden kann, muss daher zunächst das untere Panel gelöscht werden. Leider ist dies nur mit der Maus möglich (Rechtsklick auf die Leiste -> Leiste löschen), was sich mit Orcas Mausverfolgung jedoch recht problemlos bewerkstelligen lässt. Des Weiteren lassen sich Benachrichtigungs-Popups nicht auslesen und Qt-Anwendungen wie Skype sorgen für Navigationsprobleme.

Quelle: Wiki.vinuxproject.org

Airtime: Radioautomation auf Basis von Liquidsoap

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : Linux, OpenSource, Streaming, Webradio

Auch wenn ich zum Jahresende meine Mitarbeit bei SLANG Radio aufgeben muss, habe ich mich in den vergangenen Wochen in einer Testumgebung mit der von Sourcefabric entwickelten und komplett Browser-basierten Radio-Automation Airtime befasst. Hierbei handelt es sich um eine All-in-one-Lösung, welche theoretisch ohne händische Eingriffe den kompletten Betrieb einer Radiostation realisieren kann. Man könnte Airtime auch als eine eierlegende Wollmilchsau für den Radiomacher bezeichnen. Doch wie so oft kommt es gerade bei Allround-Software auf die Details an, bei denen es an mancher Stelle noch Verbesserungsbedarf gibt - aber dazu später mehr.

Aufbau und Installation

Im Backend von Airtime kommt eine Playout-Engine zum Einsatz, welche auf Liquidsoap basiert, als Datenbank wird standardmäßig auf PostgreSQL gesetzt. Des Weiteren ist ein Media-Monitor enthalten, der automatisch neu hinzugekommene Dateien im Dateisystem überwacht und sie in die Bibliothek einliest. Das Frontend wurde in PHP realisiert und sollte problemlos auf einem Apache-Webserver lauffähig sein. Das Sendesignal kann an lokale oder externe Icecast- und Shoutcast-Server (vermutlich nur Shoutcast 1.X) gestreamt werden, lässt sich aber auch über eine vorhandene Soundkarte wiedergeben.
Airtime läuft unter Linux und kann je nach Distribution relativ einfach auch von Leihen installiert werden. Wem eine Standardkonfiguration ausreicht, kann sich für Debian-basierte Systeme einen Auto-Installer als Deb-Paket herunterladen, welcher dann alle weiteren benötigten Pakete herunterlädt und die Konfiguration anpasst. Natürlich lässt sich Airtime auch von Hand installieren, um bereits im System vorhandene Konfigurationen nicht zu gefährden oder um von der Standardkonfiguration abzuweichen. Diese Variante werden vor allem sicherheitsbewusste Administratoren vorziehen, da Airtime an einigen Stellen keine sehr restriktive Konfiguration aufweist und einige Dienste sogar unter dem Root-Benutzer laufen lässt. Begründet wird dies damit, dass man es den Nutzern so einfach wie möglich machen möchte, ihr eigenes Radio an den Start zu bringen. Möchte man sich aber gar nicht selbst mit der Pflege eines Airtime-Systems befassen, bietet Sourcefabric unter der Bezeichnung Airtime Pro auch eine Managed-Hosting-Lösung an.

Die Funktionen

Nach dem ersten Anmelden präsentiert sich der Startbildschirm als weitgehend inhaltslose Ansicht, da noch keine Sendungen geplant sind. Wurden bereits Sendungen eingetragen, sieht man hier die gerade laufenden sowie noch ausstehende Songs und kann letzte Änderungen von Hand vornehmen. Alle Optionen zum Planen einer Sendung sind schnell über das Menü im oberen Seitenbereich erreichbar und sinnvollerweise so angeordnet, dass sich alle Aufgaben nacheinander abarbeiten lassen. Zuerst Medien importieren, danach in der Bibliothek Playlisten, Smart-Blöcke oder Webstreams anlegen und schließlich im Kalender die gewünschte Sendung planen. Im Menü System lassen sich u. a. die Airtime-Einstellungen und Ausgabe-Streams bearbeiten sowie Benutzer und zusätzliche Medien-Ordner verwalten. Auch an die rechtliche Seite wurde gedacht, denn im Menü Verlauf können gespielte Songs nachvollzogen und z. B. als Report für Verwertungsgesellschaften ausgedruckt werden. Im Hilfe-Menü findet sich schließlich noch der Link zum Benutzerhandbuch, in welchem alle Optionen ausführlich beschrieben sind. Die gesamte Bedienung wird durch Javascript für Echtzeit-Aktualisierungen unterstützt, ist dabei aber auch von Screen-Reader-Nutzern weitgehend hervorragend nutzbar.

Airtime kann sowohl automatisierte als auch Live-Sendungen abwickeln. Dazu stellt das System 3 verschiedene Inputs bereit, deren Status im Seitenkopf angezeigt wird. Als geplante Wiedergabe wird die reine Sende-Automation bezeichnet, während Show-Source und Master-Source für externe Eingänge gedacht sind, also Live-Sendungen. Dabei ist die Master-Source der Sende-Eingang mit höchster Priorität und kann für spontane Live-Sendungen ohne Kalender-Planung verwendet werden, während die Show-Source ein geplantes Live-Streaming ermöglicht. Ein in den Einstellungen konfigurierbares Crossfading sorgt dafür, dass die Übergänge zwischen Live- und Automationsbetrieb sauber klingen und es zu keinen Knacksern kommt, wie etwa bei einer manuellen Icecast-Mountpoint-Konfiguration.
Der Automationsbetrieb lässt sich sehr variabel gestalten. Sind genügend Songs in der Bibliothek, lassen sich ohne großen Aufwand mit sogenannten Smart-Blöcken dynamische oder statische Playlisten erstellen, die nach verschiedenen Kriterien gestaltet werden können. Natürlich lassen sich Playlisten auch von Hand mit Songs füllen. Zu beachten ist, dass Airtime die ID3-Tags zur Verwaltung der Musik verwendet. Es sollte also nicht nur auf eine korrekte UTF8-Beschriftung der Dateien geachtet werden, sondern auch auf möglichst vollständige Tags, damit sich die Musikstücke schnell wiederfinden lassen. Wer seine Playlisten nach Themen anlegt, muss also die ID3-Tags nutzen, um vorher die Musik entsprechend zu kennzeichnen (Album, Genre, Kommentar etc). Stehen diese Informationen nach einmaliger Fleißarbeit aber zur Verfügung, lassen sich in Windeseile die gewünschten Playlisten erstellen.

Die kleinen Kleinigkeiten

Im Großen und Ganzen ist Airtime eine sehr gelungene Automationslösung, die es bei richtiger Konfiguration mit kommerziellen Produkten aufnehmen kann. Manche Funktionen lassen sich aber noch nicht in der Standardkonfiguration realisieren, sodass Airtime sicher nicht für jedes Radio geeignet sein dürfte. So fehlt z. B. die Möglichkeit, das Sendesignal mit einem Compressor/Limiter zu bearbeiten. Stattdessen setzt Airtime automatische Replaygain-Tags, um die Lautstärke der Songs auf gleichem Level zu halten. Was für den Automationsbetrieb durchaus in Ordnung klingt und ohnehin jeder matschigen Radio-Kompression vorgezogen werden sollte, stellt sich spätestens bei den Live-Sendungen als Problem heraus. Hier muss der Moderator selbst dafür Sorge tragen, dass sein Sendesignal angepasst wird. Anderenfalls könnte man das Signal durch einen externen Prozessor leiten, was jedoch bei niedrigen Bitraten zu Lasten der Klangqualität gehen kann, da Airtime ohnehin schon die eingehenden Streams intern neu kodiert.
Ein weiteres Problem ist der recht primitive Crossfader, der einen sauberen Übergang zwischen den Songs ermöglichen soll. Zwar können Crossfading, Fade-In und Fade-Out konfiguriert werden, doch fehlt ein sogenannter Gap-Killer, um Stille am Ende eines Tracks dynamisch durch Einblenden des nächsten Songs auszugleichen. Der integrierte Stille-Erkenner zum Setzen der Cue-Points wirkt leider nur unzureichend, sodass es schwer ist, die richtige Crossfading-Einstellung zu finden. In meinem Test hat sich aber eine Dauer von 3 Sekunden als die am saubersten klingende Lösung herausgestellt. Unter Umständen lässt sich mit einem Audio-Trimmer hier noch mehr herausholen, was ich allerdings nicht näher getestet habe.
Bislang noch nicht realisiert, aber laut eines Blogeintrags für zukünftige Versionen geplant sind wiederkehrende Shows mit Inhalten aus Smart-Blöcken, sodass nicht jeden Tag aufs Neue die Automation für Musikstrecken programmiert werden muss.

Alles in allem ist Airtime aber eine durchaus brauchbare Automationslösung, deren Entwicklung noch längst nicht abgeschlossen sein dürfte und sicher die ein oder andere Problemstelle noch beseitigt wird. Schade nur, dass ich meinen Testsender wohl nie in den Regelbetrieb schicken können werde.

Piespeakup: Neuer Sprachausgaben-Renderer behebt Soundprobleme beim Raspberry Pi

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : A11Y, Linux, OpenSource, Raspberry Pi

Prinzipiell ist der Raspberry Pi auch für blinde Anwender nutzbar - entweder per Fernzugriff via SSH oder direkt per Tastatur, sofern ein entsprechender Screen-Reader installiert ist. Gerade die zweite Variante brachte allerdings bisher wenig Spaß bei der Arbeit mit der Himbeere. Zwar sind die benötigten Pakete (Speakup, eSpeak etc) bei Raspbian und auch Arch Linux verfügbar, doch in der Praxis sind sie bisher kaum nutzbar. Vor allem in Raspbian scheint es Probleme mit dem Soundtreiber zu geben und es kommt zu einem Stottern der Sprachausgabe oder sogar zu kompletten Abstürzen des Kernels.

Aus der Raspberry-VI-Community kommt jetzt allerdings Abhilfe für dieses Problem. Michael A. Ray, Betreuer der zur Community gehörenden Mailingliste, hat sich an die Arbeit gemacht und eine alternative Rendering-Engine für Speakup und dessen Sprachausgaben-Connector programmiert. Diese benutzt nicht mehr den instabilen Soundtreiber, sondern verarbeitet die Sprachausgabe im Grafikprozessor (GPU), ist also nicht auf Alsa, Pulseaudio oder andere Systeme angewiesen. Derzeit handelt es sich bei Piespeakup zwar nur um eine modifizierte Version des ursprünglichen eSpeakup-Connectors, doch sie erfüllt schon jetzt ihren Zweck.

Wer eine erste Alphaversion testen möchte, kann mit folgenden Schritten alle benötigten Komponenten herunterladen, kompilieren und installieren (Git muss installiert sein):
cd /usr/local/src

# Herunterladen der Quelldateien
git clone https://github.com/cromarty/ttsprojects.git

# Kompilieren und installieren der benötigten Bibliothek
cd ttsprojects/raspberry-pi/libilctts/build
sudo ./build.sh

# Piespeakup und dessen Abhängigkeiten einrichten
cd ../../piespeakup
sudo ./build.sh

Ist alles ohne Fehlermeldungen abgelaufen (bei mir kam es zu diversen Warnungen, die man aber ignorieren kann), kann der Raspberry Pi neugestartet werden und sollte bei angeschlossenem Lautsprecher die Bootnachrichten automatisch vorlesen. Möchte man die Sprachausgabe auf eine andere Sprache umstellen, muss noch die Datei /etc/default/piespeakup bearbeitet werden. Dort lässt sich auch konfigurieren, ob die Sprachausgabe über den HDMI-Anschluss gesendet werden soll. Nach einem weiteren Reboot oder mittels
service piespeakup restart
werden die Änderungen übernommen. Bei einer Änderung der Tonausgabe (Local oder HDMI) muss jedoch der Pi komplett neugestartet werden.

Das Projekt befindet sich noch in der Entwicklung. Geplant ist eine Unterstützung für Emacspeak sowie ein Modul für den Speech-Dispatcher, welches theoretisch dann auch die grafische Oberfläche mit Orca zugänglich machen würde.

Bootsektor einer Festplatte reparieren

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : CLI, Linux, OpenSource, Shell

Wie kommt man eigentlich auf die blöde Idee, ein für DVD's und USB-Sticks bestimmtes Installations-Image mittels dd auf eine lokale Festplatte zu schreiben?
Das überlasse ich mal der Fantasie jedes einzelnen Lesers. Ich hatte es jedenfalls mit einer solchen Festplatte zu tun, die mit einem ISO-Image überschrieben wurde. Für die eigentliche Debian-Installation stellte dies kein größeres Problem dar - bis auf den letzten Installationsschritt, die Einrichtung des Grub-Bootloaders. Dieser Schritt schlug fehl, weil Grub der festen Überzeugung war, beim Zielmedium handele es sich um ein ISO-9660-Dateisystem, also eine CD oder DVD. Erneutes Anlegen der Partitionstabelle hatte darauf keinerlei Auswirkung. Seltsamerweise ließ sich die Installation dennoch abschließen, indem statt Grub der alternativ angebotene Bootloader Lilo gewählt wurde.

Um später dennoch Grub nachzuinstallieren, hilft dann nur noch das Löschen des kompletten Bootsektors. Dazu sollte man sich zunächst die Struktur der Partitionen einmal anschauen:
# fdisk -l /dev/sda

Disk /dev/sda: 250.1 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000e2a99

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 484243455 242120704 83 Linux
/dev/sda2 484245502 488396799 2075649 5 Extended
/dev/sda5 484245504 488396799 2075648 82 Linux swap / Solaris

Die erste Partition beginnt also bei Sektor 2048. Folgender Befehl überschreibt die ersten 2047 Sektoren mit Nullen:
# dd if=/dev/zero of=/dev/sda bs=512 seek=1 count=2047
Und schon lässt sich Grub wieder fehlerfrei installieren.

Artikel-Feed (RSS) dieser Tag