Introduction: Xfinity HTPC Wireless Remote
This tutorial will show you how to receive the signal from an Xfinity remote and then use it's signal as a wireless keyboard. I did not have an Arduino nano, so I had to write a python script to turn serial data into a keystroke. I also used the Arduino as to press the power button with an NPN transistor.
Step 1: Arduino Serial Read
In order to receive a signal form the XR8, the Arduino must first be programmed to receive data. I modified Ken Shirriff's IR receive Arduino code and uploaded it. After the code is uploaded, your Arduino can receive serial data and display it in the serial monitor.
Step 2: Wiring Up the XR8 to an Arduino
Now that you can receive serial data, you need to connect the wireless receiver to the arduino. The picture shows the pin-out of an XR8. Connect the ground to GND +5 volts to the 5 volt rail, and the TX to pin 11 on the Arduino. To connect the power button simulator, wire the Arduino as shown in the second photo. Most PC motherboards have a plug that goes into the motherboard for the power button. Use a multimeter to find out which pin is ground on the power button header. The ground pin will read low resistance when you connect one probe to the PC chassis and one to the pin. Connect the middle leg of an NPN transistor to the wire pin you determined is not ground in the previous step, the ground rail to the emitter, and pin 9 to the collector. I also hooked up a 5 volt power supply to the power jack, so that it can constantly have power to check for a signal.
Step 3: Read the Data
First pair the wireless remote by pressing the pair button, holding down the setup button until the power light turns green, and press Xfinity. If you are successful, the red led on the XR8 should light up when you press any button on the remote (excluding power, setup, and swap). To see the signal of the data open serial monitor in the Arduino program or open putty and read the data it is receiving. I suggest you press and hold on button at a time and record the results in word. You will find duplicates in codes between buttons because the remote uses XMP protocol.
Step 4: Integrate the Code
If you have not installed python 2.7 or higher on your computer, then you will need to do so to simulate a keystroke. In addition you will need the serial module. The following script was written for Linux based machines, but modification is simple. Make sure you change the port to the port the Arduino is on. If you want to add a new code that corresponds to a button, then use this template for writing the code:
(4 spaces before next code line) p.communicate('button-to-simulate')
you can have it press multiple buttons as long as you indent 4 spaces before the p.communicate command.
Step 5: Set Python Script to Run on Start
In the Linux environment, setting a script to run is simple. Open the start menu, type "startup" and enter, click on add and custom command in the drop down, give the command a name like remote, type the the directory to the python script you downloaded in the command section, and click add. The remote will now control your PC the next time you boot your computer up.
Participated in the