eHome Infrared Receiver not recognized by Windows XP

reciever01The Hewlett Packard TSGI-IR01 is the OEM version of the USB Microsoft eHome Infrared Transceiver. The device driver is supplied by Microsoft and included with the Windows MCE, XP, and Vista operating systems. It is because of that, HP did not have to supply their own driver. The device driver does work for the Microsoft Windows XP Media Center Edition with Rollup 2 The problem is the USB vendor and product IDs (VID/PID) are not provided in the INF files provided by Microsoft, therefore although Windows will detect the device it will not find the driver for it. For Windows to detect the driver, the device IDs and hardware IDs need to be added to the appropriate INF. In the case of Windows XP, it is the irbus.inf.

Although there is sufficient documentation in the many blogs and forums that support the appropriate changes to the INF, it might be interesting to know how those IDs were determined. If not interested in the logic skip the Resolution section for the short answer.

Before an edit can be made to the irbus.inf, generally located in the Windows\inf folder, we need to determine what should be added. To do so, one of a couple of ways. One use regedit to determine the device and hardware IDs of the TSGI-IR01, which I have seen as a solution. However, an easier solution, is to check Computer Management.

  • Start > Control Panel > System > Hardware tab > Device Manager
    or
    Right click on My Computer (on your desktop) > Manage > Device Manager

    reciever02


  • Select the offending device, in this example, I will select Microsoft USB Mouse, as I do not have the TSGI-IR01 at my disposal at the time of this writing.
    reciever03

  • Click on the Details tab
    reciever04

  • Note the Device Instance Id, in this case HID\VID_045 …..
  • Use the arrow next to Device Instance Id to select Hardware Ids
  • Note in this case, HID\Vid_045… and others.

Original irbus.inf
Here is an excerpt from the original irbus.inf taken from a Microsoft Windows XP Professional SP2 installation.

[Manufacturer]
%Microsoft%=MicrosoftHw

[MicrosoftHw]
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_045E&PID_006D
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_045E&PID_00A0
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_107B&PID_3009
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1509&PID_9242
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_03EE&PID_2501
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_0471&PID_0815
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_0609&PID_031D
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_2040&PID_6310
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1009&PID_000E

[ControlFlags]
ExcludeFromSelect=USB\VID_045E&PID_006D
ExcludeFromSelect=USB\VID_045E&PID_00A0
ExcludeFromSelect=USB\VID_107B&PID_3009
ExcludeFromSelect=USB\VID_1509&PID_9242
ExcludeFromSelect=USB\VID_03EE&PID_2501
ExcludeFromSelect=USB\VID_0471&PID_0815
ExcludeFromSelect=USB\VID_0609&PID_031D
ExcludeFromSelect=USB\VID_2040&PID_6310
ExcludeFromSelect=USB\VID_1009&PID_000E

Originally, I had posted that adding the appropriate keys to the MicrosoftHw section is needed, however, I noted that this original configuration also makes use of the ExcludeFromSelect under ControlFlags. Further reading, indicates that the ExcludeFromSelect removes all (if * is specified) or the specified list of devices from certain user interface displays, from which a user is expected to select a particular device for installation. What this means is for the NT-based operating system, like Windows XP, the specified devices will not be displayed by the Add Hardware Wizard, but will be displayed by the Found New Hardware and Hardware Update wizards. To keep true to the form of the original irbus.inf, I have now added the a section to the ExcludeFromSelect list.

Resolution
Add the following code to the irbus.inf to the end of the [MicrosoftHw] section.

%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_V1, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_V2, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_RX, USB\VID_1784&PID_0006 ; HP

Add the following code to the irbus.inf to the end of the [ControlFlags] section.

ExcludeFromSelect=USB\VID_1784&PID_0006 ; HP

Updated irbus.inf
Here is the same excerpt as above however modified with the added VID/PIDs to append to the irbus.inf.

[Manufacturer]
%Microsoft%=MicrosoftHw

[MicrosoftHw]
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_045E&PID_006D
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_045E&PID_00A0
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_107B&PID_3009
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1509&PID_9242
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_03EE&PID_2501
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_0471&PID_0815
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_0609&PID_031D
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_2040&PID_6310
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1009&PID_000E
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_V1, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_V2, USB\VID_1784&PID_0006 ; HP
%USB\VID_045E&PID_006D.DeviceDesc%=IrBus_RX, USB\VID_1784&PID_0006 ; HP

[ControlFlags]
ExcludeFromSelect=USB\VID_045E&PID_006D
ExcludeFromSelect=USB\VID_045E&PID_00A0
ExcludeFromSelect=USB\VID_107B&PID_3009
ExcludeFromSelect=USB\VID_1509&PID_9242
ExcludeFromSelect=USB\VID_03EE&PID_2501
ExcludeFromSelect=USB\VID_0471&PID_0815
ExcludeFromSelect=USB\VID_0609&PID_031D
ExcludeFromSelect=USB\VID_2040&PID_6310
ExcludeFromSelect=USB\VID_1009&PID_000E
ExcludeFromSelect=USB\VID_1784&PID_0006 ; HP

Once the irbus.inf changes have been saved, and attempt to reinstall the device. It is now recognized.

Tested Successfully: November 10, 2007.