Overview of GT7 Telemetry Software

  • Thread starter snimat
  • 182 comments
  • 61,377 views
50
Germany
Germany
This thread is about GT7 telemetry software which was made possible by the discoveries in this thread: GT7 is compatible with motion rig ?

Users in that thread have reverse engineered the communication over UDP and developed some custom made telemetry software for Gran Turismo 7.

Included Data in Telemetry Output

Nenkai, tarnheld and others have laid the ground work interpreted all data transmitted. The documentation of their work can be found here

Telemetry Software

Name and DescriptionPriceImage
gt7dashboard by snimat

Python based server or desktop hosted software for visualizing time delta, acceleration, throttle, braking and coasting. Added with fuel analysis, time tracking and velocity peak and valleys. There is also the option to record replay data and a race line graph showing brake and acceleration points.
Free, Open Source
1682794168129.png
1682793853694.png
gt7telemetry by bornhall
Python based terminal application for logging of all values the telemetry interface of GT7 provides
Free, Open Source
182450262-56992d54-409d-4fb7-bfec-35b04dc7f6aa.png
EzioDash by bornhall
iOS based telemetry Dashboard downloadable from the iOS App Store
Free, Closed Source
img_4882-jpg.1208382
InvoGT by BluesJiang

Desktop based telemetry and visualization dashboard
Free, Open Source
20221221172717.jpg
GT7tracks by vthinsel

No analysis software but an AI model for guessing the track name by logged positions.
Free, Open Source
1673476875113-png.1222248
sim-to-motec by GeekyDeaks

A Log Generator for MoTeC i2 Standard
Free, Open Source
1680602588107.png

I will add more projects if they come to my attention. Please post them below.


Other Discussions surrounding GT7 telemetry
It would be great to have an ongoing discussion about GT7 telemetry software here, since the original thread evolved back to its original purpose the motion rig support of GT7.
 

Attachments

  • 1682793829906.png
    1682793829906.png
    74.3 KB · Views: 210
Last edited:
I will hopefully soon also release the (sort of) stand-alone server software I wrote in Rust, that a webpage can connect to over a websocket and poll data from. That way it is possible for anyone with knowledge of HTML, CSS and Javascript to “roll their own” dashboard should they want to. I’ve been a little too busy with other things recently, hence not having released it. It will also be open source and on GitHub.

There will also soon be an update to EzioDash that should recognise Grand Valley and the new Nürb layouts.
 
Last edited:
A buddy and I are playing with converting the telemetry to a MoTeC log file for various sims including GT7. It's still work in progress whilst we figure out some foibles with MoTeC etc..., but I have just been poking around the other projects above and already realised where to make improvements to the capture logic and metrics collected, so thanks all!

 
A buddy and I are playing with converting the telemetry to a MoTeC log file for various sims including GT7. It's still work in progress whilst we figure out some foibles with MoTeC etc..., but I have just been poking around the other projects above and already realised where to make improvements to the capture logic and metrics collected, so thanks all!

I added it to the list. I have never used MoTeC before, but I have now thanks to your tool :)
 
After trying the EzioDash I realised I don’t have a way to mount an iPhone on my wheel. Is there a pc dashboard app I can use to the same effect?
 
I will hopefully soon also release the (sort of) stand-alone server software I wrote in Rust, that a webpage can connect to over a websocket and poll data from. That way it is possible for anyone with knowledge of HTML, CSS and Javascript to “roll their own” dashboard should they want to. I’ve been a little too busy with other things recently, hence not having released it. It will also be open source and on GitHub.

There will also soon be an update to EzioDash that should recognise Grand Valley and the new Nürb layouts.
I got EzioDash and love it! It wasn’t showing up in any searches in the App Store though. I’m not sure if there’s anything you can do to fix that.

Anyway, the one problem I’m having is that the app starts lagging after the first lap, so that the data is out of sync by five seconds or more. Is there something I can do to fix that?
 
