Kartenleser Reiner SCT pinpad + Kernel 2.6

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Dawn_x
Beiträge: 17
Registriert: 09.02.2004 20:48:23
Kontaktdaten:

Kartenleser Reiner SCT pinpad + Kernel 2.6

Beitrag von Dawn_x » 07.04.2004 13:07:52

Hi,

ich krieg den Kartenleser nicht zum laufen. Ich vermute, dass es am 2.6er Kernel liegt. Wenn ich den USB-Leser einstecke wird er zwar erkannt, aber ich kann ihn nicht ansprechen. Hat jemand den Kartenleser mit dem 2.6er Kernel am laufen?

Gruß,
Dawn_x

cjtest bringt folgende Fehlermeldung:

Code: Alles auswählen

cjIoOpen: -5
cjgeldkarte bringt folgende Meldung:

Code: Alles auswählen

An I/O error occured. Please make sure, that the usb-uhci driver is loaded
and NOT the uhci driver.
... aber ich habe ohci, nicht uhci ...

und das in der syslog:

Code: Alles auswählen

Apr  7 13:01:43 bart kernel: usb 1-1: hcd_unlink_urb ca207380 fail -22
Apr  7 13:01:43 bart kernel: usb 1-1: hcd_unlink_urb c28e9ce0 fail -22
syslog beim einstöpseln:

Code: Alles auswählen

Apr  7 12:56:08 bart kernel: ohci_hcd 0000:00:01.2: GetStatus roothub.portstatus [1] = 0x00010101 CSC PPS CCS
Apr  7 12:56:08 bart kernel: hub 1-0:1.0: port 1, status 101, change 1, 12 Mb/s
Apr  7 12:56:09 bart kernel: hub 1-0:1.0: debounce: port 1: delay 100ms stable 4 status 0x101
Apr  7 12:56:09 bart kernel: ohci_hcd 0000:00:01.2: GetStatus roothub.portstatus [1] = 0x00100103 PRSC PPS PES CCS
Apr  7 12:56:09 bart kernel: usb 1-1: new full speed USB device using address 2
Apr  7 12:56:09 bart kernel: usb 1-1: new device strings: Mfr=0, Product=0, SerialNumber=0
Apr  7 12:56:09 bart kernel: drivers/usb/core/usb.c: usb_hotplug
Apr  7 12:56:09 bart kernel: usb 1-1: registering 1-1:1.0 (config #1, interface 0)
Apr  7 12:56:09 bart kernel: drivers/usb/core/usb.c: usb_hotplug
Apr  7 12:56:09 bart kernel: usbserial 1-1:1.0: usb_probe_interface
Apr  7 12:56:09 bart kernel: usbserial 1-1:1.0: usb_probe_interface - got id
Apr  7 12:56:09 bart kernel: usbserial 1-1:1.0: Reiner SCT Cyberjack USB card reader converter detected
Apr  7 12:56:09 bart kernel: usb 1-1: Reiner SCT Cyberjack USB card reader converter now attached to ttyUSB1 (or usb/tts/1 for devfs)

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 08.04.2004 08:59:20

Ich hab den kobil standart plus, der wird auch erkannt aber ist nicht ansprechbar. (2.6.0)

Ich schreib hier wieder, wenns laeuft. Eventl. ist es dasselbe problem.

p.s.
Mein rechner heisst auch bart :) die domain ist simpson.de
Mein router heisst lisa, sie ist im moment allerdings krank, eine netzwerkkarte ist kaputt und sie braeuchte dringend eine neue. Wenn einer noch ne isa fuer die lisa rumliegen hat ...

Benutzeravatar
emge
Beiträge: 1525
Registriert: 20.10.2003 22:05:46
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: 50° 45' 0" N 12° 10' 0" E

Beitrag von emge » 08.04.2004 09:44:47

lisan hat geschrieben:...Mein router heisst lisa, sie ist im moment allerdings krank, eine netzwerkkarte ist kaputt und sie braeuchte dringend eine neue. Wenn einer noch ne isa fuer die lisa rumliegen hat ...
Hättest du das eine Woche früher gesagt, hätte ich eine nach Berlin zum df.de-Treffen mitgebracht. So wirst du wohl warten müssen, bis ich eine eingetütet und in die Post gesteckt habe.

Grüße, Marco

Dawn_x
Beiträge: 17
Registriert: 09.02.2004 20:48:23
Kontaktdaten:

Beitrag von Dawn_x » 08.04.2004 10:21:26

lisan hat geschrieben:Ich hab den kobil standart plus, der wird auch erkannt aber ist nicht ansprechbar. (2.6.0)

Ich schreib hier wieder, wenns laeuft. Eventl. ist es dasselbe problem.

p.s.
Mein rechner heisst auch bart :) die domain ist simpson.de
Mein router heisst lisa, sie ist im moment allerdings krank, eine netzwerkkarte ist kaputt und sie braeuchte dringend eine neue. Wenn einer noch ne isa fuer die lisa rumliegen hat ...
Ich werde es mal mit dem 2.4.25 versuchen, vielleicht klappt das ja ...

PS: Meine "interne" Domain ist nur simpson. Mein Router heißt aber marge und der Server lisa :) Habe aber leider keine ISA NIC zu vergeben ...

Dawn_x
Beiträge: 17
Registriert: 09.02.2004 20:48:23
Kontaktdaten:

Beitrag von Dawn_x » 10.04.2004 21:08:49

Mit dem 2.4er gings auf anhib ohne Probleme.... Das gibts doch nicht.

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 11.04.2004 21:23:07

