php-web-developer.de

Raspberry Pi als MPD-Audioserver mit Mopidy/Rompr und Spotify-Anbindung

von am So. 21. Jul 2013, unter Linux, Multimedia, Netzwerk, Programmierung, Web

Nun habe ich mich nach langer Zeit eingeloggt, um mal zu schauen, ob mein Server nicht doch durch eine Sicherheitslücke irgendwie kompromittiert wurde und ein paar Spam-Kommentare markiert. Zum Glück ist alles gut, habe ich doch auch die Einstellungen auf den "Paranoid-Modus" gesetzt. :)
Nichts desto trotz sollte ich wieder die ein oder andere Software-Umstellung vornehmen.

Hier sehe ich ein paar Entwürfe, die ich vor langer Zeit veröffentlichen wollte und einen Beitrag mit Themen, die ich angehen wollte.

Ich werde die Sachen zwar dort belassen, aber irgendwie denke ich nicht, dass ich in nächster Zeit dazu kommen werde.
Stattdessen weiß ich oft nicht, wo ich anfangen soll. Ich programmiere seit über 12 Jahren in verschiedensten Sprachen und auf verschiedenen Feldern. Angefangen hat es, wenn ich mich recht entsinne, mit VBScript für den Windows-Desktop, mit Frameserver-Skript-Programmierung für Video-Encodierung und mit Erweiterungen für Bulletin-Boards. Irgendwie habe ich das Gefühl, dass ich viel gelernt, aber nicht genug zurückgegeben habe. Daher werde ich versuchen, in nächster Zeit mal ein wenig mehr open source-Code zu veröffentlichen. Hier fragt sich nur: was? – denn viel habe ich derzeit tatsächlich nicht zu bieten, was nicht bedeutet, dass ich nichts beisteuern könnte. :)
Einiges habe ich hier und da mal abgeändert – und dann doch nicht gepusht.

Vor Kurzem habe ich mein Raspberry Pi erhalten und auch gleich passende Zubehör mit erhalten. Gestern bin ich endlich dazu gekommen, ihn für meinen derzeitigen Wunschzweck einzusetzen. Ein einfacher Audioserver mit Spotify-Anbindung im MPD-Stil.
Die Software dafür existiert mit mopidy glücklicherweise schon und funktioniert recht gut.

Meine ersten Gehversuche habe ich hier mit Archlinux ARM gemacht, da ich das OS schon seit ca. 6 Jahren nutze und mir einfach keine bessere Linux-Distribution den Weg kreuzt.

Leider habe ich feststellen müssen, dass ich einen Core dump mit der aktuellen Trunk-Version bekomme. Dies habe ich gar nicht weiter groß als Debugging-Gelegenheit angesehen, da ich erst mal Ergebnisse wollte und viele positive Berichte im Netz gefunden habe mit den Debian-Paketen. Die Archlinux-Version werde ich mir aber früher oder später noch einmal ansehen und dann auch nutzen.

So habe ich mir also MusicBox installiert, was von Hause aus auf Raspbian aufbaut (was wiederum auf Debian aufbaut) und nur ein wenig Handgriffe wie ein init-d-Skript und SSH-Konfiguration (nutzt standardmäßig den resourcensparenden SSH-Server Dropbear) erfordert für die korrekte Einrichtung. Um die Knackser wegzubekommen und die Performance zu steigern habe ich Pulseaudio, Samba und consolekit entfernt und auf die aktuellste Software aktualisiert sowie auf direktes ALSA gesetzt. Für die Internetanbindung habe ich ifplugd gegen wicd-curses ausgetauscht, um auch den WIFI-Dongle EDIMAX EW-7811UN komfortabler nutzen und einrichten zu können.

Für die Frontend-Anzeige des Sound-Servers habe ich übrigens Rompr im Einsatz mit einigen lokalen Caching-Tweaks, die den Pi auf Dauer nicht so sehr fordern, wie ich hoffe. Das Frontend bietet im Vergleich wirklich tolle Features und man muss dem Entwickler wirklich dankbar sein hierfür! Die Software benötigt PHP, also habe ich gemäß der Anleitung den Apache httpd mit installiert und war überrascht wie gut dies funktioniert mit dem Prozessor. Ich hatte mich schon seelisch ein wenig auf Installation eines schlankeren Webservers und ein wenig Umprogrammierung vorbereitet. Fazit: anmachen und zuhören! ;)

Abgesehen vom http-Frontend verwende ich ncmpcpp, hier sollte man aber auf einen Bug gefasst sein, der das Steuern in den lokalen Files des mopidy sehr langsam macht. Nach Möglichkeit also nur nutzen, wenn nötig oder einen richtigen MPD parallel hierfür einsetzen.

Der Track-Wechsel usw. klappt nun fast so schnell wie auf einem lokalen MPD. Ich habe gemerkt, dass die Deinstallation der genannten Programme die Aktionen beschleunigt hat. Zusätzlich lasse ich den Pi auf 900 Mhz "High"-Preset laufen.

Als SD-Karte habe ich übrigens eine SanDisk 32GB Extreme im Einsatz mit angegebenen 45MB Lesegeschwindigkeit.

Testweise wurde die SD-Karte korrumpiert mit dem Turbo-Preset, daher will ich dies gar nicht weiter ausprobieren.

Alles in allem verbraucht das Gerät nachgemessen wie ca. angegeben ~3 W unter Vollast, was sehr angenehm ist.
Praktisch wird das Gerät so mit mobilen Lautsprechern und einem Powerbank-Akkupack auch mal unterwegs oder aber mit Gehäuse und Schrauben befestigt.

Kommentar hinterlassen
mehr...

Lokale E-Mails mit Thunderbird unter Linux lesen und schreiben

von am So. 13. Mai 2012, unter Linux

Lokale E-Mails des Linux-Systems mit Thunderbird lesen

Wer lokale E-Mails benötigt und diese auch des öfteren liest (z.B. cron-Mails oder Scan-Protokolle), kann diese komfortabel unter Thunderbird lesen, indem ein neues Konto erstellt wird.

Dies hat jedoch einen Nachteil: Die normalen Spool-E-Mails verschieben sich vom gewöhnlichen Platz in das Thunderbird-Profil-Verzeichnis (daher auch der Name "movemail").

Sofern also andere Programme auf den üblichen Ort für die Spool-Mails angewiesen sind, so sollten sie angepasst werden.

Wichtig ist, auf die Rechte zu achten. In der Regel wird nur der aktive Nutzer die E-Mails empfangen können.

Um die Änderung durchzuführen, wird einfach ein neues POP3-Konto angelegt. Anschließend kann man unter den Konfigurationseinstellungen (about:config, Einstellungen->Erweitert) den Konfigurations-Namespace finden, indem man pop3 in das Suchfeld eingibt. Hierauf erscheint der Namespace, dies kann z.B. Server1 sein. In der Regel sollte der Namespace mit der höchsten Nummer der zuletzt angelegte sein. Ist dies nicht der Fall, so können wir nach dem angegebenen Hostnamen suchen.
Nun suchen wir mit Server1.type den benötigten Eintrag und stellen von pop3 zu movemail um.
Movemail ist ein Pseudo-Protokoll, dass Thunderbird intern nutzt, um Mails aus dem Spoolverzeichnis in das eigene Verzeichnis zu verschieben.
Dies funktioniert, da Thunderbird und das normale Mailsystem unter Linux das Mbox-Format nutzen, das nur eine Datei für alle Ordner eines Accounts nutzt. Unter Thunderbird ist die Aufteilung aufgrund der Performance etwas granulierter ausgelegt für lokale Ordner. In der Regel ist dies beim Linux-System /var/spool/mail/$USER bzw. /var/mail/$USER – dies sollte Thunderbird eigenständig herausfinden. Da wir in der Baumnavigation der Konten nun das neue Konto sehen, sollten wir es direkt abrufen können. Sollte es nicht funktionieren, kann der MUA einmal neugestartet werden.

Hiernach sollten die Nachrichten in der selben Ordnerstruktur erscheinen wie sie im System vorhanden waren. Es empfiehlt sich, die Mail-Benachrichtigung zu aktivieren, um über Ereignisse informiert zu sein.

Wer nur ein Einbenutzer-System pflegt, kann die E-Mails von root einfach weiterleiten, indem unter /root/.forward eine Datei mit dem Inhalt des Nutzernames angelegt wird, der die E-Mails erhalten soll.

Man sollte beachten, dass die E-Mails normal im Sppol-Verzeichnis verweilen, solange Thunderbird sie nicht abruft. Es ist also durchaus möglich, diese zeitbegrenzt getrennt zu nutzen, sofern man nicht unter einem graphischen System arbeitet.

Lokale E-Mails des Linux-Systems mit Thunderbird schreiben

Für die lokale Zustellung kann ein MTA in der simpelsten Konfiguration verwendet werden.
Hier benutze ich Postfix.
Die master.cf sollte möglichst Distributionsstandard sein, sofern dort keine speziellen Dinge aktiviert wurden.

In der Regel wird hier keine weitere Anpassung benötigt, es sollte jedoch folgendes vorhanden sein, damit Postfix nur lokale Anfragen entgegennimmt:

inet_interfaces = 127.0.0.1

Anschließend wird der MTA ggf. neugestartet.

Nun kann das SMTP-Konto des neuen Thunderbird-Accounts angepasst werden. Als Server sollte einfach 127.0.0.1, localhost oder ein anderer Hostname der zum Localhost auflösbar ist, angegeben werden. Benutzerinformationen müssen nicht übertragen werden. Auf diese Weise kann man leicht System-Mails über Thunderbird verschicken. Als host-part der E-Mail-Adresse der Empfänger kann auch einfach localhost verwendet werden.

Die E-Mails werden mit den Nutzer abgeschickt, der Thunderbird ausführt, daher sollte auch hier auf mögliche Rechteprobleme geachtet werden.

2 Kommentare
mehr...

Mage+: Magento-Fork auf GitHub für die Community Edition ab 1.7.0

von am So. 13. Mai 2012, unter E-Commerce

GitGub-Repository

Seit kurzem steht auf dem GitHub von PHP (UK) Mitgründer Lee Bolding (leesbian) ein Fork der Magento Community Edition (CE) 1.7.0 namens Mage+ bereit. Bald soll die Version 1.0.0 erscheinen. Dies kündigte er vorab über den Twitter-Account (@mageplus) für die Beta-Version an.

Die Headline soll hier Bände sprechen:

"A community owned and driven, enterprise fork of Magento Community Edition (1.7.0)"

Das GitHub-Repository ist hier zu finden: https://github.com/mageplus/mageplus

Es gibt auch eine Web-Präsenz zu Mage+:
http://www.mageplus.org/

Gründe für den Magento-Fork

Nachdem der CTO und Mitgründer von Varien (später Magento Inc.) Yoav Kutner eBay anscheinend aus Frust durch die komplette Übernahme und die derzeitigen Konsequenzen hieraus verließ, sind einigen Leuten bereits Fragen zu Kopf gestiegen und wundern sich nun, wie es mit Magento weitergeht. Yoav äußerte sich, dass eBay die Definition von "open" nicht ganz verstehe und er eine schwere Zeit gehabt hätte, ihnen dies näherzubringen. Yoav jedoch glaube laut Artikel nicht, dass eBay die Open Source Variante einstellen würde.

Seit April 2012 ist bekannt geworden, dass auch X.commerce CTO Neal Sample eBay verlässt und zu American Express wechselt, um dort dem Payment Service Provider PayPal durch die Payment-Plattform Serve Paroli zu bieten, was weitere Fragen aufwirft, ob das Konzept und die Handhabung von eBay mit der Plattform denn eine sei, mit der sich die Lead-Architekten der Plattform identifizieren und verwirklichen können oder ob das Angebot diesen Service zu etablieren einfach nur zu verlockend war.

Eine neue Abspaltung der derzeitigen Stable-Version von Magento ist nicht ganz verwunderlich.
Es war wohl eher eine Frage der Zeit. Damit auch wirklich jeder mitmachen kann, wird das Projekt auf GitHub gehostet, wo sich jeder das Repository herunterladen kann, um dort zu entwickeln und anschließend pull-requests zu veröffentlichen, die ggf. in das Projekt mit einfließen.

Den derzeitgen Zielen von Mage+ zufolge soll es sich bei Mage+-Veröffentlichungen auch um LTS-Releaes der Major-Version 1.x handeln, also Versionen, die vor allem über längeren Zeitraum mit Bugfixes versorgt werden. Das ist an und für sich ein schönes Ziel, da die Stimmungen zu den derzeitigen Bekanntgebungen von Magento 2 eher gemischt zu sein scheinen.

Die Entwicklung soll natürlich möglichst die Features der offiziellen Magento-Versionen übernehmen und Hotfixes integrieren, bevor neue Features fertiggestellt werden. Das kann bedeuten, dass eBay vor einem Problem stehen könnte, falls sich sozusagen aufgrund der möglichen Features ein kostenfreier Enterprise-Code-Konkurrent entwickeln und etablieren würde, der die neuen Community-Features integriert und Bugs zeitnah beseitigt.

Hoffnung auf gute Zukunft von Magento

Anfangs müssen sich erst einmal einige Entwickler beteiligen, die dieses Projekt auch – möglichst über einen längeren Zeitraum – unterstützen, da es nicht der erste Magento-Fork ist. Sofern aber an den richtigen Stellen hierfür geworben wird und ein einfacher Workflow zur Teilhabe am Projekt besteht – was auf mich den Anschein macht – so werden sich bestimmt Anhänger zusammenfinden, die als treibende Kraft fungieren werden, um noch mehr Leute anzuziehen.

In jedem Fall kann man sagen, dass es ein positives Zeichen für die Zukunft sein sollte, denn es ist ein Versuch, dem Stillstand entgegenzuwirken. Ich hoffe, dass sich tatsächlich viele Leute finden werden, die sich am Projekt beteiligen, denn sollte dies geschehen so bleibt eBay nichts weiter übrig als zu versuchen, gegenzuhalten, damit Ihre die Community Version für Privatprojekte und SMBs nicht Schritt für Schritt "ausstirbt" und sie diesbezüglich den selben Ruf bekommen wie Oracle mit einigen Projekten, denen die Entwickler und die Community teilweise einfach "flüchten", um Forks zu erstellen und diese Open Source weiterzupflegen.

Interessant wäre das Thema vorallem für Freiwillige, die sich schon immer eine gute Dokumentation gewünscht haben. Hiermit würde man sicherlich ein Zeichen setzen, das viele Besucher anzieht.

Kommentar hinterlassen
mehr...

ZSH Syntax-Highlighting – Erweiterung/Plugin für die Z-Shell

von am Do. 08. Sep 2011, unter Linux

Dass die Z-Shell eine große Anhängerschaft von Shell-Programmierern hat, sollte mittlerweile bekannt sein. Die von Hause aus schon sehr mächtige Shell hat sehr interessant Erweiterungen, die vom Funktionsumfang der BASH in nichts nachstehen und einen manchmal verblüffen können. So ist die Shell z.B. fähig, live-Änderungen am interaktiven Input vorzunehmen, was auch ermöglicht, dass Syntax-Highlighting für die Shell zur Verfügung gestellt werden kann. Somit verhilft das ZSH-Syntax Highlighting dem Benutzer, die Lesbarkeit der Eingaben durch farbliche Hervorhebung zu verbessern und sogar auf Fehler aufmerksam zu machen. Das Highlighting wurde der fish-Shell nachempfunden, einer alternativen Shell, die weit weniger bekannt und verbreitet ist und nicht besonders kompatibel zu gängigen Shells zu sein scheint.

