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
well ive tried to just use the 20777 port with all my devices and its simply creates huge lag on everything.. Im not running any cheap android stuff either.. All other games work fine its just Codemasters games which is why we use the Proxy server (CMPS). However for it to work you MUST change the port number in each application and set that port in the server(see example below)

Unfortunately I cant use RS Dash which has annoyed me as its a great app but no option to change the default port number from 20777. leaving it on 20777 doesn't work as the CMPS is using the port

Sheild Tablet running RS Dash Port: CANT USE NO OPTION TO CHANGE PORT NUMBER :(
Samsung S6 running Dash Meter Pro port 20780
Monstadash DLC-247 running Simdash Port 20778
Fanatec CSW running SLIMax Manager Pro Port 40555
Asus RT-N66U Router

Image and video hosting by TinyPic
 
I am currently in correspondence with Craig from pocketplayground (maker of RS Dash) to see if an option can be added to change the listening port to make RS Dash compatible using the CMPS Server.. ;)

Share this post


Link to post
Share on other sites
  • 0
well ive tried to just use the 20777 port with all my devices and its simply creates huge lag on everything.. Im not running any cheap android stuff either.. All other games work fine its just Codemasters games which is why we use the Proxy server. However for it to work you MUST change the port number in each application and set that port in the server.

Sheild Tablet running RS Dash Port: CANT USE NO OPTION TO CHANGE PORT NUMBER
Samsung S6 running Dash Meter Pro port 20780
Monstadash DLC-247 running Simdash Port 12000
Fanatec CSW running SLIMax Manager Pro Port 40555
Asus RT-N66U Router

As far as I know the Samsung stuff usually works fine, and its unlikely that all those different devices would have the same issues. The router is therefore the likely cause, i actually have an Asus AC-68U and it does suffer from this problem, so it may be common to other asus routers as well. I have submitted this issue to Asus, but they are yet to do anything about fixing it. In my case however, the lag is not particularly bad but it is a little annoying, it could be that in your model the lag is more pronounced. 

Share this post


Link to post
Share on other sites
  • 0
well ive tried to just use the 20777 port with all my devices and its simply creates huge lag on everything.. Im not running any cheap android stuff either.. All other games work fine its just Codemasters games which is why we use the Proxy server (CMPS). However for it to work you MUST change the port number in each application and set that port in the server(see example below)

Unfortunately I cant use RS Dash which has annoyed me as its a great app but no option to change the default port number from 20777. leaving it on 20777 doesn't work as the CMPS is using the port

Sheild Tablet running RS Dash Port: CANT USE NO OPTION TO CHANGE PORT NUMBER :(
Samsung S6 running Dash Meter Pro port 20780
Monstadash DLC-247 running Simdash Port 20778
Fanatec CSW running SLIMax Manager Pro Port 40555
Asus RT-N66U Router

Image and video hosting by TinyPic
 
I am currently in correspondence with Craig from pocketplayground (maker of RS Dash) to see if an option can be added to change the listening port to make RS Dash compatible using the CMPS Server.. ;)


Hi,

You really need to follow instructions in EKSIMRacing website, SLIMax Manager Pro F1 2017 plugin requires API V5 not v1 :)

Also, if you have a problem to change the default udp port of one app, just put another udp port in Proxy and Game whicj let you use the 20777 for the target app.
for example:
Proxy main port 30555
F1 Game 30555
and
all others devices
40555 API v5
20780
12000
20778
20777


F1 2017 Game (send rate = 60Hz):
<udp enabled="true" broadcast="false" ip="127.0.0.1" port="30555"
sendRate="60" />

CMPS:


SLIMax F1 2017 Plugin (using the Plugins Manager):


That's it!

Related link (to configure correctly the F1 2017 plugin)
http://www.eksimracing.com/f-a-q/how-to-get-codemasters-f1-20xx-dirt2-and-dirt3-working-with-latest-slimax-mgr-software/

Codemasters Proxy Server (for all the information about the API versions to use):
http://www.eksimracing.com/cmps/

Cheers,
z




Share this post


Link to post
Share on other sites
  • 0
Can confirm I now have Simdash, SLI-Max Manager & RS Dash all working via the CMPS Server. RS Dash will be getting an update from the beta version ive been testing, which now has the option to specify a port number for the app to run on

Share this post


Link to post
Share on other sites
  • 0
How amazing would it be if only something like this could be a (limited) two way road. What I mean is: if the host could also send (some) data over UDP to the match. That way you can race with your friends and the host can be like 'Race Control', sending out the safety car, giving flags and penalties to players etc.

This is probably not happenings since we're 'subscribing' to only the data F1 is sending out. But what are you guys' thoughts about this?

-Arjan

Share this post


Link to post
Share on other sites
  • 0
Hoo said:
Thanks for all of the feedback. I'll pass this on to the dev team to look at. 

Regarding the temperatures and participant data, this isn't available in the Time Trial beta (wear and temperature is locked to optimal values). This will hopefully be available soon.

