Skip to the content
PCBKitNew board
2 layers147.2 × 86.8 mmT248 Reverse engeneer, the printed circuit board in 3D

Reverse engineering project of the Thrustmaster T248 steering wheel, with the end goal, of making custom steering wheels for it.

Size
147.2 × 86.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
76
Nets
38
Pads
173
Tracks, vias
439, 67
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
3 Mar 2025
Updated
21 Feb 2026

Overview

T248 Reverse engeneer is an open-source printed circuit board by Spb2005, from the Spb2005/Thrustmaster-T248-reverse-engineering repository on GitHub, published under the MIT licence. It is a 2-layer board of 147.2 × 86.8 mm with 76 parts on 38 nets, routed with 439 tracks and 67 vias.

It is built around the A1101ELHLT-T. Its parts include 10 resistors, 8 capacitors, 3 ICs and 1 transistor. It belongs with the STM32 boards of this library.

Main components

1

README

README.md

Thrustmaster T248 Reverse Engineering

Project Status Hardware Protocol


My custom wheel

A fully reverse-engineered custom steering wheel running on a stock Thrustmaster T248 wheelbase.

This project documents the analysis of the T248 UART protocol, hardware architecture, and firmware behavior, enabling electronic emulation of the original wheel using an RP2040 microcontroller.

⚠️ This project involves hardware modification. Build and use it at your own risk.


Key Features

  • Fully compatible with the original T248 wheelbase
  • Complete bidirectional UART communication
  • RP2040-based wheel emulator (V2.0 stable)
  • OLED display for encoder layer visualization
  • Interrupt-driven magnetic shift paddles
  • Independent from the original wheel PCB

The mechanical base of this wheel is based on the Turn Vantage GTE DIY Sim Racing Wheel from Turn Racing. I modified it to suit my needs.

Project Overview

This project focuses on reverse engineering the Thrustmaster T248 steering wheel in order to enable fully custom-built steering wheels on a stock T248 wheelbase.

The long-term objective is to fully understand the communication protocol, hardware architecture, and firmware structure well enough to electronically emulate the original wheel.

All detailed technical documentation (protocol captures, PCB reverse engineering, firmware analysis, oscilloscope measurements, etc.) has been moved to the Wiki to keep this README clean and focused.

👉 Full Technical Documentation (Wiki)


Current Project State

  • The T248 UART communication protocol is largely understood.
  • The startup handshake and keep-alive mechanism are fully decoded.
  • Button and encoder transmission is fully working.
  • A fully functional wheel emulator (V2.0) has been implemented (without screen data like rpm, gear, lap-time, etc).
  • Custom steering wheels can now operate on a stock T248 wheelbase.
  • Remaining unknowns are mainly related to:
    • Display data decoding
    • Firmware update structure

Wheel Emulator

The emulator is implemented using:

  • Raspberry Pi Pico (RP2040)
  • Arduino IDE
  • UART communication (115200 baud, 8E1)
  • Direct electrical connection to the wheelbase

Other 3.3V microcontrollers may be used, but voltage compatibility must be strictly verified. And additional code changes might be necessary.

Development was carried out incrementally through multiple V1.x versions (documented in the Wiki: 4. Wheel Emulator ).
The first stable and practically usable version is V2.0


V2.0 – Stable Wheel Emulator

This version is considered the first fully working implementation suitable for real-world use.

Features

  • Full wheelbase communication (no additional USB cable to PC required)
  • Fully working buttons and encoders
  • Encoder layer decoding displayed on a small OLED
  • Shift paddles handled via hardware interrupts for improved responsiveness
  • Optional DEBUG flag to disable serial debugging output

Required Libraries

Code:
👉 T248_Emulator_V2.0.ino

Required Components

  • Raspberry Pi Pico or Pico 2
  • SSD1306 32×128 I²C OLED display
  • Rotary encoder (breakout board recommended)
  • NPN BJT transistor (e.g., BC548 or similar)
  • Push buttons
  • Debounce components per button:
    • 10 kΩ pull-up resistor
    • 100 nF capacitor
  • Additional resistors for:
    • Transistor base
    • UART TX protection
    • Required pull-ups

Wiring Diagram

Schematic:

DIY Wheel Schematic

📄 PDF Version

Notes:

  • Every button should include a hardware debounce circuit (except the encoder button, which is handled in software).
  • Button mappings are configurable in the source code.
  • The unused connector pin corresponds to PA14, likely only required during firmware updates.
  • Most encoder breakout boards already include pull-up resistors.

Connecting to the Wheelbase

  1. Remove the original steering wheel (2 screws on the shaft).
  2. Carefully pull the wheel off the shaft (requires significant force).
  3. Cut the original cable and connect it to your Pico.
    It is strongly recommended to add a detachable connector for easier servicing.

Example cable colors (may vary):

  • Grey → 3.3V
  • Red → PA14 (not required)
  • Orange → RX
  • White → TX
  • Blue → GND
  • Green → RESET

⚠️ Wire colors may differ between units.
The safest method is verifying each wire against the steering wheel PCB test pads:

  • TP19 / TP5 → 3.3V
  • TP8 → PA14
  • TP6 → RX
  • TP7 → TX
  • TP9 → RESET

More information:
👉 Hardware Analysis (Wiki)


⚠️ IMPORTANT WARNING

⚠️Never connect the Pico to USB while it is electrically connected to the wheelbase.
The VSYS voltage can exceed 3.3V and permanently damage the wheelbase electronics.

⚠️ This project involves hardware modification.
You are responsible for any damage to your equipment.


Steering_Wheel_USB (Legacy)

Before the full emulator was completed, a USB-only custom steering wheel implementation was developed.

