Overview of GT7 Telemetry Software

  • Thread starter snimat
  • 151 comments
  • 39,395 views
Here is a Go library for GT7 telemetry I ported just now: https://github.com/snipem/go-gt7-telemetry

Writing Go programs for portability is much easier for me. Many inexperienced users face difficulties setting up Python and its dependencies because of its interpreted nature. Newly developed Go programs and their binaries have the potential to enhance the user experience.

Additionally, it works with Stooberts broadcast finding from above. See the example for yourself.

go-gt7-telemetry​

A Gran Turismo 7 Telemetry Library for Go

Example​

C-like:
package main

import (
      "fmt"
      gt7 "github.com/snipem/go-gt7-telemetry/lib"
)

func main() {
     gt7c := gt7.NewGT7Communication("255.255.255.255")
     go gt7c.Run()
     for true {
         fmt.Println(gt7c.LastData.CarSpeed)
    }
}

TODO​

IsPaused and InRace flags do not work.
 
Last edited:
interesting that you have taken that route - I have started something similar, but mainly because pyinstaller was getting flagged up by the virus protection
 
Hi!

Just to say a huge thank you very much to you guys for your hard work in providing these tools.

Now only in my first steps with the Motec files, but have you noticed that in the brake position records there is always a 10% pressure all over the track? Is this normal?

Also i'm missing fuel records. Are those avaible?

Thanks once again and keep this good work!
 

Attachments

  • Brake.png
    Brake.png
    5.7 KB · Views: 25
hmmm.... I don't see anything like that.... have you checked the calibration of your brake pedal?


v1.4.0+ should have those now for GT7
Thanks for reply. That was my first tought. I've checked only the in game calibration. Will see on pedal itself.
If it is the case my lap times will skyrocket! :-)
 
Is it possible that the InRace, IsPaused, … flags are not set anymore since the recents updates? I had no luck reading them, they always returned zero.
 
Last edited:
About replacing salsa20 with pure_salsa20:

Using pure_salsa20 also increases CPU usage on my underpowered MacBook from 1.6% to 11% when continuously decrypting packages during hot lapping. For now this is not acceptable for me but I am looking into other solutions.

This would have improved portability for Windows and Mobile users. They have to rely on the binary salsa bindings for now. For Windows users this means that they have to install some C++ bindings. Mobile users do not have the option to do this.

Here is the patch which should also apply on other solutions that are based on bornhalls gt7telemetry:

Python:
diff --git a/gt7dashboard/gt7communication.py b/gt7dashboard/gt7communication.py
index 9b34277..65054dc 100644
--- a/gt7dashboard/gt7communication.py
+++ b/gt7dashboard/gt7communication.py
@@ -1,16 +1,14 @@
 import datetime
 import json
 import logging
-import math
 import socket
 import struct
 import time
-import traceback
 from datetime import timedelta
 from threading import Thread
 from typing import List
 
-from salsa20 import Salsa20_xor
+from pure_salsa20 import salsa20_stream
 
 from gt7dashboard.gt7helper import seconds_to_lap_time
 from gt7dashboard.gt7lap import Lap
@@ -431,8 +429,12 @@ def salsa20_dec(dat):
     iv = bytearray()
     iv.extend(iv2.to_bytes(4, 'little'))
     iv.extend(iv1.to_bytes(4, 'little'))
-    ddata = Salsa20_xor(dat, bytes(iv), key[0:32])
+    ddata = salsa20_xor_adapter(dat, bytes(iv), key[0:32])
     magic = int.from_bytes(ddata[0:4], byteorder='little')
     if magic != 0x47375330:
         return bytearray(b'')
     return ddata
+
+def salsa20_xor_adapter(message, nonce, key):
+    stream = salsa20_stream(key, nonce, len(message))
+    return bytes(x ^ y for x, y in zip(message, stream))
diff --git a/requirements.txt b/requirements.txt
index b694c9d..f31a895 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
 bokeh~=3.1.0
-salsa20~=0.3.0
+pure_salsa20~=0.1.0
 tabulate~=0.8.10
 pandas~=1.5.3
 scipy~=1.9.0
 
Last edited:
For Windows users this means that they have to install some C++ bindings
have you tried bundling it with pyinstaller? I don't know if it works with bokeh or not, but for the GUI stuff like my little converter it works ok. It doesn't even need python installed on the target machine as it includes everything it needs. Some virus detectors bulk at it though....
 
have you tried bundling it with pyinstaller? I don't know if it works with bokeh or not, but for the GUI stuff like my little converter it works ok. It doesn't even need python installed on the target machine as it includes everything it needs. Some virus detectors bulk at it though....
Well I would rather not deal with additional Windows tools since I am not able to test them.
 
Hi, is there a way to log pitch, yaw and ride height on both axles?


And thank you all for your work at this telemetry software, it has been very helpful at times.
 
Unfortunately, I can only see those metrics around one point. I'm not quite sure exactly where the point is tbh, but for the purposes of any calculations, I'm assuming it's near the centre point between the axles
 
