Demonstration of native data logging in Porsche via EXLAP
#1
Demonstration of native data logging in Porsche via EXLAP
I have finished a demonstration of how to interface with the EXLAP protocol that is present in Porsche and many Volkswagon branded cars.
EXLAP is a telemetry service in the car which you can subscribe to various data feeds. This is the same service that the Porsche Track Precision Pro application uses for it's telemetry. What makes EXLAP interesting is it does not require a physical connection to the car CANbus, it can be done over wireless, which makes it a good data source for use from an existing data logger, tablet or phone.
https://github.com/edub0/EXLAP
From a short data log I saw some neat things
```
Events Sent - Event Type
6448 "longitudinalAcceleration"> -
6448 "lateralAcceleration"> -
6448 "engineSpeed"> -
6448 "dayMilage_HP"> - ?
6448 "dayMilage"> - ?
6448 "chassisUndersteering"> -
6448 "chassisOversteering"> -
6448 "brakePressure"> -
6448 "absChargingAirPressure">
6447 "wheelAngle"> -
6447 "relAllWheelDriveTorque">
6445 "yawRate">
6445 "vehicleSpeed"> -
6443 "espTyreVelocities"> -
6442 "acceleratorPosition"> -
3237 "navPosition_HP">
650 "vehicleTime">
648 "ExAc_Resources"> -
621 "Nav_GeoPosition">
621 "Nav_CurrentPosition">
621 "Nav_Altitude">
276 "gearboxOilTemperature"> -
276 "espPassiveSensing"> -
276 "espLamp">
276 "currentGear"> -
```
Some of the data I want to look into more are
https://github.com/edub0/EXLAP/blob/...p_cmds.py#L841
def Sub_espTyreVelocities():
"""
Update Rate: 10Hz
Indicates individual wheel speed. Must be based on expected rollout. Unit of measure Kmph
<Dat timeStamp="2000-01-31T13:14:28.698000-7:00" url="espTyreVelocities">
<Abs name="frontLeft" val="95.2"/>
<Abs name="frontRight" val="95.2"/>
<Abs name="rearLeft" val="96.80000000000001"/>
<Abs name="rearRight" val="96.5"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/...p_cmds.py#L999
def Sub_espPassiveSensing():
"""
Update Rate: As needed
Electronic Stability Control - unconfirmed
<Dat timeStamp="2000-01-31T13:23:48.381000-7:00" url="espPassiveSensing">
<Act name="isPassiveSensing" val="false"/>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1062
def Sub_brakePressure():
"""
Update Rate: 10Hz
Brake pressure in psi
<Dat timeStamp="2000-01-31T13:14:02.088000-7:00" url="brakePressure">
<Abs name="brakePressure" val="17.7"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1296
def Sub_vehicleSpeed():
"""
Update Rate: 10Hz
Vehicle speed as indicated in driver dashboard. unknown 'state' purpose.
<Dat timeStamp="2000-01-31T13:14:00.388000-7:00" url="vehicleSpeed">
<Abs name="speed" val="19"/>
<Enm name="unit" val="mph"/>
<Enm name="state" val="valid"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1492
def Sub_chassisOversteering():
"""
Update Rate: 10Hz
Likely indicates oversteer condition based off wheel velocities
<Dat timeStamp="2000-01-31T13:23:38.280000-7:00" url="chassisOversteering">
<Rel name="oversteering" val="0"/>
</Dat>
"""
Ultimately, I would like to export this data for use with other data logging systems. While the most active data sources only seem to be 10Hz, that isn't awful to enhance other applications telemetry and without requiring a physical tap into the CANbus.
EXLAP is a telemetry service in the car which you can subscribe to various data feeds. This is the same service that the Porsche Track Precision Pro application uses for it's telemetry. What makes EXLAP interesting is it does not require a physical connection to the car CANbus, it can be done over wireless, which makes it a good data source for use from an existing data logger, tablet or phone.
https://github.com/edub0/EXLAP
From a short data log I saw some neat things
```
Events Sent - Event Type
6448 "longitudinalAcceleration"> -
6448 "lateralAcceleration"> -
6448 "engineSpeed"> -
6448 "dayMilage_HP"> - ?
6448 "dayMilage"> - ?
6448 "chassisUndersteering"> -
6448 "chassisOversteering"> -
6448 "brakePressure"> -
6448 "absChargingAirPressure">
6447 "wheelAngle"> -
6447 "relAllWheelDriveTorque">
6445 "yawRate">
6445 "vehicleSpeed"> -
6443 "espTyreVelocities"> -
6442 "acceleratorPosition"> -
3237 "navPosition_HP">
650 "vehicleTime">
648 "ExAc_Resources"> -
621 "Nav_GeoPosition">
621 "Nav_CurrentPosition">
621 "Nav_Altitude">
276 "gearboxOilTemperature"> -
276 "espPassiveSensing"> -
276 "espLamp">
276 "currentGear"> -
```
Some of the data I want to look into more are
https://github.com/edub0/EXLAP/blob/...p_cmds.py#L841
def Sub_espTyreVelocities():
"""
Update Rate: 10Hz
Indicates individual wheel speed. Must be based on expected rollout. Unit of measure Kmph
<Dat timeStamp="2000-01-31T13:14:28.698000-7:00" url="espTyreVelocities">
<Abs name="frontLeft" val="95.2"/>
<Abs name="frontRight" val="95.2"/>
<Abs name="rearLeft" val="96.80000000000001"/>
<Abs name="rearRight" val="96.5"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/...p_cmds.py#L999
def Sub_espPassiveSensing():
"""
Update Rate: As needed
Electronic Stability Control - unconfirmed
<Dat timeStamp="2000-01-31T13:23:48.381000-7:00" url="espPassiveSensing">
<Act name="isPassiveSensing" val="false"/>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1062
def Sub_brakePressure():
"""
Update Rate: 10Hz
Brake pressure in psi
<Dat timeStamp="2000-01-31T13:14:02.088000-7:00" url="brakePressure">
<Abs name="brakePressure" val="17.7"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1296
def Sub_vehicleSpeed():
"""
Update Rate: 10Hz
Vehicle speed as indicated in driver dashboard. unknown 'state' purpose.
<Dat timeStamp="2000-01-31T13:14:00.388000-7:00" url="vehicleSpeed">
<Abs name="speed" val="19"/>
<Enm name="unit" val="mph"/>
<Enm name="state" val="valid"/>
</Dat>
"""
https://github.com/edub0/EXLAP/blob/..._cmds.py#L1492
def Sub_chassisOversteering():
"""
Update Rate: 10Hz
Likely indicates oversteer condition based off wheel velocities
<Dat timeStamp="2000-01-31T13:23:38.280000-7:00" url="chassisOversteering">
<Rel name="oversteering" val="0"/>
</Dat>
"""
Ultimately, I would like to export this data for use with other data logging systems. While the most active data sources only seem to be 10Hz, that isn't awful to enhance other applications telemetry and without requiring a physical tap into the CANbus.
The following users liked this post:
malloc (06-04-2023)
#3
Rennlist
Basic Site Sponsor
Basic Site Sponsor
Joined: Jun 2008
Posts: 19,273
Likes: 3,473
From: Durham, NC and Virginia International Raceway
Cool!
__________________
-Peter Krause
www.peterkrause.net
www.gofasternow.com
"Combining the Art and Science of Driving Fast!"
Specializing in Professional, Private Driver Performance Evaluation and Optimization
Consultation Available Remotely and at VIRginia International Raceway
-Peter Krause
www.peterkrause.net
www.gofasternow.com
"Combining the Art and Science of Driving Fast!"
Specializing in Professional, Private Driver Performance Evaluation and Optimization
Consultation Available Remotely and at VIRginia International Raceway
#5
I haven't seen a good list, but Porsche says 911 and 718's so I would assume at least 2020 cars and up.
Porsche posted about the track precision app as early as 2017 on Facebook, so maybe some cars from that era have it.
The earliest I have seen exlap presented was 2017, but that's version 1.3 and change log errata goes back two more versions. It could be in earlier cars maybe?
Porsche posted about the track precision app as early as 2017 on Facebook, so maybe some cars from that era have it.
The earliest I have seen exlap presented was 2017, but that's version 1.3 and change log errata goes back two more versions. It could be in earlier cars maybe?
Last edited by edub; 03-19-2023 at 07:28 AM.
#7
The script doesn't format output into CSV right now. It just puts a exlap.txt file into the same directory as where the script runs from, with output formatted as XML that the EXLAP API natively produces (https://github.com/edub0/EXLAP/blob/...LL170C4-L170C4)
ie.
<Dat timeStamp="2000-01-31T13:14:28.698000-7:00" url="espTyreVelocities">
<Abs name="frontLeft" val="95.2"/>
<Abs name="frontRight" val="95.2"/>
<Abs name="rearLeft" val="96.80000000000001"/>
<Abs name="rearRight" val="96.5"/>
</Dat>
Parsing the response is possible using the export and parse functions that dsgenerate.py created after reading the XML schema (https://github.com/edub0/EXLAP/blob/...xlapv2_subs.py).
Without understanding how the data was going to be used in the multitude of telemetry interpreters out there, extending logs to different formats wasn't in scope for this project. I understand its annoying not to have a turn key solution to get data natively, but this was done to demonstrate how to interface with the API and readily extensible.
There are some softwares which utilize EXLAP natively, incorporating it into a telemetry presentation and lap session format. CircuitStorm for example
Trending Topics
#8
That's fine, as long as the data is output in a human readable format in a file, that's perfect.
Can you share the command line to run this and would the "password" be the same or do I need to do something unique to authenticate to my 911?
Can you share the command line to run this and would the "password" be the same or do I need to do something unique to authenticate to my 911?
#9
You'll need to check if your car has the same subnet as the static IP found in the script, create a creds.py file with (password = xxxx and user = xxxx) in it and store that in the path for the script to import. I can't publish any credentials for the project either which limits the scripts utility to simply checking if EXLAP is available and responding.
A raw data feed of 10Hz sources would also be a relatively big haystack to parse manually. It really needs to be correlated into a timeline and presentation layer to analyze.
Sorry, this feels terrible saying but I can't support individual use cases for what is a very rough tool.
Check out https://www.petreldata.com/product/c...r-for-android/ - this gives 3 free laps per session and may capture something specific that you're interested in if your data logging needs are light. It also uses EXLAP as a data source.
#10
My question was not clear. I saw where to add the IP, that's not an issue.
My question was more about the user/pass, i wanted to know if you used the ones floating around in the web (e.g. user:RSE_3...) that authenticate to access the other signals or had another method.
Btw have you looked at the Android app EXLAP reader on GitHub: https://github.com/martoreto/aauto-vex-vag ?
My question was more about the user/pass, i wanted to know if you used the ones floating around in the web (e.g. user:RSE_3...) that authenticate to access the other signals or had another method.
Btw have you looked at the Android app EXLAP reader on GitHub: https://github.com/martoreto/aauto-vex-vag ?
Last edited by MaddGTS; 05-26-2023 at 06:11 PM.
#11
I have seen that one https://github.com/martoreto/aauto-v...r.java#L63-L73
I don't see the known creds for Porsche in there, afaik the cleartext username PHP-D22200 wasn't on google. But if it shows up on google or some paste site then probably worth trying.
I don't see the known creds for Porsche in there, afaik the cleartext username PHP-D22200 wasn't on google. But if it shows up on google or some paste site then probably worth trying.
The following users liked this post:
edub (05-31-2023)
#13
Are there useful and/or interesting channel/signals with data here that cannot also be found in the VBO exported data from the Precision Track App??
In your original post, you mention wanting as a goal to use the data with other logging systems -- do you mean you want to examine data with other logging systems analysis apps (so i2pro, Circuit Tools, Race Studio 3, Atlas, etc)??
Depending on what you are trying to do and what you want to see by way of signals, the VBO format is already a documented text file that isn't that hard to morph into formats that some of these other software tools can ingest.
In your original post, you mention wanting as a goal to use the data with other logging systems -- do you mean you want to examine data with other logging systems analysis apps (so i2pro, Circuit Tools, Race Studio 3, Atlas, etc)??
Depending on what you are trying to do and what you want to see by way of signals, the VBO format is already a documented text file that isn't that hard to morph into formats that some of these other software tools can ingest.
The following users liked this post:
edub (06-04-2023)
#14
This method exposes more signals, for example, I don't believe the Porsche Track app exposes gearbox oil temperature, individual wheel speed, torque split (AWD only), or yaw rate.
I can confirm that edub's code works on a 991.2.
I can confirm that edub's code works on a 991.2.