Mit dem 2.4.25 geht auch nich :(

Dawn_x
Beiträge: 17
Registriert: 09.02.2004 20:48:23
Kontaktdaten:

Beitrag von Dawn_x » 02.05.2004 11:49:34

Der cyberjack funzt mit 2.4.25 und 2.4.26 ... aber leider immer noch nicht mit 2.6.x

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 12.05.2004 13:55:26

Wie aeussert sich das genau, ich bemuehe mich derzeit mein kaan standart plus gegen das cyberjack zu tauschen, weil das kaan nirgens funzt.

Dawn_x
Beiträge: 17
Registriert: 09.02.2004 20:48:23
Kontaktdaten:

Beitrag von Dawn_x » 12.05.2004 16:30:06

Naja, das Lämpchen vom Kartenleser geht bei beiden Kernels an, aber beim 2.4er geht das Ding sofort mit jeder Anwendung (moneyplex, hcitool, ...)

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 12.05.2004 16:47:19

Bei mir geht's auch nicht.

Die einzige Lösungsmöglichkeit ist, die cyberjack.c durch eine alte vom kernel 2.6.1 zu ersetzen und neu zu kompilieren.
Alle neueren Versionen gehen nicht mehr.

Testen, ob der Treiber geht, kann man mit dem cjtest vom Reiner-Treiberpaket.
Einfach mehrfach ausführen, dann müsste immer 0 zurückgeliefert werden.
#:/opt/ctapi-cyberjack-1.0.0/ctapi# ./cjtest
cjIoOpen: 0
cjT1SendCmd: 0
cjIoClose: 0
Komischerweise hängen sich die neueren Module aber nach dem ersten Zugriff auf.

Hat jemand schon einen bugreport an den Kernelmodul-Macher geschickt?
Zuletzt geändert von shh am 09.06.2004 11:22:14, insgesamt 1-mal geändert.

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 04.06.2004 20:56:16

Nein, auch das funktioniert bei mir nicht, selbes problem, nur ein zugriff ist moeglich dannach muss man uhci_hcd entladen/laden.

Ueberleg mal, was du sonst noch probiert hast. Mir kommt das komisch vor, zumal ich bei der ersten installation vor ein paar stunden vom cyber auch beim ungepatchten 2.6.5 volle funktionalitaet hatte. Nach dem frischen boot war alles wie bei euch.

Es funktioniert auch mit dem kernel 2.4.25 nicht, ein zugriff funktioniert, alle weiteren - timeout.

Ich glaube es muss etwas mit sid/sarge zu tun haben, ideen ?

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 06.06.2004 20:08:54

Ich habe jetzt seit einigen Wochen Kontakt mit dem USB-Maintainer.
Er hat geschrieben, dass er meinen patch aufnehmen möchte. (Ich warte noch auf Antwort, dass er ihn hochgeladen hat)

Der (unten angehängte) patch führt das Modul bis auf ein paar Kleinigkeiten wieder zurück zur v2.6.1.
Änderungen des patches:
1. Einige usb_clear_halt() Zeilen beim Öffnen des KartenLesers habe ich wieder entfernt, sonst bekommt man nur nen timeout mit -7 und der Leser wird nicht geöffnet.
2. Den lokalen read-buffer habe ich wieder entfernt, weil's ein Problem gibt, wenn Daten gelesen werden, die die Buffergrösse übersteigen. Ohne dies bekommt man error -3 zurück.

Das Problem, dass man nur einmal Lesen kann, dann den uhci_hcd/ohci_hcd entladen muss, habe ich seit Kernel v2.6.2 gehabt (bzw 2.6.2-rc1). Aber eben nur mit dem neuen Treiber. Bei dir sieht's also irgendwie immer noch danach, als wenn du den alten Treiber geladen hättest.
Ich hab das (nochmal) ausprobiert. Das alte Modul bzw ein gepatchtes 2.6.6 bis 2.6.7-rc2 Modul funktioniert bei:
- Via KM266 chipset mainboard (uhci-diver)
- Athlon Irongate chipset (ohci-driver)
- nforce2 chipset (ohci-driver)
Mit Hauptsystem sarge.

Was hast du denn für nen chipsatz?
Hast du vielleicht nen preemitiven Kernel?
Hast du nicht geschrieben, dass du nen Kobil-Leser hast? Mein Hinweis war für den cyberjack gedacht. (Für den Kobil gibt's übrigens seit v2.6.7-rc1 oder -rc2 einige patches)

Das Modul-Ändern geht so: (für kernel 2.6.7.-rc2)
1. Kartenleser abstecken
2. rmmod cyberjack
3. die cyberjack.c ersetzen, oder den patch ausführen:

Code: Alles auswählen

sigi@vortex:/usr/src/linux-2.6.7-rc2$ cat ../cyberjack_2.6.7-rc2.patch | patch -bp1
patching file drivers/usb/serial/cyberjack.c
sigi@vortex:/usr/src/linux-2.6.7-rc2$
4. Im Kernel-Verzeichnis make modules ausführen
5. Dann das neue Modul mit insmod drivers/usb/serial/cyberjack.ko laden.
(wer möchte kann für debug-Meldungen noch debug=1 anhängen)
6. Den Kartenleser wieder anstecken.

Dann müsste es (cjtest) eigentlich klappen.
Ich habe hier übrigens udev laufen (kein devfs) und die Rechte vom cyberjack sehen so aus:

Code: Alles auswählen

sigi@vortex:/$ ll /dev/ttyUSB0
crw-rw----    1 root     dialout  188,   0 2004-06-06 19:03 /dev/ttyUSB0
sigi@vortex:/$
Schönen Gruß
shh

p.s. cyberjack patch für kernel v2.6.7-rc1 oder v2.6.7-rc2:

Code: Alles auswählen

--- linux-2.6.7-rc2/drivers/usb/serial/cyberjack.c.orig	2004-05-30 08:26:43.000000000 +0200
+++ linux-2.6.7-rc2/drivers/usb/serial/cyberjack.c	2004-06-06 18:25:11.000000000 +0200
@@ -109,7 +109,7 @@ struct cyberjack_private {
 	short		rdtodo;		/* Bytes still to read */
 	unsigned char	wrbuf[5*64];	/* Buffer for collecting data to write */
 	short		wrfilled;	/* Overall data size we already got */
-	short		wrsent;		/* Data akready sent */
+	short		wrsent;		/* Data already sent */
 };
 
 /* do some startup allocations not currently performed by usb_serial_probe() */
@@ -159,8 +159,6 @@ static int  cyberjack_open (struct usb_s
 
 	dbg("%s - usb_clear_halt", __FUNCTION__ );
 	usb_clear_halt(port->serial->dev, port->write_urb->pipe);
-	usb_clear_halt(port->serial->dev, port->read_urb->pipe);
-	usb_clear_halt(port->serial->dev, port->interrupt_in_urb->pipe);
 
 	/* force low_latency on so that our tty_push actually forces
 	 * the data through, otherwise it is scheduled, and with high
@@ -212,7 +210,6 @@ static int cyberjack_write (struct usb_s
 	unsigned long flags;
 	int result;
 	int wrexpected;
-	unsigned char localbuf[CYBERJACK_LOCAL_BUF_SIZE];	/* Buffer for collecting data to write */
 
 	dbg("%s - port %d", __FUNCTION__, port->number);
 	dbg("%s - from_user %d", __FUNCTION__, from_user);
@@ -229,29 +226,23 @@ static int cyberjack_write (struct usb_s
 
 	spin_lock_irqsave(&priv->lock, flags);
 
-	if( (count+priv->wrfilled)>sizeof(priv->wrbuf) ||
-		(count>sizeof(localbuf)) ) {
-		/* To much data  for buffer. Reset buffer. */
+	if( (count+priv->wrfilled)>sizeof(priv->wrbuf) ) {
+		/* To much data for buffer. Reset buffer. */
 		priv->wrfilled=0;
 		spin_unlock_irqrestore(&priv->lock, flags);
 		return (0);
 	}
 
-	spin_unlock_irqrestore(&priv->lock, flags);
-
 	/* Copy data */
 	if (from_user) {
-		if (copy_from_user(localbuf, buf, count)) {
+		if (copy_from_user(priv->wrbuf+priv->wrfilled, buf, count)) {
+			spin_unlock_irqrestore(&priv->lock, flags);
 			return -EFAULT;
 		}
 	} else {
-		memcpy (localbuf, buf, count);
+		memcpy (priv->wrbuf+priv->wrfilled, buf, count);
 	}  
 
-	spin_lock_irqsave(&priv->lock, flags);
-
-	memcpy (priv->wrbuf+priv->wrfilled, localbuf, count);
-
 	usb_serial_debug_data (__FILE__, __FUNCTION__, count,
 		priv->wrbuf+priv->wrfilled);
 	priv->wrfilled += count;

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 07.06.2004 18:12:11

Nein, 2.4.25 und 2.4.26 original funktionieren ja auch genauso, also einmal zugriff und dann ende.

Ich hatte ienen kobilleser den habe ich gegen den cyberjack eingetauscht, weil damit wenige leute probleme haben.

Ich habe einen kt333.

Hier mal das log vom 2.6.5 mit dem von dir gezogenen cyberjack.c:

Code: Alles auswählen

bart:~/tmp/ctapi-cyberjack-1.0.0/ctapi# date && ./cjtest
Mon Jun  7 18:39:14 CEST 2004
cjIoOpen: 0
cjT1SendCmd: 0
cjIoClose: 0

Code: Alles auswählen

bart:/home/asas# tail -f /var/log/kernel/current
Jun  7 18:38:09 [kernel] usb 1-1: USB disconnect, address 4
Jun  7 18:38:14 [kernel] usb 1-1: new full speed USB device using address 5
Jun  7 18:38:14 [kernel] cyberjack 1-1:1.0: Reiner SCT Cyberjack USB card reader converter detected
Jun  7 18:38:14 [kernel] usb 1-1: Reiner SCT Cyberjack USB card reader converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_open - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_int_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_int_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_int_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:39:14 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_int_callback - port 0
Jetzt anschliessend dasselbe nocheinmal:

Code: Alles auswählen

bart:~/tmp/ctapi-cyberjack-1.0.0/ctapi# date && ./cjtest
Mon Jun  7 18:41:12 CEST 2004
cjIoOpen: -7
und wieder das log:

Code: Alles auswählen

...
Jun  7 18:41:12 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_open - port 0
Jun  7 18:41:12 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:41:12 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:41:12 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:41:12 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:41:20 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write - port 0
Jun  7 18:41:20 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_write_bulk_callback - port 0
Jun  7 18:41:20 [kernel] drivers/usb/serial/cyberjack.c: cyberjack_read_int_callback - port 0
Meine module:

Code: Alles auswählen

bart:/home/asas# lsmod
Module                  Size  Used by
cyberjack               8836  0
videodev                7168  0
agpgart                27880  0
nvidia               2070824  12
parport_pc             21888  1
lp                      9028  0
parport                33992  2 parport_pc,lp
ipv6                  202496  8
uhci_hcd               28304  0
usbserial              23716  1 cyberjack
usbcore                89052  5 cyberjack,uhci_hcd,usbserial
snd_pcm_oss            48612  1
snd_mixer_oss          17280  2 snd_pcm_oss
snd_emu10k1            90500  2
snd_rawmidi            19680  1 snd_emu10k1
snd_pcm                82660  2 snd_pcm_oss,snd_emu10k1
snd_timer              20548  1 snd_pcm
snd_seq_device          6536  2 snd_emu10k1,snd_rawmidi
snd_ac97_codec         60868  1 snd_emu10k1
snd_page_alloc          8964  2 snd_emu10k1,snd_pcm
snd_util_mem            3264  1 snd_emu10k1
snd_hwdep               7136  1 snd_emu10k1
snd                    45860  10 snd_pcm_oss,snd_mixer_oss,snd_emu10k1,snd_rawmidi,snd_pcm,snd_timer,snd_seq_device,snd_ac97_codec,snd_util_mem,snd_hwdep
soundcore               7072  3 snd
psmouse                18568  0
w83781d                33024  0
eeprom                  6216  0
i2c_sensor              2368  2 w83781d,eeprom
i2c_viapro              5900  0
i2c_isa                 1664  0
i2c_core               18372  5 w83781d,eeprom,i2c_sensor,i2c_viapro,i2c_isa
ne2k_pci                7648  0
8390                    8640  1 ne2k_pci
crc32                   3840  1 8390
rtc                     9656  0
gcc ist bei 3.3.3

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 07.06.2004 21:57:22

Hast du einen cyberjack mit Anzeige, oder ohne? (Sollte es vielleicht daran liegen?)
Ich habe einen ohne Anzeige; nur mit pinpad.
Hast du mal ein lsusb -v für mich (zumindest vom cyberjack)?
Meins sieht so aus:

Code: Alles auswählen

Bus 002 Device 003: ID 0c4b:0100
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0c4b
  idProduct          0x0100
  bcdDevice            1.00
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower               96mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  bytes 16 once
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  bytes 64 once
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  bytes 64 once
        bInterval               1
Dein lsmod sieht gut aus, die Module sind geladen. ;)
Meine getestete VIA Maschine hat auch den uhci_hcd, der nforce2- & Irongate-chipset nimmt ohci_hcd her.
Mit dem debug-log kann ich aber leider nicht wirklich was anfangen - dafür bin ich einfach zuviel newbie.

Obige cyberjack.c war vom Kernel 2.6.1 und ist deshalb vielleicht "zu alt".
Könntest du mal den aktuellen Kernel 2.6.7-rc2 ausprobieren?
Und den patch darauf anwenden?
Seit v2.6.5 hat sich viel an der USB-Layer geändert, ab 2.6.7-rc1 nochmal einiges an den Treibern.
Ich habe die alte cyberjack.c auch erst ab dem kernel 2.6.6 verwendet und kann daher nichts zu deinem alten Kernel sagen - bitte mach' dir selbst die Fehlersuche leicht, indem du einen aktuellen Entwicklungsstand des Kernels benutzt. 8)

Der patch hat auch nicht alles Neue revidiert, sondern nur das was an meinen Rechnern das modul aufhängen liess. ZB sind in der cyberjack_close() (also die Funktion zum Schliessen des Geräts) in den neueren Treibern usb_clear_halt-Aufrufe drin, die im alten Modul noch nicht drin waren. Vielleicht ist gerade das bei deiner Southbridge nötig, damit man den Kartenleser auch ein zweites Mal öffnen kann.
Essentiell bei meinen Chipsätzen war, dass ich die 2 usb_clear_halt-Aufrufe für read_urb und interrupt_in_urb beim Öffen des Gerätes herausnehme, sonst habe ich immer Fehler -7 bekommen. Möglicherweise muss man bei dir den dritten Aufruf auch noch entfernen.
Wenn's mit kernel 2.6.7-rc2 und dem patch immer noch nicht funktioniert, könntest du also noch ausprobieren, die Zeile

Code: Alles auswählen

usb_clear_halt(port->serial->dev, port->write_urb->pipe); 
auszukommentieren und cjtest mit dem neu kompilierten Module nochmal zu testen.

Hmm, sehr seltsam, dass es bei dir nicht geht, zumal ich das Ganze doch an recht vielen Rechnern probiert habe...
Sollte es gar verschiedene Hardwareversionen vom cyberjack geben? :roll:
Aber vielleicht hängt's ja wirklich nur an deinem alten Kernel. :?

Schönen Gruß
shh

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 08.06.2004 17:27:39

Mein reiner sct hat kein display.

Ich mache mir auch eher sorgen, dass 2.4.25 und 2.4.26 denselben effekt zeigen.

Ich habe mir von kernel.org 2.6.7-rc2 gezogen, dein patch applied nicht.
Ohne patch kommt ohne karte IMMER dieses, unbegrenzt oft nacheinander..

Code: Alles auswählen

bart:~/tmp/ctapi-cyberjack-1.0.0/ctapi# ./cjtest
cjIoOpen: 0
cjT1SendCmd: -3
Nachdem einmal eine Karte drin war und cjtest aufgerufen worden ist hab ich immer beim
Open eine -7.
Egal ob mit oder ohne Karte.

usb/devices:

Code: Alles auswählen

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=16 #Cfgs=  1
P:  Vendor=0c4b ProdID=0100 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 96mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=cyberjack
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=5ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
Mein lsusb -v:

Code: Alles auswählen

Bus 001 Device 002: ID 0c4b:0100
  Language IDs: none (cannot get min. string descriptor; got len=-1, error=110:Connection timed out)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 Interface
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0c4b
  idProduct          0x0100
  bcdDevice            1.00
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower               96mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize         16
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize         64
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize         64
        bInterval               1
  Language IDs: none (cannot get min. string descriptor; got len=-1, error=110:Connection timed out)
Der erste Zugriff klappte dannach aber trotz dieser schoenen timeouts problemlos.[/code][/code]

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 09.06.2004 11:03:00

Ich habe mir von kernel.org 2.6.7-rc2 gezogen, dein patch applied nicht.
Nun, der USB-Maintainer hat's geschafft. :)
Sorry, für so blöde Tipps, aber hast du sich auch an alle obigen Schritte gehalten?
Zuerst ins kernel-Verzeichnis gehen, dann

Code: Alles auswählen

sigi@vortex:/usr/src/linux-2.6.7-rc2$ cat PfadZumPatch/DiePatchDatei.patch | patch -p1
patching file drivers/usb/serial/cyberjack.c
sigi@vortex:/usr/src/linux-2.6.7-rc2$
ausführen...
Was kommt für eine Fehlermeldung?

Falls das patchen wirklich nicht klappt (vielleicht muss man wg Datum/Zeit der Dateien noch ne andere Option vom patch setzen?), kannst du die Zeilen ja immer noch manuell eintippen. Es ist ja nicht viel, was geändert gehört.
Hmm, ich kann hier schlecht die ganze Datei posten. :roll:
Ohne patch kommt ohne karte IMMER dieses, unbegrenzt oft nacheinander..
cjT1SendCmd: -3
Das kommt bei meinem VIA KM266 auch - ohne patch.
Nimmt man das gepachte Modul, läuft alles wunderbar. Ob ne Karte drin ist, oder nicht, ist dem Kartenleser egal.
(Der nforce2 macht ungepacht auch beim ersten Versuch nicht auf)

-7 bedeutet, dass der Kartenleser nicht geöffnet werden kann.
-3 bedeutet, dass beim Auslesen was schief geht.
Deshalb gibt's ja den patch, der a) das Öffnen des Lesers patcht, damit -7 nicht mehr kommt, und b) den lokalen Buffer entfernt, damit kein -3 mehr kommt.
Wenn du die Änderungen irgendwie in deine cyberjack.c bekommst wird auch dein Leser funktionieren. ;)

usb/devices und lsusb -v sind bei mir übrigens gleich.

Schönen Gruß
shh

NACHTRAG:
Hmm,
1. Möglicherweise muss man cjtest nochmal neu übersetzen. Mach doch mal ein make clean && make in den ctapi-Verzeichnis.
2. Hast du vielleicht nen Karten-Dämon installiert, der irgendwas blockiert? Ich habe hier nichts weiter installiert; die ctapt-Treiter und Test-tools (v1.0.0) habe ich von der Reiner-homepage runtergeladen und entpackt.
3. Wenn du mir deine email-Adresse gibst, kann ich dir die gepatchte Datei schicken. :)

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 09.06.2004 20:26:59

Frisch ausgepackt und dann den patch versucht.
Den patch hab ich von dir hier abkopiert und ist mit diesem identisch.

Code: Alles auswählen

bart:/usr/src/linux-2.6.7-rc2# cat cyberjack-patch.diff |patch -p1
patching file drivers/usb/serial/cyberjack.c
Hunk #1 FAILED at 109.
Hunk #2 FAILED at 159.
Hunk #3 FAILED at 210.
Hunk #4 FAILED at 226.
4 out of 4 hunks FAILED -- saving rejects to file drivers/usb/serial/cyberjack.c.rej
bart:/usr/src/linux-2.6.7-rc2#
Bevor ich mir das jetzt angucke schick mir lieber gleich das file an arvidw at gmx.de :).

Interessanter weise geht moneyplex ein bischen.
Ich lege einen zugang an, bei der zweiten aufforderung zur pin eingabe haengt sich das gerat auf und die gruene led leuchtet.
Ich glaube er will was auf den chip schreiben ?
Gruss,
Arvid.

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 09.06.2004 23:50:13

Tja sehr seltsam, dass es nicht geht. 8O
Aber ich habe ja auch erst das patch-Erstellen angefangen, es kann ja auch an dem patch-Format liegen. GH hat ihn aber mittlerweile beim -mm Zweig anfügen können, vielleicht findet er ja mal seinen Weg in den Standardkernel.
Ich hoffe nur, dass der bei anderen nichts kaputt macht. :roll:

Ich hab' dir mal die gepachte cyberjack.c geschickt. Ich hoffe du kriegst deinen Leser damit zum laufen. Auch ein fertig kompiliertes Modul, was du mal mit insmod probieren kannst.

Bei Moneyplex geht bei mir nach dem patch übrigens wieder "alles". (Bis auf Aktienhandel mit der Sparkasse)
Hoffentlich ist der Kernel-patch nicht ein Rückschritt, der nur wegen Moneyplex und den vielleicht veralteten TestModulen gemacht wird. Die Leute vom libchipcard sollen den cyberjack ja erst vor kurzem wieder zum Laufen bekommen haben:
http://www.libchipcard.de/
2004/06/04: Progress Report on Libchipcard2

The current CVS version of Libchipcard2 now works with CTAPI drivers for Kobil and Cyberjack readers ;-)
- was auch immer das genau heissen mag.

Schönen Gruß
shh

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 10.06.2004 08:29:38

Es funktioniert :).

