Jump to content
  • 0
Sign in to follow this  

F1 2017 D-Box and UDP Output Specification

Question


Overview

The F1 series of games support output of game data to external devices such as D-BOX, other motion platforms, steering wheels and LED devices that are connected to your PC or console. The purpose of this document is to summarise the data that is outputted so that developers of supporting hardware or software are able to configure these to work with the F1 game correctly.

This thread provides an updated spec for the UDP output system in F1 2017. The previous thread for F1 2016 was located here: http://forums.codemasters.com/discussion/46726/d-box-and-udp-telemetry-information. Please use this thread to post any bugs with the F1 2017 UDP system, or to suggest further refinements you'd like to see in future.


D-BOX Output

D-BOX output is currently supported on the PC platform. In F1 2017, the D-BOX activation is controlled via the menus instead of the hardware settings config file. Navigate to Game Options->Settings->UDP Telemetry Settings->D-BOX to activate this on your system.


Enabling the UDP Telemetry Output

In F1 2017, UDP telemetry output is controlled via the menus on all platforms. To enable this, enter the options menu from the main menu (triangle / Y), then enter the settings menu - the UDP option will be at the bottom of the list. From there you will be able to enable / disable the UDP output, configure the IP address and port for the receiving application, toggle broadcast mode and set the send rate. Broadcast mode transmits the data across the network subnet to allow multiple devices on the same subnet to be able to receive this information. When using broadcast mode it is not necessary to set a target IP address, just a target port for applications to listen on.


Advanced PC Users

You can additionally edit the game’s configuration XML file to configure UDP output. The file is located here (after an initial boot of the game):

...\Documents\My Games\<game_folder>\hardwaresettings\hardware_settings_config.xml

You should see the tag:

<motion>

  ...

  <udp enabled="false" broadcast=”false” ip="127.0.0.1" port="20777" sendRate=”20” />

 ...

</motion>

Here you can set the values manually. Note that any changes made within the game when it is running will overwrite any changes made manually.


New This Year
  • Fixed bug where UDP information wasn't saved after a restart
  • Added UDP option into in-game pause menu so settings can be configured and tested straight away
  • Updated PC version to use in-game UI menus
  • Added additional vehicle and session information into the UDP output

 

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0
@LonelyRacer - the game only uses team names for the licensed 2017 teams. The classics cars are referred to only by vehicle name, so we do not set the m_team_info flag for the classic cars.

Share this post


Link to post
Share on other sites
  • 0
Hi, i'm joining this discussion for a simple question that i need for DIY. 

It's possible to retreive force feedback information or calculate/implement it from the telemetry?
If not, there is a way to retreive them with self developed controllers?

Another question: there is a way like udp telemetry to set something in game like fuel mix or next tyre type? 

Share this post


Link to post
Share on other sites
  • 0
Hoo said:
@LonelyRacer - the game only uses team names for the licensed 2017 teams. The classics cars are referred to only by vehicle name, so we do not set the m_team_info flag for the classic cars.

Little bit of short thinking, I must say.
I have a DIY Dashboard with RPM-LEDs on top. To get the right LED Layout and scale for eacxh car, I made several profiles which are selected automatically. Works pretty well with the modern cars, but you screwd it with the classic ones. THX.


Share this post


Link to post
Share on other sites
  • 0
I have a DIY Dashboard with RPM-LEDs on top. To get the right LED Layout and scale for eacxh car, I made several profiles which are selected automatically. Works pretty well with the modern cars, but you screwd it with the classic ones. THX.
Not sure if you realise, but there is a field in the telemetry called m_rev_lights_percent which is helpful for doing RPM shift lights regardless which era of car you are using.

Share this post


Link to post
Share on other sites
  • 0
I have a DIY Dashboard with RPM-LEDs on top. To get the right LED Layout and scale for eacxh car, I made several profiles which are selected automatically. Works pretty well with the modern cars, but you screwd it with the classic ones. THX.
Not sure if you realise, but there is a field in the telemetry called m_rev_lights_percent which is helpful for doing RPM shift lights regardless which era of car you are using.

m_rev_lights_percent is exactly the same as 100/m_max_rpm*m_engineRate.

Take a look at this Excel-sheet: https://1drv.ms/x/s!AngnWwGMubK9oJ5gPOKgCfBBNqhVCQ 
It shows that different cars and engines have different rpms when the green, red or blue LEDs begin to shine. 
And the different cars have diffent LED "Layouts". Ferrari e. g. uses 2 green LEDs as DRS Display. Williams has the blue LEDs as block. The red LEDs step along the values. Red Bull has green, red and blue all as blocks. And so on, etc...
And I like my stuff and projects as precise as possible.

Share this post


Link to post
Share on other sites
  • 0

Hi,

I am writing an app for a steering wheel display and I have encountered a few questions

1) is there a value for the diff settings, like m_front_brake_bias ?

2) how do i get the time difference to the car in front and behind the Players car ?

3) how do i get the actual Delta time from corrent time to best or last lap ?

4) is there a value for the fuel left (in laps) like displayed ingame ?


thanks

Share this post


Link to post
Share on other sites
  • 0
mrdezibel said:

Hi,

I am writing an app for a steering wheel display and I have encountered a few questions

1) is there a value for the diff settings, like m_front_brake_bias ?

2) how do i get the time difference to the car in front and behind the Players car ?

3) how do i get the actual Delta time from corrent time to best or last lap ?

4) is there a value for the fuel left (in laps) like displayed ingame ?


thanks


1) No. Culd use this as well.
2) Calculate it :-)
3) Save the last lap, compare against best lap, calculate the Delta
4) No, you have to calculate it. 

Share this post


