Datafab umass device - quirks

Nimrod Mesika nimrod-me at bezeqint.net
Tue Jun 10 14:13:32 PDT 2003


Hi all,

Got myself a Datafab KCCF-USBG CompactFlash based usb mass storage
device. Initially the device did not work with FreeBSD (4.8-Stable).

usbdevs -v reports:
 ... Mass Storage(0xa400), USB(0x07c4), rev 1.13

(Does this mean 'USB' is what appears in the manufacturers field and 'Mass
Storage' appears in the product field? Yes, this is a /cheap/ product..)

To fix the problem I had to:

1. Add 'kern.cam.da.no_6_byte=1' to /etc/sysctl.conf
2. Add the following to /sys/dev/usb/usbdevs.h:

        #define USB_VENDOR_DATAFAB  0x7c4   
        #define USB_PRODUCT_DATAFAB 0xa400 
                                                                                
3.  Patch /sys/dev/usb/umass.c as follows:

--- umass.c.orig        Sun May  4 21:40:06 2003
+++ /sys/dev/usb/umass.c        Mon Jun  9 19:56:43 2003
@@ -671,6 +671,15 @@
                sc->transfer_speed = 500;
        }
  
+       if (UGETW(dd->idVendor) == USB_VENDOR_DATAFAB &&
+           UGETW(dd->idProduct) == USB_PRODUCT_DATAFAB) {
+               /* limit inquiries to 36 bytes */
+               sc->quirks |= FORCE_SHORT_INQUIRY ;
+       }
+
        if (UGETW(dd->idVendor) == USB_VENDOR_OLYMPUS &&
            UGETW(dd->idProduct) == USB_PRODUCT_OLYMPUS_C1) {


The question is how do I get (1) into /sys/cam/scsi/scsi_da.c so that it
applies to this device only? I'm not sure I understand the da_quirk_table.
Another question, is how to I get this bug (?) fix committed into -STABLE?

One more thing ... seems like the FreeBSD code is derived from
NetBSD sources. Looking at the HEAD branch of FreeBSD and NetBSD, it
looks like the device is handled correctly by the NetBSD code.

-- 
Nimrod.


More information about the freebsd-questions mailing list