Jetzt muss ich noch den ini-brief abgeben, dann kanns losgehen.

Danke dir.

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 10.06.2004 12:35:15

Super! :P
Hab' gerade gesehen, dass der patch in v2.6.7-rc3-mm1 aufgenommen wurde. :mrgreen:
http://kerneltrap.org/node/view/3268

Gruß
shh

Benutzeravatar
rblock
Beiträge: 13
Registriert: 26.03.2004 18:19:24
Wohnort: Usingen
Kontaktdaten:

Beitrag von rblock » 21.06.2004 18:17:03

Ich möchte mich unverschämterweise einfach mal einklinken. :wink:

Ich habe heute Kernel 2.6.7 installiert und auch darauf geachtet, dass der Patch installiert ist. Allerdings funktioniert es immer noch nicht. Wenn ich gerade gebootet habe, kann ich mich in Moneyplex noch über die Karte anmelden, aber das war's dann auch schon. Kontostände kann ich schon nicht mehr laden, da ich dann nur die Meldung bekomme, dass das Gerät nicht gefunden wird. :(

Hier ein Auszug aus "dmesg" beim Boot:

Code: Alles auswählen

usbcore: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0
drivers/usb/serial/usb-serial.c: USB Serial support registered for Reiner SCT Cyberjack USB card reader
cyberjack 4-1:1.0: Reiner SCT Cyberjack USB card reader converter detected
usb 4-1: Reiner SCT Cyberjack USB card reader converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
usbcore: registered new driver cyberjack
drivers/usb/serial/cyberjack.c: v1.0 Matthias Bruestle
drivers/usb/serial/cyberjack.c: REINER SCT cyberJack pinpad/e-com USB Chipcard Reader Driver
Hier die Meldung, wenn der Kartenleser angesprochen wird:

Code: Alles auswählen

Debug: sleeping function called from invalid context at arch/i386/lib/usercopy.c:623
in_atomic():1, irqs_disabled():1
 [<c011a797>] __might_sleep+0xb2/0xd3
 [<c0214b51>] copy_from_user+0x27/0x86
 [<f8d7b767>] cyberjack_write+0x419/0x4c5 [cyberjack]
 [<c0125372>] del_timer_sync+0x39/0x146
 [<f8d8c49c>] serial_write+0x8e/0xbf [usbserial]
 [<c0254f4a>] write_chan+0x1f2/0x21a
 [<c0118ef9>] default_wake_function+0x0/0x12
 [<c0118ef9>] default_wake_function+0x0/0x12
 [<c024f1f4>] tty_write+0x250/0x300
 [<c0254d58>] write_chan+0x0/0x21a
 [<c016bc36>] sys_select+0x23c/0x50b
 [<c024efa4>] tty_write+0x0/0x300
 [<c0157d83>] vfs_write+0xb0/0x119
 [<c0157e91>] sys_write+0x42/0x63
 [<c0105be7>] syscall_call+0x7/0xb
Hier ein kleiner Test:

Code: Alles auswählen

(0)root@rb-linux ctapi # ./cjtest
cjIoOpen: -7
(0)root@rb-linux ctapi # rmmod cyberjack
(0)root@rb-linux ctapi # insmod /usr/src/linux/drivers/usb/serial/cyberjack.ko
(0)root@rb-linux ctapi # ./cjtest
cjIoOpen: 0
cjT1SendCmd: 0
cjIoClose: 0
(0)root@rb-linux ctapi # ./cjtest
cjIoOpen: -7
Wie man sieht, kann man das Gerät genau einmal ansprechen. :(

"lspci" gibt folgendes aus:

Code: Alles auswählen

0000:00:00.0 Host bridge: Intel Corp. 82875P Memory Controller Hub (rev 02)
0000:00:01.0 PCI bridge: Intel Corp. 82875P Processor to AGP Controller (rev 02)
0000:00:03.0 PCI bridge: Intel Corp. 82875P Processor to PCI to CSA Bridge (rev 02)
0000:00:1d.0 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #1 (rev 02)
0000:00:1d.1 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #2 (rev 02)
0000:00:1d.2 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #3 (rev 02)
0000:00:1d.3 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB UHCI #4 (rev 02)
0000:00:1d.7 USB Controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
0000:00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB/ER Hub interface to PCI Bridge (rev c2)
0000:00:1f.0 ISA bridge: Intel Corp. 82801EB/ER (ICH5/ICH5R) LPC Bridge (rev 02)
0000:00:1f.1 IDE interface: Intel Corp. 82801EB/ER (ICH5/ICH5R) Ultra ATA 100 Storage Controller (rev 02)
0000:00:1f.3 SMBus: Intel Corp. 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AR [Radeon 9600]
0000:01:00.1 Display controller: ATI Technologies Inc RV350 AR [Radeon 9600] (Secondary)
0000:02:01.0 Ethernet controller: Intel Corp. 82547EI Gigabit Ethernet Controller (LOM)
0000:03:03.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 46)
0000:03:0a.0 PCI bridge: Hint Corp HB6 Universal PCI-PCI bridge (non-transparent mode) (rev 13)
0000:03:0b.0 Network controller: AVM Audiovisuelles MKTG & Computer System GmbH Fritz!PCI v2.0 ISDN (rev 01)
0000:03:0c.0 SCSI storage controller: Adaptec AIC-7892A U160/m (rev 02)
0000:03:0d.0 Unknown mass storage controller: Promise Technology, Inc. 20268 (rev 01)
0000:04:08.0 USB Controller: NEC Corporation USB (rev 41)
0000:04:08.1 USB Controller: NEC Corporation USB (rev 41)
0000:04:08.2 USB Controller: NEC Corporation USB 2.0 (rev 02)
0000:04:0b.0 FireWire (IEEE 1394): Texas Instruments TSB12LV26 IEEE-1394 Controller (Link)
"lsmod" fördert folgendes zutage:

Code: Alles auswählen

Module                  Size  Used by
cyberjack               9220  0
fglrx                 213316  7
nfsd                   90696  8
exportfs                5888  1 nfsd
lockd                  58440  2 nfsd
sunrpc                138212  2 nfsd,lockd
ohci_hcd               19460  0
aic7xxx               198104  0
ohci1394               32004  0
ieee1394              304180  1 ohci1394
radeonfb               59692  0
i2c_algo_bit            9224  1 radeonfb
i2c_core               19584  2 radeonfb,i2c_algo_bit
snd_intel8x0           30472  1
snd_ac97_codec         66052  1 snd_intel8x0
snd_pcm                87684  1 snd_intel8x0
snd_timer              22788  1 snd_pcm
snd_page_alloc          9224  2 snd_intel8x0,snd_pcm
snd_mpu401_uart         6656  1 snd_intel8x0
snd_rawmidi            21028  1 snd_mpu401_uart
snd_seq_device          7048  1 snd_rawmidi
snd                    49764  9 snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device
soundcore               8032  1 snd
shpchp                 97420  0
intel_mch_agp           8208  0
ntfs                   87372  3
usblp                  11520  0
capidrv                30260  1
isdn                   83232  1 capidrv
fcpci                 502808  2
capi                   15808  4
capifs                  4232  2 capi
kernelcapi             44544  3 capidrv,fcpci,capi
intel_agp              17180  1
e1000                  79492  0
sd_mod                 17024  0
usbmouse                4608  0
evdev                   7808  0
usbserial              23332  1 cyberjack
usb_storage            63552  0
scsi_mod               70712  3 aic7xxx,sd_mod,usb_storage
usbhid                 33728  0
"lsusb" für das Device ergibt:

Code: Alles auswählen

Bus 004 Device 005: ID 0c4b:0100
  Language IDs: none (cannot get min. string descriptor; got len=-1, error=32:Broken pipe)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 Interface
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        16
  idVendor           0x0c4b
  idProduct          0x0100
  bcdDevice            1.00
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      Remote Wakeup
    MaxPower               96mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               none
        wMaxPacketSize         16
        bInterval               5
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize         64
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize         64
        bInterval               1
  Language IDs: none (cannot get min. string descriptor; got len=-1, error=32:Broken pipe)
Würde ich mich etwas besser auskennen, würde ich den Source selbst ändern, aber ich möchte nicht einfach auf gut Glück dort herumwurschteln. :)

Wenn also jemand eine Idee hat und diese mir zur Lösung gehelfen könnte, wäre ich hocherfreut. ;)


Verzweifelte Grüße
Reiner

--
"Was immer du tun kannst oder erträumst zu können, beginne es jetzt."
von: Johann Wolfgang von Goethe (1749-1832)

Reiner Block
http://www.bisoft.de

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 22.06.2004 12:13:45

In Kernel 2.6.7 ist der patch schon drin, da muss man eigentlich nichts mehr patchen.

Leider musste ich aber auch feststellen, dass es noch nicht 100%ig klappt.
Die Veränderungen haben halt wenigstens ansatzweise wieder Funktion gebracht.

Probier' mal folgende (zusätzliche) Änderungen:
1. Alle usb_clear_halt(...) Zeilen in der drivers/usb/serial/cyberjack.c auskommentieren. Also auch die restliche in cyberjack_open() und die drei in cyberjack_close().
2. Neu kompilieren: Ins Kernel-Verzeichnis gehen, dann 'make modules', dann kann man mit

Code: Alles auswählen

rmmod cyberjack && insmod drivers/usb/serial/cyberjack.ko
das neue Modul ausprobieren ausprobieren.
Für Leute, die lieber patchen wollen, hier ein "Auskommentier"-diff:

Code: Alles auswählen

