The IrToy driver

The irtoy driver supports the irtoy and irdroid devices.

The IrToy by Dangerous Prototypes is a versatile and cheap USB sender and receiver that can be used with Lirc. It is "open hardware" with circuit plans etc being freely available. Since Lirc 0.9.2, there is native driver, written by Peter Kooiman, contained in Lirc. Previous versions could use it utilizing the IrMan emulation in the IrToy.

The irdroid device is basically a stripped down irtoy with old firmware and without support for signalling pins.

Firmware versions

Driver supports firmware versions 2.0 and 2.2. For instructions, programs, and firmware, see this guide. The support for the old 2.0 version is for irdroid.

Device file

Linux (udev really) assigns a connected IrToy a name of the form /dev/ttyACMn, where n is the smallest non-negative integer not yet taken. This can cause unpredicted behavior, not only when using several IrToys, but also in context of other device using the same names, like Arduinos. By using --device=auto when as argument to Lircd, the lowest /dev/ttyACMn, that actually contains an IrToy, will be used.

Debugging LEDs

There are a few GPIOs which are normally unused. Attaching LEDs to these is great for debugging, not only of the IrToy and the driver, but also of Lirc itself. For this, solder LEDs between the different "pins" and ground, as follows:

This behavior is the same as in IrScrutinizer.

LEDs with build-in resistor are recommended. Otherwise, be sure to include a resistor of a few hundered ohms up to a few kiloohms (depending to desired brightness and the type of the LED) in series with the LED.


Is there a forum for the IrToy?


The orange LED is permanently on, the device does not show up as /dev/ttyACMn any longer, and cannot be accessed from Lirc.

The device has gone into the bootloader mode, and expects to be flashed with "new" firmware. See this guide.

How do I find out the firmware version?

Start Lircd with loglevel 8 or higher, and search for irtoy_getversion in the log file. Alternatively use IrScutinizer.

How do I use udev to get a permanent name for the device?

Put a file with the following content in, e.g., /etc/udev/rules.d/11-irtoy.rules. (Tested with Fedora)

SUBSYSTEMS=="usb", ATTRS{idProduct}=="fd08", ATTRS{idVendor}=="04d8", SYMLINK+="irtoy"

How is it supposed to look like with the present software?

When sending, the opening LED and the sending LED go on, and then out immediately. Note that Lirc (at in the present version) closes the device directly after sending, i.e. the opening LED goes out. When receiving (can be tested with irw), the opening and the receiving LEDs go on.