Volume control for your Webex Board with AppleTV

If you want to use a Webex Board as a TV, connected to your AppleTV there are two problems…. HDCP and no Volume control of the Webex Board from your AppleTV remote.

I am not going to talk about HDCP. 🙂

For the volume control I hacked up a solution: A raspberry pi with an infrared sensor, controlling your Webex Board using XAPI.


Raspberry Pi Infrared HAT: https://www.amazon.com/dp/B0713SK7RJ/ref=cm_sw_em_r_mt_dp_U_6xEOEbWW6VDV8

Python Script: https://jeremy.laurenson.com/downloads/volume.zip

Python bindings for Cisco Collaboration Endpoint XAPI over WebSockets: https://github.com/cisco-ce/pyxows

Making it work:

IR to GPIO and identifying the GPIO pin the IR receiver is connected to.

Install your Raspberry Pi and connect the IR Hat board. Make sure you know which pin is connected to the IR receiver. This is done most simply by using the gpio -readall command:

Do it a few times while blasting that IR receiver and you’ll see the pin go low from a 1 to a 0. You’ll need to use that PIN number to populate the volume.py script to monitor the correct GPIO pin:

#Static program vars
pin = 12 #Input pin of sensor (GPIO.BOARD)

Download and install Python Bindings for Cisco Collab Endpoint over Web Sockets .

Grab the pyxows source from the GitHub repository above, and unzip it into your Raspberry Pi. Then cd into hat directory and run the install:

Run the volume.py script and check out the IR codes the Raspberry Pi picks up from your remote .

When you press a remote key, the script will print out the code it reads. As a result of this you can figure out what codes belong to what buttons and edit the volume.py script to take that code and turn around and change the Webex Board volume. You may have to pick a certain remote and set of buttons, but you can “learn” those using your appleTV remote so it sends the codes that work well for your receiver on the Raspberry Pi and have it turn around and control the board volume:

# These are the IR codes you can see printed on the console.
Buttons = [0x3,0x341ffa05f, 0x341ffe01f,0x341ffd827,0x341ff906f]

# These are the associated commands references in the statements below:
ButtonsNames = [“REPEAT”,”UP”,”DOWN”,”KILL”,”KILL”]

Set up a user on the Webex Board to authenticate as.

Now, log into your Webex board locally and create an account for controlling the device. This username and password (volumecontrol in my example script)  need to be put into the script, as does the board IP:

The script runs a tight loop waiting for an IR command and decodes it (thanks to Lime Parallelogram for the inspiration: https://github.com/Lime-Parallelogram )

There is some basic logic to handle volume up/down and the IR “repeat” signal if the button is held. Its a pretty basic script, so have fun.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s