← All experiments

Forza × MOZA Bridge

A racing setup. A missing connection. One more experiment.

By Satyajit PradhanUpdated TelemetryUDPRacing
A sculpted racing wheel connected to a miniature blue racetrack and coral car.
MOZA RacingForza Horizon 6 → the wheel
ENGINE SPEED4,200RPM · demo input

The game was talking.
The wheel wasn’t listening.

The bridge passes Forza Horizon 6’s 324-byte CarDash packets to the port MOZA Pit House expects. The useful result is on the wheel: RPM lights and a working dashboard.

FH6
UDP 4009
Python bridge
324 bytes, passed through
Pit House
UDP 30055

Interactive diagram, not a live connection to a wheel.

I wanted the RPM lights and dashboard on my MOZA setup to respond while playing Forza Horizon 6. The game could send telemetry, but that alone did not make Pit House listen. The Forza × MOZA Bridge grew out of following that missing connection.

The listener was the missing piece

At the time of the experiment, Pit House recognised the Forza Horizon 5 process and opened its UDP listener on port 30055 for it. Horizon 6 was sending the same 324-byte CarDash packet format.

The repository includes a small compatibility helper that gets Pit House to open that listener. The bridge then receives the game’s output on port 4009 and forwards it to 127.0.0.1:30055. Normal 324-byte packets pass through unchanged.

A bridge small enough to inspect

The forwarding script uses Python’s standard library. Diagnostic counters distinguish received, transmitted, passed-through, truncated, and dropped packets. They make it possible to ask a specific question: did the game emit data, did the bridge receive it, and did a packet leave for Pit House?

The dial above shows how RPM information reaches the wheel; it is not connected to my racing setup.

Follow the packets

The MIT-licensed repository contains the implementation and Windows setup instructions. I enjoy racing games, but this project came from a second interest: understanding why two pieces of equipment that should work together do not yet connect.

Sources & further reading

What I built, and the history behind it, is my first-person account. The links above back up the product descriptions and implementation details.

Another question worth following?

Explore the workGet in touch

A good project often starts here.

Leave me
a what if.

All the places to find me ↗
To Satyajit

There’s an app I wish existed.

Tell me who would use it and what they are trying to do. A rough sketch is plenty to start with.

Talk to me on LinkedInLet’s follow the question.