The front door to our house is augmented by a motorised door opener, which is controlled by a Locca Access receiver. We have a bunch of remote keys that trigger the Locca receiver to open the door, but I started thinking: wouldn’t it be great to be able to trigger the door opener from an iOS or Android device?
Since the ‘KeeLoq’ code hopping algorithm (the cornerstone of the Locca system) was broken back in 2009, my first thought was to reverse-engineer the remote keys and attempt to build a clone with a supplementary Wi-Fi chip. Further investigation indicated that the specialist equipment necessary to execute the required attacks against KeeLoq would be prohibitively expensive.
My next idea was to modify a genuine Locca remote key so it could be triggered artificially. The artificial trigger could either be mechanical, i.e. use a motor to push the button, or electronic, i.e. simulate a button push by providing power to the HCS200 KeeLoq encoder chip and RF transmitter. It’s cleaner and more reliable to trigger the remote electronically, if possible.
Modifying the Locca Remote Key
Upon opening the casing of the remote – which is surprisingly difficult – it appears to be a simple circuit with a tiny push button situated between the power source (2x CR2032 3V batteries) and the rest of the components. When you push the button, the circuit is completed, the components are powered up, and the KeeLoq chip gets to work.
In theory, if we bypass the push button by completing the circuit around it, the above chain of events should occur and the door will open. I tested this theory by soldering two wires to each side of the button. As expected, the door opens when the wires are crossed. I got out my Arduino Uno and added a transistor, thus completing the remote key circuit when the base terminal is pulled high (achieved by a digitalWrite on the Arduino).
Controlling the Arduino from afar
Of course, we still need a way to tell the Arduino to perform that digitalWrite from an iPhone. There are two viable modes of communication: Bluetooth or Wi-Fi. Bluetooth doesn’t carry many advantages, other than the fact that Bluetooth shields for Arduino boards are fairly common and well documented. However, we’d need to design a protocol and deal with the intricacies of Bluetooth on iOS – no thanks.
For this prototype, I decided to connect the Arduino Uno to an external server via USB, and to use serial-over-USB to signal it to trigger the remote key. The Arduino sketch looks like this:
When a byte is received via the serial line, triggerRemote is called, and the door should open. Clearly the iPhone can’t directly write to the serial line, so I wrote a small HTTP interface in Python which listens on the LAN and writes a byte to /dev/ttyACM0 (the Arduino Uno’s serial character device on Linux) when a suitable request is received. This runs on the machine that the Uno is connected to. Now any device on the LAN can now open the door with a single HTTP request.
Putting it all together
All that’s left to do is create a simple app to serve as a wrapper around the HTTP interface:
When you tap the yellow button, a HTTP request is dispatched in the background, and the door opener springs to life. Here it is in action:
Downloads
This is free and unencumbered software released into the public domain. Please see the Unlicense for further details.



