Linux driver voor de Leiderdorp Instruments USB I/O Solution
Deze driver is alleen geschikt voor Linux kernel versie vanaf 2.6.14.
Oudere Drivers kun je hier vinden.
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 op kernel later dan 2.6.14 op een systeem dat udev gebruikt (getest op Fedora Core 4 met kernel 2.6.16 en 2.6.17).:
- Download de broncode van de driver (zie verderop).
- Installeer de linuxkernel. Zorg dat de kernel
goed is geconfigureerd zodat alles juist werkt.
- Omdat de Linux kernel de I/O solution als muis herkent is de volgende aanpassing
nodig:
Open het bestand linux-2.6.xx/drivers/usb/input/hid-core.c uit de kernelbroncode,
en ga op zoek naar de tabel hid_blacklist[] op ongeveer regel 1400.
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 ongeveer zo uit :
{ USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN },
{ USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN },
{ 1952,4097,HID_QUIRK_IGNORE }, // I/O solution van elomax
{ 0, 0 }
};
Daarna de kernel(modules) opnieuw compileren en installeren.
- Pak de broncode van de driver uit met "tar -xzvf iosolotion.xx.tar.gz" (xx = versienummer).
- Compileer de broncode door "./maak" in te voeren.
Met een beetje geluk ontstaat dan "iosolution.ko"
- Als root:
Kopieer iosolution.ko naar /lib/modules/2.6.xx (xx = kernelversie)
dmv "cp iosolution.ko /lib/modules/2.6.xx".
- Werk de module dependancy's bij met "/sbin/depmod -a"
- Werkt je systeem met udev dan:
Kopieer het meegeleverde bestand "20-iosolution.rules"
naar de directory /etc/udev/rules.d
(eventueel naar wens aanpassen zie man page van udev).
Werkt je systeem niet met udev of devfs (bestaat dat nog?) maak dan
device nodes aan door ingeven van "make node". Dit maakt 8 device
nodes aan in de /dev directory (iosolution0 ... iosolution7).
- Als je daarna de iosolution aansluit word de driver
automatisch geladen. Zoniet laad dan de driver door het ingeven
van "/sbin/insmod iosolution.ko" of "modprobe 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.7:USB I/O solution
driver.
- Installeer het Terminal programma 'io'volgens bijgeleverde instruktie's.
Je kunt de werking het eenvoudigst testen door uitvoeren van:
io -ah = zet alle lijken hoog (1)
io -al = zet alle lijnen laag (0)
Dit moet dan meetbaar zijn op de uitgangen. (of sluit een paar ledjes aan!)
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.
Download nieuwste versie geschikt voor kernel 2.6.14 en hoger met udev (januari 2007):
iosolution-0.7.tar.gz .
Kijk hier voor het bijbehorende terminal programma 'io';
Tips:
- "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".
Deze driver is opnieuw aangepast aan de kernel-wijzigingen naar aanleiding
van e-mail wisselingen van enkele gebruikers. Ook de informatie van de site van
Gé Jansen is er in verwerkt.
Zo nu en dan krijg ik een e-mail van iemand die met de I/O solution op Linux aan het knutselen is geslagen.
Meestal lukt het goed om de zaak werkend te krijgen, ondanks dat het niet even 2x klikken is...
Heb je ideeen voor verbeteringen ? of bugs ? stuur een
e-mail!
Ik begrijp dat iemand ook al expirimenteerd met andere hardware van www.elomax.nl,
dus word vervolgd ?
Deze 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. De driver is getest met 2 I/O
solutions en werkt daarmee goed. Wel is het met meer dan 1 I/O solution moeilijk te bepalen
welke chip op welke device (iosolutionXX) zit.
Update januari 2007:
Aangepast op kernel 2.6.14 en hoger..