FTDI USB IR Receiver HowTo
Andrew W. sent me this HOWTO after installing one of our FTDI based USB IR Receivers on his Ubuntu based MythTV system. Personally, I installed and tested based on Albert Huitsing's instructions, but I thought Andrew's instructions could serve as a good suplement for some applications. Thanks for the great work Andrew. We're sending you a USB IR Blaster to play with next!
This document is intended to guide users on how to use the LIRC (Linux Infrared Remote Control) FTDI Driver which is needed to use the USB IR Receivers sold from https://www.irblaster.info. This IR receiver sold follows Albert Huitsing\'s page on how to make a homebrew IR receiver and transmitter however there is a subtle difference in the hardware design. Successful use of this hardware can pose a challenge for the linux novice due to this and some idiosyncratic issues related to the integration of the FTDI driver into LIRC. This document is intended to help clarify how to use this device successfully under linux with specific values provided for ubuntu linux (10.04 Lucid) and documents not only how to get it working but an example of how to adapt this device to an arbitrary remote and use the remote to trigger key-presses within my target application, MythTV.
Step 1: Install lirc via the following shell command:
1(a) From a shell enter: sudo apt-get install lirc
select "FTDI FT232-based IR Receiver"
select "None" for IR transmitter
Step 2: Identify your release of lirc, I applied this process with success using lirc 0.8.6 which is standard for Ubuntu 10.04 at the time this document was written (2/13/2011). It should work for subsequent releases of lirc and may work for earlier versions.
The following command will return the install version of LIRC on your computer:
From a shell enter: lircd -v
Step 3: Plug in your USB FTDI IR receiver and ensure the system detects the device.
The following command will return the devices plugged into the usb bus and shows my systems result
3(a) From a shell enter: lsusb
Example output:
Bus 002 Device 005: ID 1997:0409 Bus 002 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC Bus 002 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard Bus 002 Device 002: ID 046d:c044 Logitech, Inc. LX3 Optical Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 006: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Note the SECOND line (shown in italics) shows that the USB IR receiver has been detected properly. If you are missing this line then you need to troubleshoot your USB system.
Get the serial number of your FTDI chip via a detailed listing of usb devices. 3(b) From a shell enter: lsusb -v Example output:====== EXCERPT OF RESPONSE START ================== Bus 002 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0403 Future Technology Devices International, Ltd idProduct 0x6001 FT232 USB-Serial (UART) IC bcdDevice 6.00 iManufacturer 1 FTDI iProduct 2 FT232R USB UART iSerial 3 A900fCuV bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 90mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 2 FT232R USB UART Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Device Status: 0x0000 (Bus Powered) ====== EXCERPT OF RESPONSE START ==================
It is important to extract one line, from this output, the line showing the serial number in bold above (iSerial A900fCuV). It is also of relevance to note the hardware is plugged into a USB 2.0 hub. I have not tested this on a USB 1.1 hub.
Step 4: Record signals from your remote and generate a lircrc file.
Issue the command to generate the config file ge_universal_24929.conf:
4(a) From a shell enter: sudo irrecord -f -n -d serial=A4007VDe,baud=2400 -H ftdi ge_universal_24929.conf
4(b) enter name for the button
4(c) press the button on the remote
4(d) goto step 4(b) until all buttons are mapped to the config file
I have attached my ge_universal_24929.conf file.
For mythtv users:
4(e) Generate a lircrc file that maps button names from step 4(b) to mythtv actions.
This is done by the lircrc file which is placed in the .mythtv directory within the users home directory.
The relative path (from the home directory) and filename is .mythtv/lircrc
I have attached my .mythtv/lircrc file.
Step 5: Edit /etc/lirc/hardware.conf
Note that you need to match the iSerial string from step 3 and the path and name of the configuration file from step 4 to complete the lines REMOTE_LIRCD_CONF and REMOTE_LIRCD_ARGS in the hardware.conf file.
---- FILE EDITS FOLLOW --- REMOTE="FTDI FT232-based IR Receiver" REMOTE_MODULES="" REMOTE_DRIVER="ftdi" REMOTE_DEVICE="" REMOTE_SOCKET="/var/run/lirc/lircd" REMOTE_LIRCD_CONF="/home/arwillis/bin/ge_universal_24929.conf" REMOTE_LIRCD_ARGS="-d serial=A900fCuV,baud=2400 /home/arwillis/bin/ge_universal_24929.conf" -----FILE EDITS END ----