I got EzioDash and love it! It wasn’t showing up in any searches in the App Store though. I’m not sure if there’s anything you can do to fix that.

Anyway, the one problem I’m having is that the app starts lagging after the first lap, so that the data is out of sync by five seconds or more. Is there something I can do to fix that?
What iPhone are you using? Also is the phone getting hot/warm? I am using a 7 with iOS 10 I think and the warmer the phone gets the more susceptible it is to lagging.
 
I will hopefully soon also release the (sort of) stand-alone server software I wrote in Rust, that a webpage can connect to over a websocket and poll data from. That way it is possible for anyone with knowledge of HTML, CSS and Javascript to “roll their own” dashboard should they want to. I’ve been a little too busy with other things recently, hence not having released it. It will also be open source and on GitHub.

There will also soon be an update to EzioDash that should recognise Grand Valley and the new Nürb layouts.
Can you make the iPhone haptics vibrate with the revs? I’ve had my phone resting on my wheel and it’s vibrated on a call and I thought boy the FFB feels great right now. Then I realized it was just my phone on silent.
 
Anyway, the one problem I’m having is that the app starts lagging after the first lap, so that the data is out of sync by five seconds or more. Is there something I can do to fix that?
Thanks for using EzioDash, I’ll look into the search issue. As for the lagging, as Skills mentions, it’s not the app itself, at least as far as I have researched. It’s something in the network stack on older hardware. My 6s and old iPad has the same issues.

Can you make the iPhone haptics vibrate with the revs? I’ve had my phone resting on my wheel and it’s vibrated on a call and I thought boy the FFB feels great right now. Then I realized it was just my phone on silent.
That may be something I could look into actually. Thanks for the tip 👍🏻
 
What iPhone are you using? Also is the phone getting hot/warm? I am using a 7 with iOS 10 I think and the warmer the phone gets the more susceptible it is to lagging.
I didn’t check the heat. That’s an interesting point. I’ll see what I find out.
Thanks for using EzioDash, I’ll look into the search issue. As for the lagging, as Skills mentions, it’s not the app itself, at least as far as I have researched. It’s something in the network stack on older hardware. My 6s and old iPad has the same issues.
Thanks for the response. I accidentally found your user manual and saw that you already mention the older phone problem. And that is, of course, the problem. I have an older iPad Pro set up on a table next to my rig. On a weird side note, I had it unplugged and as it was running out of battery, like nearly dead, it was operating perfectly.

By the way, I say I “accidentally” found the manual because I didn’t realize there were other pages to scroll through. There’s a lot more to this app than I realized! Thanks for the great work!
 
Check if there are any 3D printed mounts available for your wheel and phone combo. There are quite a lot of people making things like that.
@Bojador I have found some available to print or buy from Etsy. I have a G27 so I just used double sided tape to mount my phone to the center hub in anticipation that it might start vibrating in a future EzioDash update giving a poor man cheap Tru Force.
 
I've recently found this thread through all the good work everyone has been doing here.

Does anyone happen to have a reference to the individual UDP packet formats?

I've been using this as a reference.
 
Last edited:
I've recently found this thread through all the good work everyone has been doing here.

Does anyone happen to have a reference to the individual UDP packet formats?
You’ll find everything you need in this thread, basically. And there is just the single UDP packet anyway, all of it is sent every packet. And there is no “real” documentation for it other than what PD might have in-house as far as we know, so this thread is pretty much the go-to for this.
 
Thanks!

I've been toying around with the idea of writing simple service for publishing race summaries.
Well, to be frank, what you would have to do would basically be to get every player in a race to use a telemetry capture that then sends each respective player’s lap number and when they pass the finish line and record that in a central server that can (maybe) correlate the data.

The thing is, there is no info on the position of a car in a race (curiously enough), nor is there any info on the rest of the field either. So, you will have a really hard time to achieve what you want.

That said, there is a way to get to that data, but as @Nenkai has said several times, it requires either a jailbroken PS4 or a special mode PSN account. So, in other words, it’s not feasible.
 
