Jump to content
Want to report an issue? Have a bug to report? Please look here first!!!! Read more... ×

Archived

This topic is now archived and is closed to further replies.

F1 2017 D-Box and UDP Output Specification

Recommended Posts


Also can someone please also explain how were now supposed to use more than 1 UDP device?,F1 2016 gave you options to add up to 4 UDP devices with seperate ports.  Now if i try to run my MonstaDash LED which reads from port 20777 and then run a android app such as RS Dash it will try to read from the same port and all it creates is huge lag obviously as multiple devices cant share the same port number

Whos bright idea was to remove the multiple udp port option by adding broadcast mode instead? Ive tried using broadcast mode and all i get is my Monstdash light array working and the RS Dash android app is lagging like hell because its trying to use the same port!

Their advise is to use broadcast mode so it can use multiple devices on the same subnet! WRONG!!!!!! maybe for multiple versions of the same app perhaps, but not seperate devices. Each device needs their own port number and you've removed that option!

Umm, thats not how networking works. The problem is not that multiple devices are trying to use the same UDP port, its that the Android device or Router you are using doesn't forward on the broadcast packets correctly to the app. Broadcast packets are treated differently to packets that target specific IP addresses by network devices. 

Think of it this way, F1 2017 is a person standing in a room facing the wall with noise cancelling headphones on. They dont know if the room behind them is empty, or if it has 1 person or 100 people in it (people being the apps). F1 2017 yells out "HELLO", everyone in the room can hear it. F1 2017 doesnt know if anyone hears it or not, it also doesnt care. The people (or apps) in the room that are listening will all hear it, whether there is 1 or 100 of them. UDP effectively works this way, there is no guarantee that the messages arrives at there destination and the sender does not know whether it was delivered or not. TCP is a different story, but the above is analogous to UDP broadcasts.

This particular issue of some devices not working well with broadcast message is one I am very well aware of, as it came up a bit with my pCars Dash app as Project CARS could only transmit its UDP telemetry using the global broadcast address. In my experience, iOS devices work fine, most Android devices also work fine EXCEPT motorolla devices and cheap chinese devices. Some others like HTC were problematic but i beleive there were firmware updates which could resolve their issues. RS Dash has a "compatibility mode" option which can help with some chinese devices. The other issue is routers, some will see broadcast UDP data from the telemetry stream as a possible attack on the network so they will simply block or cause it to lag. Sometimes this can be turned off with settings such as "UDP Flood Protection" or similarly named options. Outside that, the only way to make problematic devices/routers work is to send the telemetry directly to their IP address.

Share this post


Link to post
Share on other sites
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

@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
@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

×