--- cyberjack.c.orig	2004-06-22 12:00:19.000000000 +0200
+++ cyberjack.c	2004-06-22 12:01:43.000000000 +0200
@@ -157,8 +157,8 @@ static int  cyberjack_open (struct usb_s
 
 	dbg("%s - port %d", __FUNCTION__, port->number);
 
-	dbg("%s - usb_clear_halt", __FUNCTION__ );
-	usb_clear_halt(port->serial->dev, port->write_urb->pipe);
+//	dbg("%s - usb_clear_halt", __FUNCTION__ );
+//	usb_clear_halt(port->serial->dev, port->write_urb->pipe);
 
 	/* force low_latency on so that our tty_push actually forces
 	 * the data through, otherwise it is scheduled, and with high
@@ -196,10 +196,10 @@ static void cyberjack_close (struct usb_
 		usb_unlink_urb (port->write_urb);
 		usb_unlink_urb (port->read_urb);
 		usb_unlink_urb (port->interrupt_in_urb);
-		dbg("%s - usb_clear_halt", __FUNCTION__ );
-		usb_clear_halt(port->serial->dev, port->write_urb->pipe);
-		usb_clear_halt(port->serial->dev, port->read_urb->pipe);
-		usb_clear_halt(port->serial->dev, port->interrupt_in_urb->pipe);
+//		dbg("%s - usb_clear_halt", __FUNCTION__ );
+//		usb_clear_halt(port->serial->dev, port->write_urb->pipe);
+//		usb_clear_halt(port->serial->dev, port->read_urb->pipe);
+//		usb_clear_halt(port->serial->dev, port->interrupt_in_urb->pipe);
 	}
 }
Dann dürfte zumindest nicht mehr "so schnell" der -7 Fehler kommen.

Wenn der Kartenleser nicht mehr ansprechbar ist, kann man das i.a. richten durch:
Intel & VIA:
rmmod uhci_hcd && modprobe uhci_hcd
nforce2, AMD-chipsets:
rmmod ohci_hcd && modprobe ohci_hcd

Irgendwie scheint mit dem KartenLeser was grösseres im Busch zu sein, denn offenbar hängt sich das übergeordnete ohci_hcd/uhci_hcd mit der Zeit auf.
Witzigerweise auch, wenn man den Kartenleser gar nicht "richtig" benutzt.
Wenn man den Kartenleser öfters an & absteckt (es ist hotplug installiert), oder das Modul öfters läd und wieder entläd, merkt irgendwann der ohci_hcd das "Anstecken" nicht mehr und registriert das Gerät (/dev/ttyUSB0) nicht mehr.

Ich probier' damit schon länger rum, und irgendwie scheint die cyberjack.c nicht selber schuld zu sein. Harald Welte popelt damit auch rum und meint beim Abstecken wird usb_serial_disconnect() einmal zuviel aufgerufen, von irgendwoher...

Tja, wer mehr analysieren möchte, kann sich ja mit
modprobe usbserial debug=1
modprobe cyberjack debug=1
ein paar Meldungen in /var/log/messages setzen lassen.
Dann kann man dann genau sehen, was abläuft (schiefläuft?) und sich auch seine Änderungen anzeigen lassen.

Deine logs sehen übrigens "normal" aus, nur das "Debug: sleeping function called fr..." ist bei mir noch nicht aufgetaucht. Mehr kann ich damit leider auch nicht anfangen.

> Würde ich mich etwas besser auskennen, würde ich den Source selbst ändern, aber ich möchte nicht einfach auf gut Glück dort herumwurschteln.

Nur keine Hemmungen! Die cyberjack.c ist eigentlich recht klein, und ein bisschen am Kernel rumpopeln macht echt Spass! 8)

Benutzeravatar
rblock
Beiträge: 13
Registriert: 26.03.2004 18:19:24
Wohnort: Usingen
Kontaktdaten:

Beitrag von rblock » 22.06.2004 13:03:02

shh hat geschrieben:In Kernel 2.6.7 ist der patch schon drin, da muss man eigentlich nichts mehr patchen.
Hab' ich auch nicht, da ein cmp mir das verraten hatte. ;)
shh hat geschrieben:Leider musste ich aber auch feststellen, dass es noch nicht 100%ig klappt.
Die Veränderungen haben halt wenigstens ansatzweise wieder Funktion gebracht.
Leider nur ansatzweise, da man sich in Moneyplex höchstens noch über den Leser anmelden kann und er dann nicht mehr ansprechbar ist. :(
shh hat geschrieben:Probier' mal folgende (zusätzliche) Änderungen:
1. Alle usb_clear_halt(...) Zeilen in der drivers/usb/serial/cyberjack.c auskommentieren. Also auch die restliche in cyberjack_open() und die drei in cyberjack_close().
2. Neu kompilieren: Ins Kernel-Verzeichnis gehen, dann 'make modules', dann kann man mit

Code: Alles auswählen

rmmod cyberjack && insmod drivers/usb/serial/cyberjack.ko
das neue Modul ausprobieren ausprobieren.
Für Leute, die lieber patchen wollen, hier ein "Auskommentier"-diff:
Bah! Solche Kleinigkeiten macht man doch wohl von Hand, oder? ;)
shh hat geschrieben:Dann dürfte zumindest nicht mehr "so schnell" der -7 Fehler kommen.
Also ohne Neustart des Rechners hat sich nichts geändert.
shh hat geschrieben:Wenn der Kartenleser nicht mehr ansprechbar ist, kann man das i.a. richten durch:
Intel & VIA:
rmmod uhci_hcd && modprobe uhci_hcd
nforce2, AMD-chipsets:
rmmod ohci_hcd && modprobe ohci_hcd
Bei meinem NEC Chipsatz ist es auch der ohci_hcd, aber dies hat nichts genutzt.
shh hat geschrieben:Irgendwie scheint mit dem KartenLeser was grösseres im Busch zu sein, denn offenbar hängt sich das übergeordnete ohci_hcd/uhci_hcd mit der Zeit auf.
Witzigerweise auch, wenn man den Kartenleser gar nicht "richtig" benutzt.
Ich frage mich wirklich, ob ich das noch witzig finden soll oder nicht. ;) Aber ich vermute auch schlimmeres, allerdings ist es verwunderlich, dass alles andere einwandfrei funktioniert. Wobei ich meinen ForceFeedback eh nicht benutze und für den Scanner noch kein Treiber existiert. Ich wollte mir aber demnächst etwa Zeit dafür nehmen, da es für ein hochwertiges Gerät nicht so schwer sein soll diesen zu programmieren, da die Befehle komplexer aber einfacher sein sollen. :)
shh hat geschrieben:Wenn man den Kartenleser öfters an & absteckt (es ist hotplug installiert), oder das Modul öfters läd und wieder entläd, merkt irgendwann der ohci_hcd das "Anstecken" nicht mehr und registriert das Gerät (/dev/ttyUSB0) nicht mehr.
Man sollte ihn verprügeln dafür. ;)
shh hat geschrieben:Ich probier' damit schon länger rum, und irgendwie scheint die cyberjack.c nicht selber schuld zu sein. Harald Welte popelt damit auch rum und meint beim Abstecken wird usb_serial_disconnect() einmal zuviel aufgerufen, von irgendwoher...
Uaaaaahhhhh! Da er dies bestimmt über den Debug erfahren hat, lohnt es sich wohl kaum nochmals zu debuggen, wenn man dadurch nicht mehr in Erfahrung bringen kann.
shh hat geschrieben:Deine logs sehen übrigens "normal" aus, nur das "Debug: sleeping function called fr..." ist bei mir noch nicht aufgetaucht. Mehr kann ich damit leider auch nicht anfangen.
Es passt aber zum doppelten Aufruf von usb_serial_disconnect(), da dies das Teil in den Tiefschlaf versetzt, aus dem er nicht mehr erwacht. Vielleicht hilf ja ein Pussi von einem schönen Prinzen... ;)
shh hat geschrieben:Nur keine Hemmungen! Die cyberjack.c ist eigentlich recht klein, und ein bisschen am Kernel rumpopeln macht echt Spass! 8)
Wird mir wohl nichts anderes übrig bleiben. :) Und die Popel schicke ich dann Dir, ok? :lol:

BTW, ich hoffe ich werde nicht erschlagen, wenn man erfährt, dass ich gar kein Debian sondern Gentoo Linux verwende? ;)


Popelnde Grüße
Reiner

--
"Was immer du tun kannst oder erträumst zu können, beginne es jetzt."
von: Johann Wolfgang von Goethe (1749-1832)

Reiner Block
http://www.bisoft.de

shh
Beiträge: 140
Registriert: 16.06.2002 14:29:44

Beitrag von shh » 23.06.2004 10:13:00

shh>> Dann dürfte zumindest nicht mehr "so schnell" der -7 Fehler kommen.
rblock> Also ohne Neustart des Rechners hat sich nichts geändert.

Wenn man die module ohci_hcd, usbserial und cyberjack tauscht, müsste es eigentlich ohne Neustart gehen. Evtl. muss man hotplug nochmal neu starten.
Man kann das neue cyberjack.ko aber auch nach ins Modulverzeichnis des Kernels kopieren und neu starten...

rblock> Bei meinem NEC Chipsatz ist es auch der ohci_hcd, aber dies hat nichts genutzt.

Heisst das nach den Änderungen kann man den Leser auch nur einmal ansprechen, dann muss man neustarten? Hmm.
Bei mir ist's ja auch 2x ein ohci_hcd, der sich mit der Zeit aufhängt: ohci_hcd für nforce2 und Irongate AMD756.
Der uhci_hcd für Intel BX-Board (PIIX4) und VIA KM266 (southb. VIA82xxxxx), scheint nach dem patch (und den zusätzl. Änderungen) recht stabil zu laufen.

Hier mal einige postings zu den cyberjack-Änderungen:
http://marc.theaimsgroup.com/?l=linux-u ... erjack&q=b
insb. das hier:
http://marc.theaimsgroup.com/?l=linux-u ... 821382&w=2

Vermutlich muss man sich wirklich mal den ohci_hcd (oder evtl die usbserial) anschauen, um vielleicht was zu finden. Das wird dann aber wohl ein Grossprojekt.
8O

> Und die Popel schicke ich dann Dir, ok?

Ja, alle Popel an mich zurück. :D
Wäre ja gelacht, wenn immerhin schon doppelt so viele Entwickler daran nicht was bewirken können.

Benutzeravatar
rblock
Beiträge: 13
Registriert: 26.03.2004 18:19:24
Wohnort: Usingen
Kontaktdaten:

Beitrag von rblock » 23.06.2004 12:24:46

Nachdem mein System gestern nach einem Update nicht mehr laufen wollte und ich bis fünf (!) Uhr heute Morgen gebastelt habe. Habe ich es gerade auch geschaft KDE wieder zum Laufen zu bekommen. Irgend ein dämliches Update hatte unter /usr/kde/3.2/lib/kde/ und allen Unterverzeichnissen die Permissions aller *.la (und nicht die der *.so) auf "0640" gesetzt. Ist natürlich sehr sinnig... Habe nun alles wieder auf "0755" geändert und alles läuft wider. :D

Daher kann ich auch mitteilen, dass ich eine E-Mail von ReinerSCT bekommen habe mit einem Patch, der angeblich alle Probleme löst. Werde ihn mir mal eben ansehen... :)

Aha, der ist von Harald Welte...

Die README:

Code: Alles auswählen

This directory contains a number of fixes to make cyberjack.c work on
linux 2.6.x kernels.


cyberjack-1.01-2.6.4.patch:
	Patch applies to kernels 2.6.3 to 2.6.7-rc2 and updates the
	cyberjack.c driver to version 1.01.
	Use this patch if you have kernels 2.6.3 to 2.6.7-rc2

cyberjack-1.01-2.6.7.patch:
	Patch applies to kernel 2.6.7 and updates the cyberjack.c
	driver to version 1.01.  
	Use only this patch if you have kernel 2.6.7

cyberjack-dontoops-rmmod-2.6.7.patch
	Patch applies to any 2.6.3 to 2.6.7 kernels and fixes a problem
	in the generic usb serial layer to make it not crash once you try
	to manually unload (rmmod) the cyberjack.ko module.
Falls Du Ihn nicht bekommen hast, kann ich ihn Dir schicken. :) Werde es sofort mal ausprobieren.

Testende Grüße
Reiner

--
"Was immer du tun kannst oder erträumst zu können, beginne es jetzt."
von: Johann Wolfgang von Goethe (1749-1832)

Reiner Block
http://www.bisoft.de

Antworten