This small set of utils allowing to use this strange device: ID 041e:3100 Creative Technology, Ltd [Philips Electronics - RCS Singapore Creative USB IR Receiver] on Linux. The project is simple, small, crude but it works ;).

You can download it here:

Usage instructions.

Only hid_read is hardware related. Suplied perl script is quick fix to not to have to toy with moving the program to lirc.
If you want to check if this code works for you, just launch the lone hid_read and watch his stdout.

How does hid_read read the data from remote. This is in source code ;), but to simplify:

//opening device(file)
s = open( "/dev/usb/rm1500", O_RDONLY );

//we want to get info on each report received from device
ioctl(hid_s, HIDIOCSFLAG, &flags);

//at this point, each read from opened file/device should return
//hiddev_usage_ref structure

struct hiddev_usage_ref uref;
while ( read(hid_s, &uref, sizeof(uref)) >= 0 )
  if ( uref.field_index == HID_FIELD_INDEX_NONE ) {
    //we get this when the new report has been send from device
    //at this point we have the uref structure prefiled with correct report type and id

    //this got guesed by getting the device report descriptor (function devinfo in source)
    uref.field_index = 0; //which field of report
    //this got guesed by taking all values from device and checking which ones are changing ;)
    uref.usage_index = 3; //which usage entry of field

    //fetch the usage code for given indexes
    ioctl(hid_s, HIDIOCGUCODE, &uref, sizeof(uref));
    //fetch the value from report
    ioctl(hid_s, HIDIOCGUSAGE, &uref, sizeof(uref));
    //now we have the key
    cout << "got keycode: " << uref.value << endl;
  // we are not interested in any other events, as they are only giving info what changed in report
  // and this not always works, is complicated, doesn't output anything sensible on repeated key
  // and we already have all the info from real report

Documentation used:

Project history/news:

19 Nov 2006
Weekend ;) More info.
15 Nov 2006
First release and webpage

Author: Ecto