Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:freebsd_-_usb-probleme

FreeBSD - USB-Probleme

umass-Problem (FreeBSD+USB)

Meine USB-Probleme mit FreeBSD 8.

Die sehen in dmesg mit ZFS so aus:

(da2:umass-sim1:1:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 
(da2:umass-sim1:1:0:0): CAM Status: SCSI Status Error
(da2:umass-sim1:1:0:0): SCSI Status: Check Condition
(da2:umass-sim1:1:0:0): ILLEGAL REQUEST asc:20,0
(da2:umass-sim1:1:0:0): Invalid command operation code
(da2:umass-sim1:1:0:0): Unretryable error
(da2:umass-sim1:1:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 
(da2:umass-sim1:1:0:0): CAM Status: SCSI Status Error
(da2:umass-sim1:1:0:0): SCSI Status: Check Condition
(da2:umass-sim1:1:0:0): ILLEGAL REQUEST asc:20,0
(da2:umass-sim1:1:0:0): Invalid command operation code
(da2:umass-sim1:1:0:0): Unretryable error
(da2:umass-sim1:1:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 
(da2:umass-sim1:1:0:0): CAM Status: SCSI Status Error
(da2:umass-sim1:1:0:0): SCSI Status: Check Condition
(da2:umass-sim1:1:0:0): ILLEGAL REQUEST asc:20,0
(da2:umass-sim1:1:0:0): Invalid command operation code
(da2:umass-sim1:1:0:0): Unretryable error
(da2:umass-sim1:1:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 
(da2:umass-sim1:1:0:0): CAM Status: SCSI Status Error
(da2:umass-sim1:1:0:0): SCSI Status: Check Condition
(da2:umass-sim1:1:0:0): ILLEGAL REQUEST asc:20,0
(da2:umass-sim1:1:0:0): Invalid command operation code
(da2:umass-sim1:1:0:0): Unretryable error

oder mit UFS so:

g_vfs_done():da2a[READ(offset=268136448000, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=769928986624, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=65536, length=2048)]error = 5
g_vfs_done():da2a[WRITE(offset=6144000, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6160384, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6176768, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6193152, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6209536, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6225920, length=2048)]error = 5
g_vfs_done():da2a[READ(offset=268329074688, length=16384)]error = 5
g_vfs_done():da2a[READ(offset=268521701376, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=769928986624, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=65536, length=2048)]error = 5
g_vfs_done():da2a[WRITE(offset=6144000, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6160384, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6176768, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6193152, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6209536, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6225920, length=2048)]error = 5
g_vfs_done():da2a[READ(offset=268714328064, length=16384)]error = 5
g_vfs_done():da2a[READ(offset=268906954752, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=769928986624, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=65536, length=2048)]error = 5
g_vfs_done():da2a[WRITE(offset=6144000, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6160384, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6176768, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6193152, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6209536, length=16384)]error = 5
g_vfs_done():da2a[WRITE(offset=6225920, length=2048)]error = 5
g_vfs_done():da2a[READ(offset=269099581440, length=16384)]error = 5

1. Lösungsansatz

I've been running with the patch for two and a half hours, and I'm seeing a
steady increase in bounced buffers, with no further complaints of checksum
errors.

I can usually trigger the problem about two hours into load generation, so
things are looking good so far.

2. Lösungsansatz (für FreeBSD 8.0): quirks

# usbconfig -u 1 -a 3 dump_device_desc     
ugen1.3: <JM20336 SATA, USB Combo JMicron> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x152d 
  idProduct = 0x2336 
  bcdDevice = 0x0100 
  iManufacturer = 0x0001  <retrieving string failed>
  iProduct = 0x0002  <retrieving string failed>
  iSerialNumber = 0x0005  <retrieving string failed>
  bNumConfigurations = 0x0001 

Und so soll es wohl gemacht werden:

# vi /usr/src/sys/cam/scsi/scsi_da.c

        {
                /*
                 * JM20336 SATA, USB Combo JMicron
                 * meine externe 3,5-Zoll-USB-Festplatte
                 */
                {T_DIRECT, SIP_MEDIA_REMOVABLE, "0x152d", "0x2336", "*"},
                /*quirks*/ DA_Q_NO_SYNC_CACHE
        },

Und jetzt am besten erneut das ganze FreeBSD-System bauen, geht ja schnell. Das ist zwar nicht nötig, aber dann passt wenigstens alles.

Zu beachten ist hierbei auch, dass manche Treiber mehr als einen quirk und/oder quirks in unterschiedlichen Treibersektionen benötigen oder auch einen Eintrag in der /usr/src/sys/cam/scsi/scsi_da.c und der /sys/dev/usb/storage/umass.c Datei erfordern!

3. Lösungsansatz (ist totsicher)

Kauf nur externe USB-Plattengehäuse, die mit FreeBSD funktionieren: http://www.bsdforen.de/showthread.php?p=220733#post220722

Ich habe prima Erfahrungen mit dem WD My Book Essential 3TB an USB 2.0 mit ZFS gemacht. Da hab ich über 500 GB in einem Rutsch rauf geschoben, absolut ohne Zicken. USB 3.0 ist deutlich schneller aber leider gehen bei mir laufend die USB3-Ports, mit diesen Platten dran, kaputt. Deshalb nutze ich sie nur noch an USB 2.0.

/home/http/wiki/data/pages/freebsd/freebsd_-_usb-probleme.txt · Zuletzt geändert: von manfred