Knowledge Base
Cody Bower

App-Based Haltech CAN Keypad Emulation

OmniCANHaltechElectronics

I've been working on something for a while now and figured I would share where it is at. It is a hardware CAN gateway connected to the vehicle's CAN bus, paired over BLE (Bluetooth Low Energy) with a phone app that emulates a Haltech 3x5 keypad. The attached video shows the current state - button presses on the phone reflect on the ECU near instantly, LED states sync back, and if the connection drops it picks back up where it left off without any fiddling.

I started building this because I couldn’t find anything that properly emulated the LED states. Everything I came across just sent button presses to the ECU without reading the LED feedback, which defeats half the purpose of a keypad. And before anyone points it out, I hate touchscreens in cars too. However, since we all have smartphones with us anyway, I figured why not make use of it.

The main focus has been making it reliable and simple. Near instant auto reconnect when in range, no need to open the app and hit connect every time. Proper state sync so the buttons and LEDs always match what the ECU expects. OTA updates for the gateway firmware.

Why the LED state matters

The LED feedback is the part that makes it behave like a real keypad instead of a generic CAN button sender. If the ECU has a fan, boost level, cruise function, anti-lag mode or any other mapped output active, I want the app to show that state because the ECU reported it back, not because the app guessed what should have happened after a press.

That matters for toggles and multi-position functions. A button press by itself is only half the story. The useful bit is knowing whether the ECU accepted the command, what state the function is now in, and whether the app still matches the ECU after a reconnect or power cycle:

Green shows the button state coming back from the ECU.

Orange shows the function is actually active. That matters because a fan, for example, might be turned on by coolant temp, oil temp, or an override button. If the ECU says the fan is on, the orange LED should reflect that regardless of how it was triggered.

Red shows a function error, which is the bit you want when something does not work and you need to know why.

Why make it app-based

The aim is not to replace every physical keypad. A proper hard-mounted keypad still makes sense in plenty of race cars. What I wanted was something that sits in the middle ground between simple switches and a full CAN keypad or dash setup. Coming in at a fraction of the cost of a traditional physical CAN keypad and CAN digit gauge setup, OmniCAN gives you that balance without forcing you to cut up an interior, add a permanent switch panel, or mount hardware somewhere awkward just to get occasional access to a few ECU functions or remove it call when moving to CAN based hardware. By using an existing phone, tablet, or compatible head unit as the screen, the system stays far more affordable than buying a dedicated display just for keypad or gauge duties.

Additionaly the wireless nature opens up some practical use cases. In a workshop or pit lane, a mechanic could trigger fans, pumps, ignition or other mapped functions without reaching into the car. In a show car or street-to-track style build, it means you can keep the cabin clean and still have access to the same Haltech keypad functions when you need them.

It is Android and Haltech only at the moment as I built it to solve a problem I had. However if there is a lot of interest it could be set up to handle multiple different ECU manufacturers and have an iOS version of the app.

For those interested in the test setup - desktop PC remoted into a laptop in the car running NSP connected to a Haltech Barra plug-in, with a second remote session into the phone for screen capture. The remote sessions add a small amount of latency, so real world response is quicker than what you see in the video.

The hardware side of this system is covered on the OmniCAN gateway page, and the setup process is covered in the Android app guide and ECU configuration guide.