Skip to content

mtxmiller/hotwheels-portal

Repository files navigation

Hot Wheels Portal 🏎️

Python 3.10+ License: MIT Platform

Bring your Hot Wheels id Race Portal back to life!

An open-source tool to connect to the Hot Wheels id Race Portal after Mattel discontinued the official app on January 1, 2024. We reverse-engineered the Bluetooth protocol so you can track speeds, lap times, and build your car collection again.

What It Does

  • Detect cars - Reads NFC UID and serial number when you place a car on the portal
  • Track speed - Measures speed as cars pass through (in "scale mph")
  • Count laps - Tracks lap times and calculates best/average times
  • Live dashboard - Beautiful terminal UI with real-time stats
  • Multi-car support - Tracks stats for each car individually

Live Dashboard

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃            🏎️  HOT WHEELS PORTAL DASHBOARD  🏎️                ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━ 🚗 Current Car ━━━━━━━┓┏━━━━━━━ 📊 Recent Passes ━━━━━━┓
┃ NFC UID:  4A:8F:52:88:5D:81  ┃┃ #    Time     Speed    Lap    ┃
┃ Serial:   1102032557         ┃┃ 12   12:01:03  94.5 mph  4.2s ┃
┃ Laps:     5                  ┃┃ 11   12:00:58  50.5 mph  5.1s ┃
┃                              ┃┃ 10   12:00:52  46.9 mph  4.8s ┃
┃ ████████████████░░░░ 94.5 mph┃┃ 9    12:00:45  88.2 mph  3.9s ┃
┃ Best Speed: 94.5 mph         ┃┃ 8    12:00:38  72.1 mph  4.5s ┃
┃ Best Lap:   3.9s             ┃┃                               ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Status: Pass #12  │  Session: 5m 23s  │  Cars Seen: 3        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Quick Start

# Clone the repo
git clone https://github.com/mtxmiller/hotwheels-portal.git
cd hotwheels-portal

# Set up Python environment
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt

# Run the dashboard
python dashboard.py

Requirements

  • Python 3.10+
  • macOS, Windows, or Linux with Bluetooth Low Energy support
  • Hot Wheels id Race Portal (Model FXB53)
  • Hot Wheels id cars (with NFC chips)

Available Tools

Command Description
python dashboard.py Live dashboard with speed & lap tracking
python race_mode.py 🏁 Lap Race Game - compete for best times!
python portal_app.py Detailed event monitor with car data
python scanner.py Scan for BLE devices
python monitor.py Raw event monitor for debugging

🏁 Lap Race Mode

A competitive game mode where players race to complete laps:

  • Select lap count (5, 10, 15, or 20 laps)
  • 3-2-1 countdown to start
  • Real-time lap tracking with best/worst comparison
  • Results screen with full breakdown
  • Leaderboard to compete with friends!

Using as a Library

import asyncio
from hwportal import HotWheelsPortal

async def main():
    async with HotWheelsPortal() as portal:
        info = await portal.get_info()
        print(f"Firmware: {info.firmware_version}")
        print(f"Serial: {info.serial_number}")

        # Get notified of events
        portal.on_event(lambda e: print(f"Event: {e}"))
        await portal.start_monitoring()

        await asyncio.sleep(60)

asyncio.run(main())

Protocol Documentation

We've fully reverse-engineered the BLE protocol! See PROTOCOL.md for details.

Key discoveries:

  • Device advertises as HWiD
  • 3 BLE services for auth, data transfer, and control
  • Car detection via NFC UID (6 bytes)
  • Speed data as IEEE 754 float32
  • Full NDEF records with Mattel car IDs

Project Structure

hotwheels-portal/
├── hwportal/           # Python library
│   ├── __init__.py
│   ├── constants.py    # BLE UUIDs
│   └── portal.py       # HotWheelsPortal class
├── dashboard.py        # Live terminal dashboard
├── portal_app.py       # Event monitor app
├── scanner.py          # BLE scanner
├── monitor.py          # Raw event monitor
├── PROTOCOL.md         # Protocol documentation
└── requirements.txt

Roadmap

  • BLE connection and event monitoring
  • Car detection (NFC UID, serial)
  • Speed tracking
  • Live dashboard with speedometer
  • Lap race game mode with leaderboard
  • Persistent car database
  • Car collection/garage view
  • Achievement system
  • Car name lookup from Mattel ID

Contributing

We'd love your help! Here's how:

  1. Got a Portal? Run the tools and share interesting findings
  2. Know BLE/NFC? Help decode remaining protocol mysteries
  3. Want features? Check the issues and submit PRs
# Run the monitor and capture events
python monitor.py > my_events.log

Why This Exists

Mattel discontinued the Hot Wheels id app on January 1, 2024, leaving thousands of Race Portals as paperweights. This project aims to restore functionality through reverse engineering, letting Hot Wheels fans continue to enjoy their hardware.

Support the Project

If this project helped bring your Hot Wheels Portal back to life, consider supporting development:

  • Star this repository
  • 💖 Sponsor on GitHub
  • 🐛 Report issues and suggest features

Sponsor

PayPal Donations

Donate with PayPal

License

MIT License - see LICENSE for details.

Disclaimer

This project is not affiliated with Mattel or Hot Wheels. It's a community effort to restore functionality to discontinued hardware. Hot Wheels is a trademark of Mattel, Inc.

Resources

About

Open-source tool to connect to Hot Wheels id Race Portal - reverse engineered BLE protocol

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors