I am reading the CAN data with mcp2515 directly from the vehicle's original multimedia/head unit wiring, using the CAN lines available behind the factory multimedia unit. From there, the CAN interface is connected to the Raspberry Pi and exposed through SocketCAN.
On the software side, I am mainly using Python 3 with `python-can` to capture and decode the CAN traffic. Communication with Hudiy is handled through the Hudiy API/protobuf interface, so the decoded vehicle data can be translated into Hudiy actions or displayed in the UI.
For finding the CAN signals, I mostly use a before/after logging method.
For example, if I want to identify a steering wheel button, door state or brightness value, I first record the CAN traffic while the vehicle is in a known state. Then I perform only the action I want to identify — such as pressing one button, opening one door or changing the instrument cluster brightness — and record another CAN log.
After that, I compare the logs and look for CAN IDs and byte/bit values that changed during that specific action. By repeating the same test several times, it becomes much easier to eliminate unrelated traffic and confirm which bytes actually belong to that function.
So the general reverse-engineering workflow is something like:
**Record baseline CAN traffic → perform one specific action → record again → compare the logs → identify changing CAN IDs/bytes → repeat the test to confirm → implement the decoder**
Once a signal is confirmed, I add it to the Python decoder and then either map it to a Hudiy API command or use it as a data source for the custom UI.
For the steering wheel controls, the decoded CAN messages are translated into Hudiy navigation commands. For vehicle information, the process works in the other direction: the CAN decoder continuously updates the current vehicle state and sends that information to the Hudiy interface.
The integration scripts run as systemd services, so SocketCAN and the CAN/Hudiy bridge start automatically when the Raspberry Pi boots.
The overall architecture is roughly:
Factory multimedia CAN wiring → CAN interface → Raspberry Pi / SocketCAN → Python CAN decoder → Hudiy API → Hudiy UI
The project is still under active development, and I am continuing to decode additional signals and improve the integration.
If you are working with a Seat Leon 5F or another MQB-based vehicle, I would definitely be interested in comparing CAN logs and findings.
And to be completely fair Im not a developer

I've been using ChatGPT a lot throughout this project, especially for the coding and debugging side.