iButton unter Linux benutzen

Nach einigem Hin- und her konnte ich einen Weg finden, wie man den iButton samt OneWireViewer unter Linux problemlos benutzen kann. Die folgende Beschreibung ist etwas technisch 😉 Ich gehe bei der Beschreibung von einem aktuellen Ubuntu Linux Intrepid (8.10) i686 (=32bit) aus.

Grundlegendes
Der iButton ist ein kleines Batterie-Ähnliches Gerät, welches man zum Messen von Temperaturen nutzen kann. Es ist damit möglich sog. „Missionen“ in Auftrag zu geben welche definieren, in welchem Zeitraum, in welchem Abstand und in welcher Genauigkeit Temparaturen gemessen und gespeichert werden. Das Gerät ist dabei Netz-Unabhänig und speichert je nach Ausführung und Einstellungen etwa 8000 Werte. Näheres dazu in der Wikipedia.

Hardware
Für meinen Aufbau habe ich folgende Geräte beim Fuchs-Shop erworben:

Beim Einstecken des USB-Adapters wird ein Gerät /dev/ttyUSB0 erzeugt. Das sollte man überprüfen bevor man weiter macht. (einfach in /var/log/syslog schauen, dmesg benutzen oder in das Verzeichnis /dev schauen). Das iButton OneWireKabel steckt man in diesen Adapter hinein, der iButton wird dann wiederrum in das Kabel eingesteckt.
Java-installation
Für den OneWireViewer (=Software zum Auslesen des iButtons) muss man sich Java installieren. Das geht mit Ubuntu sehr einfach mittels Packetinstallation auf der Konsole:

sudo apt-get install java-common sun-java6-bin sun-java6-jre sun-java6-plugin sun-java6-jdk

Die Abhängigkeiten muss man mit installieren.

Wichtig ist hier vor allem, dass  Sun Java installiert wird – es gibt zahlreiche andere Packete die auch Java-Support bieten. Der OneWireViewer funktioniert aber leider nur mit den Java-Versionen von Sun! (nicht IBM, nicht GCJ!). Sämtliche andere Java-Versionen sollte man vom System entfernen, sonst gibt es zumindest Probleme beim automatischen Start. Weiteres dazu auch im Ubuntuusers-Wiki.

rxtx – Treiber – deb installation

In den Quellen von Debian und Ubuntu gibt es das Packet „librxtx-java“. Einfach mittels „apt-get install librxtx-java“ installieren. Dann kann man sich die manuelle Installation sparen.

rxtx – Treiber – Manuelle Installation

RXTX ist ein Treiber für das iButton-Lesegerät, welches man sich installieren muss. Er besteht vereinfacht gesagt aus zwei Teilen: einem Hardware-Treiber (.so) und einer Java-Komponente (.jar) damit der OneViewerViewer mit dem Lesegerät sprechen kann.

Um es sich zu installieren lädt man sich die letzte RXTX-Version (2.1.x) im Quelltext (src) von dieser Seite herunter. In meinem Fall war das rxtx-2.1-7r2.zip.

Nun wechselt man das in das Verzeichnis, in dem man das Zip-Archiv gespeichert hat und geht in etwa folgende Schritte durch:

unzip rxtx-2.1-xx
cd rxtx-2.1-xxx
./configure
make install

Vorher muss man allerdings dafür gesorgt haben, dass man Software auf seinem System selbst kompilieren kann – man braucht zumindest make, gcc und deren (viele) Abhängigkeiten.

Das ganze ging bei mir schief, es kam ein Fehler:

libtool: install: `i686-pc-linux-gnu/librxtxRS485.la‘ is not a directory
Try `libtool –help –mode=install‘ for more information.
make: *** [install] Fehler 1

Man kann dem aber nachtreten, in dem die erzeugten zwei Dateien manuell ins richtige Verzeichnis kopiert werden. Man benötigt eigentlich nur

  1. RXTXcomm.jar
    welche ich mir in /usr/lib/jvm/java-*/lib/ kopiert habe. Durch die installation von JRE und JDK auf meinen PC (siehe Java-Installation oben) gibt es unter /usr/lib/jvm/ zwei java-verzeichnisse, in beide ‚lib‘ Unterverzeichnisse habe ich mir die Datei hinein kopiert.
    Diese findet man in dem Verzeichnis von dem aus man „make“ eingegeben hat.
  2. librxtxSerial.so
    in /usr/lib. Mittels ‚ldd‘ kann man noch die generelle Lauffähigkeit und eventuell fehlende Abhängigkeiten prüfen.
    Diese Datei befindet sich vom Verzeichnis i686-pc-linux-gnu/.libs/ .

OneWireViewer starten

Nachdem man die Hardware zusammen gesteckt hat (s.o.) und die Installation abgeschlossen ist, kann man den OneWireViewer starten. Er sollte ohne Installation mittels JavaWebStart aufgehen: OneWireViewer starten.

Startet der Viewer gar nicht erst, muss man seine Java-Installation überprüfen. Siehe oben.

Nach dem Start fragt die Anwendung nach dem entsprechenden Anschluss. In meinem Fall ist dies /dev/ttySUSB0. Die restlichen Fragen kann man erstmal einfach mit „Weiter“/“Next“ übergehen

Mir bekannte Fehlerquellen

  • „NullPointException“ –> der RXTX-Treiber funktioniert nicht oder wird nicht gefunden. Siehe auch oben…
  • Could not open port … –> evtl. muss der COM-Port andere Lese-Rechte bekommen. Den OneWireViewer einfach mal als Root starten (sudo).. wenn es dann geht, kann man mittels chmod die Schnittestellen-Berechtigungen setzen. Achtung: das setzt sich bei jedem Start zurück!
  • Das Adapter-Kabel wird gar nicht erkannt: Nehmt den iButton beim Start raus. Startet der Viewer dann, ist der iButton evtl. defekt. Zum nachprüfen bei gestartetem Viewer den iButton einstecken – geht dann auch die Verbindung mit dem Adapter verloren, ist der iButton wirklich defekt (=Kurzschluss-Effekt). Gleiches gilt, wenn der Viewer Fehler beim RTC (Uhr) Einstellen meldet.
  • mit RXTX 2.2 (beta) scheint das ganze zwar auch zu funktionieren, ich bekomme aber ab und an Fehlermeldungen wenn ich Missionen aktivieren will.

Wie man von hier aus weiter macht, beschreibt recht gut dieses Blog.

Über Anregungen, Hinweise oder Verbesserungen würde ich mich freuen – nutzt dazu einfach die Kommentar-Funktion.

iButton Linux Screenshot

iButton Linux Screenshot


Dieser Beitrag wurde unter Linux abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf iButton unter Linux benutzen

  1. klml sagt:

    OK cool. Aber die Frage ist was macht man damit? Und was macht das Ding so interessant das es sogar einen Wikipediaartikel hat/behält.

    Bringt die SHA-Verschlüsselung was? Oder doch NFP;)