Die Konfiguration ist ebenfalls anpassbar und somit auf die eigenen Bedürfnisse zuschneidbar.
Die Standardkonfiguration äußerst sich z.B. wenn ein Aufruf nicht verfügbar ist. In diesem Fall wird das Schlüsselwort des Befehls rot gefärbt. Ist dies nicht der Fall, wird es grün angezeigt. Verfügbare Dateien werden unterstrichen und Zeichenketten orange gefärbt usw.
Die Standardeinstellung kann auch in der Datei highlighters/main/main-highlighter.zsh bearbeitet werden.

Der Code-Hosting wird aktiv im Github betrieben und das Repository kann einfach heruntergeladen bzw. geklont werden.
Wie alle Projekte hat auch dieses ein paar offene Bugs, jedoch muss ich sagen, dass sich damit sehr schön arbeiten lässt, denn die farbliche Unterscheidung hilft bekanntermaßen ungemein, sich in der Konsole zurechtzufinden.

git clone git://github.com/zsh-users/zsh-syntax-highlighting.git

Hiernach erhält man im Ordner zsh-syntax-highlighting die Datei zsh-syntax-highlighting.zsh, die einfach in der Shell gesourced bzw. inkludiert werden kann.

Sinnvoll ist dies natürlich in der ~/.zshrc.

source /path/to/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

Oder, wer es global mag, in der /etc/profile, dies funktioniert allerdings nicht "vererbbar" unter Desktop-Umgebungen. Hierbei sollte allerdings darauf geachtet werden, dass der jeweilige Benutzer, der die ZSH nutzt auch die Berechtigung hat, die Datei zu lesen. Sie sollte also an einem allgemein zugänglichen Ort abgelegt werden wie z.B. /usr/share/zsh/plugins.
Das Archlinux-Paket aus dem AUR verwendet den Pfad /usr/share/zsh/plugins/zsh-syntax-highlight.

[ -r /usr/share/zsh/plugins/zsh-syntax-highlight/zsh-syntax-highlighting.zsh ] && \
        [ $SHELL = "/bin/zsh" ] && \
        source /usr/share/zsh/plugins/zsh-syntax-highlight/zsh-syntax-highlighting.zsh

Sollte die Änderung global verfügbar werden in der Konsole, sollte diese zunächst neugestartet werden, da die Ausgangsshell für die Umgebung auf einer Login-Shell aufbaut, die nicht neu gestartet wird und die alte Konfiguration der /etc/profile enthält. Die Funktionalität kann allerdings auch getestet werden, indem die ZSH als Login-Shell aufgerufen wird.

zsh --login

Nun sollte die farbige Hervorhebung der Eingaben stattfinden.

Kommentar hinterlassen
mehr...

Umlaute / Sonderzeichen unter Linux umwandeln bzw. ersetzen mit detox ohne sed, Perl oder AWK

von am Do. 18. Aug 2011, unter Anleitungen, Linux

Beschreibung

Oft steht man vor dem Problem, dass man einfache Dateinamen nach einem bestimmten Schema benötigt und ggf. umbenennen muss. Möglichst Dateinamen ohne Umlaute wie ä,ö,ü oder Sonderzeichen wie ß sowie Verzicht auf Akzente aus verschiedenen Sprachen sollte dann die Anforderung sein, um eine gute Kompatibilität und möglichst wenig Probleme bei tückischen Zwischenstationen der Dateinamensverarbeitung zu gewährleisten. Viele Linux-Nutzer gehen den komplizierten Weg und erstellen für diesen Zweck z.B. mit Perl, SED oder AWK Shell-Skripte oder gar ganze Programme.
Jedoch kann dieses Problem auch anders gelöst werden mit einem Programm, dass sich eben genau diesem Problem der Zeichenkonvertierung verschrieben hat. Dieses Programm nennt sich detox und ist seit jeher unter FreeBSD, Gentoo Linux und dem Debian-basierten Livesystem Grml im Standardrepertoire vorhanden. Die Namensgebung soll wohl eine symbolische Entgiftung von problematischen Dateinamen darstellen. Obwohl detox seit 2008 nicht mehr weiterentwickelt wurde, ist detox ein sehr praktisches Tool für die Linux-Konsole, um sich dem altbekannten Problem der Zeichenersetzung mit Umlauten, Sonderzeichen und unerwünschten mehrfachen Zeichenfolgen unter Linux zu entledigen. Mit detox kann jeder einfach Umlaute und Sonderzeichen für verschiedene Sprachen und Zeichensätze unter Linux umwandeln oder auch ganz entfernen.
Alternative Lösungen über genannte Skript- und Programmiersprachen wie Perl, sed oder AWK sind sicherlich auch einfach und praktisch, jedoch oft mit mehr Zeitaufwand verbunden, sofern keine fertige Lösung vorliegt.

detox sollte sich in nahezu jeder aktuellen Linux-Distribution über den Paketmanager installieren lassen. Alternativ kann der Quellcode auf der Homepage heruntergeladen und kompiliert werden.

(weiterlesen…)

Kommentar hinterlassen
mehr...

Die besten Firefox Add-Ons für Web-Entwickler – Teil 1

von am Mi. 03. Aug 2011, unter Programmierung, Sicherheit, Web

Warum Erweiterungen

Als Web-Entwickler oder Web-Designer reichen oft die Standardausstattungen der Browser nicht aus, um verschiedene Szenarien zu beachten, zu simulieren, Tests zu machen und den Workflow durch die Erweiterungen einfach zu verbessern und simpler oder schneller zu gestalten. Genau für diesen Fall sollen die so genannten Firefox Add-Ons aushelfen, das Leben etwas leichter zu gestalten. Beispielsweise würde es unnötig lange dauern, ein Bild als Screenshot zu speichern, es in einem Grafikprogramm zu öffnen, um anschließend mit einem Pipetten-Werkzeug den Farbwert zu bestimmen. Viele der Firefox-Extensions lassen live Änderungen zu, was bedeutet, dass man die Seite für eine reine Schnellansicht der möglichen Änderungen nicht erst neuladen muss und sich eine Änderung im Original-Quellcode sparen kann. Ist das Ergebnis nicht zufriedenstellend, verwirft man es einfach. Ebenso wird die PHP-Entwicklung dynamischer AJAX-Anwendungen durch das Debugging mit Erweiterungen wie FirePHP einfacher und schneller.

Welche Add-Ons

Da viele Web-Entwickler den Firefox als de facto-Standard zum Entwickeln und Designen ansehen, liste ich einige Plugins für den Browser Mozilla Firefox auf sowie zugehörige Beschreibungen, die sich meiner Einschätzung nach für Web-Developer besonders eignen. Die Einschätzung der "besten Firefox-Add-Ons für Web-Entwickler" ist selbstverständlich nur rein subjektiv und vielleicht etwas überspitzt, soll jedoch so auch kenntlich machen, was meines Erachtens nach sehr empfehlenswert wäre. Da mein Horizont begrenzt ist und die Anzahl der Add-Ons wohl so groß ist, dass man sie als einzelner Mensch wohl kaum alle ausprobieren kann, bin ich natürlich für Empfehlungen und Hinweise dankbar!

Wie installieren

Falls eine Erweiterung nicht über die Add-On-Seite von Mozilla erreichbar oder installierbar ist, kann man meist auf die Homepage der Ersteller zurückgreifen, wo sich Downloads und Installationsanweisungen befinden. In der Regel werden .xpi-Dateien angeboten, die einfach mit der Maus per Drag & Drop in das Firefox-Fenster gezogen werden müssen, um diese zu installieren. Aufgrund der neuen, zügigen Versionspolitik von Firefox kann es vorkommen, dass einige Add-On-Entwickler nicht schnell genug nachkommen mit der Überprüfung für neuere Firefox-Versionen. In diesem Fall kann die xpi-Datei angepasst werden. Wie die funktioniert, steht am Ende dieser Seite
Es sollte jedoch beachtet werden, dass nicht alle Erweiterungen auch für alle Plattformen zur Verfügung stehen.

Übersicht der Erweiterungen

Seit einiger Zeit wird auf der Mozilla-Seite für Firefox Add-Ons auch eine Hilfskategorie "Web Developer's Toolbox" verlinkt. Einige davon sind auch auf dieser Empfehlungsseite vertreten oder werden später vertreten sein.

Damit die Seite nicht zu lang wird und die Übersicht nicht so sehr leidet, teile ich diesen Eintrag in 2 Teile auf.
Hier also der erste Teil der Erweiterungsliste. Die Reihenfolge geht nicht strikt nach Wichtigkeit!
Da die ersten Erweiterungen recht umfassend beschrieben wurden, liste ich diese hier mit Skiplinks zu den Dokumentstellen auf:

(weiterlesen…)

Kommentar hinterlassen
mehr...

Apache-Header-Manipulation über .htaccess mit mod_headers und mod_setenvif

von am Sa. 18. Jun 2011, unter Web

Beschreibung von mod_headers und mod_setenvif

Manchmal möchte man z.B. bei bestimmten Browser-Versionen bestimmte Server-Header mitsenden lassen oder zu bestimmten Zeiten bestimmte Header ergänzen.

Beim Apache httpd gibt es die Möglichkeit anhand des Moduls mod_setenvif per Stringvergleich oder mit regulären Ausdrücken auf Servervariablen zu prüfen und so eine eigene Umgebungsvariable zu setzen. Diese kann Das Modul mod_headers auswerten, um eine bestimmte Aktion auszuführen wie z.B. das Hinzufügen eines Headers oder das Ersetzen eines Headers.

Hierfür bietet mod_headers folgende Möglichkeiten, um die Antwort-Header zu manipulieren:

  • set – Setzt oder ersetzt einen bestehenden Antwort-Header-Satz des selben Namens
  • append – Verschmelzt einen bereits bestehenden Antwort-Header-Satz-Wert anhand einer kommaseparierten Auflistung, dies wird so laut RFC 2616 gefordert, um ein konformes Format zu nutzen
  • add – Fügt einen neuen Antwort-Header-Satz hinzu
  • unset – Entfernt einen bestehenden Antwort-Header-Satz
  • echo – Gibt den Antwort-Header-Satz aus, wenn dieser im Anfrage-Header angegeben wurde

Beispiele mit Umgebungsvariablen und Header-Manipulation

(weiterlesen…)

Kommentar hinterlassen
mehr...

jsmad: Javascript-mp3-Player ohne Flash im Firefox

von am Fr. 17. Jun 2011, unter Web

Die Entwickler Amos Wenger, Jens Nockert, Matthias Georgi und Antoine Marguerie haben libmad zum Abspielen von mp3-Dateien innerhalb des Firefox-Browsers von C zu Javascript als Skript-Sammlung zu einer Library portiert. Somit ist es ohne Flash, Quicktime oder andere Borwser-Plugins möglich, Browser-nativ eine Audioausgabe von mp3-Dateien oder mp3-Streams zu erhalten und diese abspielen zu lassen, sofern Javascript aktiviert ist. Ausgangspunkt für die Entwicklung war der Music Hackday am 28. und 29. Mai 2011 in Berlin.

Unter http://jsmad.org/ kann der dynamisch aktualisierte Player mit Abspielleiste und Start-/Stop-Knopf benutzt werden, um von mp3-Streams (über ajaxstream.js) per ID oder lokal per Dateiangabe (über filestream.js) vom input-Feld des Typs file Dateien abzuspielen, die von jsmad gelesen werden. Dabei werden auf der Seite auch direkt die ID3-Tags ausgewertet und im Player-Informationsblock angezeigt.

Die Performance des mp3-Decoders ist zwar derzeit unabhängig vom Prozessor unter Linux mit Mozilla Firefox in der Version 4.0.1 teilweise recht dürftig, dennoch verdient diese Leistung besonderen Respekt und lässt darauf hoffen, dass zukünftig weitere Multimediafunktionen für Benchmark- oder Funktionalitätszwecke nativ mit Javascript verfügbar werden und die Javascript-Engines der Browser weiter an Geschwindigkeit und Effizienz gewinnen werden, um solchen Anforderungen gerecht zu werden. Die Bitrate scheint keine Auswirkungen auf die Geschwindigkeit zu haben. So sollten Dateien, die mit 32 kbit kodiert wurden in etwa die gleiche Geschwindigkeit beim Abspielen im aktuellen Mozilla Firefox aufweisen, wie Dateien, die mit 320 kbit enkodiert wurden. Hauptsächlich die Javascript-Ausführung des Browsers vom komplexen Code scheint laut Entwicklerangaben die Problematik der Aussetzer hervorzurufen.

Googles Chrome in einer Version ab 10 sollte laut Entwicklerangaben theoretisch funktionieren. Dies ist jedoch noch nicht der Fall, daher wird weiter nach der Ursache für dieses Problem geforscht, das anscheinend mit der Audioausgabe zusammenhängt.

Wenger äußert sich hier zum Debuggingverfahren und die Arbeit an der Javascript-Library.

Die Library wurde zwangsläufig unter der GPLv2 veröffentlicht, da auch die libmad unter der GPL lizenziert wurde, ist im github zu finden und kann im git-Repository unter https://github.com/nddrylliog/jsmad.git abgerufen werden:

git clone 'https://github.com/nddrylliog/jsmad.git'

Ein Blick in die README vom mp3-Decoder zeigt, was bei jsmad für die Zukunft geplant ist und was nicht unterstützt wird:

## Future

What's next? A few things:

– Strings are still used in the core decoding routines instead of Uint8Arrays – this should change
– Optimizations, always
– Chrome 10+ support – have no idea why it doesn't work, it seems that only the audio output is broken, everything else runs fine
– Better buffering strategy – player.js is still pretty naive and we stumble now and then onto buffer underflow
– MPEG Layer I and II are not supported, only Layer III is – it should be pretty trivial but we had no interest for it in the first place.
– MPEG 2.5 is not supported.
– Free bitrate streams are not supported (this is different from VBR – VBR is supported)
– Most of ID3v2.2 and ID3v2.3 are implemented, but some tags are mising.

## That's all, folks!

Thanks for your time :) Hope you like jsmad.

Kommentar hinterlassen
mehr...

CUPS-Problem mit libusb/usblp bei Samsung und Epson USB-Druckern unter Linux – Abhilfe mit hal-cups-utils

von am Sa. 04. Jun 2011, unter Hardware, Linux

Das von Apple entwickelte Druckersystem CUPS stellt viele seit der Version 1.4 noch heute vor Probleme. Das damalige Modul usblp wurde gegen die Library libusb ausgetauscht und durfte nicht mehr geladen werden.
Hier ergibt sich aber unter Umständen leider ein Kompatibilitätsproblem, da nicht jeder USB-Drucker auch so von CUPS erkannt wird. Somit wird möglicherweise kein Gerät im CUPS-Backend über USB erkannt und kann nicht installiert oder benutzt werden.

Besonders von diesem Problem betroffen sind so genannte All-In-One-Geräte oder Mulitfunktionscenter, (die drucken, scannen, kopieren und eventuell auch faxen können) von Samsung und Epson. Sicherlich sind auch viele andere Hersteller und vereinzelte Druckergeräte betroffen.

Man kann CUPS zwar ohne libusb-Unterstützung kompilieren, indem man den Parameter –disable-libusb beim Kompilieren von CUPS verwendet, jedoch können sich hier weitere Probleme ereignen, fall sich zukünftig wieder etwas an CUPS selbst ändern sollte. Somit wird ein Update auf eine neue Version früher oder später wieder Probleme herbeiführen.
Im Fall der Deaktivierung jedoch kann das Modul usblp wieder geladen werden und libusb wird nicht von CUPS verwendet. Somit kommen sich die beiden nicht in die Quere.