Last edited:
Well, to be frank, what you would have to do would basically be to get every player in a race to use a telemetry capture that then sends each respective player’s lap number and when they pass the finish line and record that in a central server that can (maybe) correlate the data.

The thing is, there is no info on the position of a car in a race (curiously enough), nor is there any info on the rest of the field either. So, you will have a really hard time to achieve what you want.

That said, there is a way to get to that data, but as @Nenkai has said several times, it requires either a jailbroken PS4 or a special mode PSN account. So, in other words, it’s not feasible.
Loving the app!

Also small translation issue - on your website you've used the word seize. This means to lock or freeze (or confiscate). I think you mean cease (to stop).

Screenshot 2023-04-15 at 00.11.00.png
 
Given the data available that is sent from GT7 (look here). Would it be possible to calculate the grip?

I am thinking about developing a simple monitoring solution like this real onboard monitor: https://apextrackcoach.com/getting-started/

1681822252767.png


Source

Is this feasible or do we lack too much information for something like this? I was thinking about the tire speed / car speed ratio, but my first test is not promising. The metric will not tell anything besides heavy spinning or heavy brake lock.
 
Given the data available that is sent from GT7 (look here). Would it be possible to calculate the grip?
Looking at the example app you provided, I suspect it's just taking the maximum G forces experienced in a specific direction, much like the way some analysis tools show the traction circle, and then taking the direction to determine what is likely happening e.g. a rear+right force could be trail braking into a right hand turn. From that I'd probably suggest doing the same and start to build an 'maximum' traction circle.

I can point you to the lines in my code that calculate the local forces if you need (i.e. those relative to the car)
 
Last edited:
I have added some nice new features to gt7dashboard. Here are some of the key features:
  • Added Speed Peaks and Valleys to a new tab called "Race Line" that displays the race line for the last laps and the reference lap race line. The map projection is now consistent with that of the game.
  • Added "Speed Variance" for the three best laps, which highlights areas for improvement.
  • Improved documentation.
  • Added real car names.
  • Added "Tire/Car Speed Ratio" for wheel spin detection.
  • Enhanced fuel map.
  • Improved "Speed Peaks and Valleys" diagram.
Main Tab:
1682794103520.png


Race Lines Tab with Speed Peaks and Valleys


1682793629106.png
 

Attachments

  • 1682793695115.png
    1682793695115.png
    74.3 KB · Views: 53
Last edited:
Hello everyone, I hope you're all well!

I'm trying to run the docker build of the "gt7dashboard", but after finally managing to get it to run, I only get a blank page 😭

I'm not a developer so my understanding of docker containers and bokeh apps is very limited.

I'm on Windows 10 and running Docker Desktop.

In the logs, I get a line saying: Refusing websocket connection from Origin 'http://localhost:5006' and I have disabled the firewall and anti-virus just in case, still without a luck.

I also added an argument to the dockerfile like so:
CMD bokeh serve . \
--allow-websocket-origin="*"

Accessing the 'http://localhost:5006' where the app is running returns a blank sheet.

Does anybody know how to solve this? 😭

Sorry for the lenghty message and thanks in advance 🙏
 
Last edited:
Hello everyone, I hope you're all well!

I'm trying to run the docker build of the "gt7dashboard", but after finally managing to get it to run, I only get a blank page 😭

I'm not a developer so my understanding of docker containers and bokeh apps is very limited.

I'm on Windows 10 and running Docker Desktop.

In the logs, I get a line saying: Refusing websocket connection from Origin 'http://localhost:5006' and I have disabled the firewall and anti-virus just in case, still without a luck.

I also added an argument to the dockerfile like so:
CMD bokeh serve . \
--allow-websocket-origin="*"

Accessing the 'http://localhost:5006' where the app is running returns a blank sheet.

Does anybody know how to solve this? 😭

Sorry for the lenghty message and thanks in advance 🙏
What does the log say?