Could it be they use the center of mass? Every power should act around that point since a car is seen as a rigid body (or something like that)

I would like to know where it is I hit the ground on track to consider certain setups and know the difference between bad suspension characteristics and just bottoming out.

The InvoGT program gives ride height information (I think), but the numbers are not logged and they confuse me, they seem to be reversed but not always. I don't know how to interpret them.

Another thing is that I can't run more than one telemetry. Is it possible to mirror that socket or something?
 
Last edited:
Another thing is that I can't run more than one telemetry. Is it possible to mirror that socket or something?
If you change the listener port on my logger, it automatically goes into passive mode (stops sending heartbeats to the PS). This allows it to be used with something like simhub that can mirror the UDP packets to another port.
 
If you change the listener port on my logger, it automatically goes into passive mode (stops sending heartbeats to the PS). This allows it to be used with something like simhub that can mirror the UDP packets to another port.
Is that possible with all telemetry software?

Sim-to-Motec is the only one I haven't tried yet, the Motec part is kind of scary for me, but I'll get over it and try it :)
 
Is that possible with all telemetry software?

Sim-to-Motec is the only one I haven't tried yet, the Motec part is kind of scary for me, but I'll get over it and try it :)
No. gt7dashboard does not. It seems that I would have to implement some changes.
 
Is it possible that the InRace, IsPaused, … flags are not set anymore since the recents updates? I had no luck reading them, they always returned zero.
Yup I have noticed the same. The only method I have for off track/on track is you get a packet for loading/processing which can be used as a toggle.
 
There is such a packet? I am still relying on this list for my tools: https://www.gtplanet.net/forum/threads/gt7-is-compatible-with-motion-rig.410728/page-4#post-13799643 Do you have any newer findings?
It's part of the flags, bit 2.

The logic I have had to follow for now is:
1. Set a local flag that keeps track of whether a replay is running to False.
2. Wait for a "processing" packet (flag is set) and for the car to NOT be registered as "In gear" - this seems to be true for all cases where you enter a track. When you exit a replay it will be processing and in gear. This is the signal to start recording packets so update the flag.
4. Keep recording until you see another "processing packet". This is the indicator to stop recording, so update the flag again to stop recording.
 
Last edited:
I run it on my Win11 laptop
  1. Install Python3 for Windows for all users
  2. Read the "Requirements" from https://github.com/Bornhall/gt7telemetry because you need one extra python module
  3. Open a command shell and and execute the script
Regards,
Joerg
I'm trying to get gt7dashboard to install and run as well. I've got a motion rig and have it working with Sim Racing Studio (SRS) & Gran Turismo 7 (GT7) successfully.

Could someone just do a simple screen grab video the complete start to finish of installing, configuring and launching/running of gt7dashboard? I'm a visual person. I understand this should be easy to get running, but something is off and I think I could correct it and get it working if I just followed someone's entire setup method. I don't know, maybe it has something to do with folder structure or permissions.

Notes:
  • Running on Windows 10 Pro, hardwired ethernet (192.168.1.5)
  • PS5 is hardwired ethernet (192.168.1.8)
  • Python appears to be installed
  • Telemetry from GT7 on the PS5 is being seen and utilized by SRS for motion
  • SIM Dashboard for Android (UDP Config) works for things like "Wheel spin" & "Tire temp"
  • Windows Firewall is disabled
 
I'm trying to get gt7dashboard to install and run as well. I've got a motion rig and have it working with Sim Racing Studio (SRS) & Gran Turismo 7 (GT7) successfully.

Could someone just do a simple screen grab video the complete start to finish of installing, configuring and launching/running of gt7dashboard? I'm a visual person. I understand this should be easy to get running, but something is off and I think I could correct it and get it working if I just followed someone's entire setup method. I don't know, maybe it has something to do with folder structure or permissions.

Notes:
  • Running on Windows 10 Pro, hardwired ethernet (192.168.1.5)
  • PS5 is hardwired ethernet (192.168.1.8)
  • Python appears to be installed
  • Telemetry from GT7 on the PS5 is being seen and utilized by SRS for motion
  • SIM Dashboard for Android (UDP Config) works for things like "Wheel spin" & "Tire temp"
  • Windows Firewall is disabled
For once gt7dashboard and your telemetry software either for motion or SIM Dashboard canno run on the same machine. Try gt7dashboard without the other tools to see what the problem could be.

Also posting console output (cmd stuff) is highly recommended.

Please make sure to use the most current version or version 1.1 since there was a bug that I have only and hopefully fixed as of today.
 
Last edited by a moderator:
For once gt7dashboard and your telemetry software either for motion or SIM Dashboard canno run on the same machine. Try gt7dashboard without the other tools to see what the problem could be.

Also posting console output (cmd stuff) is highly recommended.

Please make sure to use the most current version or version 1.1 since there was a bug that I have only and hopefully fixed as of today.
Okay, I understand using one instance per machine/device.

Here's the CMD, you'll see I don't know what I'm doing. ;-) Thus, asking for a video tutorial.
 

Attachments

  • Screenshot 2023-08-16 160120.jpg
    Screenshot 2023-08-16 160120.jpg
    189.2 KB · Views: 16
Apologies if it's something obvious, I'm pretty new to Linux, but despite running the command to check dependencies on gt7dashboard and ensuring Bokeh is installed, double clicking run.sh simply appears to do nothing while running the "GT7_PLAYSTATION_IP=myiphere bokeh serve ." command gives the error "bokeh: command not found". With it installed, I'm not sure what I'm missing.

EDIT: I solved that problem, after reinstalling Bokeh I learned it wasn't installing to a location in PATH. Now I need to figure out what to do about the port being in use.

EDIT2: Solved that, now it seems Bokeh started and then... nothing.

EDIT3: ...Oh. My mistake. I need to learn to read better. It doesn't open a window or anything, I open it in my browser.

All is well. I'll leave this here so someone else may learn from my mistakes.

EDIT4: ... Learn to be 100% sure before saying all is well. Now it isn't getting any data from GT7.
 
Last edited:
Here's the CMD, you'll see I don't know what I'm doing. ;-) Thus, asking for a video tutorial.
From what i see from the screenshot
1. The script interpretor is named "python" rather than "python3". If you get a "command not found" you should stop and start thinking ;)
2. Specify a environment variable under windows is "set name=value". The programm needs the IP Address of your playstation which is 192.168.1.8 and not <192.168.1.8>. The <> whithin the documention is the indicator/hint that a user should insert some info here

So please try again and report how its going.

Regards,
Joerg
 
Apologies if it's something obvious, I'm pretty new to Linux, but despite running the command to check dependencies on gt7dashboard and ensuring Bokeh is installed, double clicking run.sh simply appears to do nothing while running the "GT7_PLAYSTATION_IP=myiphere bokeh serve ." command gives the error "bokeh: command not found". With it installed, I'm not sure what I'm missing.

EDIT: I solved that problem, after reinstalling Bokeh I learned it wasn't installing to a location in PATH. Now I need to figure out what to do about the port being in use.

EDIT2: Solved that, now it seems Bokeh started and then... nothing.

EDIT3: ...Oh. My mistake. I need to learn to read better. It doesn't open a window or anything, I open it in my browser.

All is well. I'll leave this here so someone else may learn from my mistakes.

EDIT4: ... Learn to be 100% sure before saying all is well. Now it isn't getting any data from GT7.
Is the light bulb green or red? What does the log say?

Thank you for solving most of your problems alone :)
 
Last edited:
Is the light bulb green or red? What does the log say?

Thank you for solving most of your problems alone :)
Red. Eziodash was working shortly before setting this up, so I assume it's an issue on the side of my PC.

Code:
2023-08-17 02:59:22,657 Starting Bokeh server version 3.1.1 (running on Tornado 6.3.3)
2023-08-17 02:59:22,814 User authentication hooks NOT provided (default user enabled)
2023-08-17 02:59:22,816 Bokeh app running at: http://localhost:5006/gt7dashboard-1.1
2023-08-17 02:59:22,816 Starting Bokeh server with process id: 241827
2023-08-17 02:59:24,907 200 GET /gt7dashboard-1.1 (127.0.0.1) 628.45ms
2023-08-17 02:59:25,014 200 GET /favicon.ico (127.0.0.1) 0.25ms
2023-08-17 02:59:25,030 101 GET /gt7dashboard-1.1/ws (127.0.0.1) 0.48ms
2023-08-17 02:59:25,030 WebSocket connection opened
2023-08-17 02:59:25,030 ServerConnection created
 
Now it isn't getting any data from GT7.
Iam not a linux Desktop user.... but is there is a Firewall active and blocking the data from the playstation to your linux? Because a non standard port is used it may be blocked? But thats just guessing.

Regards,
Joerg
 
Last edited:
Iam not a linux Desktop user.... but if there is a Firewall active and blocking the data from the playstation to your linux? Because a non standard port is used it may be blocked? But thats just guessing.

Regards,
Joerg
The only firewall settings I know of are disabled.
1692256931584.png
 
Hello everyone!
First of all I'd like to thank to all telemetry program developers around here in this forum! I use gt7dashboard in a W10 laptop with docker compiler and works like an absolute treat!

I'm writing here, namely to @snimat, about whereas there will be an update to the gt7dashboard. I noticed in the gt7dashboard that there isn't available a gearing graph like there was in GT6 in the native telemetry menu and I was wondering an update on gt7 dashboard including that improvement and also the adition of a g-force polar graph.

This idea came to my mind this weekend while was joyriding through the Tokyo Expressway loop, with the BMW Z4 GT3 car in circuit experiences. I noticed that sometimes i could the curve that goes through the minitunnel in 5th, othertimes in 6th gear, depending on my braking zone and pressure. From an in-depth analysis point of view the gearing graph is a must have :)

Nonetheless I still find gt7dashboard a very well structured program. It is a very fine workpiece that I found myself lucky to experience for lap time analysing, and for free!

Kind regards!
 
Back