Die bislang anscheinend sinnvollste Problemlösung mit Nutzung von usblp sowie libusb für dieses Problem stellt das Backend des HAL-Frameworks dar, das CUPS bereitgestellt wird und verwenden kann, um von HAL Informationen zur Konfiguration der USB-Drucker zu erhalten. Nach Installation des hierfür nötigen Paketes hal-cups-utils sollten diverse Geräte über das CUPS-Backend (wieder) sichtbar werden. Vorausgesetzt die udev-Regeln greifen korrekt und die Gerätedatei unter /dev/bus/usb/xxx/xxx gehört der Gruppe lp.

Im Problemfall hilft ein dmesg oft zur Hilfe.

Das Paket hal-cups-utils ist in der Regel für die gängigen Distributionen bereits zum Installieren in einem Repositorium über den Paketmanager vorhanden.
Voraussetzung zum Einsatz ist natürlich der Betrieb von HAL.

Kommentar hinterlassen
mehr...

Mit ffmpeg Videos zu 3GP für Smartphones und Handys umwandeln mit H.263-Video und AMR- oder AAC-Audio

von am Do. 02. Jun 2011, unter Anleitungen, Multimedia

Beschreibung

Wer noch ein altes Smartphone oder videofähiges Handy besitzt, dass aktuelle Videoformate wie H.264 nicht abspielen kann, kann sich möglicherweise immer noch dem betagten H.263-Standard für die Videokodierung bedienen, um eine konforme Videodatei im 3GP-Containerformat zu erstellen. Für aktuellere Endgeräte empfiehlt sich der H.264-Standard, da hier bessere Kompressionsraten erzielt werden und die Qualität, Standardisierung und Flexibilität ebenfalls den Merkmalen von H.263 voraus ist. Nur im Punkt Verbreitung bzw. Kompatibilität ist H.263 weiterhin für eben solche Fälle zu empfehlen.

Daher habe ich diese kleine Anleitung für ffmpeg unter Linux geschrieben, die dazu verhelfen soll, auf älteren Smartphones kompatible Videos mit Bild und Ton abspielen zu können.

Für diesen Zweck ist ffmpeg wie geschaffen, um vorhandene Videodateien wie z.B. .avi, .mkv, .mpg, .mp4, .flv, .vob, .evo usw. in das geeignete Format .3gp zu konvertieren.
Als Audiocodec werden meist AMR (Adaptive Multi Rate) in der Narrow-Band-Version oder AAC (Advanced Audio Coding) unterstützt. Der weltbekannte mp3-Codec funktioniert leider meist nicht, der Ton wird dann schlichtweg nicht abgespielt.
Qualitativ ist AMR jedoch sehr eingeschränkt mit einer Abtastrate von 8000 kHz, 12.2 kbit Bitrate und Mono-Kanal.
Es wäre also empfehlenswert erst auszuprobieren, ob der Decoder des Handys AAC-Audio abspielen kann.

(weiterlesen…)

2 Kommentare
mehr...

VirtualBox 4 startet VRDP/VRDE nicht – Oracle Extension Pack installieren

von am Do. 02. Jun 2011, unter Netzwerk

Seitdem ich nach einiger Zeit wieder eine VirtualBox-Maschine mit der Version 4 betreibe, habe ich mich gewundert, ob irgendwas im System den Verbindungsaufbau verhindert und hatte es vorläufig so hingenommen, da es ja auch Betriebssystem-interne Remote-Möglichkeiten wie z.B. über RDP, VNC oder TeamViewer gibt. Ich sah auch keine Fehlermeldung, weshalb ich davon ausging, dass der Fehler anderweitig lag.

Da dies jedoch auf kurz oder lang sehr unflexibel ist und ich auch sehen möchte, was beim Starten, Neustarten und Herunterfahren passiert und ggf. interaktiv tätig werden möchte, habe ich mich doch weiter auf die Suche nach der Fehlerquelle gemacht.
Nach ein wenig Googlen fiel mir auf, dass VBoxHeadless normalerweise als Debug-Meldung auf der Konsole ausgibt, dass der VRDE-Server (vormals VRDP – "VirtualBox Remote Display Protocol") getartet wird:

VRDE server is listening on port 3389.

Dies war bei mir nicht der Fall und ist wohl aus der Vergangenheit nicht mehr hängen geblieben. Daher wusste ich nicht direkt, dass VRDE nicht funktioniert. Nach einer Aktualisierung der VirtualBox auf Version 4.0.8 und Einrichtung einer neuen Maschine, bekam ich den Warnhinweis, dass der USB 2.0 Host nicht aktiviert werden könne, da das Oracle Extension Pack nicht installiert wurde. Daraufhin habe ich es nachinstalliert und tatsächlich wird nun auch der VRDE-Server gestartet. Die Lösung des Problem heisst also Oracle Extension Pack.

Hätte ich mir im Vorfeld klargemacht, dass VRDE "VirtualBox Remote Desktop Extension" bedeutet, wäre ich wohl schneller auf die Lösung gekommen.
Da der Versionssprung im Gegensatz zu den vorigen Major-Versionen vollkommen an mir vorbeiging, habe ich natürlich auch nicht an das Changelog gedacht. Ein Auszug zeigt direkt, dass eine Aufsplittung stattfand.

(weiterlesen…)

Kommentar hinterlassen
mehr...

Internet Explorer Kompatibilitätsmodus mit X-UA-Compatible erzwingen durch meta-tags oder Server-Header

von am Sa. 21. Mai 2011, unter Web

Viele kennen das Problem der verschiedenen Darstellungen und Renderings unterschiedlicher Internet Explorer-Versionen.

Um sicherzustellen, dass erstellte Webseiten auch noch in älteren Internet Explorer Versionen optimiert werden können, hatte Microsoft für den Internet Explorer 8 die Kompatibilitätsansicht eingeführt, welche die Rendering-Engine des Internet Explorer 7 annahm. Diese wird jedoch nur in Form einer zerrissenen Seite, standardmäßig neben der Adressleiste, bei unterschiedlicher Darstellung angezeigt. So ist es möglich, Fehler im Internet Explorer 7 ebenfalls darzustellen und den erstellten Code diesbezüglich zu verbessern.

Manchmal verschlimmern sich jedoch auch diverse Darstellungen des Explorers mit einer neuen Hauptversion, so dass es manchmal wünschenswert ist, eine alte Version zu emulieren.

Glücklicherweise hat Microsoft hierfür eine Option eingebaut, um den Darstellungsmodus des Browsers auf verschiedene Möglichkeiten durch die ausgelieferte Webseite zu manipulieren.

Dies wird auf folgender MSDN-Seite erläutert: http://msdn.microsoft.com/de-de/library/ms533876%28v=VS.85%29.aspx

Hierfür kann das http-equiv-Attribut mit dem Wert "X-UA-Compatible" für das meta-Tag verwendet werden.

(weiterlesen…)

Kommentar hinterlassen
mehr...

Veraltete Browser melden und auf Browser-Updates aufmerksam machen mit Javascript und CSS durch Browser-Update.org

von am Mi. 27. Apr 2011, unter Web

Oft sind manche Browser hoffnungslos veraltet und benötigen dringend eine Aktualisierung. Manche beherbergen kritische Sicherheitslücken oder bekommen keinen offiziellen Support durch Hersteller-Updates mehr. Andere sind von der Funktionalität einfach nicht mehr zeitgemäß, so dass ein Update der Major-Version des HTTP-Clients durchaus anzuraten ist, um aktuelle Web-Inhalte korrekt darzustellen.

Browser-Update.org hat sich diesem Thema gewidmet und bietet eine einfache, aber schöne Javascript-Lösung an.

Sofern die Version des genutzten Browsers nicht den Angaben der Mindestversion entspricht, wird ein Warnhinweis mit Verlinkung zur Seite
Browser-Update.org am oberen Seitenrand angezeigt. Dies erscheint im unaufdringlichen Stil der Meldungen vom Internet Explorer mit gelber Hinweisleiste. Möchte man dies ändern, so muss man per überschreibenden CSS-Anweisungen mit dem !important-Vermerk die Attribute der erstellten HTML-Klassen und -IDs ersetzen oder den Javascript-Quellcode abändern.

Die Meldung soll Leuten helfen, die mit veralteten Browsern surfen, die Notwendigkeit und Vorteile von Updates sowie die Nachteile veralteter Browser nahezulegen.

Hierzu wird auf der Seite auch die aktuelle Hauptversion der gängigen Webbrowser mit Verlinkung zu den Browser-Downloads angezeigt.
Das Hauptaugenmerk des Nutzers, der den Browser aktualisieren soll, wird auf folgende Punkte gelegt:

  • Sicherheit
  • Geschwindigkeit
  • Kompatibilität
  • Komfort & ein besseres Erlebnis


Auf der Seite lässt sich bequem einzusetzender Code erstellen, der auf angepasste Browser-Versionen reagiert, sofern der UserAgent-String des Client-Headers vom Browsers korrekt übergeben wurde.
Wer dies nicht tut, geht generell das Risiko einer fehlerhaften Seitendarstellung ein.

Auch praktisch ist die Möglichkeit, automatisch über die Nutzbarkeit einer Browser-Version bestimmen zu lassen. Da die Javascript-Ressource vom Server Browser-Update.org geladen wird, sollte so ohne weitere Handgriffe automatisch gewährleistet werden, dass zukünftig nicht mehr unterstützte Versionen in die Funktionalität mit einbezogen werden.

Der beschriebe Code auf der Seite erstellt im DOM ein neues script-Element vom Typ text/javascript, weist der Quelle die Datei http://browser-update.org/update.js zu und hängt das HTML-Element an das Ende des Inhaltes vom body-Tag. Dieses Skript wiederum fügt die Style-Anweisungen zum Ende des Head-Bereiches hinzu sowie ein div-Layer mit Klasse und ID "buorg". Da die CSS-Attribute position: absolute und z-index: 111111 verwendet werden, wird die Anzeige immer am oberen Bildschirmrand angezeigt. Die restlichen Elemente – und somit die Darstellung der Seite – sollten hiervon nicht weiter beeinflusst werden. position: fixed wäre eine aufdringlichere Alternative, jedoch kann dies leider nicht jeder Browser korrekt anzeigen, ohne das Seitenlayout zu korrumpieren.

Wer sich jedoch nicht auf die Erreichbarkeit einer externen Seite verlassen kann oder möchte, kann die Javascript-Datei natürlich auch selbst herunterladen und in seine Seite einbinden, indem eine lokal-verfügbare Datei angegeben wird.

Der Code für folgende Zeile müsste dementsprechend beispielsweise folgendermaßen angepasst werden.

e.setAttribute("src", "http://browser-update.org/update.js");

Dies wird zu:

e.setAttribute("src", "includes/js/update.js");

Somit wird statt dessen die Datei includes/js/update.js geladen.

Lädt man eine Seite mit dem Hash test-bu – also #test-bu -, so wird unabhängig vom Browser und der Version die Anzeige ausgeführt.
Auf der Seite selber, sieht dies beispielsweise so aus: http://www.browser-update.org/index.html#test-bu

Kommentar hinterlassen
mehr...

Online W3C-Link Checker / checklink – Linkchecker-Skript für Perl

von am Mi. 27. Apr 2011, unter Web

Das Konsortium des WWW (World Wide Web Consortium, kurz W3C) stellt seit einiger Zeit einen Online-Service bereit, der es ermöglicht, Verlinkungen von Dokumenten im Netz überprüfen zu lassen.
Hierunter fallen diverse HTML-Dateitypen sowie CSS-Dateien.

Der W3C-Link Checker befindet sich hier: http://validator.w3.org/checklink

Mit der Option "Check linked documents recursively, recursion depth:" kann ein ganzes Web auf fehlerhafte und umleitende Verlinkungen durchsucht werden.
Leider verursacht dieser beim Überprüfen hin und wieder 500 http-Errorcodes. Woran dies liegt, habe ich noch nicht herausgefunden.

Hinter dem Validator steckt eine Version des Perl-Programmes checklink, das hier dokumentiert wurde und zum Download bereitsteht: http://validator.w3.org/docs/checklink

Die Perl-Distribution ist auf der CPAN-Seite zu finden: http://search.cpan.org/dist/W3C-LinkChecker/

(weiterlesen…)

Kommentar hinterlassen
mehr...

Browserweiche für Internet Explorer (IE) mit Conditional Comments

von am Mi. 27. Apr 2011, unter Web

Wer auf Webstandards bei HTML achten will und muss, sollte auch zwangsläufig die Optik auf den Microsoft Internet Explorer für das Windows Betriebssystem problemlos optimieren.
Oft gibt es kleine CSS-Tricks und Kniffe (so genannte CSS-Hacks), um alle Browser in verschiedenen Versionen anzusprechen, so dass sich der darzustellende Inhalt größtmöglich gleicht.

Manchmal jedoch sind komplexe Anforderungen gegeben, so dass verschiedene Browser verschiedenartig reagieren und die Optik vom eigentlichen Ziel abweicht.
Grundsätzlich ist es zu empfehlen, die jeweiligen Spezifikationen der Markup-Sprache einzuhalten und möglichst den W3C-Validiertest zu bestehen. Leider ist dies so manches Mal nicht genug, um den Inhalt jeden Browsers problemlos korrekt darzustellen.

Die Browser Mozilla Firefox, Opera, Google Chrome und Apple Safari stellen die meisten Inhalte in aktuellen Versionen relativ gleichartig dar.
Microsofts Browser Internet Explorer reiht sich jedoch recht häufig als Problemkind in die Reihe der Web-Browser.
Vor allem der Internet Explorer in der Version 6 (oder darunter) ist sehr eingeschränkt und fehlerhaft in der Darstellung diverser HTML-Konstrukte. Microsoft selbst legt den Nutzern nahe, dass dieser Browser nicht mehr durch Benutzung unterstützt werden sollte und ruft zum Update auf. Die Browser-Version unterstützt nicht einmal PNG-Transzendenzen ohne diverse Javascript-Hacks.

Für solche Zwecke wurden von Microsoft die Browserweichen über so genannte Conditional Comments eingeführt, die bei selfhtml unter folgendem Link schön zusammengefasst wurden: http://de.selfhtml.org/css/layouts/browserweichen.htm#alternative

Mit diesen ist es möglich, für gängige Versionen vom Internet Explorer eigenen HTML-Code ausführen zu lassen, der beispielsweise CSS-, oder Javascript-Dateien lädt oder einfach einen anderen Aufbau von HTML-Elementen ermöglicht. Es handelt sich einfach um einleitende und endende Schlüssel-Notationen innerhalb von Kommentaren, deren Inhalt von bestimmten, anzugebenden Versionen der Browser interpretiert werden.

Eine vollständige Übersicht bietet die Microsoft-Informationsseite für Conditional Comments.

Hier einige Beispiele für Browserweichen innerhalb von HTML-Dokumenten:

(weiterlesen…)

Kommentar hinterlassen
mehr...

Javascript/AJAX File Upload im Hintergrund mit dem jQuery-Plugin jquery-forms (jQuery Form Plugin)

von am Di. 26. Apr 2011, unter Web

Wer bei HTML-Formularen nicht immer die Seite neu laden möchte, um Dateien hochzuladen, hat mit dem jQuery-Plugin "jQuery Form Plugin" eine komfortable Lösung per jQuery, um einfache HTML-Formulare mit Javascript bzw. AJAX zu verarbeiten, anstatt diese an einen neuen, sichtbaren HTTP-Request im Vordergrund des Browsers zu senden.

Dies ermöglicht es auf sehr einfache Art, dynamisch wirkende Dateiuploads mit Javascript zu realisieren. Das Plugin verwendet für diese Funktionalität ein verstecktes IFrame.

Wie auf der Seite http://malsup.com/jquery/form/ angegeben, hier folgender, zusammengefasster Inhalt des Plugins:

"The jQuery Form Plugin allows you to easily and unobtrusively upgrade HTML forms to use AJAX. The main methods, ajaxForm and ajaxSubmit, gather information from the form element to determine how to manage the submit process. Both of these methods support numerous options which allows you to have full control over how the data is submitted. Submitting a form with AJAX doesn't get any easier than this!"

Hier das Beispiel sowie die Erklärung auf englisch zum File Upload-Mechanismus des jQuery-Plugins für Javascript: http://malsup.com/jquery/form/#file-upload

Dies ist natürlich nur eine Möglichkeit, da es sicher einige dieser Plugins gibt. Jedoch lässt es sich sehr einfach verwenden und wer jQuery bereits einsetzt, wird hierüber möglicherweise erfreut sein.

Kommentar hinterlassen
mehr...

Thunderbird öffnet Firefox nicht nach Update auf Firefox Version 4

von am Do. 24. Mrz 2011, unter Web

Unter Linux (und möglicherweise auch Windows) öffnet unter Umständen Mozilla Thunderbird nicht mehr den Firefox Webbrowser nach Update auf die neue Version 4 beim Anklicken von Links bzw. URLs.

Um das Problem zu lösen, einfach in Thunderbird im Menu zu Bearbeiten->Einstellungen->Anhänge navigieren, und dort bei http sowie https von "firefox verwenden (standard)" auf "firefox verwenden" umstellen. Schon sollte es wieder funktionieren.

Sollten diese Punkte noch nicht vorhanden sein, kann unter Bearbeiten->Erweitert->Konfiguration bearbeiten der Konfigurationseditor (auch bekannt als Adresse about:config) gestartet werden.
Hier suchen wir nach den Werten network.protocol-handler.warn-external.http sowie network.protocol-handler.warn-external.https und stellen diese Werte auf true.
Sobald eine URL mit http oder https-Protokoll geöffnet wird, sollte Thunderbird uns nach einem Programm zum Öffnen per Dialogfenster befragen. Hier betätigen wir "Durchsuchen" und geben die Datei /usr/bin/firefox an. Außerdem sollten wir noch angeben, dass die Auswahl für den Protokolltypen (hier beispielsweise http oder https) gespeichert werden soll.

Danach sollten die beiden Protokolle http und https wieder unter Anhänge sichtbar sein und Verlinkungen lassen sich wieder mit dem Firefox öffnen.

Kommentar hinterlassen
mehr...

WLAN-Drucker-Empfehlung für Linux: EPSON Stylus SX525WD WiFi-Drucker – einfache Installation mit Linux-Treibern unter CUPS und SANE

von am Fr. 11. Feb 2011, unter Hardware

Da mein Brother MFC-250C nicht mehr funktionierte und ich auf das Fax vorläufig verzichten kann, habe ich mich auf die Suche nach einem neuen Drucker-Multifunktionsgerät gemacht.
Die Suche endete beim EPSON Stylux SX525WD, der im Internet sowie in Magazinen durchweg positiv benotet wurde. Daher unterzog ich dem Gerät auch meinem Testurteil und kann auch gleich eine WLAN-Drucker-Empfehlung für den EPSON Stylux SX525WD unter Linux aussprechen.

(weiterlesen…)

5 Kommentare
mehr...

Android fastboot-Download für Linux, Mac und Windows

von am Mi. 09. Feb 2011, unter Hardware

Wer auf der Suche nach der ausführbaren Datei fastboot für Linux ist, wird möglicherweise auf das Android-Wiki gestoßen sein und bemerkt haben, dass der fastboot-Download zur vorkompilierten Datei derzeit nicht mehr korrekt verlinkt ist.

Wer diese Datei in seinen Android-SDK Platform tools nicht mehr findet und sich fragt, wo man die ausführbare fastboot-Datei für sein Smartphone herunterladen kann, dem sei unter folgendem Link geholfen:
http://developer.htc.com/adp.html

Einfach auf der Seite nach "Fastboot binary, Linux" suchen, den Nutzungsbestimmungen zustimmen und die kompilierte Binärdatei herunterladen, ausführbar machen und nutzen.

Update: Die HTC-Developerseite wurde aktualisiert und die Dateien werden derzeit anscheinend nicht zur Verfügung gestellt. Ich habe eine Support-Anfrage an HTC gesendet, die noch bearbeitet wird. Ich bin gespannt, ob darauf geantwortet wird.
Zwischenzeitlich kann ich zumindest einen Mirror für die Linux-Binary und Windows-Binary bereitstellen. Für Mac OS X habe ich die kompilierte Dateie leider nicht zur Verfügung, diese kann aber aus diversen Bundles und dem Android-SDK extrahiert werden. Hierbei muss allerdings auf die entsprechend verwendeten Libraries geachtet werden!

Update 2 2011-10-20: Bislang habe ich leider keine Rückmeldung von HTC bekommen. Doch Windows- und Mac-Nutzer haben es im Gegensatz zu Linux-Nutzern gut, denn sie können die Datei im Ordner "platform-tools" ihres Android-SDKs finden. ggf. müssen diese zunächst über den SDK-Manager heruntergeladen und installiert werden.

Meine Abhängigkeiten unter Linux sehen wie folgt aus:

ldd /home/user/bin/fastboot
        linux-gate.so.1 =>  (0xf776c000)
        libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf763d000)
        libm.so.6 => /usr/lib32/libm.so.6 (0xf7613000)
        libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf75f8000)
        libc.so.6 => /usr/lib32/libc.so.6 (0xf748f000)
        /lib/ld-linux.so.2 (0xf776d000)

Falls es nicht klappen sollte mit der Verbindung zum Gerät unter Linux, sollten die udev-Regeln ggf. überprüft und für ADB-Geräte erweitert werden. Dies steht im obig-verlinkten Android-Wiki-Eintrag "Fastboot". Eine aktuelle Liste der Vendor-IDs lässt sich auf der Seite von Android Developers finden.

Ich habe es mit meinem HTC Desire HD getestet und es sollte einwandfrei funktionieren. Jedoch wird meist ein Gerät mit S-OFF und ein sogenannter Engineering-Bootloader empfohlen, da sonst in der Regel die Funktionalität von fastboot eingeschränkt wird oder sogar Schäden am Gerät entstehen könnten.

Binärdateien für Mac OS X und Windows lassen sich ebenfalls dort herunterladen.

Hintergründe

Mit fastboot ist es möglich, Partitionen eines Gerätes, was wohl zumeist ein Android-Smartphone oder -Tablet darstellen würde, mit bestimmten Daten – genannt Images – zu flashen oder die Inhalte von Partitionen zu löschen. Für den Vorgang wird eine USB-Verbindung benötigt, da so das Gerät sicher angesteuert werden kann. Dies bedeutet, dass ein Teil des NAND-Flashs, der im Gerät auf den Platinen fest eingelötet ist, mit bestimmten Daten befüllt wird. Der Speicher beinhaltet meist die Partitionen /boot, /system und das Recovery-System, das im Produktionszustand oft nicht für Endverbraucher nutzbar ist, sofern keine Nachinstallation stattfindet. fastboot kann jedoch auch andere Partitionen des Speichers beschreiben (je nach Gerät) wie z.B. die Partition für den Splashscreen namens splash1. Um einen eigenen Splashscreen für HTC-Geräte zu erstellen, der nach dem Booten des Gerätes angezeigt wird, kann das Tool nbimg verwendet werden, um konforme NB-Dateien für HTC-Geräte aus BMPs zu erzeugen.

Laut Herstelleraussagen ist so eine Nutzung des Gerätes meist mit einem Garantieverlust behaftet, da hierfür meist durch Sicherheitslücken Rechte zum Schreiben auf privilegierte Bereiche errungen werden, die hierfür nicht vorgesehen waren und so ein Eingriff in die vorgeschriebene Software stattfindet, was in den meisten Fällen dem vom Hersteller erteilten Garantieanspruch widerspricht. Ebenso beim Austausch des Hersteller-Bootloaders durch einen Engineering-Bootloader bei neuen Geräten wird stets mit dem Verlust von Garantieanteilen gewarnt.
Auf der neuen Developer-Seite von HTC http://htcdev.com/ lassen sich nun Anweisugnen finden, um den Bootloader neuer Geräte für die Installation von Dritt-Firmware freizuschalten: http://htcdev.com/bootloader/

Es ist ebenfalls möglich mit fastboot eigene Kernel für das System zu übertragen und diese zu booten. Dies kann beispielsweise genutzt werden, um die Schnittstellenansteuerung über den USB-Port abzuändern, um einen USB-Host zu emulieren. Weitere Anwendungsfälle könnten z.B. ein Kernel sein, der bestimmte Treiber, Module oder Einstellungen bereitstellt und den Prozessortakt gezielt abändern kann.

4 Kommentare
mehr...

Anleitung / Howto: Android ssh-Zugriff über ssh-Zugang auf ssh-Server mit PublicKeys sowie BASH über den QuickSSHd-sshd-Server am Beispiel des Smartphones HTC Desire HD mit WLAN-Verbindung

von am Sa. 05. Feb 2011, unter Anleitungen

In diesem Howto zeige ich, wie auf einfach Art und Weise ein ssh-Server mit PublicKeys auf dem Android-Smartphone HTC Desire HD für ssh-Zugriff eingerichtet werden kann. Prinzipiell sollte dies auf den meisten aktuellen Android-Smartphones so funktionieren. Es sollte möglichst eine Version vom Android-OS über oder gleich 2.1 verwwendet werden, da ich mir vorstellen könnte, dass ältere Versionenn Probleme mache würden.

Wichtig: Höchstwahrscheinlich blockieren Mobilfunk-Provider die Ports bei einer mobilen Internet-Verbindung. Diese Anleitung wurde mit einer WLAN-Verbindung getestet. Somit richtet sich die Anleitung an Leute, die Android ssh-Zugang per WLAN erhalten möchten.

Ebenfalls zeige ich in dieser Anleitung die Konfiguration der Client-Seite (ssh) unter Linux, um uns zum sshd-Server auf dem Android-Gerät zu verbinden, womit wir Android ssh-Zugang erlangen. Für Windows-Nutzer würde ich Cygwin it den jeweiligen Paketen oder direkt PuTTY empfehlen.
Natürlich kann der Server auch als sftp-Server verwendet werden.

Als Shell wird hier die weitaus komfortablere BASH verwendet, da die standard-Shell auf Android-Telefonen leider sehr eingeschränkt n den Fähigkeiten ist.

Der Vorteil von QuickSSHd gegenüber der unmodifizierted Version von dropbear: Wir müssen nichts selber ins Dateisystem kopieren oder anpassen und haben immer die Möglichkeit, das Programm auf einfache Weise zu deinstallieren. Außerdem bietet QuickSSHd ein sehr praktisches Desktop-Widget, das bei Betätigung den SSH-Server aktiviert oder wieder deaktiviert.

Um den SSH-Server zu starten benötigen wir keine root-Rechte. Diese werden allerdings benötigt, wollen wir den Dienst an einen Port unter 1024 binden. Ich würde root-Rechte dringenst empfehlen, aber dennoch den Standard-Port ändern.

QuickSSHd können wir über den Android-Market (market://search?q=pname:com.teslacoilsw.quicksshd) oder auf der Homepage per PayPal-Zahlung beziehen.
Das Programm kostet derzeit $1,50.

Hier der QR-Code von der Originalseite zum Scannen:

QR-Code für QuickSSHd im Android-Market

Starten wir nun die App und vergeben zunächst ein Passwort und ändern den Port von 2222. Ich verwenden meist 28 als alternativen SSH-Port. In den Einstellungen, die wir über den Menu-Button erreichen, sollten wir keinesfalls "Beim Booten starten" aktivieren. "unechte SFTP Berechtigungen" sollten aktiv sein. Beim ersten Start des Servers werden die RSA-Schlüssel für SSH auf dem Android erzeugt. Hat alles geklappt, sollte am unteren Rand in den Debug-Informationen "Running in background" zu lesen sein.

Nun können wir den SSH-Server starten. Die IP des Gerätes wird im Fenster angezeigt. So können wir uns auf unserer lokalen Maschine oder direkt auf dem Gerät mit einem ssh-Client wie z.B. Irssi ConnectBot verbinden.

In meinem Beispiel hat mein HTC Desire HD Smartphone, zu dem wir den ssh-Zugang aufbauen, immer die IP 192.168.2.124.

Haben wir root-Zugriff können wir uns mit dem root-Benutzer verbinden.

#ssh -p 28 192.168.2.124 -l root -C -2

Nun werden wir gefragt, ob wir uns wirklich mit dem Server verbinden möchten:

The authenticity of host '[192.168.2.124]:28 ([192.168.2.124]:28)' can't be established.
RSA key fingerprint is b8:35:a0:6a:a8:e6:d1:69:3f:e3:83:17:e0:61:13:38.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.2.124]:28' (RSA) to the list of known hosts.
QuickSSHD for Android
root@192.168.2.124's password: [Passworteingabe]
#

Nun geben wir das von uns zuvor vergebene Passwort ein.

Funktioniert es, sehen wir mit der Standard-Shell nun eine Raute und können Kommandos absetzen.

Sollten wir keine root-Rechte zur Verfügung haben, sollten wir uns mit einem anderen Benutzer verbinden:

#ssh -p 2228 192.168.2.124 -l non-root -C -2

So wird folgende Mitteilung bei der Verbindung angezeigt:


QuickSSHD for Android
Single-User mode (Any username works).
Root your device to allow users.

non-root@192.168.2.124's password: [Passworteingabe]

Da ich mit der LeeDroid-ROM arbeite, habe ich root-Rechte und gehe im weiteren Verlauf auch davon aus, dass diese vorhanden sind.

Nun – da wir uns einloggen können – sollten wir die Verwendung der Option "Gemeinsam verwendete Schlüssel" einplanen (diese jedoch noch nicht aktivieren) und unsere PublicKeys erstellen und anschließend verwenden.

Hierfür erstellen wir unter Linux diese zunächst lokal und fügen den öffentlichen Schlüssel dann zur Liste der autorisierten Schlüssel auf dem Handy hinzu:

#ssh-keygen -t rsa -b 4096 -f ~/.ssh/desirehd_rsa
Generating public/private rsa key pair.
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Eingabe der Passphrase]
Enter same passphrase again: [Erneute Eingabe der Passphrase]
Your identification has been saved in /home/user/.ssh/desirehd_rsa.
Your public key has been saved in /home/user/.ssh/desirehd_rsa.pub.
The key fingerprint is:
38:8a:74:c6:cd:45:bc:5c:da:81:63:93:76:0b:df:6c user@user

#cat ~/.ssh/desirehd_rsa.pub | ssh -p 28 192.168.2.124 -l root -C -2 "umask 177 && cat >> .ssh/authorized_keys"
QuickSSHD for Android
root@192.168.2.124's password: [Passwort-Eingabe]

