Raspberry Pi Zero W IR remote webserver for Cambridge Audio CXA81 Amplifier

CXA81-IR-Remote-Server

About The Project

I initially wanted to control my Cambridge Audio CXA81 amplifier from anywhere in the range of my home Wifi instead of the IR remote control. I figured this would be a great project to start open sourced from the beginning. I'm sure if you have come to this page you are looking for something for your CXA81 too. It's unfortunate that Cambridge Audio doesn't connect their StreamMagic app to their CXA series. Currently if you wanted to control your CXA81 you have to have a compatible CXN streamer. I don't have one. You probably don't either. ;)

There are a couple ways that you can connect to the CXA81 besides IR. I've found that IR is the quickest/easiest and most robust connection which includes volume control whereas the other methods such as RS232, and the Control Bus (Orange RCA plug on back panel)

I took some inspiration from Turning a Cambridge Audio Amp On With A Phone but ultimately had to brute force the codes with the IR Transmitter, a bash script that looped through Claas Langbehn's RC-5 Template, a gigantic lirc config file, and some go old fashioned time.

Built With

The links here are just suggestions for the items used in this project. They do not contain any tracking or affiliate links as far as I know. I also don't claim that these are the least expensive products you could pick up either.

Hardware:

Software:

Getting Started

As you can see from above this project has been built on a Raspberry Pi Zero W with some IR Transmitters/Receivers. There is a chance that this will work on other Rasperry Pi boards as well. I've tried to keep it as generic as possible but cannot vouch for any other boards/configurations at this point. I plan on testing on a couple boards in the future but for now I can vouce for the Raspberry Pi Zero W.

You will need to download and flash the Raspberry Pi OS Lite to a Micro-SD card. I used a 16GB Micro-SD card just fine here. You won't need a huge one for this to work. After you have downloaded the OS here: Raspberry Pi OS Lite, you need to flash the image to the Micro-SD card. To do this you can use BalenaEtcher which I highly recommend as it does the job well, has some safeguards built in so you don't delete the wrong drive and is cross platform.

When you have the image flashed, created a file called ssh to remote into it Tutorial Here have set your wifi in the wpa_supplicant.conf file Forum Post Here. Boot the Raspberry Pi Zero W for the first time and you should be able to remote into it using 'SSH pi@(your pi IP Address)' on a Linux machine with the default password 'raspberry'.

To find out the IP Address of your pi you can either visit the web interface of your router and cross your fingers that they have the feature to see all of the machines connected or you could use nmap. The scope of installing NMap is outside of this project but you can follow a tutorial Here for Debian Based Linux Operating Systems such as Ubuntu. On Windows/Linux/MacOS you can use the 'arp -a' command in the terminal to retrieve machine names and IP addresses. This isn't always a reliable way of pulling this info, but for this purpose it should work.

Prerequisites

  • Install Git on the Raspberry Pi Zero W.
sudo apt update
sudo apt install git

Verify the Git installation.

git --version
  • Install Golang on RPi Zero Tutorial

  • Install LIRC on Rasberry OS Lite

sudo apt update
sudo apt install lirc
  • Edit the /boot/config.txt file.
sudo nano /boot/config.txt

Where it says '#dtoverlay=gpio-ir-tx,gpio_pin=18' change the line to 'dtoverlay=gpio-ir-tx,gpio_pin=13'. I use GPIO 13 in my setup and for the sake of simplicity you should use the same pin for now. This pin is GPIO 13 PWM (physical pin 33). You can find a reference image of the pinout diagram at the bottom of this README.

Place the 'cambridge.lircd.conf' file located in the LIRC-Remote folder of this repository into the '/etc/lirc/lircd.conf.d/' folder.

sudo cp cambridge.lircd.conf /etc/lirc/lircd.conf.d/

IMPORTANT SIDENOTE: To make changes to the configuration in the future you will need to stop the lircd service, make your changes, then start the service again.

Stop lircd daemon:

sudo service lircd stop

Start lircd daemon:

sudo service lircd start

Now you must reboot your RPi Zero W.

sudo reboot

Installation

For now I will share with you how to clone and compile the go code in this repo. In the future I might just add some binary releases.

Install Go on Rasperry pi. You can follow this tutorial to do get Go installed on the RPi Zero W

References

