Skip to content

aformagin/ProjectHowFastFH

Repository files navigation

Forza Horizon 5 Telemetry Dashboard

A Python application that reads real-time telemetry data from Forza Horizon 5 and displays it in a beautiful web dashboard. Track your speed, vehicle information, and engine performance in real-time while driving!

Features

  • Complete Vehicle Database: Displays exact vehicle names for 375+ cars with year, make, and model
  • Real-time Speed Display: MPH and KPH shown in large, easy-to-read format
  • Engine Performance Metrics: Live RPM, gear, horsepower, and torque readings
  • Customizable Styling: External CSS file with multiple preset themes
  • Background Images: Custom background image support with gradient overlay
  • Modern Web Dashboard: Clean, responsive interface that updates smoothly
  • Responsive Design: Works on desktop, tablet, and mobile devices

Requirements

  • Python 3.6 or higher
  • Forza Horizon 5 game
  • Windows PC (same computer as the game)

Installation

  1. Clone or download this repository
  2. Install dependencies:
    pip install -r requirements.txt

Setup Instructions

In Forza Horizon 5:

  1. Launch Forza Horizon 5
  2. Go to SettingsHUD and Gameplay
  3. Find the Data Out section and configure:
    • Data Out: ON
    • Data Out IP Address: 127.0.0.1
    • Data Out IP Port: 9999
    • Data Out Packet Format: Car Dash

Launch the Application:

python forza_web_telemetry.py

Then open your browser to: http://localhost:5000

Usage

  1. Start the web application (python forza_web_telemetry.py)
  2. Open your browser to http://localhost:5000
  3. Launch Forza Horizon 5 and ensure Data Out is configured
  4. Start driving - telemetry data will appear automatically
  5. Press Ctrl+C in the terminal to stop the application

Dashboard Layout

The web interface displays data in organized cards:

  • Speed (2/3 width): Large, easy-to-read MPH and KPH displays
  • Vehicle Information (1/3 width): Car brand, model, class, and performance index
  • Engine & Performance: Live RPM gauge, current gear, horsepower, and torque

Customization

The dashboard is fully customizable through the external CSS file:

  1. Custom Background Image: Place your image in static/images/image.png
  2. Color Schemes: Edit static/css/dashboard.css or see STYLING_GUIDE.md for preset themes
  3. Layout Adjustments: Modify card spacing, sizes, and arrangement in the CSS file

See STYLING_GUIDE.md for detailed customization examples and preset color themes.

Vehicle Database

The application includes a comprehensive database of 375+ vehicles from Forza Horizon 5, displaying:

  • Full vehicle name (Year, Make, Model)
  • Examples: "Ferrari 250 GTO 1962", "Nissan Skyline GT-R V-Spec 1997", "Bugatti Chiron 2018"
  • Coverage includes base game vehicles and all DLC/expansion content through 2021
  • Automatically displays the correct vehicle name based on telemetry data

Supported Vehicle Classes

The dashboard recognizes all Forza Horizon 5 vehicle classes:

  • Modern/Retro Supercars, Sports Cars, Muscle, Hot Hatch, Saloons
  • Classic Racers, Muscle, Sports Cars, Rally
  • Super GT, Extreme Track Toys, GT Cars
  • Offroad, Cross Country, Trucks, Buggies, Rally Monsters
  • Unlimited Offroad, Unlimited Buggies
  • And more...

Troubleshooting

No data received:

  • Verify Forza Horizon 5 Data Out settings are correct (Settings → HUD and Gameplay → Data Out)
  • Ensure both the game and application are running on the same computer
  • Check that port 9999 is not blocked by Windows Firewall
  • Make sure you're actively driving in the game (telemetry only transmits while driving)
  • Check that the connection indicator at the top shows "Connected"

Vehicle shows "Unknown Vehicle":

  • Some newer DLC vehicles may not be in the database yet
  • Check console output for the car ordinal ID and report it for database updates
  • The database currently covers 375+ vehicles from base game through 2021 DLC

Web interface issues:

  • If the page shows "Disconnected", ensure forza_web_telemetry.py is running
  • Try refreshing the browser page
  • Check that no other application is using port 5000
  • Works best with modern browsers (Chrome, Firefox, Edge)

Background image not appearing:

  • Place your image at static/images/image.png
  • Supported formats: PNG, JPG, JPEG
  • Recommended resolution: 1920x1080 or higher
  • File size should be under 5MB for best performance

Styling/customization issues:

  • All styles are in static/css/dashboard.css
  • After editing CSS, do a hard refresh in browser (Ctrl+F5)
  • See STYLING_GUIDE.md for examples and preset themes

Technical Details

  • Protocol: UDP on localhost port 9999
  • Packet Size: 323 bytes (Forza Horizon 5 "Car Dash" format)
  • Update Rate: ~60 packets per second from game
  • Web Display Rate: 10 Hz (every 100ms) for smooth updates
  • Data Format: Little-endian binary parsing using Python struct module
  • Web Server: Flask on port 5000
  • Threading: Background UDP receiver with thread-safe data sharing
  • Vehicle Database: 375+ entries mapping car ordinal IDs to full vehicle names

Confirmed Working Telemetry Fields

The following telemetry fields are confirmed to work reliably:

  • Speed (bytes 256-260): Velocity in meters per second
  • RPM (bytes 16-20, 8-12): Current and maximum engine RPM
  • Gear (byte 319): Current transmission gear
  • Power (bytes 268-272): Engine horsepower
  • Torque (bytes 272-276): Engine torque in lb-ft
  • Car Ordinal (bytes 212-216): Unique vehicle identifier
  • Car Class (byte 220): Vehicle performance class
  • Performance Index (bytes 220-224): PI rating

Known Limitations

  • Race position, lap times, and track ID are unreliable in Forza Horizon 5 (removed from dashboard)
  • Some telemetry fields may be game-mode dependent
  • Requires active driving for data transmission
  • Only works on the same computer as the game
  • Newer DLC vehicles may need database updates

Project Structure

ProjectHowFastFH/
├── forza_web_telemetry.py      # Main Flask web application
├── car_database.py              # Vehicle database (375+ cars)
├── templates/
│   └── dashboard.html           # Dashboard HTML template
├── static/
│   ├── css/
│   │   └── dashboard.css        # External stylesheet
│   └── images/
│       ├── image.png            # Background image (user-provided)
│       └── README.md            # Image setup instructions
├── STYLING_GUIDE.md             # CSS customization guide
├── requirements.txt             # Python dependencies
└── README.md                    # This file

Contributing

This project is based on community reverse-engineering efforts. Contributions are welcome:

How to Contribute

  • Vehicle Database Updates: If you find missing vehicles, provide the car ordinal ID and vehicle name
  • Telemetry Field Discovery: Share any new working telemetry byte offsets
  • Styling Themes: Submit new CSS themes for the dashboard
  • Bug Fixes: Report issues or submit fixes for parsing errors

Credits

  • Vehicle database compiled from community sources including ForzaMods/FH5-Car-ID-List
  • Telemetry packet format based on community reverse-engineering
  • Built with Python, Flask, and modern web technologies

Disclaimer

This application reads telemetry data broadcast by Forza Horizon 5. It does not modify the game or interact with it in any way beyond receiving the UDP data stream that the game voluntarily transmits when Data Out is enabled.

About

A Forza Horizon 5 dashboard built with FLASK

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors