Project Presentation: LIN Bus Steering Wheel Controls to BLE & Analog Key (ESP32-C3)
Hi everyone,
I’d like to share a project I’ve been developing to integrate OEM steering wheel controls with RealDash, Android/Windows devices, and standard Android head units.
The Project
Using an ESP32-C3 Mini, I have created an interface that reads the LIN Bus signals from Fiat/Jeep steering wheels (found in models like the Toro, Argo, Pulse, Fastback, Cronos, and various Jeep models).
The device performs two main functions simultaneously:
- HID over BLE: It acts as a Bluetooth Low Energy keyboard/media controller for Android and Windows.
- Analog Key Output (Key 1 / Key 2): Using an X9C Digital Potentiometer, it converts digital LIN signals into resistive values. This allows the steering wheel buttons to work with the “Key 1/Key 2” wires on aftermarket Android head units.
Key Features
- Full RealDash Integration: Native control of RealDash functions via steering wheel buttons.
- Refined Response (X9C): To ensure the analog “Key” responses feel original and organic, I have tuned the adjustment speed of the X9C chip. By increasing the step delay (well above 10 microseconds), the transitions are smoother and more reliable for the head unit’s ADC, preventing “ghost” presses or skips.
- Low Latency: Optimized code for the ESP32-C3 to ensure near-instant response times between the LIN message and the action.
- Compact Design: The ESP32-C3 Mini form factor allows for a very small footprint, easily hidden behind the dashboard.
Demonstration Video
I have uploaded a video to YouTube where I demonstrate the project in action, showing the real-time response on RealDash and the seamless control of the multimedia system. Check it out in the link below:
[https://www.youtube.com/watch?v=ccXZhhZEQLI
]
Why this was needed
Many modern Fiat/Jeep vehicles use complex LIN Bus protocols for their steering wheels, making it difficult to use these buttons when upgrading to a tablet-based dashboard or a universal Android head unit. This project bridges that gap, giving you full control over RealDash while maintaining compatibility with the car’s original hardware.
I am happy to discuss the logic or the LIN frames if anyone is working on something similar!