Link to post
Share on other sites
  • 0
mrdezibel said:

Hi,

I am writing an app for a steering wheel display and I have encountered a few questions

1) is there a value for the diff settings, like m_front_brake_bias ?

2) how do i get the time difference to the car in front and behind the Players car ?

3) how do i get the actual Delta time from corrent time to best or last lap ?

4) is there a value for the fuel left (in laps) like displayed ingame ?


thanks


1) No. Culd use this as well.
2) Calculate it :-)
3) Save the last lap, compare against best lap, calculate the Delta
4) No, you have to calculate it. 

mhmm.. a pity :)

omg :-D

yes, i did so, tought there is a way to geht it from the game...

i compare the fuel in tank each time i cross the line and average it, but i do nit get the value the game Displays..

fuelusage = fuelold - m_fuel_in_tank

fuelold = m_fuel_in_tank

fuellaps = m_fuel_in_tank/fuelusage

any ideas to make it better ?


Share this post


Link to post
Share on other sites
  • 0
Average of a whole lap?
I would use average per 100m travelled. Maybe average per 10m travelled. The higher the resolution, the more accurate. But you might take in account how accurate you can go before the calculations get to much time consuming.


Share this post


Link to post
Share on other sites
  • 0

no, i averaged the consumption of all past laps

now i use only the last lap, works more accurate and i think the Resolution is high enough

i dont look every 100m how much fuel i have left :)

Share this post


Link to post
Share on other sites
  • 0
@Hoo, FYI the hulks name is spelt wrong in the drivers list on the first page, it should be Nico Hulkenberg (berg) and not Nico Hulkenburg (burg).

Share this post


Link to post
Share on other sites
  • 0
@Hoo, FYI the hulks name is spelt wrong in the drivers list on the first page, it should be Nico Hulkenberg (berg) and not Nico Hulkenburg (burg).
Fixed! Thanks.

Share this post


Link to post
Share on other sites
  • 0
Hi, i'm wornking on this UDP telemetry stuff for a PS4 live streaming application.

At the moment i just want to understand if with the new patch (1.8) some of the listed 'problems' got fixed..
  1. Incorrect telemetry data in spectator mode
  2. UDP transmission stops when player press "option" (or equivalent)
  3. UDP transimission stops at the end of Q session when the player complete his session (even if other drivers still have to complete the session)

Sorry if this was asked and replied before (or if it is only my fault if i have this issues), i follow this thread but i don't manage to find an answer.  :/

In case i am simply doing something wrong, hope you can help me find a solution,
thanks o:)

Share this post


Link to post
Share on other sites
  • 0
Some of the changes will require restructuring our UDP system which becomes a more complex task. We are hoping to overhaul this system next year to provide some of the requested functionality.

Share this post


Link to post
Share on other sites
  • 0
Is this a complex way to say that we are not going to have usable UDP data in spectator mode?  :|

Share this post


Link to post
Share on other sites
  • 0
Lopensky said:
Is this a complex way to say that we are not going to have usable UDP data in spectator mode?  :|
I know that Hoo's reply definitely applies to points 2 and 3 in your question, however i am unsure about the spectator mode thing.

Share this post


Link to post
Share on other sites
  • 0
Lopensky said:
Is this a complex way to say that we are not going to have usable UDP data in spectator mode?  :|
I know that Hoo's reply definitely applies to points 2 and 3 in your question, however i am unsure about the spectator mode thing.
I was quite sure of that too, but the most important point - at least for me - is the first. Since they developed an in-game spectator "hud" showing drivers positions, timings and so on, i was hoping to see the same data coming out via UDP too.. :D

Mostly because UDP is enabled (packets arriving correctly) but seems to be victim of some kind of non-sense filtering by the game.

Share this post


Link to post
Share on other sites
  • 0
All points relate to the same issue. We can't display UDP output when the player isn't driving in the race (i.e. when the motion information isn't active). This includes when pausing the game, entering the garage or spectating. 

Share this post


Link to post
Share on other sites
  • 0
That's not completely correct since if you are in a MP session and you crash UDP data continues to flow correctly, even if spectating for the rest of the race. Same thing if you are in the box during the qualifying sessions.  :)

Differently from what is happening when you pause the game, in spectator mode the UDP stream is flowing, but alla data is fixed to 0 value. Even data in "m_car_data" which should always be streamed properly since not related to player specific data but session's one.

Very sad this could not be fixed at the moment. At least i hope that others reading this will be aware of the problem saving tons of hours of testing on this  ;)

Share this post


Link to post
Share on other sites
  • 0
I ve got a question regarding the new UDP data for all vehicles.
How do you get the continous time distance between the drivers of the CarUDPData? By a SW timer or is it possible to calculate it by the raw data?

Share this post


Link to post
Share on other sites
  • 0
I ve got a question regarding the new UDP data for all vehicles.
How do you get the continous time distance between the drivers of the CarUDPData? By a SW timer or is it possible to calculate it by the raw data?
You need to calculate it yourself

Share this post


Link to post
Share on other sites
  • 0
I ve got a question regarding the new UDP data for all vehicles.
How do you get the continous time distance between the drivers of the CarUDPData? By a SW timer or is it possible to calculate it by the raw data?
You need to calculate it yourself

still no idea how to do this... :(

Share this post


Link to post
Share on other sites
  • 0
mrdezibel said:

still no idea how to do this... :(
keep track of the times of all vehicles relative to how far they are through the lap at set intervals and then compare them between players to get the deltas

Share this post


Link to post
Share on other sites
  • 0
Hi, can you confirm the format used for packing the UDP packet? e.g. pack('c*', $packet)

I am struggling to decode the data into anything meaningful :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×