ForumTrouble mit Genesys-GL811E Chipsatz unter Linux (USB->IDE Bridge)
Ottfried Meyer – Freitag, 20. Januar 2006 23:17 Uhr

Hi,

sowohl unter 2.6.14.6 als auch unter 2.6.15.1 habe ich masssiv Probleme
große Datensätze (2GByte < x < 4GByte) von und zu meiner USB-Festplatte mit eben jenem besagten Cipsatz zu transferieren. ( es werden mit "cat" mehrere einzelne Dateien von der USB-Platte zu einer großen Datei auf der USB-Platte über USB 2.0 (EHCI) zusammengefügt ) Urplötzlich ist der Chipsatz nicht mehr ansprechbar. Da staunt der Treiber und der Kernel wundert sich.... Im Log steht KEIN segfault und die Kernelpanik bricht auch nicht aus... Im Netz wird zwar dieses "Phänomen" ( sprich: [CENSORED] Chipsatz ) angesprochen...aber einen Kernelpatch, der das Problem kaschiert, habe ich bisher nicht finden können. Werden unter Fenster die Fenster- eigenen oder die vom Hersteller geschriebenen closed-source-Treiber benutzt, scheint es keine Probleme zu geben. Kein Wunder: Der Hersteller kennt natürlich die Macken seines Chipsatzes..... Wenn jemand mit diesem [CENSORED] Chipsatz Erfahrung hat und vielleicht weiss, wo ich was im Kernel oder /sys oder /proc hacken muss, damit das ohne Blackout funktioniert, wäre ich für eine Tip sehr dankbar! Gruß, mcc

1 Antwort
Henry – Dienstag, 28. Februar 2006 10:31 Uhr

Problem ist dass der Genesys intern nur 64KB RAM hat. Standardmäßig werden jedoch 120 KB übertragen. Diese lassen den Genesys überlaufen. Dann läßt er der die *rote Lampe* blinken.

Beim Kernel 2.4.x kann man in den Kernel-Quellen den Wert für max_sector auf 64 setzen.

### diff
— linux-2.4.24/drivers/usb/storage/scsiglue.c
+++ linux-2.4.24/drivers/usb/storage/scsiglue.c
@@ -395,6 +395,7 @@ Scsi_Host_Template usb_stor_host_templat
this_id: -1,

sg_tablesize: SG_ALL,
+ max_sectors: 64,
cmd_per_lun: 1,
present: 0,
unchecked_isa_dma: FALSE,
===

Bei neuen Kernel (z.B. 2.6.8.1) kann man nach dem anstecken der HDD, aber vor dem mounten den Wert im sysfs ändern:
echo “16” > /sys/block/sda/device/max_sectors

Bei ganz neuen Kenels (2.6.12) habe ich in den Quellen eine spezielle Behandlung von Genesys gesehen. Aber selbst noch nicht probiert.

Henry

[1] http://www.linux-m32r.org/lxr/http/source/drivers/usb/storage/scsiglue.c#L459