DLP-RFID1 usb id 0403:fbfc in Linux

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.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

* Copy This Password *

* Type Or Paste Password Here *

14,555 Spam Comments Blocked so far by Spam Free Wordpress