Nun haben wir den Schlüssel vorliegen, autorisiert und können diesen dem ssh-Agenten mitteilen, der den Schlüssel für künftige Verbindungen der Login-Session berücksichtigt:

#ssh-add ~/.ssh/desirehd_rsa
Enter passphrase for /home/user/.ssh/desirehd_rsa:
Identity added: /home/user/.ssh/desirehd_rsa (/home/user/.ssh/desirehd_rsa)

Ab jetzt sollten wir in der Lage sein, uns ohne Passwort einzuloggen. Es muss lediglich noch die Option "Gemeinsam verwendete Schlüssel" im Hauptfenster des QuickSSHd aktiviert werden. Ich würde nun empfehlen, das Login durch das gewöhnliche Passwort zu deaktivieren.

#ssh -p 28 192.168.2.124 -l non-root -C -2
QuickSSHD for Android
#

Dies hat also funktioniert. Um es nun ein wenig komfortabler auf der lokalen Maschine zu haben, können wir einen Konfigurationseintrag für den ssh-Client anlegen. Dieser wird in der Datei ~/-.ssh/config definiert und könnte wie folgt aussehen:

Host desirehd
HostName 192.168.2.124
Protocol 2
User root
Port 28
PubkeyAuthentication yes
Compression yes
CompressionLevel 9

Jetzt ist es möglich, sich einfach mit

#ssh desirehd
QuickSSHD for Android
#

zu verbinden.
Somit haben wir nun einen einfachen Android ssh-Zugriff über PublicKeys und können uns zudem noch recht einfach zum ssh-Server Verbinden.

Möchten wir nun noch die BASH nutzen, finden wir diese bei den meisten ROMs direkt beiliegend und starten sie einfach mit dem Befehl bash nach dem Verbinden.
Sollte sie nicht vorhanden sein, so müssen wir zunächst eine BASH-Version für Android Ausfindig machen und diese möglichst in das Verzeichnis /system/bin/ kopieren.

Soll die BASH standardmäßig ausgeführt werden, können wir – wie auf der verlinkten Seite angegeben – die alte sh-Version verschieben.

#cd /system/bin
#chmod 0755 bash #optional, falls diese manuell installiert wurde
#mv sh sh0
#ln -s bash sh

Verbinden wir uns nun erneut, so sehen wir, dass wir uns in einer BASH-Sitzung befinden.

Zur Unterscheidung der Logins durch PROMPT-Anpassung, empfehle ich diese in der Datei /mnt/sdcard/bash_profile anzupasen sowie eine Historie anzugeben, um die letzten Befehle zu nutzen und einzusehen.
Falls bash-Completion-Funktionen durch /etc/bash_completion genutzt werden, können sie in den Ordner /etc/bash_completion.d/ kopiert werden:

if [[ ${EUID} == 0 ]] ; then
PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '
else
PS1='\[\033[01;32m\]\h\[\033[01;34m\] \w \$\[\033[00m\] '
fi
HISTFILE=/mnt/sdcard/bash_hist

test -r /etc/bash_completion && . /etc/bash_completion

So sollten wir recht komfortabel auf unserem Android-Smartphone eine SSH-Sitzung nutzen können und sind in der Lage per ssh auf unser Android-Handy Desire HD oder andere Smartphones zuzugreifen.

Um den Server noch etwas angenehmer zu starten als über die geöffnete App, können wir auf unserem Android-Desktop das mitgelieferte QuickSSHd-Widget platzieren und verwenden, um den ssh-Server einfach mit einem Fingertip zu starten oder zu stoppen.

Ich hoffe diese Anleitung hat vielleicht dem einen oder anderen geholfen. In jedem Fall ist es eine gute Gedächtnisstütze für mich.

Kommentar hinterlassen
mehr...

Dschungelkönig 2011 gekrönt: Peer Kusmagk ist der neue Dschungelcamp-Gewinner 2011 der 5. Staffel "Ich bin ein Star – Holt mich hier raus!"

von am Mo. 31. Jan 2011, unter TV & News

Es ist nun vollbracht.
"11 Stars, 1 Dschungel, 16 Tage", wie es Dirk Bach unter anderem in seiner speziellen Art ab 22:15 auf RTL Television im Vorspann der Einschaltquoten-Erfolgssendung ankündigte, haben nun ihr Ende gefunden.

Viele stellten sich die Frage: "Wer wird Dschungelkönig 2011?" oder wie es bis zum letzten Tage im Dschungelcamp auch hätte heissen können: "Wer wird Dschungelkönigin 2011?".

Die Antwort steht nun fest! Der Fernsehsender RTL brachte nach 16 Tagen aufreibender "Ich bin ein Star – Holt mich hier raus!"-Action nun die Antwort, auf die viele Zuschauer und Hörinteressierte gewartet haben. Am 29.01.2011 um 23:51 Uhr deutscher Zeit – oder besser gesagt 8:51 Uhr australischer Zeit – wurde die bunte Krone nun mehr zum 5. Mal verliehen, der Thron bestiegen und ein neuer König des Dschungelcamps für das Jahr 2011 ernannt.

Der deutsche Schauspieler und Fernsehmoderator Peer Kusmagk hätte aufgrund der turbulenten Verhaltensmissstände der Gruppe in der imporvisierten, australischen grünen Hölle wohl noch am wenigsten mit dem Titel des Gekrönten gerechnet, hatte er es zwischenzeitlich wirklich nicht leicht. Vom Freudentaumeln über Feierlieder zu mitleidsvollen aber auch Tränen unverständlicher Natur wieder zurück zu Freudenausbrüchen hatte er eine rege Achterbahnfahrt durchgemacht. Vor allem den Konflikt um die junge Sahre Knappik sah er mit anderen Augen als viele anderen Campbewohner. So konnte er sich wohl nicht so recht damit anfreunden, einfach jemanden zu verstoßen und sich kollektiv gegen eine einzelne Person zu stellen, worauf er sich einige Zeit lang zum Außenseiter wandelte.

Gerade mit seiner teils hyperaktiven, leicht tollpatschigen aber auch sensiblen Art dürfte er das Herz vieler Frauen erobert haben. Yoga, Meditation, "keine Zigaretten" und die Unausweichlichkeit vieler Probleme haben wohl ihren ganz eigenen Teil zu Peers Erfolgsgeschichte in Australien 2011 beigetragen.

Die Antwort lautet also: Peer ist Dschungelkönig 2011! Katy ist die Dschungelsiegerin mit der Silbermedaille und Thomas hat ebenfalls einen Platz auf dem Treppchen verdient.

Die 3 Finalisten absolvierten am 16. Tag Ihres Dschungelaufenthaltes Prüfungen, die sie abermals an ihre Grenzen vorantrieben.
Sie hatten wohl die Qual der Wahl und dennoch nur grauen Dunst vor Augen als sie sich für die Dschungelprüfungen "Das Ziel", "Der Wille" und "Der Weg" entscheiden mussten.

So musste Thomas Rupprath lediglich mit dem Mund verteilte Sterne aus engen Kammern, die mit Insekten, Reptilien oder anderen Unannehmlichkeiten gefüllt waren an eine Magnetstelle des Glaskastens anbringen. Dass dieser hierbei eine großartige Leistung vollbrachte, steht außer Frage und obwohl er in der letzten Sektion des Terrariums nicht beide Sternhälften fand, wurden ihm letztendlich von Dirk und Sonja alle 5 Sterne zugesprochen.

Katy Karrenbauer durfte ihre Prüfung im Sitzen über sich ergehen lassen und wurde mit europäischen Spezialitäten zunächste gelockt und dem australischen Pendant wiederum erschreckt. Nicht gerade viele Menschen hätten sich gerne in der Rolle von Katy wiedergefunden als sie beispielsweise ein ganzes, vergorenes Entenei essen sollte, ein volles Glas Kamelblut zu sich nehmen, ein Hirschpenis verschlingen oder aus einem Lammschädel Hirn verzehren sollte. Keine leichte Aufgabe, bei der sich Katy auch einmal übergab und beim Lammhirn sogar passen musste. Jedoch sammelte diese schlußendlich beachtliche 3 Sterne.

Nicht zu verachten auch Peers Aufgabe. Er musste 5 Minuten in eine verschlossene Kiste unter die Erde. Ratten leisteten ihm dabei Gesellschaft, wobei nach der ersten Minute zusätzlich noch Wasser in die Kiste eingelassen wurde und sich die Ratten auf den hilflosen Kusmagk stürzten, der völlig kühl Ruhe bewahrte und sich kaum rührte. Eine respektable Vorstellung Kusmagks, die volle 5 Sterne verdiente.

Ein weiteres Highlight der letzten Folge: Jays Zusammenbruch nach Ankunft im australischen Hotel. Flüsterte er noch Tage zuvor zu Indira im Camp, dass es ihm einfach zuviel wird.

Gewohnt mit trockenem Humor untermalten Dirk Back und Sonja Zietlow die Sendung um die vermeintlichen "Stars", die zwischenzeitlich dann doch ganz gern wieder als Promis bezeichnet wurden.

Schlußendlich gab es nach der Krönung noch die Ansage der Versammlung aller Teilnehmer am Folgetag. Um 20:15 wurde das Aufeinandertreffen auf RTL ausgestrahlt.
Dieses Treffen brachte einige Überraschungen mit sich. Gleich zu Beginn jedoch eine zu erwartende Aussageb: Das Dschungelteam 2011 sei die bis dato stärkste und interessanteste dagewesene Formation.
Ebenfalls nicht verwunderlich Indiras Aussage, die behauptete, dass nichts zwischen ihr und Jay Kahn gespielt oder abgesprochen sei. Sie denke nicht an eine inszenierung Jays.

Sarah hingegen entschuldigte sich bei Eva Jacob für ihr respektloses Verhalten sowie bei Rainer Langhans für die "Ghetto-Faust", jedoch nicht bei Jay und Indira für die Unterstellung der Inszenierung und hält weiterhin an ihrer Aussage fest, dass alles nur gestellt sei, es jedoch auch möglich wäre, dass sich wahre Liebesgefühle zwischen den beiden hätten entwickeln können. Reine Taktik zum Selbstschutz oder die Wahrheit? Sollte dies eine unwahre Behauptung sein, die sie als Fakt darzustellen versucht, kann nur Sarah wieder wirklich reinen Tisch für die beiden und die Öffentlichkeit machen, sie hat dabei schließlich nichts zu verlieren.

Ebenfalls unerwartet die Entschuldigung Mathieus an Peer, der sich recht antwort-suchend rechtfertigte. Ihm brannte ein Schaltkreis durch. Schlußendlich verzieh ihm Peer und die beiden nahmen sich wieder in den Arm und Peer die Entschuldigungsbanane für seinen Affen an. Bei Sarah entschuldigte sich Mathieus jedoch nicht. Zuvor hat er sie Knien in alter Schauspieler-Manier gebeten, das Camp zu verlassen.

Sarah hingegen rechtfertigte sich für ihr Verhalten damit, dass sie einfach müde gewesen wäre und nicht so cool wäre, wie sie hätte erscheinen wollen.

Dies scheint es nun gewesen zu sein mit der 5. Staffel Ich bin ein Star – Holt mich hier raus!

Noch einmal zur Übersicht alle Teilnehmer dieser Staffel mit jeweils passender Verlinkung zum Wikipedia-Eintrag:

Man darf gespannt sein, welche Geheimnisse noch aufgedeckt werden und was möglicherweise nächstes Jahr folgen wird!

Kommentar hinterlassen
mehr...

Mit der Installation des Android-VNC-Servers "droid VNC Server" das Android-Smartphone HTC Desire HD und andere für Remote Desktop-Verbindungen einrichten und konfigurieren

von am So. 09. Jan 2011, unter Hardware, Netzwerk

Remote Desktop-Verbindungen über das Netzwerk können sehr nützlich sein und Zeit sparen oder mehr Komfort herbeiführen. VNC bzw. RFB ist ein bekanntes und beliebtes Remote Desktop-Protokoll. Auch auf dem Android-Betriebssystem sind solche VNC-Server für Fernwartung zum Installieren verfügbar.

Auf meinem HTC Desire HD kommt die App droid VNC zum Einsatz, die einen simplen VNC-Server bereitstellt. Die Installation des VNC-Servers geschiet einfach über den Android-Market.
Die App stellt leider keine SSL-Verschlüsselung zur Verfügung, also sollten wir den Server immer mit Bedacht verwenden, denn wer root-Rechte auf dem Handy hat, kann damit auch schnell Sicherheitsprobleme bekommen. Darüber hinaus gibt es auch VNC-Passwortcracker mittels Brute-Force wie z.B. vncrack. Es sei also Vorsicht geboten.

Wichtig ist wie bereits beschrieben hier ein Zugriff auf root-Rechte des Smartphones. Ohne diese kann der Server sich nicht initialisieren.
Des Weiteren ist nicht sicher, ob dieser Server auf dem jeweiligen Smartphone-Modell auch korrekt ausgeführt wird und funktioniert. Möglicherweise gibt es noch Fehler oder Bugs für den Handytypen. In diesem Fall wäre ein Bugreport sinnvoll.

Hier der aktuell beworbene Umfang des droid VNC-Servers:

Allows you to remote control your android within your computer!

Features:
- Password authentication
- Rotate/Scale
- Wifi & USB & 3G (when supported by carrier)
- Mouse & Kb emulation
- Open-source
- Clipboard support
- …

You need a ROOTED device.
How-to: http://goo.gl/JE1Q

http://github.com/oNaiPs/droid-VNC-server

Hier die Installationsanleitung zur Einrichtung vom VNC auf dem Android-Gerät auf englisch: http://opensourceexcedio.wordpress.com/2010/10/28/droid-vnc-server/

Sobald der Server auf dem Android-Handy gestartet wurde und wir auf den Desktop (Home-Taste) zurückkehren, werden wir feststellen, dass dieser neugeladen wird.

Für Windows können wir einfach den kostenlosen RealVNC-vncviewer "VNC® Viewer Free Edition 4.1 for Windows" nutzen.

Apple Macintosh-Computer können das Programm Chicken of the VNC verwenden.

Unter Linux können wir z.B. den Open Source vnc-Client tigervnc verwenden, um eine Netzwerkverbindung aufzubauen. tigervnc ist ein Satz dateikompatibler Binärpakete.

Damit wir nicht immer das Passwort mit der Hand eingeben müssen, können wir dies in einer Datei speichern, deren Zugriffsrechte beschränkt sind.

#vncpasswd ~/.vnc/.passwd_android
Password: [eingabe]
Verify: [erneute eingabe]

Nun können wir uns mit dem Kommando vncviewer verbinden:

#vncviewer IP:PORT -passwd .vnc/.passwd_android
TigerVNC Viewer for X version 1.0.90 – built Jan 6 2011 02:29:42
Copyright (C) 2002-2005 RealVNC Ltd.
Copyright (C) 2000-2006 TightVNC Group
Copyright (C) 2004-2009 Peter Astrand for Cendio AB
See http://www.tigervnc.org for information on TigerVNC.

Sun Jan 9 17:51:21 2011
CConn: connected to host IP port PORT
CConnection: Server supports RFB protocol version 3.8
CConnection: Using RFB protocol version 3.8
TXImage: Using default colormap and visual, TrueColor, depth 24.
CConn: Using pixel format depth 24 (32bpp) little-endian rgb888
CConn: Using Tight encoding
[...]

#man vncviewer

..gibt grundlegende Aufruf-Optionen im Manual aus.