Is there an easier way to get lap delta w.r.t last lap and best lap and get sector deltas?

Share this post


Link to post
Share on other sites
  • 0
Are there any examples of what can be done with the world space location? I was hoping this could be used to somehow plot it on a track and be able to 'watch' the race. (Like they have in the official F1 app)

Share this post


Link to post
Share on other sites
  • 0
ArjanK said:
Are there any examples of what can be done with the world space location? I was hoping this could be used to somehow plot it on a track and be able to 'watch' the race. (Like they have in the official F1 app)
Take a look over there: SimHub 

Share this post


Link to post
Share on other sites
  • 0
ArjanK said:
Are there any examples of what can be done with the world space location? I was hoping this could be used to somehow plot it on a track and be able to 'watch' the race. (Like they have in the official F1 app)
I use it for displaying the live positions of all cars on the track in my RS Dash app, there is a screenshot from one of the views of the map page here

In my case its all 2d top view of the track layout, but the telemetry does contain 3 dimensions of data so you could do a 3d one too if you had a decent 3d map to render it to.

Share this post


Link to post
Share on other sites
  • 0
ArjanK said:
Are there any examples of what can be done with the world space location? I was hoping this could be used to somehow plot it on a track and be able to 'watch' the race. (Like they have in the official F1 app)
In my Telemetry Toolhttp://www.racedepartment.com/downloads/telemetry-application.16862/ you can see a 2D track map with all the cars on track and you can zoom in if you want. I also save the lap data to a file, which contains all the 3 coordinates and you could create a 3D map with that data. I am just doing new version, where you can save the whole race's data and the replay that on the tool, so you can after the race do more visual analysis or e.g. see on 2D track map,  how the race developed..

You can see some screenshots at the link above.

Share this post


Link to post
Share on other sites
  • 0
Hi,

tested on PS4 using several "single race" games in a row. When the session begins and you are in the grid lane, before the green lights are on, the game starts streaming wrong data; when the green lights are on, the game streams correct data. The wrong data contain a mixture of the past session and the new one, e.g. m_team_info, m_track_number, m_era, m_car_position, m_car_data etc contains values from the past session, while eg. m_track_size and few others contains data for the current running session. It makes hard to properly detect the change of session and the mixture of some data (e.g. track id and track length) are problematic too.

I have to check if it happens also with other game modes.

Share this post


Link to post
Share on other sites
  • 0
Hi,

I'm on PS4 and trying to decode the data with a C# app but have some truble with gear selection.
The data I get for the current gear is the following,
R : 00-00-00-00
N: 00-00-3F-3F
1: 00-00-00-40
2: 00-00-40-40
3: 00-00-3F-40
4: 00-00-3F-40
5: 00-00-3F-40
6: 00-00-3F-40
7: 00-00-00-41
8: 00-00-10-41

So for gear 3-6 it's the same value. Is this a known problem with PS4 or am I doing something wrong here?

/Viktor

Share this post


Link to post
Share on other sites
  • 0
vg132 said:
Hi,

I'm on PS4 and trying to decode the data with a C# app but have some truble with gear selection.
The data I get for the current gear is the following,
R : 00-00-00-00
N: 00-00-3F-3F
1: 00-00-00-40
2: 00-00-40-40
3: 00-00-3F-40
4: 00-00-3F-40
5: 00-00-3F-40
6: 00-00-3F-40
7: 00-00-00-41
8: 00-00-10-41

So for gear 3-6 it's the same value. Is this a known problem with PS4 or am I doing something wrong here?

/Viktor
Hi Viktor, yes you are doing something wrong. Given that they are float, you will need to convert the raw bytes into float data, however looking at the data you are showing i think you've got other issues, your probably reading the wrong bytes. 

You can use the BinaryReader.ReadSingle in c# to  to read floats and other data types from a stream, otherwise you can do a direct structure mapping instead, just google something like "read c struct in c#".

Share this post


Link to post
Share on other sites
  • 0
I have come across some bugs with the telemetry
1. Time remaining for "one shot qualifying" (confirmed) and "Time trail" (so ive been told) is a very large number "3.402823E+38"

2. Sector number appears to get frozen on real players in a MP session which are being simulated during network connection issues? In race i did (which i have the telemetry recorded for analysis) one of the players was stuck with "Sector = 2" for three whole laps (lap number was increasing, sector never changed). I suspect the player might have been having connection difficulties and their telemetry may be being simulated? if this is the case then it may be a bug that the simulated player is not updating the sector field in the telemetry. This causes major headaches trying to process the timing data if the sector number is not ticking over correctly.

