QUANCOM Kernel Modul

Um unsere Karten und Module unter Linux ansprechen zu können, ist einerseits ein Kernel Modul und andererseits die QLIB erforderlich. Das Kernel Modul stellt nur die absolut notwendige Kommunikationschicht zur Verfügung die QLIB hingegen macht die eigentliche Arbeit.

Das PCI Kernel Modul unterstützt alle PCI Optokoppler und Relais Karten, sowie die PCI Watchdogkarten und das USB Kernel Modul alle USB Optokoppler- und Relaismodule, die USB Watchdogkarte sowie die USBGPIB Module von QUANCOM.

Eine Liste der unterstützten Karten finden Sie hier: Liste aller Linux fähigen Karte und Module

Vorgeschichte

Vorraussetzung für die Kernel Modul Installation ist ein Linux Kernel der 2.6.x Reihe. Dazu passend wird der ausgepackte und konfigurierte Kernelsourcebenötigt. Idealerweise hat man den Source in /usr/src ausgepackt, konfiguriert und den aktuell laufenden Kernel daraus generiert. Diverse Distributionen wie Ubuntu bieten auch andere Wege an zu einem passenden Kernelsource zu kommen.

Als nächstes ist herrauszufinden, ob eines der beiden device Dateisysteme udev oder devfs im Einsatz ist. Am einfachsten mit

>> mount

und dann überprüfen, ob etwas an /dev gemountet ist (nicht /dev/pts oder /dev/shm).

Kernel Modul

Im Verzeichnisbaum, welchen man erhält wenn man das heruntergeladene Treiber Archiv auspackt, gibt es ein Verzeichnis module. Nachdem man in dieses Verzeichnis gewechselt ist, startet man einfach

>> make

Im optimalen Fall findet make jetzt den Kernelsource und baut das Modul. Wenn make die Kernelsourcen nicht findet, so muss man sie explizit angeben.

>> make LINUX_SOURCE=/usr/src/linux-2.6.12

Wobei /usr/src/linux-2.6.12 für das Verzeichnis steht in dem die Sourcen des Kernel liegen.

Sollten dabei wider Erwarten Fehlermeldungen kommen, dann bitte den Output in eine Datei umleiten und uns zumailen.

Test

Dieser Schritt funktioniert nur, wenn der laufende Kernel die gleiche Version hat wie die Kernelsourcen und man selber als root arbeitet.

>> make insmod

Danach sollte das Kernelmodul geladen sein, wovon man sich mit

>> dmesg | tail

überzeugen kann. Wenn jetzt eine QUANCOM PCI Karte eingebaut ist, sollte sie gefunden sein. Alternativ kann man jetzt ein QUANCOM USB Modul anschließen. Dessen Erkennung überprüft man wieder mit

>> dmesg | tail

Besitzt man ein USB Modul, und udev oder devfs so wird automatisch ein Device node für dieses Modul angelegt. Dieses findet man entweder als /dev/qusb0 oder /dev/usb/qusb0.
Benutzt man klassische Device Nodes, so muss man diese per Hand anlegen (einmal).

Im Unterschied zum USB Kernel Modul ist im PCI Kernel Modul leider noch keine Unterstützung für udev oder devfs. Somit sind von allen die Device nodes selbst zu erzeugen.
Wenn man klassische Device Nodes einsetzt, dann ist nichts weiter zu beachten. Wenn man aber udev oder devfs einsetzt, dann muss man diese Device Nodes entweder nach jedem Neustart neu erzeugen, oder aber sie erzeugen während udev bzw. devfs nicht gemountet ist. (Bei jedem mount werden die bestehenden Nodes übernommen und alle anderen nur virtuell erzeugt, sind also nach dem unmount/neustart weg.) Das nur als Hintergrundinfo. Da wir in Zukunft die Unterstützung von udev/devfs einbauen werden und die Anleitung je nach Wissensstand um Linux nicht ganz trivial ist sei der erste Weg empfohlen, also nach jedem Neustart neu anlegen.

Am einfachsten geht es mit:

>> make nodes

Installation

Dieser Schritt muss nicht sein, weil das System auch so läuft, aber wenn man das Modul installiert kann der kernel es automatisch finden und laden, sonst muss man es nach jedem Neustart von Hand tun. Das System sollte unter dem Zielkernel laufen und man als root arbeiten:

>> make install

Wie oben sollte jetzt make automatisch wissen wohin es das Modul ablegt. Dabei bitte auf den Output achten, sollte in dem Verzeichnisnamen keine Versionsnummer auftauchen, dann ist etwas schiefgelaufen.

Fragen und Anregungen wie immer zu uns unter  support@quancom.de.