Linux driver for the USBAT-02 CompactFlash reader


This page is about the Linux driver for the USB-connected devices that have the USBAT-02 processor from SCM Microsystems. The processor identifies itself with the numbers 0x04e6 and 0x1010).

SCM provided us some specifications of the device (under non-disclosure). With these specifications, plus an earlier but incomplete driver which was written without the specs, a driver has been completed and is now included in the mainline Linux kernel.


Devices that are reported to work with the USBAT-02 processor are:

  • The CompactFlash Reader that comes with the Kodak DC3800 digital photo camera
  • Microtech Zio! CompactFlash reader (ICS-45 CF2)
  • Kingston Technology PCREAD-USB/CF
  • Delkin Efilm reader2
  • RCA LYRA MP3 portable
  • Dane-Elec Zmate CompactFlash reader
  • Sandisk ImageMate SDDR-05b
  • I-JAM JS-50U CompactFlash card reader (comes with I-Jam IJ-50 MP3 Player)
  • Maxell UA4 Compact flash reader writer
  • Memorex UCF-100
  • Jessops CompactFlash reader (JESDCFRU BLACK)
Please email us (usbat2 at breggen. xs4all. nl) if you have an USBAT-02 device that is not listed. There should be at least one non-compactflash USBAT-02 out there (usb pendrive) and we'd love to know what it is.

In January 2005, patches based off the latest version available on this SourceForge project page were submitted to the Linux USB developers.

The patches were accepted, this driver became available in the official Linux kernel for the first time in Linux 2.6.12. It can be found in the following location:

		Device Drivers  --->
		 USB support  --->
		  <*>   USB Mass Storage support
		   [*]     USBAT/USBAT02-based storage support (EXPERIMENTAL)

As the driver is complete and shipped in the mainline kernel, this project is finished. Future maintenance (if any) will be done directly in the kernel source code repositories.

Even though the original plan was to be also included in the 2.4 kernel, that branch is no longer accepting any new features, so I doubt we have any chance of being included there. I don't have any interest in backporting the latest version to 2.4, but if anybody feels like it, please contact us via the mailing list!


In May 2002, Thomas Kreiling created a driver for Linux 2.4 that supports reading as well as writing to the device. Almost everything seemed to work right, the only thing wrong with this driver is that media should not be changed or removed while the device is connected.

In the beginning of 2003, Dong Lin ported the Linux driver to FreeBSD and did also a lot of cleaning up and made the code more verbose, better understandable. (See the code) (Dong used the specs, Thomas who wrote the first release, did not have the specs).

Daniel Drake (Gentoo developer) took over development in 2004, to make the driver ready for inclusion in the 2.6 kernel. Daniel is used the device specs from SCM.

Daniel rewrote most of the source code of the driver and added much-appreciated new functionality such as the ability to hotswap media. The final code was submitted as an extension to the shuttle_usbat driver, which previously powered only HP CD writers based on the USBAT chip.

People who contributed
  • Daniel Drake.
    (dsd at gentoo. org)
    Gentoo developer. One of his projects is to get the driver ready for inclusion in the 2.6 kernel.
  • Matthew Dharm.
    Maintainer of the usb-storage driver of the Linux kernel. He contacted SCM for the specifications. He delegated the development of the driver and is hoping to hear back from us when we are ready ;-)
  • Thomas Kreiling.
    Developer of the original 2.4 driver
  • Don Lin.
    (dong at research. bell-labs. com)
    Ported the driver to FreeBSD. Did some cleaning up of the code on the fly. Shared the resulting freebsd code with us.
  • Chris Niekel. (Netherlands)
    Has been very active though he had not that much time. He moved the usbat-02 project to sourceforge (which was a good thing :-)).
  • Mike Gibson. (U.S.A.)
    (gibson at cs. utah. edu)
    If you want to contribute, contact Mike, he can provide you with some information from SCM.
  • Hans Persson. (Sweden)
    Hans has made the original home page (before we moved to sourceforge) and has setup a mailing list.
  • Herald van der Breggen. (Netherlands)
    (usbat2 at breggen. xs4all. nl.)
    Herald was one of the first people who tried to write some useful lines to make a working driver, but was not very successful with that. Anyway, he made the home page at least... ;-)
  • Geoff "Frodg" Patton.
    Geoff got Daniel interested in developing the driver and contributed lots of testing time and debugging reports.
  • Martin Emrich.
    Mikkel "Kamstrup" Erlandsen.
    Steven J. Hill.
    Jon Lapham.
    Lindsay Haisley.
    Glyn Tebbutt.
    Kurt Wall.
    Ron ?.
    Spent time testing the 2.6 development releases + provided valuable feedback and debugging reports.