Image Source: (https://freesvg.org/raspberry-pi-gpio-diagram) Creative Commons License. (https://creativecommons.org/publicdomain/zero/1.0/) The author of this image does not in any way shape or form endorse this project.
Owner
Christopher Straight
Polyglot programmer who is into building distributed, cloud native systems.
Christopher Straight
Similar Resources

“Dear Port80” is a zero-config TCP proxy server that hides SSH connection behind a HTTP server!

Dear Port80 About The Project: “Dear Port80” is a zero-config TCP proxy server that hides SSH connection behind a HTTP server! +---------------------

Jun 29, 2022

Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.

Zero Trust Network Communication Sentinel provides peer-to-peer, multi-protocol, automatic networking, cross-CDN and other features for network communication.

Thank you for your interest in ZASentinel ZASentinel helps organizations improve information security by providing a better and simpler way to protect

Nov 1, 2022

Command-line tool and library for Windows remote command execution in Go

WinRM for Go Note: if you're looking for the winrm command-line tool, this has been splitted from this project and is available at winrm-cli This is a

Nov 29, 2022

Local development against a remote Kubernetes or OpenShift cluster

Local development against a remote Kubernetes or OpenShift cluster

Documentation - start here! ** Note: Telepresence 1 is being replaced by our even better Telepresence 2. Please try Telepresence 2 first and report an

Jan 8, 2023

Simple HTTP tunnel using SSH remote port forwarding

Simple HTTP tunnel using SSH remote port forwarding

Nov 18, 2022

EasyAgent is an infrastructure component, applied to manage the life-cycle of services on the remote host.

EasyAgent is an infrastructure component, applied to manage the life-cycle of services on the remote host.

Easyagent English | 中文 介绍 easyagent是在袋鼠云内部广泛使用的基础架构组件,最佳应用场景包括ELK体系beats等数据采集器的管控和配置管理、数栈体系自动化部署等 基本原理 easyagent主要有sidecar和server两个组件,sidecar部署在主机端,si

Nov 24, 2022

V3IO Frames ("Frames") is a Golang based remote data frames access (over gRPC or HTTP stream)

V3IO Frames ("Frames") is a multi-model open-source data-access library that provides a unified high-performance DataFrame API for working with different types of data sources (backends). The library was developed by Iguazio to simplify working with data in the Iguazio Data Science Platform ("the platform"), but it can be extended to support additional backend types.

Oct 1, 2022

A major platform Remote Access Terminal Tool based by Blockchain/P2P.

A major platform Remote Access Terminal Tool based by Blockchain/P2P.

NGLite A major platform Remote Access Terminal Tool based by Blockchain/P2P. No public IP address required.More anonymity Example Detection Warning!!!

Jan 2, 2023

ZheTian Powerful remote load and execute ShellCode tool

 ZheTian Powerful remote load and execute ShellCode tool

ZheTian ZheTian Powerful remote load and execute ShellCode tool 免杀shellcode加载框架 命令详解 -u:从远程服务器加载base64混淆后的字节码。 -r:从本地文件内读。 -s:读取无修改的原始文件,只能从本地加载 -o:参数

Jan 9, 2023
A discord bot that mumbles the audio from another room into your room (WIP)

DiscordGo Voice Receive Example This example experiments with receiving voice data from Discord. It joins a specified voice channel, listens for 10 se

Dec 11, 2021
Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http

fasthttp Fast HTTP implementation for Go. Currently fasthttp is successfully used by VertaMedia in a production serving up to 200K rps from more than

Jan 5, 2023
llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.

llb What the f--k it is? It's a very simple but quick backend for proxy servers. You can setup redirect to your main domain or just show HTTP/1.1 404

Sep 27, 2022
Zero downtime restarts for go servers (Drop in replacement for http.ListenAndServe)

endless Zero downtime restarts for golang HTTP and HTTPS servers. (for golang 1.3+) Inspiration & Credits Well... it's what you want right - no need t

Dec 29, 2022
Zero-downtime restarts in Go

goagain Zero-downtime restarts in Go The goagain package provides primitives for bringing zero-downtime restarts to Go applications that accept connec

Dec 28, 2022
Brook is a cross-platform strong encryption and not detectable proxy. Zero-Configuration. Brook 是一个跨平台的强加密无特征的代理软件. 零配置.

Brook 中文 v20210401 [GUI] Block list(Ad Block) Bypass & Block rule [GUI] Forward DNS [GUI] OpenWrt GUI client [GUI] Fake DNS [CLI] $ brook tproxy Scrip

Jan 4, 2023
Simple web content/proxy server that embodies enterprise zero trust security

pswa - Protected Static Web App Introduction pswa is a simple web content/proxy server which is suitable for various static web apps. Features Availab

Nov 11, 2022
Fake server, Consumer Driven Contracts and help with testing performance from one configuration file with zero system dependencies and no coding whatsoever
Fake server, Consumer Driven Contracts and help with testing performance from one configuration file with zero system dependencies and no coding whatsoever

mockingjay server Mockingjay lets you define the contract between a consumer and producer and with just a configuration file you get: A fast to launch

Jan 6, 2023
Control your Flipper Zero over Protobuf RPC protocol.

go-flipper Control your Flipper Zero over Protobuf RPC protocol. This library is designed to be transport agnostic, though I've tested it with RPC ove

Dec 17, 2022