Hallo,
ich habe ein Problem mit dem IOW40.
Ich nutze SuSE Linux 10.0.
Kernelmodul ist installiert.
Die Libary is auch installiert.
Das Shellscipt für die iowarrior-Devices habe ich auch ausgeführt.
Wenn ich den IOW40 anschließe sagt mir das System-Log folgendes:
->
Mar 30 15:35:59 linux kernel: usb 1-1: new low speed USB device using uhci_hcd and address 3
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=0 now attached to iowarrior0
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=1 now attached to iowarrior1
<-
Bis auf den Pfad sieht das, denk ich, ganz gut aus.
Ich habe nun das Beispielprogramm für die LEDs ausprobiert (Unter Windows läufts).
Das kompilieren lief problemlos, beim Ausführen bekam ich allerdings folgenden Fehler:
->
Failed to open Device
<-
Er findet den IOW offensichtlich nicht im System.
Kann mir jemand helfen?
Failed to open Device, IOWarrior nicht gefunden
Moderator: Guido Körber
Zuerst würde ich mal das Programm usbview verwenden um zu sehen ob der IOWarrior erkannt wurde.
usbview liegt ganz normal im Verzeichnis /usr/bin lässt sich also in einem Konsolenfenster starten oder per Desktop-Verknüpfung.
Im linken Programmfenster sollte dann der IOWarrior aufgelistet sein.
Mit dem Programm (Konsole) lsmod kann man auch noch mal prüfen ob das Kernel-Modul geladen wurde. Das ist aber eigentlich nicht nötig, da die Zeilen....
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=0 now attached to iowarrior0
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=1 now attached to iowarrior1
...vom IOWarrior-Modul generiert werden.
Dann würde ich noch empfehlen die Device-Nodes, nicht mehr statisch mit dem Script make_nodes zu machen, sondern dies dynamisch vom udev-dämon erledigen zu lassen.
Der Dämon udevd läuft unter Suse10.0 im Hintergrund und legt beim Einstecken eines IOWarrior die Device-Nodes
/dev/usb/iowarrior0
/dev/usb/iowarrior1
/dev/usb/iowarrior2
usw.
automatisch an. Beim Ausstecken werden diese Device-Nodes auch wieder automatisch entfernt.
Man muß udevd allerdings mitteilen wie er mit einem IOWarrior am Usb-bus verfahren soll. Diese geschient mit einer einfachen Konfigurations-Datei die im Verzeichnis
/etc/udev/rules.d
stehen muß.
Hier der Inhalt der Datei:
Diese Text-Datei speichert man unter dem Namen
10-iowarrior.rules
also unter
/etc/udev/rules.d/10-iowarrior.rules
Der Anfang des Dateinamens (10-...) ist wichtig, da alle Konfigurations-Dateien im diesem Verzeichnis in lexikalischer Reihenfolge abgearbeitet werden.
Der Inhalt der Datei besagt Umgangsprachlich:
Wenn am USB-Bus ein neues Gerät auftaucht und dieses Gerät vom Kernel-modul "iowarrior" bedient wird, dann:
Lege einen neuen Device-Node "iowarrior[FortlaufendeNummer]" im Verzeichnis /dev/usb an, trage als Gruppe "users" ein und erlaube Lese-und Schreibrechte für alle user.
Nun muss man nur noch die statischen Device-Nodes die vom Skript "make_nodes" erzeugt wurden löschen, und den Rest udev überlassen.
Noch mal die Vorgehensweise:
Alle IOWarrior abziehen,
Alle Device-Nodes /dev/usb/iowarrior* löschen
Obige Datei unter /etc/udev/rules.d/10-iowarrior.rules speichern
Bin nicht sicher ob das nötig ist, aber besser : den Rechner neu booten
Konsolen-Fenster aufmachen
ls -all /dev/usb/iowarrior* liefert
/bin/ls: /dev/usb/iowarrior*: Datei oder Verzeichnis nicht gefunden
IOWarrior einstecken
Noch mal ls -all /dev/usb/iowarrior* liefert (nach 1-3 Sekunden) (hoffentlich)
crw-rw-rw- 1 root users 180, 208 2006-04-01 12:50 /dev/usb/iowarrior0
crw-rw-rw- 1 root users 180, 209 2006-04-01 12:50 /dev/usb/iowarrior1
IOWarrior wieder ausstecken
Die Device-Nodes sollten wieder verschwunden sein.
Wenn das alles so Funktioniert wurde der IOWarrior vom System erkannt und die Fehlersuche beschränkt sich auf die IowKit-Lib.
Eberhard
usbview liegt ganz normal im Verzeichnis /usr/bin lässt sich also in einem Konsolenfenster starten oder per Desktop-Verknüpfung.
Im linken Programmfenster sollte dann der IOWarrior aufgelistet sein.
Mit dem Programm (Konsole) lsmod kann man auch noch mal prüfen ob das Kernel-Modul geladen wurde. Das ist aber eigentlich nicht nötig, da die Zeilen....
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=0 now attached to iowarrior0
Mar 30 15:35:59 linux kernel: /home/xbert/LinuxSDK/Kernel_2.6/Driver/iowarrior.c: IOWarrior product=0x1500, serial=00002FF2 interface=1 now attached to iowarrior1
...vom IOWarrior-Modul generiert werden.
Dann würde ich noch empfehlen die Device-Nodes, nicht mehr statisch mit dem Script make_nodes zu machen, sondern dies dynamisch vom udev-dämon erledigen zu lassen.
Der Dämon udevd läuft unter Suse10.0 im Hintergrund und legt beim Einstecken eines IOWarrior die Device-Nodes
/dev/usb/iowarrior0
/dev/usb/iowarrior1
/dev/usb/iowarrior2
usw.
automatisch an. Beim Ausstecken werden diese Device-Nodes auch wieder automatisch entfernt.
Man muß udevd allerdings mitteilen wie er mit einem IOWarrior am Usb-bus verfahren soll. Diese geschient mit einer einfachen Konfigurations-Datei die im Verzeichnis
/etc/udev/rules.d
stehen muß.
Hier der Inhalt der Datei:
Code: Select all
# udev rules for iowarrior device nodes
SUBSYSTEM=="usb",KERNEL=="iowarrior[0-9]*",NAME="usb/iowarrior%n", GROUP="users",MODE="666",OPTIONS="last_rule"
10-iowarrior.rules
also unter
/etc/udev/rules.d/10-iowarrior.rules
Der Anfang des Dateinamens (10-...) ist wichtig, da alle Konfigurations-Dateien im diesem Verzeichnis in lexikalischer Reihenfolge abgearbeitet werden.
Der Inhalt der Datei besagt Umgangsprachlich:
Wenn am USB-Bus ein neues Gerät auftaucht und dieses Gerät vom Kernel-modul "iowarrior" bedient wird, dann:
Lege einen neuen Device-Node "iowarrior[FortlaufendeNummer]" im Verzeichnis /dev/usb an, trage als Gruppe "users" ein und erlaube Lese-und Schreibrechte für alle user.
Nun muss man nur noch die statischen Device-Nodes die vom Skript "make_nodes" erzeugt wurden löschen, und den Rest udev überlassen.
Noch mal die Vorgehensweise:
Alle IOWarrior abziehen,
Alle Device-Nodes /dev/usb/iowarrior* löschen
Obige Datei unter /etc/udev/rules.d/10-iowarrior.rules speichern
Bin nicht sicher ob das nötig ist, aber besser : den Rechner neu booten
Konsolen-Fenster aufmachen
ls -all /dev/usb/iowarrior* liefert
/bin/ls: /dev/usb/iowarrior*: Datei oder Verzeichnis nicht gefunden
IOWarrior einstecken
Noch mal ls -all /dev/usb/iowarrior* liefert (nach 1-3 Sekunden) (hoffentlich)
crw-rw-rw- 1 root users 180, 208 2006-04-01 12:50 /dev/usb/iowarrior0
crw-rw-rw- 1 root users 180, 209 2006-04-01 12:50 /dev/usb/iowarrior1
IOWarrior wieder ausstecken
Die Device-Nodes sollten wieder verschwunden sein.
Wenn das alles so Funktioniert wurde der IOWarrior vom System erkannt und die Fehlersuche beschränkt sich auf die IowKit-Lib.
Eberhard
Re: Nachtrag
Das ist eine Erfindung von Suse/Novell um Kernel-Module zu markieren die nicht zur Distribution gehören und damit vom Support nicht unterstützt werden. Es ist aber wirklich nur ein Marker und hat keinen Einfluß auf die Funktion des IOWarrior-Moduls. Man kann die Meldung einfach ignorieren.xbert wrote:Hallo, folgende Zeile hab ich noch im Systemlog entdeckt:
->
Mar 30 23:21:00 linux kernel: iowarrior: module not supported by Novell, setting U taint flag.
<-
Was kann ich tun?
Eberhard