# iMON PAD, MINI, VFD, LCD, Touch, etc.

With lirc 0.8.5 and earlier, iMON device support is a bit lacking in feature-completeness, compared with Windows, and for the newer devices, a pain for users to set up.

First up, many devices still need HID quirk overrides to prevent the usbhid driver from claiming them before lirc can. For starters, you need to determine the USB Vendor and Device ID for you iMON device. Most devices have a Vendor ID of 0x15c2. Device IDs are typically either 0xffdc or somewhere in the 0x0030 through 0x0046 range. You should be able to see your IDs in the output of the command 'lsusb'. For the purposes of this example, we'll assume you have the 15c2:0045 device.

If your kernel has usbhid built as a module, then the following in a modprobe config file (such as /etc/modprobe.d/imon.conf) might be necessary:

    options usbhid quirks=0x15c2:0x0045:0x0004

If your kernel has usbhid built-in, you may need to add the quirk info to the your kernel boot parameters, like so:

    usbhid.quirks=0x15c2:0x0045:0x4

If you're lucky, your device has already been quirked properly in the usbhid driver itself, but if not, please let the lirc developers know, so they can submit patches to the usbhid driver upstream. You can tell if its necessary by grepping your dmesg output after booting up, looking for USB HID and your Device ID, like so:

    $ dmesg |grep "USB HID.*15c2"
    input,hidraw0: USB HID v1.01 Mouse [HID 15c2:0045] on usb-0000:00:02.0-2
    hiddev96hidraw1: USB HID v1.00 Device [HID 15c2:0045] on usb-0000:00:02.0-2

In the above, we can see that the usbhid driver has claimed our iMON device, and manual quirk addition is required.

Newer devices have two USB IR endpoints, which lead to lirc 0.8.5 and earlier setting up two lirc devices for what was in fact a single device, and the two devices had to be bound together in userspace, lest the input buffer would get wedged if a button from the device you weren't listening to wasn't serviced. So if you're using lirc 0.8.5 or earlier, you'll need to start up two lircd daemons, bound to one another, along these lines:

    lircd --driver=default --device=/dev/lirc0 --pidfile=/var/run/lirc0.pid --listen=8765
    lircd --driver=default --device=/dev/lirc1 --pidfile=/var/run/lirc1.pid --output=/dev/lircd --connect=localhost:8765

Note that this requires some modification of distribution-provided init scripts, manual startup or what have you, in most cases. It really does work though...

With post-0.8.5 lirc, the dual interface iMON devices are handled as a single lirc device, greatly simplifying setup for users -- distribution init scripts should work out of the box. However, it may still be necessary to manually add a quirk to keep the usbhid driver from claiming your device.

In addition, post-0.8.5 lirc now includes mouse input device support, so the keyboard/mouse toggle button actually functions as one would expect it to (and as it does under Windows). A special bonus not present under Windows (I think) is that the ch+/- buttons emulate a scroll wheel in mouse mode.

A lot of credit is due to Ron Frazier, for documenting the necessary config for lirc 0.8.5 and earlier with the newer iMON devices. See http://mythtvblog.blogspot.com/2008/04/getting-imon-0038-lcd-working-with-lirc.html for historical reference.