Have you tried adding „/app“ to the url?

I have made no attempts to make the setup on Windows easier, since I do not use or have Windows. But I would gladly accept any pull request on that issue. I read that there is some
way to bundle Python with an exe file for Windows. If someone could integrate this into a GitHub workflow and automatically publish the exe files, this would be great.
 
Last edited:
What does the log say?

Have you tried adding „/app“ to the url?

I have made no attempts to make the setup on Windows easier, since I do not use or have Windows. But I would gladly accept any pull request on that issue. I read that there is some
way to bundle Python with an exe file for Windows. If someone could integrate this into a GitHub workflow and automatically publish the exe files, this would be great.
The log is showing the following:
2023-04-30 11:12:56 2023-04-30 11:12:56,658 Starting Bokeh server version 3.1.0 (running on Tornado 6.3.1)
2023-04-30 11:12:56 2023-04-30 11:12:56,796 Host wildcard '*' will allow connections originating from multiple (or possibly all) hostnames or IPs. Use non-wildcard values to restrict access explicitly
2023-04-30 11:12:56 2023-04-30 11:12:56,796 User authentication hooks NOT provided (default user enabled)
2023-04-30 11:12:56 2023-04-30 11:12:56,798 Bokeh app running at: http://localhost:5006/app
2023-04-30 11:12:56 2023-04-30 11:12:56,798 Starting Bokeh server with process id: 7

---- This is when I first attempt to open http://localhost:5006/app as well as a couple of page refresh
2023-04-30 11:13:03 2023-04-30 11:13:03,152 200 GET /app (172.17.0.1) 595.70ms
2023-04-30 11:13:03 2023-04-30 11:13:03,333 Refusing websocket connection from Origin 'http://localhost:5006'; use --allow-websocket-origin=localhost:5006 or set BOKEH_ALLOW_WS_ORIGIN=localhost:5006 to permit this; currently we allow origins {'domain_of_server:5006'}
2023-04-30 11:13:03 2023-04-30 11:13:03,333 403 GET /app/ws (172.17.0.1) 0.62ms
2023-04-30 11:13:03 2023-04-30 11:13:03,333 Cross origin websockets not allowed
2023-04-30 11:13:03 2023-04-30 11:13:03,506 200 GET /favicon.ico (172.17.0.1) 0.38ms
2023-04-30 11:15:08 2023-04-30 11:15:08,422 200 GET /app (172.17.0.1) 295.75ms
2023-04-30 11:15:08 2023-04-30 11:15:08,552 Refusing websocket connection from Origin 'http://localhost:5006'; use --allow-websocket-origin=localhost:5006 or set BOKEH_ALLOW_WS_ORIGIN=localhost:5006 to permit this; currently we allow origins {'domain_of_server:5006'}
2023-04-30 11:15:08 2023-04-30 11:15:08,553 403 GET /app/ws (172.17.0.1) 0.50ms
2023-04-30 11:15:08 2023-04-30 11:15:08,553 Cross origin websockets not allowed
2023-04-30 11:15:08 2023-04-30 11:15:08,609 200 GET /favicon.ico (172.17.0.1) 0.35ms

Sorry for not being clear enough, but I am using -> http://localhost:5006/app to try and access the app.

The app is showing the correct title if that matters:
1682850401071.png


Do I have to do something from GT7's side? I have tried to do a few laps on GT7 and refresh, but still nothing.
 
Last edited:
I also added an argument to the dockerfile like so:
CMD bokeh serve . \
--allow-websocket-origin="*"
I don't think bokeh does wildcard matching from the docs. I'd try explicitly setting the origin as it mentions in the errors e.g.:

--allow-websocket-origin=localhost:5006

EDIT: it should work looking at the code: https://github.com/bokeh/bokeh/blob...1289a6b558ce7f2/src/bokeh/server/util.py#L166

Maybe try setting the environment variable BOKEH_ALLOW_WS_ORIGIN=localhost:5006 instead?
 
Last edited:
Back