Linux driver voor de Leiderdorp Instruments USB I/O Solution
Deze driver is alleen geschikt voor Linux kernel versie 2.4.xx.
Driver voor kernelversie 2.6 is hier
Het programma en de driver zijn alleen in broncode te downloaden.
Voor het installeren van de kernel-driver is het nodig de linuxkernel opnieuw
te compileren, dus is de volledige kernelbroncode nodig.
Er is namelijk een kleine aanpassing (hack) nodig die er voor zorgd dat deze driver de
I/O solution aanstuurd in plaats van de standaard Linux USB driver voor HID devices.
De Linux driver voor HID devices ziet de I/O solution namelijk als muis.
Stappenplan (hack) voor het installeren van
de driver:
- Download de broncode van de driver (zie verderop).
- Installeer de linuxkernel. De driver is getest
met kernel vanaf versie 2.4.22 , maar werkt
waarschijnlijk met elke 2.4.xx kernel die
USB ondersteund.
Zorg dat de kernel goed is geconfigureerd
zodat alles juist werkt.
- Open het bestand linux-2.4.xx/drivers/usb/hid-core.c uit de kernelbroncode, en ga op zoek naar
de tabel hid_blacklist[] op ongeveer regel 1200.
Deze tabel bevat USB devices die door de
Linuxdriver genegeerd worden.
Voeg aan de tabel toe net voor de
laatste
regel met "{ 0, 0 }"de regel
"1952,4097,HID_QUIRK_IGNORE }," zonder aanhalingstekens !!!
Dit zorgt
ervoor dat de standaard Linux driver de I/O
solution negeert.
Het eind van de tabel ziet er dan zo uit :
{ USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS1,
HID_QUIRK_HIDDEV },
{1952,4097,HID_QUIRK_IGNORE }, // IO/solution
{ 0, 0 }
};
- Pak de broncode uit met "tar -xzvf iosolotion.xx.tar.gz" (xx = versienummer).
- Ga de nieuw aangemaakte directory binnen
en pas evt de makefile aan zodat het include
directive naar de juiste Linux kernelbroncode
wijst.
- Compileer de broncode door "make"
in te voeren als root.
- Met een beetje geluk ontstaat dan "iosolution.o"
.
Kopieer dit bestand als root naar /lib/modules/2.4.xx
(xx = kernelversie) dmv
"cp iosolution.o /lib/modules/2.4.xx"
- Voer in "make node" voor het aanmaken van de device-nodes in
de /dev/ directory.
Er worden standaard 8 devices aangemaakt
/dev/iosolution0 ..... /dev/iosolution7 met het major node numer 60. Dit is bedoeld
voor Lokaal/expirimenteel gebruik.
- Werk de module dependancy's bij met "/sbin/depmod -a".
- Laad de driver door het ingeven van "/sbin/insmod iosolution"
- Bij het aansluiten van de I/O solution moet
de driver zich dan in de systemlog melden
met :
Leiderdorp
Instruments I/O Solution Aangesloten op usb3:2.0
device :/dev/iosolution0
xxxx kernel: iosolution.c: v0.2:USB I/O solution
driver.
Uitlezen van de I/O solution kan met "cat /dev/iosolution0". Dit levert 16 cijfers 0 of 1 op afhankelijk
van het logische niveau van de poorten.
Op deze manier is de I/O solution eenvoudig
via shell scripts uit te lezen.
Uitlezen kan ook via een ioctl. (zie de broncode
voor details).
Schrijven kan door de data naar /dev/iosolution0 te schrijven. op dezelfde manier als bij
de windows driver.
Zie voor uitleg www.elomax.nl.
Laatste versie voor kernel 2.4.xx met enkele aanpassingen (aug 2005): iosolution-0.3.tar.gz .
Oude versie: iosolution-0.2.tar.gz
Kijk hier voor het bijbehorende terminal programma 'io';
Tips:
- voeg toe aan /etc/modules.conf: "alias char-major-60 iosolution"
Dit zorgt voor het automatisch laden van
de driver "on demand".
- of laad de driver door "/sbin/insmod iosoloution" toe te voegen aan /etc/rc.d/rc.local.
- "cut -c2 /dev/iosolution0" geeft het logische niveau van poort
0 bit 1 (handig in shell of cgi scripts)
scriptvoorbeeld:
if [ `cut -c3 /dev/iosolution0` = 1 ]; then
echo " p0.2 is hoog"
else
echo " p0.2 is laag"
fi
- Besturen van de I/O solution gaat het makkelijkst
met het programma "io".
Ideeen voor verbeteringen ? of bugs ? mail
naar klaas@iosolution4linux.tk.
Het programma werkt bij mij zonder
problemen
ondanks dat het een hack is. Ik heb
uitgebreid
geexpirimenteerd met de standaard drivers
voor HID USB devices in de linux-kernel
maar
kreeg deze niet aan het werk. Daarna
heb
ik een driver voor een USB muis als
voorbeeld
genomen en een nieuwe driver geschreven
en
een bijbehorend programma.
Volgens mij is het eenvoudig mogelijk om
de driver aan te passen zodat ook de andere
USB elektronica van Leiderdorp Instruments
(www.elomax.nl) vanuit Linux is aan te sturen. Dit kan
ik niet testen omdat ik deze niet (nodig)
heb.
De driver is met de standaard instellingen
in staat om 8 I/O solutions aan te
sturen.
dit aantal is afhankelijk van een constante
in de broncode. Dit heb ik niet getest
omdat
ik er slechts 1 heb.
Update aug. 2005: De laatste aanpassingen versie 0.3 (aug 2005) zijn naar
aanleiding van emailwisseling met J Swenker die enkele verbeteringen
heeft gestuurd.