3. Player positions get messed up after the session has finished. In the same race mentioned above, the player (data screenshots below) crossed the line in 13th position, however after crossing the line they suddenly jumped up to p2, then p1. The other players all got shifted +1 in their positions in the data being received. So the real race winner was suddenly p2, p2 was p3, p3 was p4 etc. 
You can see from the screenshots below that Track Position goes from 13 at the end of the final lap (5 of 5), then drops to 2 and then 1 for the remainder of the telemetry packets being sent. The second screenshot below is the results from the game itself. The data is for the player shown in P13 in the second shot "Mortician" (Fernando Alonso), so clearly P1 is the wrong value in the telemetry as the race was won by dancslaslzo14 (Lewis Hamilton). 

For 1, this is correct - we have an unlimited (almost) amount of time for players to complete these modes. The number probably doesn't look that friendly if displayed as is. Either we could make this display something else, or you can ignore it and/or display something else too.

We couldn't repeat number 2 here. If you see it again please let us know.

I've left number 3 with our team to investigate further.

Share this post


Link to post
Share on other sites
  • 0
IJS84 said:
Found another issue.
As a test in our league I've asked one of the streamers to set the telemetry up to see if the spectate mode sends data correctly.
I am receiving data from him but all the fields are coming across as 0. There's no car data for the cars that are actually in the race. He started off in one of the spectate slots
I'll get our QA team to investigate this one.

Share this post


Link to post
Share on other sites
  • 0
Hoo said:
For 1, this is correct - we have an unlimited (almost) amount of time for players to complete these modes. The number probably doesn't look that friendly if displayed as is. Either we could make this display something else, or you can ignore it and/or display something else too.

We couldn't repeat number 2 here. If you see it again please let us know.

I've left number 3 with our team to investigate further.
Thanks Hoo, re point 1 I have just put a catch in for that, i assumed it was due to something like that. Easy enough for people to deal with.

Re 2, if you want a copy of the raw recorded telemetry stream i can provide it. (plus a viewer if you need one). I dont get much time to play myself, but if i do come across it again while playing i will let you know.

Share this post


Link to post
Share on other sites
  • 0
Hoo said:
IJS84 said:
Found another issue.
As a test in our league I've asked one of the streamers to set the telemetry up to see if the spectate mode sends data correctly.
I am receiving data from him but all the fields are coming across as 0. There's no car data for the cars that are actually in the race. He started off in one of the spectate slots
I'll get our QA team to investigate this one.
Yep i can confirm this too, i made a recording from spectator view and found while in that view that the telemetry is completely frozen. I think it may just be outputting whatever the previous telemetry was from when the player was actually playing and not spectating. 

Share this post


Link to post
Share on other sites
  • 0
Kafumanto said:
Hi,

tested on PS4 using several "single race" games in a row. When the session begins and you are in the grid lane, before the green lights are on, the game starts streaming wrong data; when the green lights are on, the game streams correct data. The wrong data contain a mixture of the past session and the new one, e.g. m_team_info, m_track_number, m_era, m_car_position, m_car_data etc contains values from the past session, while eg. m_track_size and few others contains data for the current running session. It makes hard to properly detect the change of session and the mixture of some data (e.g. track id and track length) are problematic too.

I have to check if it happens also with other game modes.
It doesn't clear the stream until the new session has commenced. I'll see if this is something we can fix easily our side.

Share this post


Link to post
Share on other sites
  • 0
Hello All,
We have some updates coming in our future patch (provisionally version 1.8). This will have the following updates:
  • We've added some additional parameters into the main struct to provide further information on the vehicle physics (see updated spec on the first page of this thread)
  • Fixed issues with the G-force output
  • Fixed 3-second delay after exiting the pit lane 
We don't plan on making anymore changes to the packet structure for this project. We're still looking at bugs though, so please continue to report any issues you have with this. 

Thanks.

Share this post


Link to post
Share on other sites
  • 0
Hi Hoo,
thanks for the update and the fixes!

I found another "issue" during testing (verified on PS4): during qualifying sessions, the "out lap" is marked with the same parameters and flags (e.g. lap number) as the following "flying lap", making it impossible to distinguish the "out lap" from the effective "flying lap".

Share this post


Link to post
Share on other sites
  • 0

@Hoo

I am also assuming some changes were made with 1.7 as tyre pressures are now reading correctly for all 4 tyres.

Interestingly though is the tyre compound type seems to start from 1 now instead of 0 as indicated here

byte  m_tyreCompound; // compound of tyre – 0 = ultra soft, 1 = super soft, 2 = soft, 3 = medium, 4 = hard, 5 = inter, 6 = wet

This may just be the software I am using though will check with @zappadoc to see if he sees it the same way.

Share this post


Link to post
Share on other sites
  • 0
@RadioactiveJim - you are right. The tyre pressure fix and a fix for the SLI-Pro displaying when disabled both went into version 1.4. I missed those in the fog of war!

Share this post


Link to post
Share on other sites
  • 0

Hoo said:
Hello All,
We have some updates coming in our future patch (provisionally version 1.8). This will have the following updates:

Thanks.
Will you also check/fix the m_team_info being 1, if era is 1980 and the event is time_trial?

Cheers

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  

×