This device reads and writes RFID tags. It is made by DLP Design and uses a serial-to-usb converter (Future Technology Devices International, Ltd). Kernel 2.6.20 already includes a driver that will work with this (usbserial and ftdi_sio), but my DLP-RFID1 device has its PID set to a value that is not defined in the kernel header file, so it is not recognized. In my case, “lsusb” listed the device as
ID 0403:fbfc Future Technology Devices International, Ltd
(with PID “fbfc”). As DLP Tech Support explained, the kernel driver is expecting a different PID (0x6001 or 0x6006). This howto is not based off of any suggestions made by them, but the PID hint sent me on my merry way.
ftdi_sio.h
Try plugging the device in and seeing if it is automatically detected.
dmesg | tail
if all you get is something like
usb 4-1: new full speed USB device using uhci_hcd and address 4 usb 4-1: configuration #1 chosen from 1 choice
Then the kernel knows something was plugged in but doesn’t know how to use it. If you also get something like
ftdi_sio 4-1:1.0: FTDI USB Serial Device converter detected drivers/usb/serial/ftdi_sio.c: Detected FT232BM usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
then you’re set – the device is accessible thorough /dev/ttyUSB0. If not, make sure the kernel is configured to include the driver:
... CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_FTDI_SIO=m ...
If not change it and recompile the kernel. Unplug and replug the device, if it is still not detected, edit the kernel source.
Fire up your favorite editor and point it to /usr/src/linux/drivers/usb/serial/ftdi_sio.h (kernel 2.6.20) Find the lines that say:
#define FTDI_8U232AM_PID 0x6001 /* Similar device to SIO above */ #define FTDI_8U232AM_ALT_PID 0x6006
and change the “alt_pid” line to:
#define FTDI_8U232AM_ALT_PID 0xfbfc
Save the file and recompile the kernel. Unplugging and replugging the device (and/or loading the modules,) should cause it to be detected now (confirm with dmesg).
This is probably not the best way to do this since now the device listed as pid 6006 won’t be detected; it is a quick hack and it works. :-p
Also, if I upgrade to the next kernel source my edit will disappear and I will need to edit the new file. I could make a patch, hmm.. Hopefully this device will be included in the next kernel. One of these days I’ll learn how to write kernel patches..
One of the alternatives that was suggested by DLP was to reprogram the device to use a default PID (such as 6001). For now I’ll work on learning the serial settings and protocol to use the DLP-RFID1.