Die Bedienung des droid VNC wird ja bereits in der obigen Anleitung auf englisch beschrieben.

Hier noch einmal die Wichtigsten Bedienelemente auf deutsch:

  • Single-Touch: Linke Maustaste (die gedrückte Maustaste einfach so nutzen, wie man den Finger auf dem Display nutzen würde)
  • Power-Hardkey: Ende
  • Home-Softkey: Pos 1/Home
  • MENU-Softkey: Bild hoch
  • Zurück-Softkey: ESC-Taste,Entfernen
  • Telefonbuch: Linke STRG-Taste,Bild runter

Jede der Funktionstasten, die über den VNC-Viewer abgesetzt werden, aktiviert das Display wieder, sollte es abgeschaltet worden sein.

Derzeit funktionieren mit diesem Server (Version 0.991) wohl einige Umlaute und Sonderzeichen bei der Eingabe mit der Tastatur noch nicht richtig.
Praktisch wäre hier, könnte man das Soft-Keyboard mit einer Taste aus- und einfahren, um auch alle Sonderzeichen verwenden zu können. Ebenfalls die Nutzung des Numpads wäre eine nützliche Erweiterung.

Ich habs bislang noch keinen Vergleich was den Stromverbrauch angeht, aber aus Sicherheitsgründen würde ich empfehlen, den Server nicht mit dem System zu starten. Dies erreichen wir, indem wir in den "Settings" die Option "Start server on boot" deaktiviert lassen bzw. ausstellen.

"Notify on client connect" würde ich wiederum in jedem Fall aktivieren, um zu sehen, ob Verbindungen aktiv sind.

2 Kommentare
mehr...

Anleitung / Howto: Android-Smartphone HTC Desire HD unter Linux automatisch über Bluetooth-FTP mounten mit autofs und obexfs

von am So. 02. Jan 2011, unter Anleitungen, Hardware, Linux

In diesem Howto zeige ich am Beispiel des HTC Smartphones Desire HD wie mit autofs ein Mountpunkt über das Bluetooth-Protokoll mit obexfs (einem Dateisystem unter Verwendung von obexftp, das auf FUSE basiert) eingehängt wird.
Diese Installationsanleitung und -Ausführung zeige ich unter Archlinux, daher werde ich die Pakete und Paketnamen der Archlinux-Repository"target="_blank" title="" >Repositories verwenden.

Für den Einsatz gelten folgende Vorausetzungen:

  • Hardware:

    Bluetooth-Empfänger bzw. Bluetooth-Adapter

  • Software:

    bluez zur Nutzung des Bluetooth-Protokolls

    autofs zum automatischen Mounten bei Verzeichnis-Operationen

    obexftp zum Testen der Bluetooth-FTP-Verbindung

    obexfs zum Mounten der Bluetooth-FTP-Verbindung

Beginnen wir also direkt mit der Installation der Pakete über pacman bzw. dem Installationswerkzeug der entsprechenen Distribution wie z.B. yast, zypper, yum, apt-get, aptitude usw.:

#pacman -S bluez autofs obexftp obexfs
Löse Abhängigkeiten auf…
Suche nach Zwischen-Konflikten…

Pakete (14): bluez-4.82-1 libsasl-2.1.23-5 libldap-2.4.23-1 libxml2-2.7.8-1 sqlite3-3.7.4-1 heimdal-1.3.3-4 autofs-5.0.5-3 libusb-compat-0.1.3-1 openobex-1.5-2 libffi-3.0.9-1 python2-2.7.1-3 obexftp-0.23-4 fuse-2.8.5-1
obexfs-0.12-2

Gesamtgröße des Downloads: 13,47 MB
Gesamtgröße der zu installierenden Pakete: 94,96 MB

Ich hab die Ausgabe direkt mikopiert, um zu zeigen, welche Versionen ich verwende. Bei mir wurden schon diverse Pakete installiert, es könnte also sein, dass das ein oder andere Paket fehlt oder hinzukommt bei der Ausgabe.

Wurde alles installiert, können wir mit der Konfiguration fortfahren.

Zu Beginn starten wir den bluetooth-Dienst über das rc-d-Skript.

Falls dbus noch nicht gestartet wurde, ist jetzt übrigens der richtige Zeitpunkt dafür.


#sudo /etc/rc.d/dbus start
:: Starting D-BUS system messagebus
#sudo /etc/rc.d/bluetooth start
:: Starting bluetooth subsystem: bluetoothd

Für die Ausführung des nächsten Schrittes muss Bluetooth auf dem DHD (Kurzform für Desire HD) aktiviert werden, ebenfalls muss der Bluetooth-FTP-Server aktiv sein, sollte dies nicht bereits der Fall sein.

Um Bluetooth auf dem Desire HD zu aktivieren, gehen wir wie folgt vor:

  • -> MENU-Taste
  • -> Einstellungen
  • -> Drahtlos und Netzwerk
  • Bluetooth aktivieren
  • -> Bluetooth-Einstellungen
  • Sichtbar aktivieren
  • -> Erweiterte Einstellungen
  • FTP-Server aktivieren

Die Sichtbarkeit vom Desire HD hält für 2 Minuten (120 Sekunden abwärtszählend im Menu) an, sollte dies nicht für den nächsten Schritt der Paarung genügen, müssen wir sie einfach wieder aktivieren.

Nun ist Bluetooth auf dem DHD aktiv und es können Paarungen und Verbindungen vorgenommen werden.

Unter Einstellungen -> Telefoninfo -> Hardware-Informationen können wir nun die MAC-Adresse sehen.

Um nun herauszufinden, ob wir unser DHD als Bluetooth-Gerät finden, können wir hiernach scannen. Zunächst sollten wir jedoch mit hcitool nachsehen, ob unser Bluetooth-Adapter auch funktioniert und einsatzbereit ist.

#hcitool dev
Devices:
hci0 xx:xx:xx:xx:xx:xx

Wurde das Gerät hci0 (bei mehreren Adaptern natürlich fortlaufend nummeriert) mit einer MAC-Adresse initialisiert, sollten wir dieses also auch nutzen können.

Mit folgenden sinnvollen Kommandos mittels dbus-send können wir verschiedene Werte unseres Adapters ändern.

Bitte bachten:
Falls mehrere Bluetooth-Geräte zur Verfügung stehen, sollte "/org/bluez/`pidof -s bluetoothd`/hci0" angepasst werden. Eine Auflistung der gefunden Adapter kann mit folgendem Kommando ausgegeben werden:

#dbus-send --system --type=method_call --print-reply --dest=org.bluez "/" org.bluez.Manager.ListAdapters
method return sender=:1.140 -> dest=:1.146 reply_serial=2
array [
object path "/org/bluez/19333/hci0"
]

In diesem Beispiel steht nur ein Adapter zur Verfügung.

Hier also die Kommandos.

  • Namen des Bluetooth-Adapters ändern (Zeichenkette):

    #dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:Name variant:string:"Bluetooth-Adapter-Name"

  • Sichtbarkeit des Bluetooth-Adapters ein oder ausschalten (true oder false, aktiviert bzw. deaktiviert zusächlich den PSCAN-Modus):

    #dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:Discoverable variant:boolean:true

  • Timeout des Bluetooth-Adapters für die Deaktivierung der Sichtbarkeit (Ganzzahl, bei 0 bleibt die Sichtbarkeit deaktiviert):

    #dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:DiscoverableTimeout variant:uint32:180

  • Paarung des Bluetooth-Adapters aktivieren (true oder false):

    #dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:Pairable variant:boolean:true

  • Timeout des Bluetooth-Adapters für die Deaktivierung der Paarung (Ganzzahl, bei 0 bleibt die Paarung deaktiviert):

    #dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:PairableTimeout variant:uint32:120

Ausweichsweise können wir auch die GUI bluetooth-properties für den Namen und die Sichtbarkeit nutzen. Die aktuelle Koniguration der Adapter befindet sich in den Unterordnern von /var/lib/bluetooth/

Mit hciconfig können wir nun die Informationen über unseren Adapter abfragen.

#hciconfig -a hci0
hci0: Type: BR/EDR Bus: USB
BD Address: xx:xx:xx:xx:xx:xx ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:3533328 acl:82901 sco:0 events:249340 errors:0
TX bytes:87641653 acl:415843 sco:0 commands:67 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0×59 0×83
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'Bluetooth-Adapter-Name'
Class: 0×480100
Service Classes: Capturing, Telephony
Device Class: Computer, Uncategorized
HCI Version: 2.1 (0×4) Revision: 0x12e7
LMP Version: 2.1 (0×4) Subversion: 0x12e7
Manufacturer: Cambridge Silicon Radio (10)

Her sehen wir, dass nur PSCAN (Page Scan) aktiv ist, für das Scannen nach Geräten müssen wir aber den ISCAN (Inquiry Scan) auch aktivieren. Wenn ISCAN bereits aktiviert wurde, müssen wir es natürlich nicht mehr aktivieren.

#sudo hciconfig hci0 piscan
#hciconfig -a hci0
hci0: Type: BR/EDR Bus: USB
BD Address: xx:xx:xx:xx:xx:xx ACL MTU: 310:10 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:3533328 acl:82901 sco:0 events:249340 errors:0
TX bytes:87641653 acl:415843 sco:0 commands:67 errors:0
Features: 0xff 0xff 0x8f 0xfe 0x9b 0xff 0×59 0×83
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
Name: 'Bluetooth-Adapter-Name'
Class: 0×480100
Service Classes: Capturing, Telephony
Device Class: Computer, Uncategorized
HCI Version: 2.1 (0×4) Revision: 0x12e7
LMP Version: 2.1 (0×4) Subversion: 0x12e7
Manufacturer: Cambridge Silicon Radio (10)

Jetzt scannen wir einfach mal die Landschaft. :) Bitte wieder beachten, dass das DHD noch sichtbar sein muss, da wir sonst nicht die MAC-Adresse sehen können!

#hcitool scan
Scanning …
hh:hh:hh:hh:hh:hh DesireHD

#hcitool name hh:hh:hh:hh:hh:hh
DesireHD

Ich verwende absichtlich nun hh:hh:hh:hh:hh:hh als Schreibweise, damit der Unterschied zur MAC-Adresse des Empfängers klar wird.

Da es nun Bestätigung gibt, dass das Gerät gefunden wird, können wir versuchen, die Paarung durchzuführen. Die Paarung bzw. auch Kopplung wird benötigt, damit wir wissen, dass wir autorisiert sind, auf das Gerät zuzugreifen und umgekehrt. Denn ohne die Kopplung könnte sich ja jedes Gerät verbinden, was definitiv nicht wünschenswert wäre.

Hierfür starten wir also auf dem Handy den Geräte-Scan, dieser ist im selben Menu wie oben beschrieben zu finden:

  • -> MENU-Taste
  • -> Einstellungen
  • -> Drahtlos und Netzwerk
  • -> Bluetooth-Einstellungen
  • -> Erweiterte Einstellungen
  • Scan nach Geräten betätigen

Klappt alles, haben wir nach einigen Sekunden unser Gerät gefunden und können das Pairing mit einem Fingertip starten. Sollte nichts gefunden werden, hat der Bluetooth-Daemon bluetoothd die Sichtbarkeit deaktiviert. In diesem Fall sollten wir die Sichtbarkeit wieder aktivieren, da wir mit Desire HD-Bordmitteln ohne zusätzliche Apps nur sichtbare Geräte verwenden können.

Hierzu können wir bluetooth-properties verwenden und dann den Adapter wieder auf sichtbar stellen oder die folgenden Kommandozeilenaufrufe ausführen:

#dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:Discoverable variant:boolean:true
#dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/`pidof -s bluetoothd`/hci0 org.bluez.Adapter.SetProperty string:DiscoverableTimeout variant:uint32:180

Sofern wir keine Desktopumgebung mit Bluetooth-Integration wie z.B. KDE oder GNOME zur Verfügung haben, können wir den bluez-simple-agent verwenden, um die Verbindung anzunehmen.

#bluez-simple-agent
Agent registered
#[nun auf dem Handy das Pairing starten]
RequestConfirmation (/org/bluez/7614/hci0/dev_hh_hh_hh_hh_hh_hh, dddddd)
Confirm passkey (yes/no):
#yes
#[nun auf dem Handy das Pairing mit einem Druck auf "Paaren" akzeptieren]

Ist eine Desktopumgebung mit Bluetooth-Integration vorhanden und in der Ausführung, wird in der Regel eine Popup-Meldung angezeigt, in der wir der Paarung direkt zustimmen können.

In jedem Fall muss in den Bluetooth-Einstellungen die Paarung durchgeführt werden, sonst werden wir keine Möglichtkeit zur Verbindung bekommen.

Alternativ können wir auf einer graphischen Oberfläche auch das Programm bluetooth-properties aufrufen und über die GUI das Gerät hinzufügen. Der Ablauf ist der Selbe.

Im Endeffekt sollte auf dem Handy unser Name des Bluetooth-Adapters mit der Meldung "Geparrt. Nicht verbunden." zu sehen sein.

So ist es nun also bereit, unsere Anfragen anzunehmen. Starten wir also eine Verbindung über obexftp. Für diesen Vorgang benötigen wir die MAC-Adresse. Im Zweifelsfall können wir diese wieder wie oben beschrieben herausfinden.

#sudo obexftp -b hh:hh:hh:hh:hh:hh -l
Browsing hh:hh:hh:hh:hh:hh …
Connecting..\done
Tried to connect for 20ms
Receiving "(null)"…-< ?xml version="1.0"?>
< !DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd">
<folder -listing version="1.0">
<folder name="LOST.DIR"/>
<folder name=".android_secure"/>
[...]#Hier folgt die Auflistung der spezifischen Ordner der SD-Karte
</folder>done
Disconnecting..\done

Nach Absetzen des Befehls wird auf dem DHD gefragt, ob die Bluetooth-Autorisierungaanfrage akzeptiert werden soll. Bei dieser Anfrage bekommen wir Gelegenheit, die Verbindung immer automatisch akzeptieren zu lassen, da sonst der Sinn des automatischen Mountens verloren geht. Wir sollten wie oben gezeigt auf unser Shell nun eine XML-Auflistung des Inhalts bekommen.

Sollte die Fehlermeldung "Connection refused" erscheinen, liegt es höchstwahrscheinlich daran, dass die Adapter nicht gepaart wurden oder die Verbindung nicht akzeptiert wurde.

Da die Verbindung nun funktioniert, können wir autofs einrichten, um zum letzten Teil der Anleitung zu gelangen.

Sollte autofs noch nicht konfiguriert worden sein, müssen wir dies zunächst vornehmen. Hierfür erstellen wir im Ordner /mnt/autofs/bluetooth/ ein neues Stammverzeichnis für eine autofs-Gruppe. Zuvor sollten wir aus Sicherheitsgründen eine neue Benutzergruppe auf unserem System erstellen, die Zugriff auf die Dateien bekommt und fügen die Benutzer hinzu, die Zugriff erhalten sollen.

Wichtige Anmerkung: Die Gruppenberechtigungen scheinen bei mir nicht mehr zu funktionieren, aber ich lasse das Setup hierfür stehen. Sollte es an der Version liegen, muss die Option allow_other immer weggelassen werden, damit es funktioniert. Leider kann mit dieser Option jeder Zugriff erhalten, was das Gruppenmodell nutzlos macht..

#sudo groupadd -g 2345 bluetooth_mount
#sudo gpasswd -a user bluetooth_mount
#sudo mkdir -p /mnt/autofs/bluetooth/

Nun also zur Konfiguration von autofs. Die Datei /etc/autofs/auto.master könnte folgenden Eintrag enthalten. Es muss allerdings darauf geachtet werden, dass sich keine autofs-Gruppen in die Ordner verschachteln.

/mnt/autofs/bluetooth /etc/autofs/auto.bluetooth --timeout=60

Die Optionen und Pfade sollten den Bedürfnissen angepasst werden.

Jetzt muss noch die angegebene Datei /etc/autofs/auto.bluetooth erstellt werden. Diese könnte folgendendermaßen aussehen:

desirehd_bluetooth -fstype=fuse,uid=0,gid=2345,umask=007,rw,noexec,allow_other :"obexfs#-bhh:hh:hh:hh:hh:hh"

Die Option -b am Ende muss noch mit der richtigen MAC-Adresse angegeben werden. Der Name (in diesem Fall desirehd_bluetooth) kann frei gewählt werden, autofs erkennt Änderungen für gewöhnlich automatisch ohne dass das Signal SIGHUP an den autofs-Daemon automount gesendet werden muss.

Schlußendlich kann autofs gestartet werden. Hierfür muss zunächst das Modul autofs4 geladen werden.

#sudo modprobe autofs4
#sudo /etc/rc.d/autofs start

Sollten wir uns in einer grafischen Oberfläche befinden, sollten wir diese entweder neustarten, damit die Gruppenzugehörigkeit für unsere Nutzer der neuen Gruppe bluetooth_mount auch übernommen werden oder die Gruppe direkt "temporär" mit newgrp initialisieren. Dies oder ein erneutes Login sollte ebenfalls in der Terminal-Shell ausgeführt werden.

#newgrp - bluetooth_mount

Wenn nun eine Dateioperation (lesen, schreiben, ausführen) innerhalb des Mountpunktes angewiesen wird, wendet autofs automatisch den konfigurierten Mount-Befehl an. Eine kleine Demonstration zeigt den Beweis.

#mount | grep obex
#ls /mnt/autofs/bluetooth/desirehd_bluetooth/Android/
data
#mount | grep obex
obexfs on /mnt/autofs/bluetooth/desirehd_bluetooth type fuse.obexfs (rw,noexec,allow_other)

Um das Ganze wirklich zu automatisieren, sollten dbus, bluetooth und autofs in das DAEMONS-Array der /etc/rc.conf eingetragen werden sowie autofs4 in das MODULES-Array.
Bei anderen Distributionen ab von Archlinux müssen selbstverständlich die distributionseigenen Startdateien und -Mechanismen berücksichtigt werden.

Nun sollten wir beim Zugriff auf den von autofs gestellten Bluetooth-Mountpunkt immer direkt auf den Inhalt der SD-Karte vom Desire HD zugreifen können und ersparen uns die Arbeit des lästigen manuellen Mountens.

Noch schöner wäre es mit Bluetooth 3.0 als mit Bluetooth 2.1, welches das Desire HD ja nunmal verwendet, aber man kann ja nicht alles haben. :)

Kommentar hinterlassen
mehr...

sudo mit alias-Aufruf von definierten Aliassen für den Aufruf unter anderem Benutzer starten, um das Problem der Fehlermeldung "command not found" zu lösen

von am Mi. 29. Dez 2010, unter Linux

Wenn das normale sudo-Binary aufgerufen wird, werden die aktuell definierten Aliasse einfach ignoriert. Möchte man einen Alias ausführen erscheint meist folgende Fehlermeldung:

#sudo la
sudo: la: command not found

Um dieses Problem zu lösen und die Aliasse zu übernehmen genügt es, mit der shell builtin-Funktion alias einen Alias für sudo anzulegen:


#alias la='ls -la'
#alias la
la='ls -la'
#sudo la
sudo: la: command not found
#alias sudo='sudo '
#sudo la
insgesamt 28
drwxr-xr-x 3 user user 4096 18. Aug 08:57 .
drwx------ 71 user user 20480 29. Dez 14:25 ..
drwxr-xr-x 3 user user 4096 18. Aug 08:57 .metadata

Dies legt einen Alias für sudo an. Sobald sudo aufgerufen wird, wird stattdessen der Alias ausgeführt. Hierbei ist es wichtig, das Leerzeichen beim sudo-Alias zu beachten.

Natürlich können wir die Ausführung der Anweisung automatisieren, indem wir sie z.B. in unsere .bashrc schreiben lassen:


#if ! grep -E "alias sudo=['\"]sudo ['\"]" ~/.${SHELL/\/bin\//}rc >/dev/null; then echo "alias sudo='sudo '" >> ~/.${SHELL/\/bin\//}rc;fi

Vorsicht: Dies überschreibt möglicherweise bestehende sudo-Aliasse.

Um direkt das sudo-Binary auszuführen kann sudo mit Backslash ausgeführt werden:


#\sudo

Dies weist die Shell an, alle möglichen Aliasse zu missachten und die erste ausführbare Datei in der PATH-Variable zu verwenden, die gefunden wird.

Um herauszufinden, ob unser Kommando – in diesem Fall sudo – beispielsweise ein Alias, eine shell builtin-Funktion oder eine Datei ist, können wir type nutzen:


#type sudo
sudo ist /usr/bin/sudo
#alias sudo='sudo '
#type sudo
sudo is aliased to `sudo '

Um den Alias wieder zu entfernen, können wir innerhalb der BASH oder der ZSH unalias verwenden:


#type sudo
sudo is aliased to `sudo '
#unalias sudo
#type sudo
sudo ist /usr/bin/sudo

Siehe auch: Aliasse in der BASH

Kommentar hinterlassen
mehr...

Windows-Treiber für das USB-Datenkabel "Arkmicro Technologies Inc. ARK3116 Serial" zur Verbindung serieller Geräte über USB ohne nativen seriellen Port

von am Sa. 25. Dez 2010, unter Hardware

Für die Verbindung zu bestimmter Hardware wird noch ein serieller Anschluß über ein Nullmodem-Kabel vorrausgesetzt. Vor allem Server aber auch andere Hardware-Endgeräte lassen sich so headless, also ohne Grafikeinheit, betreiben und konfigurieren bzw. manipulieren.
Sollte ein serieller RS-232-Eingang nicht mehr am Mainboard vorhanden sein so ist es möglich alternative Adapter-Datenkabel zu nutzen, wie z.B. das Arkmicro USB2Serial Datenkabel mit der Bezeichnung "Arkmicro Technologies Inc. ARK3116 Serial", um das sich dieser Eintrag dreht.

Es handelt sich um dieses Kabel:

Datenkabel "Arkmicro Technologies Inc. ARK3116 Serial"

Mit diesem Kabel ist es problemlos möglich, eine Serielle Verbindung durch einen freien USB-Port zu emulieren. Im Linux-Kernel sind Treiber vorhanden und erstellen standardmäßig in Verbindung mit udev die seriellen Terminals /dev/ttyUSB*.

Bei mir ergibt sich bei der Ausgabe von lsusb z.B. folgende Ausgabe:


Bus 005 Device 003: ID 6547:0232 Arkmicro Technologies Inc. ARK3116 Serial

dmesg ergibt folgende relevante Ausgabe:


usb 5-1: new full speed USB device using ohci_hcd and address 3
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
USB Serial support registered for ark3116
ark3116 5-1:1.0: ark3116 converter detected
usb 5-1: ark3116 using RS232 mode
usb 5-1: ark3116 converter now attached to ttyUSB0
usbcore: registered new interface driver ark3116
ark3116:v0.6:USB ARK3116 serial/IrDA driver

So gelangen wir mit einem Terminal-Emulator, der auf die seriellen Terminals zugreifen kann, zum Datenaustausch.

Wie es sich mit Windows Vista und Windows 7 verhält, weiss ich nicht, aber leider ist bei Windows XP kein Treiber von Hause aus vorinstalliert. Dieser ist auch nicht leicht zu finden.
Daher möchte ich den Verweis zur Seite meines Treiberfundes hier angeben:
http://www.stumbleupon.com/su/3jyQyF/www.squarechair.net/arkmicro/

Zur Sicherheit habe ich die Treiber jedoch auch bei mir gehostet und diese stehen selbstverständlich unverändert und mit Quellverweis zu obig-angegebener Seite zum Download bereit:

SetupUSB 1[1].6.4_EN.exe für die englische Version.
SetupUSB 1[1].6.4_CN.exe für die chinesische Version.

Viel Spaß damit!

PS: Einen schönen ersten Weihnachtstag noch! :)

7 Kommentare
mehr...

Passwörter von md5-Hashes wiederherstellen durch das Bash-Skript hashfind-cli.sh zur Nutzung der API von hashfind.info (Skript-Download)

von am Mi. 22. Dez 2010, unter Sicherheit

Beschreibung:

Oft steht man als Administrator vor dem Problem, dass die eigenen Passwörter auf seinem Computer oder Server vergessen wurden, aber die mit dem md5-Hashalgorithmus berechneten Hashes noch vorliegen. Sollten die Hashes unsalted, also durch den reinen Algorithmus erstellt vorliegen, ist oft ein performanter md5-Bruteforcer die Rettung. Doch was, wenn es sich um ein langes Passwort handelt, was einfach für normale Heimcomputer zuviel verlangt ist?
Selbst GPGPUs wie Nvidias CUDA sind nicht schnell genug um diese in die Jahre gekommene Hash-Berechnung mit roher Rechenkraft schnell zu lösen.

Die Lösung stellen hier sogenannte Rainbow tables dar, die versuchen, durch eine gewaltige Masse an assoziativen Daten ein Auslesen bzw. Filtern nach dem richtigen Suchbegriff (den md5-Hash) zu ermöglichen. Da eine sinnvolle Masse an Daten die Kapazität gewöhnlicher Haushaltsfestplatten oft übersteigt, bietet es sich an, auf fremde Quellen zurückzugreifen, die sich dem Problem bereits gestellt haben um wieder an sein Passwort zu gelangen.

Da ich das Projekt hashfind.info sehr nützlich fand, habe ich ein kleines Bash-Skript mit Proxy-Unterstützung entwickelt, das es ermöglicht aus einer Dateiliste von md5-Hashes oder einer Übergabeparameter-Liste von md5-Hashes die API der Seite hashfind.info abzufragen und die JSON-Ergebnisse direkt vorformatiert auf der Konsole auszugeben. Dies eignet sich besondes für md5-Listen zur schnellen Abarbeitung.

Der Vorteil von hashfind.info: Wir benötigen kein Extraprogramm oder Rainbow tables! Alles erledigt die API auf einem leistungsfähigen Server für uns, um uns die Ergebnisse mitzuteilen. Hierzu werden aus riesigen Datenbanken die Werte abgefragt und innerhalb kürzester Zeit ist es mit etwas Glück möglich, ein verwendbares Passwort zu erhalten. Aufgrund der relativ hohen Kollidierungsgefahr (wobei hier "relativ hoch" immer noch "extrem gering" ist) bei md5 kann das funktionierende Passwort übrigens vom Originalpasswort abweichen. So haben 2 oder mehr Passwörter den selben Hash, womit das Passwort bei der Prüfung als korrekt anerkannt wird. Daher sollte man sich nicht wundern, wenn mal ein Passwort herauskommt, an das man sich gar nicht mehr erinnern kann.

Derzeit funktioniert die API noch ohne eigenen Key bzw. unterstützt diese nicht, daher wurde einfach ein Standardkey "myOwnAPIKey" in das Skript integriert.
Möchte man dies ändern, so kann die Variable _API_KEY im Skript hashfind-cli.sh auf einen eigens erhaltenen Key gesetzt werden.

"cli" steht hier eigentlich nicht für "command line interface", sondern soll ausdrücken, dass es ohne GUI läuft. Da man Daten über STDIN lesen kann, könnte man es aber mit etwas Phantasie als CLI bezeichnen.

Das Skript nutzt cURL, um die API-Seiten aufzurufen, daher sollte cURL installiert sein.

Ein direkter Aufruf ohne Angaben verschafft einen Überblick:

# hashfind-cli.sh
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using parameters for hashes
==> No hashes found, please use a pipe, a file or hashes as parameters

==> /home/user/hashfind-cli.sh [-f file] [-] [--] [hash1 hash2 hash3..]

==> Examples:
==> /home/user/hashfind-cli.sh 098f6bcd4621d373cade4e832627b4f6
==> /home/user/hashfind-cli.sh -f hashes
==> echo 098f6bcd4621d373cade4e832627b4f6 | /home/user/hashfind-cli.sh -

Hier die verwendbaren Parameter im Überblck:

  • -f file
    Dies verwendet zum Einlesen der Hashes den Inhalt der Datei file
  • -
    Dies verwendet die Standardeingabe STDIN zum Einlesen der Hashes
  • --
    Weist das Skript an, nicht weiter nach Optionen zu suchen

Der Aufruf ist simpel, es gibt 3 verschiedene Varianten eines funtionierenden Aufrufes.

1. md5-Hashes als direkte Übergabeparameter beim Kommandozeilenaufruf des Programmes:

# hashfind-cli.sh 098f6bcd4621d373cade4e832627b4f6
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using parameters for hashes
==> Trying to get plaintext for 1 collected input fields
1 ==> {"hash":"098f6bcd4621d373cade4e832627b4f6","plain":"test"}

Hier wird nach dem Hash 098f6bcd4621d373cade4e832627b4f6 gesucht und das Ergebnis test ausgegeben.

2. md5-Hashes gespeichert in einer anzugebenden Datei, pro Zeile wird auf einen Hash geprüft

# hashfind-cli.sh -f hashes
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using File hashes for hashes
==> Trying to get plaintext for 16 collected input fields
1 ==> {"hash":"35e631552f95b3c1015e33404df2e0ff","plain":"Bestellen"}
2 ==> {"hash":"f17c5d28da44d331d02187a4550d9f97","plain":"Sie"}
3 ==> {"hash":"bafe5caf93e701ea81a2ab56691c1aaf","plain":"T-Shirts"}
4 ==> {"hash":"5ff2363014e7ff18f687f29900146aab","plain":"und"}
5 ==> {"hash":"bc2b929f94151b7d72ce1101d60cddfc","plain":"andere"}
6 ==> {"hash":"7b680df0235959d9b03b99385acc909a","plain":"coole"}
7 ==> {"hash":"932fc06e6ad60109ee3a45304a8258cc","plain":"Fanartikel"}
8 ==> {"hash":"73bebce395b6f1efedcf6842fbdb4d76","plain":"im"}
9 ==> hash: 6e20bb7d442380bd9d598e31ffd58d72 – {"error":"Hash not found added to search."}
10 ==> {"hash":"2bca61615ad4e3e8c668c33b238a99c8","plain":"Alle"}
11 ==> hash: 07428330d7d64f2bf47955604ec355ab – {"error":"Hash not found added to search."}
12 ==> {"hash":"9c0d47bf8dbce8c6ea71fc32e58cb109","plain":"kommen"}
13 ==> {"hash":"6bd48b1e57856137037bfee4dec8d57f","plain":"der"}
14 ==> {"hash":"502f1bd97b0e7d80b88e1f45ae1bfdb8","plain":"Mozilla"}
15 ==> {"hash":"38bd01e5e83e1871245c68ea4ca0dae8","plain":"Foundation"}
16 ==> hash: 1e2a3614b35aebe003c5503e3897aa0a – {"error":"Hash not found added to search."}

Wie wir sehen, stehen 16 Hashes in der Datei hashes. 3 hiervon wurden von hashfind.info noch nicht erfasst.
Übrigens werden Übergabeparameter verwendet, sollte die angegebene Datei nicht existieren.

3. md5-Hashes als direkte Standardeingabe (STDIN) beim Kommandozeilenaufruf des Programmes

# echo 098f6bcd4621d373cade4e832627b4f6 | hashfind-cli.sh -
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using STDIN for hashes
==> Trying to get plaintext for 1 collected input fields
1 ==> {"hash":"098f6bcd4621d373cade4e832627b4f6","plain":"test"}

Hier wurde wieder der Hash 098f6bcd4621d373cade4e832627b4f6 verwendet, der über die Standardeingabe eingelesen wird.
Sollte nichts auf die Standardeingabe geschrieben werden, wartet das Skript auf eine Eingabe.

Proxy-Unterstützung wird in Form der cURL proxy-Angabe bereitgestellt. Hierfür wird die Variable http_proxy ausgelesen und gesetzt. Ein Aufruf mit und ohne Proxy zum Vergleich:

# time hashfind-cli.sh 098f6bcd4621d373cade4e832627b4f6
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using parameters for hashes
==> Trying to get plaintext for 1 collected input fields
1 ==> {"hash":"098f6bcd4621d373cade4e832627b4f6","plain":"test"}

real 0m0.179s
user 0m0.033s
sys 0m0.020s

# time http_proxy="http://127.0.0.1:8118" hashfind-cli.sh 098f6bcd4621d373cade4e832627b4f6
==> Using HTTP-Proxyserver: http://127.0.0.1:8118
==> Using URL: http://hashfind.info/api/get?key=myOwnAPIKey
==> Using parameters for hashes
==> Trying to get plaintext for 1 collected input fields
1 ==> {"hash":"098f6bcd4621d373cade4e832627b4f6","plain":"test"}

real 0m8.166s
user 0m0.040s
sys 0m0.007s

Anhand der Zeile mit Using HTTP-Proxyserver erkennen wir also, dass die Variable erkannt und verwendet wird. Wie wir sehen ist die Ausführung mit verwendetem Proxy-Server um 8 Sekunden langsamer.

WICHTIG: Vor dem Download:

Wer dieses Programm herunterlädt und nutzen möchte, tut dies im Willen und Einverständnis, es nur für den privaten Zweck der Passwort-Wiederherstellung des eigenes Passwortes oder der Passwörter zu verwenden, die er selbst für die eigene Person verwendet und die er jederzeit problemlos und legal – auch in Hashform – auf seiner eigentümlichen Hard- und Software ändern könnte! Ich distanziere mich ausdrücklich von jeglicher illegalen Nutzung, zu der dieses Programm praktisch oder theoretisch führen könnte und betone auch ausdrücklich, dass ich damit nicht in Verbindung stehe oder in Verbindung gebracht werden kann!

Download:

http://php-web-developer.de/downloads/hashfind-cli.sh

Kommentar hinterlassen
mehr...

Prozentanzeige in der Linux-Konsole für Dateien und Dateiverarbeitung mit pv

von am Sa. 11. Dez 2010, unter Linux

Oft liefern Programme keine Prozentanzeige, wenn Dateien verarbeitet werden.
Diese Funktionalität kann mit dem Programm pv ausgerüstet werden. Hierzu leitet pv die Datei im Übergabeparameter oder den Inhalt der Standardeingabe an STDOUT bzw. in einer pipe an ein anderes Kommando weiter und gibt den Status auf STDERR aus.

Eine Beispielausgabe könnte z.B. so asusehen:

#cat /dev/urandom | pv > test.datei
95.6MB 0:00:10 [8.98MB/s]

Mit dem Übergabeparameter -s können wir die Größe der Bytes bestimmen, was praktisch sein kann, wenn wir z.B. Daten über die Standardeinagbe verarbeiten.

Hier ein praktisches Beispiel für die Nutzung mit bzip2:

#pv test.datei| bzip2 --best > test.datei.bz2
102MB 0:00:25 [3.95MB/s] [==============================================================>] 100%

Ein weiteres Beispiel zeigt den Status vom direkten Entpacken während des Runterladens:

#wget -q -O - 'http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.bz2' | pv -s $(curl --head -q http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.bz2 2>/dev/null | grep -i content-length | cut -d' ' -f2 | strings) | tar -xjf -
67MB 0:00:41 [1.62MB/s] [==============================================================>] 100%

Dies führt eine HEAD-Anfrage für die Datei mit dem Programm curl aus und übergibt an pv die Anzahl der Bytes, damit es weiss, wie groß die Datei ist. Es besteht jedoch keine Sicherheit, dass der Content-Lengh-Header mitgesendet wird.

Kommentar hinterlassen
mehr...

Anleitung / Howto: TTY (Linux-Terminals) erstellen und löschen mit openvt, agetty und deallocvt

von am Sa. 11. Dez 2010, unter Anleitungen

Da der Blog mit den Google-Suchbegriffen "archlinux tty loeschen" gefunden wurde, will ich das Thema kurz anschneiden.

In diesem Howto erläutere ich also, wie im Vorfeld und im Nachhinein tty (Teletypewriter) zur Nutzung erstellt und wieder gelöscht werden können.

Da alle meine Anleitungen kein einheitliches Schema ausweisen, werde ich einfach die logische Reihenfolge mit Erläuterungen durchgehen:

Die tty-Terminals werden beim Systemstart handelsüblich via /etc/inittab mit getty-Programmen initialisiert. #man inittab erläutert die Benutzung:

id:runlevels:action:process

So kann beispielsweise eine Zeile aussehen:

c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux

  • c1 besagt hier die ID, die init intern verwendet.
  • 2345 beschreibt die Runlevel, in denen die Programme gestartet bzw. erhalten bleiben sollen.
  • respawn ist ein vordefiniertes action-Schlüsselwort, welches besagt, dass nach Terminierung des Programmes (im nächsten Feld) eine erneute Instanz des Programmes erzeugt wird. Dies ist z.B. bei Loginmanagern/Windowmanagern und Desktopumgebungen sehr praktisch, falls es zum Absturz kommt. Somit spart man sich einige Schritte.
  • /sbin/agetty -8 38400 tty1 linux ist hier das aufzurufende Programm – process – mit den dazugehörigen Aufrufparametern. agetty ist auf modernen Linux-Distributionen in der Regel vorhanden. Früher wurde oft getty oder mingetty verwendet. #man agetty verschafft einen Überblick für Übergabeparameter. Hier wird also ein handelsbliches Linuxterminal mit Namen tty1 erzeugt. Diese Datei wird dann im Verzeichnis /dev genutzt. agetty ruft wiederum das Programm /bin/login auf, das benötigt wird, um sich einzuloggen. Anstatt dieser Methode kann man z.B. mit dem Programm /bin/su direkt zu einem Benutzer wechseln. Beispielsweise so: #/bin/su benutzername -c "/bin/bash --login". Dies würde eine BASH-Loginshell unter dem Benutzer benutzername starten.

Es gibt auch Loginmanager-Alternativen wie z.B. den Console Display Manager CDM oder getty-Alternative wie z.B. qingy, das versucht komfortabel mit dem Framebuffer einen graphischen Loginmanager bereitzustellen, indem es /bin/login umgeht und so Funktionalität und Optik aufwertet.

Nun aber zur eigentlichen Aufgabe, die bereits halb beantwortet wurde: agetty ermöglicht es Terminals für Benutzerinteraktionen benutzbar zu machen, aber wie werden diese geschlossen?
Für diesen Zweck wurden die Programme openvt und deallocvt geschrieben.

Hier ein Probeaufruf für das 10. Terminal mit Erklärung:

#Status von /dev/tty10 vor der zuweisung des Loginterminals:
#stat /dev/tty10
File: „/dev/tty10“
Size: 0 Blocks: 0 IO Block: 4096 zeichenorientierte Spezialdatei
Device: 5h/5d Inode: 787 Links: 1 Device type: 4,a
Access: (0620/crw–w—-) Uid: ( 0/ root) Gid: ( 5/ tty)
Access: 2010-12-10 15:58:49.266666669 +0100
Modify: 2010-12-10 15:58:55.703333334 +0100
Change: 2010-12-10 15:58:49.266666669 +0100
Birth: -

#Zuweisung des Programms agetty auf das Terminal /dev/tty10 durch openvt:
#openvt -f -c 10 -- /sbin/agetty -8 38400 tty10 linux

#Status von /dev/tty10 nach der zuweisung des Loginterminals:
#stat /dev/tty10
File: „/dev/tty10“
Size: 0 Blocks: 0 IO Block: 4096 zeichenorientierte Spezialdatei
Device: 5h/5d Inode: 787 Links: 1 Device type: 4,a
Access: (0600/crw——-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-12-10 15:58:49.266666669 +0100
Modify: 2010-12-10 23:20:22.585713398 +0100
Change: 2010-12-10 23:20:21.582256470 +0100
Birth: -

#In das neue Loginterminal wechseln:
#chvt 10

#[zurückwechseln]

#Mit ps finden wir die Prozess-ID (PID) geraus:
#ps -F -t 10
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 32453 1 0 1878 644 1 00:25 tty10 00:00:00 /sbin/agetty -8 38400 tty10 linux

#Beenden des Programmes sowie Unterprozesse, hiernach ist das Login über tty10 nicht mehr möglich, jedoch bleibt die bereits ausgegebene Standardausgabe auf dem Terminal erhalten.
#kill -9 32453

#Alternativ können wir auch beispielsweise fuser verwenden, um alle Prozesse, die auf das Terminal zugreifen, zu beenden:
#fuser /dev/tty10 -v -k
BEN. PID ZUGR. BEFEHL
/dev/tty10: root 32453 F…. agetty

#Macht das Terminal unbenutzbar und löscht die Ausgabe darauf:
#deallocvt 10

Haben wir standardmäßig ein neues Terminal über /etc/inittab bzw. init definiert und möchten es dezimieren, kann /etc/inittab geändert werden. Anschließend kann ein
#/sbin/telinit q ausgeführt werden, was das Signal SIGHUP an den init-Prozess sendet, worauf init die Konfigurationsdatei /etc/inittab neu examiniert und verwendet. Die Ausgabe bleibt hier allerdings wieder erhalten.

Ich verwende übrigens auch gerne die ttys 13 bis 18, die über [Alt-Gr+N] anstatt über [Alt+N] erreichbar sind.


c13:2345:respawn:/sbin/agetty -8 38400 tty13 linux
c14:2345:respawn:/sbin/agetty -8 38400 tty14 linux
c15:2345:respawn:/sbin/agetty -8 38400 tty15 linux
c16:2345:respawn:/sbin/agetty -8 38400 tty16 linux
c17:2345:respawn:/sbin/agetty -8 38400 tty17 linux
c18:2345:respawn:/sbin/agetty -8 38400 tty18 linux

Dies kann in die Datei /etc/inittab eingetragen werden.

Wie man in /dev sehen kann, werden 63 tty[N]-Terminals zur Benutzung im Linuxkernel freigegeben.

2 Kommentare
mehr...

RSS-Buttons für Firefox, Internet Explorer & andere Browser mit dem Greasemonkey-Skript "RSS+Atom Feed Subscribe Button Generator"

von am Di. 07. Dez 2010, unter Web

Greasemonkey sollte einigen mittlerweile bekannt sein als riesiges Skriptlager für diverse Browser wie Firefox, Internet Explorer, Epiphany, Flock und Seamonkey, das mittlerweile mit über 60.000 Benutzerskripten aufwarten kann.

Ein für mich sehr nützliches Greasemonkey-Skript ist der RSS+Atom Feed Subscribe Button Generator.

Die Beschreibung verdeutlicht den Nutzen:

Finds RSS and/or Atom links on a page and inserts feed subscription links for use by aggregators.

Im Deutschen:

RSS+Atom Feed Subscribe Button Generator für Greasemonkey findet RSS- und Atom-Feeds auf einer Seite und erstellt klickbare Buttons.

Da leider einige Internetseiten keine direkten visuellen RSS-Links auf einer Ausgabeseite anbieten, da sie z.B. nicht im Template vorhanden sind, lässt sich so bei vorhandener HTML-Link-Angabe des Feed-Links auf komfortable Weise ohne mühselige Suche im Quelltext ein Abonnement zum RSS-Aggregator hinzufügen.

Das Skript sucht die Links auf einer Seite und erstellt mit Javaskript und CSS per CSS-Eigenschaft position mit der Angabe fixed eine Art fixierte, obenestehende Leiste mit den Buttons auf dem Browserbildschirm.
Mit einem Klick auf x lässt sich die Leiste ausblenden.

Kommentar hinterlassen
mehr...

Mit ifled und tleds unter Linux die Last des Netzwerkes bzw. die Netzwerkaktivität auf den LEDs der Tastatur anzeigen

von am Do. 02. Dez 2010, unter Linux, Netzwerk

Eine kleine Spielerei, um ein paar Fragezeichen bei Besuchern erscheinen zu lassen. :)

Als ich für Linux nach Programmen suchte, die per Befehl LEDs ansprechen können bzw. Statusanänderungen auf Hardware hervorbringen, sah ich zufällig die Programme ifled und tleds (leider keinen anderen Downloadlink neben den Debianlinks mehr gefunden), die bei Regung des Netzwerkes die LEDs der Tastatur aufblinken lassen, um so die Aktivität des Netzwerkes zu zu zeigen. Kurzes Aufblinken bedeutet kurze Datenaustauschintervalle mit meist niedrigen Raten. Bei großem, kontinuierlichen Datenaustausch blinken die LEDs meist längere Zeit bzw. leuchten längere Zeit ganz auf.

tleds kann z.B. als root beim Hochfahren des Systems gestartet werden.
Ein Beispielaufruf könnte so aussehen als normaler Benutzer mit sudo-Privilegien für die Datei:

sudo tleds -c -q -d 250 eth0

Hier verwende ich den Adapter eth0 mit einer Verzögerung von 250 ms.

Numlock beschreibt den Download, Scrolllock den Upload des verwendeten Adapters.

Für ifleds steht, zumindest bei Archlinux, ein rc-d-Skript zur Verfügung. In der Datei /etc/sysconfig/ifled lassen sich die Tasten Numlock, Capslock und Scrolllock mit verschiedenen Adaptern für die Anzeige der Aktivität dieser belegen.

Diese kann einfach zur Laufzeit mit durch den Daemon-Aufruf gestartet werden:

sudo /etc/rc.d/ifled start

Oder bei jedem Systemstart wie üblich in die /etc/rc.conf in das daemons-Array eintragen.

Hinweis: Hier habe ich die Verzögerung des Blinkens auf 250 ms erhöht, da ich eine PS/2-Tastatur nutze und diese die rapiden Befehle nicht so schnell verarbeiten kann, was ab und an sonst zu sehr störenden Fehlfunktionen der Tastatureingaben führt. Tastaturen mit USB-Anschluss scheinen keinerlei Probleme zu verursachen.

Für eine Änderung der Blinkverzögerung mit ifled muss das Daemon-Skript angepasst werden und der Parameter -d mit einem anschließendem Wert in ms bei den jeweiligen Aufrufen angegeben werden.

Kommentar hinterlassen
mehr...

Suchen Sie etwas Bestimmtes?

Benutzen Sie das Formular, um die Seite zu durchsuchen:

Finden Sie immer noch nicht das, was Sie suchen? Hnterlassen Sie mir eine Nachricht oder einen Kommentar und ich werde mich mit Ihnen in Verbindung setzen!