Labjack U12, A/D-Wandler und Digital-I/O
Der Labjack U12 ist ein USB-Gerät. Um es unter Linux zu betreiben wird
also ein Kernel mit USB-Unterstützung gebraucht, also Kernelversion 2.4.x
oder 2.6.x.
Systemvorbereitungen
Mindestens folgende Packete werden benötigt (z.B. mit Suse9.1):
gcc, gcc-c++, make, emacs, XFree86-devel, kernel-source,
eventuell auch noch benötigt werden: automake, libtool
Meine Beispielprogramme die Grafik benutzen benötigen noch:
xtekplot1
Labjack-Treiber
Labjack wird schon ohne Treiber beim Einstecken vom Hotplug erkannt.
Entsprechende Einträge in /proc/bus/usb/ werden gesetzt:
# more /proc/bus/usb/devices
...
P: Vendor=0cd5 ProdID=0001 Rev= 5.f6
S: Manufacturer=LabJack
S: Product=Labjack U12
...
# lsusb
...
Bus 001 Device 003: ID 0cd5:0001
...
Sollte das nicht funktionieren kann man noch folgendes versuchen:
# modprobe usbcore
# modprobe uhci_hcd
Packete
Eric's Labjack-Packet (linux-labjack-0.2):
Erste Hürde beim Installieren war fehlerhaftes Makefile,
nach entsprechenden Korrekturen hats funktioniert.
Neuerer Treiber von Sourceforge (linux-labjack.tar.gz): enthält Version 0.21 für Kernel 2.4.x und Version 0.31 und 0.32 für Kernel 2.6.x
Befolgen der Hinweise in der Datei INSTALL hat mit Suse9.1 mit Kernel 2.6.x
funktioniert.
Erste Beispielprogramme
Was damals mit linux-labjack-0.2 funktioniert hat:
(damals mit Debian getestet, Neucompilieren des Kernels war nötig
um USB zum Laufen zu bringen)
Erste erfolgreiche Tests: Analog Out, Analog In (AI0...AI3),
Digitale Ausgabe (DIO0...DIO3)
Programme für den Labjack zu erstellen ist ohne Benutzung der Library auch
kein Problem.
Hier schon mal ein paar kleine Testprogis und die dabei entstandene C++-Klasse:
lauflicht.tar.gz
(Wie man die eingelesenen Analog-Werte kalibriert ist aber noch unklar)
Mein erstes richtiges Labjack-Programm: Oszilloskop
Beispielprogramme mit neuem linux-labjack (Version 0.31):
(auf Debian hats plötzlich nicht mehr funktioniert, drum neu probiert
mit Suse9.1)
Die Umgehung des Firmware-Fehlers hat hier nicht mehr gleich funktioniert,
also etwas umgeschrieben dann hats auch geklappt. Mit neuen Geräten
(wenn der Firmwarfehler dann hoffentlich korrigiert ist) wird man dann wohl
wieder Anpassungen machen müssen.
Noch ungelöste Probleme
Nach Neustarten des Rechners sind jeweils noch folgende Befehle unter root nötig:
# rmmod hid
# insmod labjack.ko
Danach muss das Labjack abgehängt und wieder eingesteckt werden.
USB-Links
www.linux-usb.org
linux-usb.org/FAQ
libusb
USB Mass Storage Devices
Elektronik-Links
PLL
Timer 555
Operationsverstärker
TODO
- Treiber fest in den Kernel einbauen.
- vollständige Beispiel-Programme schreiben
- alle Funktionen von liblabjack testen, oder eigene schreiben.
- enentuell eigenen Treiber schreiben:
LDDK
ist ein Tool um Module zu programmieren (aber alt: 1999).
Module-HOWTO Kapitel 11, dort gibts eine Empfehlung für dieses Buch:
Linux Device Drivers
(gibt jetzt Neuauflage 2005)
(Stand 28-Jan-2006)
Neues Modell: redlab-1008 (Feb.2008)
Dieses hat noch einen 37-poligen SUBD-Stecker mit 24Bit Digitial-I/O (82C55),
sieht sonst gleich aus wie Labjack-U12. (Treiber vom Labjack-U12 probiert --> geht nicht)
Installation unter Kubuntu mit Linux-Kernel 2.6.22-14:
Einige Packete nachinstalliert: linux-source, usb-devel, hid-devel, ...
Neuen Treiber installiert:
Von ftp://lx10.tx.ncsu.edu/pub/Linux/drivers/USB/
MCCUSBHID.1.26.tgz und dann noch MCCLIBHID.1.28.tgz jeweils mit "tar zxvf" entpackt und "make;sudo make install" gemacht.
(vielleicht wäre MCCUSBHID.1.26.tgz nicht nötig gewesen?)
Und um es als normaler User zu verwenden das gemacht:
$ cp 60-mcc.rules /etc/udev/rules.d
$ /sbin/udevcontrol reload_rules
"test-minilab1008" scheint zu funktionieren. (Status-LED blinken lassen geht)
("Damals" war: 30-Nov-2003)
Last update: 7-Feb-2008 / RPF