Skip to main content.

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 ----