Characteristics:

  • Based on V1.8 logic
  • Enumerates as a USB gamepad
  • Uses the Arduino Joystick library
  • Less optimized interrupt handling
  • Still fully functional

This version does not communicate with the T248 wheelbase and requires a separate USB connection to the PC.


Open Questions

The following areas still require further investigation:

Display Data Decoding

  • Extraction of telemetry values (RPM, gear, lap time, etc.)
  • Purpose of the 12-byte display response frame

Firmware Update Process

  • Does the PC updater flash both wheelbase and wheel firmware?
  • Why are two firmware sections stored inside a single .tmf file?
  • Is wheel firmware transmitted via UART through the wheelbase?

PA14 Functionality

  • Dual-use pin (Mode button / SWCLK)
  • Possible boot or flashing role
  • Exact behavior during firmware updates remains unclear

Goal

The objective of this project is to:

  • Electronically emulate a T248 steering wheel
  • Enable fully custom-built steering wheels
  • Document the protocol for future development
  • Provide a foundation for firmware and display research

This concept is similar to what Taras demonstrated on his blog, where he used Arduino code to emulate older Thrustmaster models (T150, TMX, T300, etc.).


Documentation

All detailed research material is available in the Wiki:

  • PCB reverse engineering
  • Communication protocol breakdown
  • Frame analysis
  • Encoder decoding
  • Firmware structure investigation
  • Oscilloscope captures
  • And more

👉 Project Wiki

Parts

76
QtyValueFootprintReferences
24TestPointTestPoint:TestPoint_Pad_D1.5mmTP1, TP2, TP3, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20, TP21, TP22 +8
17SW_PushButton_Switch_SMD:Rubberdome PCB Steering WheelBTN_3, BTN_4, BTN_5, BTN_6, BTN_7, BTN_8, BTN_9, BTN_10, BTN_11, BTN_12, BTN_13, BTN_18_DISPLAY1, BTN_19_MODE1, DPAD_DOWN1, DPAD_LEFT1, DPAD_RIGHT1 +1
6CCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC1, C2, C3, C4, C6, C10
4TestPointTestPoint:TestPoint_Keystone_5015_Micro-MinatureJ_DEBUG_1, J_DEBUG_5, J_DEBUG_6, J_DEBUG_10
3TestPointTestPoint:TestPoint_Pad_1.0x1.0mmJ_DEBUG_2, J_DEBUG_3, J_DEBUG_9
2100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R12
210kResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR1, R2
227.5Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR5, R14
2A1101ELHLPackage_TO_SOT_SMD:SOT-23WU2_L1, U3_R1
2CCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5, C8
2Conn_01x04Connector_Molex:Molex_PicoBlade_53261-0471_1x04-1MP_P1.25mm_HorizontalJ_20-21_BTN1, J_22-23_BTN1
10Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4
10.5Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderFB1
133Resistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR3
14.7 kResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR13
14.7kResistor_SMD:R_0402_1005Metric_Pad0.72x0.64mm_HandSolderR11
1Conn_01x05Connector_Molex:Molex_PicoBlade_53261-0571_1x05-1MP_P1.25mm_HorizontalJ_LCD1
1Conn_01x06Connector_Molex:Molex_PicoBlade_53398-0671_1x06-1MP_P1.25mm_VerticalJ_WHEEL1
1LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderL_S1
1Q_NMOS_DGSPackage_SON:0806 mosfetQ1
1STM32G030K6TxPackage_QFP:LQFP-32_7x7mm_P0.8mmU2

Questions

How big is the T248 Reverse engeneer PCB?

It measures 147.2 × 86.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the T248 Reverse engeneer use?

76 parts, built around the A1101ELHLT-T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the T248 Reverse engeneer KiCad files?

From the Spb2005/Thrustmaster-T248-reverse-engineering repository on GitHub, at the commit this page was made from: the board is PCB_Schematic_Files/T248_Reverse_engeneer/T248 Reverse engeneer.kicad_pcb and its schematic PCB_Schematic_Files/T248_Reverse_engeneer/T248 Reverse engeneer.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the T248 Reverse engeneer design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers309.6 × 95.3 mmMacrolev, the printed circuit board in 3D

    Macrolev

    heiso/macrolev

    Macrolev is an open source analog keyboard powered by Hall Effect switches

    184 parts136
  • 2 layers68.6 × 42.5 mmLask4, the printed circuit board in 3D

    Lask4

    turfptax/lask4

    Finger Movement Detector

    20 parts5
  • 2 layers239.3 × 121.3 mmPanel, the printed circuit board in 3D

    Panel

    ZeniteSolar/MT19

    Tachometer Module for CANBUS with ATmega328p

    252 parts2GPL-3.0
  • 2 layers17 × 12.4 mmHall effect, the printed circuit board in 3D

    Hall effect

    ashton6student/ece445

    Note: each subfolder has its own README.md file that forms the ECE 445 notebook, in addition to this top-level file.

    4 parts
  • 2 layers48 × 107 mmTwin orbit, the printed circuit board in 3D

    Twin orbit

    earthtojake/text-to-cad

    Design physical products with AI

    76 parts26kMIT
  • 2 layers85 × 115 mmOSO BOOK B1, the printed circuit board in 3D

    OSO BOOK B1

    joeycastillo/The-Open-Book

    For details on how to build, test and use Open Book, I've made documentation available here.

    76 parts8.1kCC-BY-SA-4.0
  • 2 layers77 × 97 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    76 parts1kGPL-3.0
  • 2 layers137.9 × 92.7 mmErgoTravel, the printed circuit board in 3D

    ErgoTravel

    jpconstantineau/ErgoTravel

    A Portable Ergonomic Split Keyboard inspired from the ErgoDox, Let's Split and Minidox

    76 parts284MIT