PHPackages                             virginent/sim-telemetry-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. virginent/sim-telemetry-parser

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

virginent/sim-telemetry-parser
==============================

Library to parse UDP packets from racing sims. Currently supports Codemasters' F1 2020 only.

0.4(4y ago)09GPL-3.0-or-laterPHPPHP ^8

Since Aug 22Pushed 4y agoCompare

[ Source](https://github.com/VirginEnt/sim-telemetry-parser)[ Packagist](https://packagist.org/packages/virginent/sim-telemetry-parser)[ RSS](/packages/virginent-sim-telemetry-parser/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (6)Used By (0)

Library to parse UDP packets from sim racing games
==================================================

[](#library-to-parse-udp-packets-from-sim-racing-games)

**Currently only supports Codemasters F1 2020**

See:

Many sim racing games can send telemetry data over the network to a 3rd party app.

The data format varies from game-to-game, but often includes:

- Car data like speed &amp; engine RPM
- Control data like throttle position &amp; steering angle
- Lap data like current lap time and fastest sectors

The data sent in the UDP packets comes through as a raw binary stream. The aim of this library is to take that binary stream and turn it into something we can work with in PHP.

Note that this library does NOT handle receiving the binary stream or display it - merely parsing the raw data and turning it into a friendly model.

How to use
----------

[](#how-to-use)

1. Use Composer to install

    `$ composer require VirginEnt/sim-telemetry-parser`
2. Use it!

    ```
    // Create parser class
    $parser = VirginEnt\SimTelemetryParser\Parser::getParser();

    // Parse a stream
    $packet = $parser->streamToModels($binaryStream);

    // Get index of player  car
    $playerCar = $packet->getHeader()->getPlayerCarIndex();

    // Each packet contains different data. Speed is only contained in the car telemetry packet
    if ($packet instanceof \VirginEnt\SimTelemetryParser\Game\F12020\Structs\PacketCarTelemetryData) {
     echo "You are traveling at ".$packet->getCarTelemetry($playerCar)->getSpeed()."kph";
    }

    ```

For a scrappy demo of it in use, see `demo.php`

Types of model that can be returned by parse function
-----------------------------------------------------

[](#types-of-model-that-can-be-returned-by-parse-function)

- `VirginEnt\SimTelemetryParser\Game\F12020\PacketCarSetupData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketCarStatusData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketCarTelemetryData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketEventData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketFinalClassificationData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketHeader`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketLapData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketLobbyInfoData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketMotionData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketParticipantsData`
- `VirginEnt\SimTelemetryParser\Game\F12020\PacketSessionData`
- `VirginEnt\SimTelemetryParser\Game\F12020\FastestLap`
- `VirginEnt\SimTelemetryParser\Game\F12020\Penalty`
- `VirginEnt\SimTelemetryParser\Game\F12020\RaceWinner`
- `VirginEnt\SimTelemetryParser\Game\F12020\Retirement`
- `VirginEnt\SimTelemetryParser\Game\F12020\SpeedTrap`
- `VirginEnt\SimTelemetryParser\Game\F12020\TeamMateInPits`

Future development
------------------

[](#future-development)

I plan to write a much nicer server application &amp; visualiser which will use this library.

For a complete reference of packets &amp; their contents, see:

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 63.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~133 days

Total

5

Last Release

1553d ago

PHP version history (2 changes)0.1.0PHP ^7.4

0.2PHP ^8

### Community

Maintainers

![](https://www.gravatar.com/avatar/e36065a8c32347850fcd294c743c14fe668f52965c3c5569a6935bab35ba7f6d?d=identicon)[VirginEnt](/maintainers/VirginEnt)

---

Top Contributors

[![andywaite](https://avatars.githubusercontent.com/u/6773151?v=4)](https://github.com/andywaite "andywaite (7 commits)")[![VirginEnt](https://avatars.githubusercontent.com/u/3253221?v=4)](https://github.com/VirginEnt "VirginEnt (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/virginent-sim-telemetry-parser/health.svg)

```
[![Health](https://phpackages.com/badges/virginent-sim-telemetry-parser/health.svg)](https://phpackages.com/packages/virginent-sim-telemetry-parser)
```

###  Alternatives

[components/mathjs

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.

15.0k3.8k](/packages/components-mathjs)[aura/payload-interface

An interface package for Domain Payload implementations.

13392.7k4](/packages/aura-payload-interface)[njxqlus/filament-lightbox

Lightbox entry for Filament

2054.6k](/packages/njxqlus-filament-lightbox)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
