JPI EDM log file converter

xander75

Pre-Flight
Joined
Jan 21, 2022
Messages
93
Display Name

Display name:
xander75
hi all,
I have this EDM 900 that has been an amazing instrument during flight. Many times I pull all the data log records for post flight analysis, but it either requires a windows based EZtrends (provided by JPI) or one can use the online savvyanalysis webpage.

The EZtrends while nice I don't believe is further developed/expanded on. It is windows based.
The savvyanalysis, I noticed there are quite some bugs with it. You could look at it from a visual perspective, but you can't rely the timebase or actual values. I tried to give that input and some solutions that were left unresponded. So it was time to DIY :)

I really wanted a utility to convert the log file pulled from the JPI into a CSV for my own plotting and analysis. I finally got to it and around it (thank you retirement :). It was several nights of coding fun staring at hex numbers and addresses. Gotta love it :)

Download a copy here

I was fortunate enough to get connected with the 2 most senior engineers at JPI (Derek and Tai and THANK you once again!), to exchange understanding of the files produced and how to dissect them. Even in the functional specification, of the call it original intent, the implementations didn't match what I actually found during development!
Anyways long story short is that I have now a rock solid utility for LNX, OSX and Windows that can parse the file, display the flight records it captured and allow you to export all parameters recorded from the EDM into a CSV with a user defined selection of what you'd like to capture in the CSV.
I cross compiled it for windows on a mac (mbp2) to an exe but I couldn't test it myself yet. The LNX and OSX versions are solidly tested.

USAGE:
- Execute the utility as is, it will bark an error that it is missing a file to process and show a help.

Normal usage would be: ("platform" is osx,exe,lnx)
1) invoke jpi_<platform> -d
to dump all the flight records it found in the file with their associated date and time as recorded by the EDM (in your timezone)
2) invoke jpi_<platform> -f <U_datedownloadedfromedm_.JPI -p <recordID from the first column, or call it record number>
to create a CSV record with the fields defined in the jpi.cfg file. If not specified a default set of columns/variables is produced.

if you like to see what the utility does during processing invoke it with:
jpi_<platform> -f <file> -p <recordID> -n 1 -x 3
this will process one data record (-n) from the requested recordID/flight (-p) with maximum debug detail (-x)

I am working with JPI once more to understand the timeline of the records, as while the record interval (6sec by default) would produce 10 records per minute, this does not seem to be the case always. There is a variable (SNAP) that seems to affect the record interval (you'll see it in the debugging). (this is also sw bug in the savvy webpage), besides time, besides actual values, it seems to be a business model to have you request analysis for a fee). With this tool and this community, you can do it yourself! :)

The utility would produce a CSV file for the flight you requested and you can process that with Excel or similar to produce whatever graph you want.
I am storing everything in a (mysql) database, Using a TSDB (timeseries database) like INFLUX, you can use grafana very easily and or google charts for display of whatever correlation I'd like to see.

Use cases:
- how does my MAP/RPM with fuel flow affect the EGT/CHT and have some ability to enhance my leaning procedures.
- Correlate OAT with CHT and EGT to see if there is (high density) altitude performance problems potentially.
- Detect spark plug issues early on (you'd see inverted CHT+/EGT- type of graphs for that cyl).
- Identify voltage (regulator) possible problems, a regulator or alternator on the way out
- Detecting OIL flow, temperature, pressure, leaks very early on.

One BIG BIG BIG thing to understand also, one of my concerns earlier on, was some parameters can show flat lines or some show small sawtooth behavior. I was wondering if I had a bad sensor or a problem with the engine. The thing is however that the EDM will only record _delta's_ AND not in every record either!
Its record implementation is almost like an old school audio CD delta sigma encoding. (Apparently this was done to save a few bytes like we still have 8k RAM or so). Different discussion :) It also sometimes doesn't record every variable for record (making it look flat).
Depending on what variable you're looking at this sawtooth is likely ok (eg fuel pressure is not constantly flat 21.1, it can be 19.9-21.2 something like that).

In this version the sum of data records is not yet indicative of the actual duration of the flight that I still want to enhance when I reverse engineer that part, right now at least it provides for solid data logging from your engine.

It also helps in adjusting your K-factor. Which to me is critical to balance and match the fuel quantity left in the wings, vs the fuel-flow/time of what is reported USED/REMAINING in your wings by the EDM. USED/REMAIN are independently calculated values. A next version will report an auto correct recommendation on the K factor also, which it looks like in my plane I need to adjust every so many flights.

Would welcome any inputs/requirements/suggestions you may have!

cheers!
xander
 
What exactly is it you are providing? What is jpi-osx exactly? Doesn't seem to run on my Mac. Oh, I just realized I'm ARM, and I bet you built it for intel.
 
What exactly is it you are providing? What is jpi-osx exactly? Doesn't seem to run on my Mac. Oh, I just realized I'm ARM, and I bet you built it for intel.
Oh the OSX version I built on apple silicon (M2). (so it should be ARM). I just noticed however that once downloaded you need to chmod +x it to make it executable and then the security and privacy settings may still prevent it from executing, but you can override that when it throws that exception in the privacy and security settings.
 
Oh the OSX version I built on apple silicon (M2). (so it should be ARM). I just noticed however that once downloaded you need to chmod +x it to make it executable and then the security and privacy settings may still prevent it from executing, but you can override that when it throws that exception in the privacy and security settings.
ok, running from command line worked fine.
 
ok, running from command line worked fine.
ah sweet awesome!! thanks for confirming!!

I think I should have mentioned this is a command line utility for a DOS, linux, osx, it is not a GUI or anything.
 
I get Exec Format Error from jpi_lnx when run on Ubuntu 20.04.6 LTS.

Any chance you can compile an intel version?
 
I get Exec Format Error from jpi_lnx when run on Ubuntu 20.04.6 LTS.

Any chance you can compile an intel version?
sorry I forgot about that! I have uploaded a lnx x86 cross compiled version (on a raspberry pi), couldn't test it, but if you can give it a twirl hopefully it did the trick! (it throws an exec format error on RPi (arm) so it should be good?! :)
xander
 
Do you plan on publishing source code?
 
Do you plan on publishing source code?
yah, when I have that timebase figured out, I'll have it on github when i'll open source forward. You want to contribute or just understanding the file formatting?

True value of this all is, in my belief, the analytics you can get from it. I intent to build a portal for that as well so we can share our graphs and ask questions and take learnings from it.
In an even more ideal world I'd like jpi to take in such rules to alert us pilots of experiences from others as you go/on the go.
Since I am not intending to make money of it, more like a community service, I am trying to leverage my old cloud buddies for a system they can lend and an some others for an XM/ADSB feed to send this through etc.
 
sorry I forgot about that! I have uploaded a lnx x86 cross compiled version (on a raspberry pi), couldn't test it, but if you can give it a twirl hopefully it did the trick! (it throws an exec format error on RPi (arm) so it should be good?! :)
xander

Okay, it runs now, but I’m only able to get a csv file with headers in it.

When I try d option I don’t get any csv file. I expected the entire file to be written out to a csv file?

I expect to see entries to be grouped by flight numbers?

I would suggest an “L” option to list flight numbers with dates in the file.
And then a n option to dump all records for a flight number to a csv file.
 
fair ask, let me work on that. and in fact I should have probably write a little how to guide. I will do that next as well.
to answer your Q directly, the -d option 'd'umps the flight records, since the datafile organizes its records sequentially it takes the (sequential) ID (first column) as input to identify which record you want to pull the csv for. Not the actual flightID (2nd column).

So my (original) intended use of operation is:
./jpi -f FILE -d
to get all the flight records and then next is:
./jpi -f FILE -p 1
that is the number 3 record of whatever the 'd'ump produced dissected into a csv.

the help shows a list of variables that the EDM can capture that you may want to display. you can add the fields space separated in a "jpi.cfg" file in the same directory as the executable that it will send to the CSV file.

-d:

pi@raspberrypi-otc:~/jpi $ ./jpi_lnx -f U231019A.JPI -d
JP Instruments datalog decoder version 2.0.2
Config file found, reading 'EGT1 EGT2 BLA EGT3 EGT4 CHT1 CHT2 CHT3 CHT4 SNAP VOLTS '
Token BLA is not found, skipping
Found tail number: '....... '
ID Number When RecordSize Size LocInFile
(0) 570 2023-03-19 at 11:12:25 12644 0
(1) 571 2023-03-19 at 14:07:16 26228 3163
(2) 572 2023-03-20 at 07:16:26 27236 97d6

-p:

pi@raspberrypi-otc:~/jpi $ ./jpi_lnx -f U231019A.JPI -p 1
JP Instruments datalog decoder version 2.0.2
Config file found, reading 'EGT1 EGT2 BLA EGT3 EGT4 CHT1 CHT2 CHT3 CHT4 SNAP VOLTS '
Token BLA is not found, skipping
Found tail number: '..... '
Record Interval is 6 seconds
(1) FL#571 2023-03-19 at 14:07:16 Size 26227
PHEW! all done... File U231019A_571.csv ready for your use!

Note that flight record number 1 matches flight ID 571, producing a file of xxx_571.csv in this case.


pi@raspberrypi-otc:~/jpi $ ls -lrt | grep 571
-rw-r--r-- 1 pi pi 47334 Oct 23 15:41 U231019A_571.csv

^^ new file created

pi@raspberrypi-otc:~/jpi $ cat U231019A_571.csv | egrep -A 2 "EG"
EGT1,EGT2,EGT3,EGT4,CHT1,CHT2,CHT3,CHT4,OILT,SNAP,OILPR,VOLTS,FF,MAP,RPMLO,
726,706,751,601,42,43,43,40,50,0,78,14.1,2.0,12.4,1328,
907,870,943,832,49,50,49,46,52,0,76,14.0,1.9,10.9,1195,

^^ 2 line output after header for display purposes

The jpi.cfg file in this example looks like this: (it adds the defaults to it as well).
pi@raspberrypi-otc:~/jpi $ cat jpi.cfg
EGT1 EGT2 BLA EGT3 EGT4 CHT1 CHT2 CHT3 CHT4 SNAP VOLTS

^^ since EGTx and CHTx are default already it adds SNAP and VOLTS to the output. While FuelFlow (FF), OIL Temp/Pressure, MAP and RPMLO are always captured already also.


In the config file, BLA is obviously merely a test that a spelling error or some sort occurred.
usable fields are: EGT1 EGT2 EGT3 EGT4 EGT5 EGT6 T1 T2 CHT1 CHT2 CHT3 CHT4 CHT5 CHT6 CLD OILT SNAP OILPR CDT IAT VOLTS OAT USD FF EGT7 EGT8 EGT9 CHT7 CHT8 CHT9 HP cb3rsvd cb4rsvd1 cb4rsvd2 cb4rsvd3 cb4rsvd4 cb4rsvd5 cb4rsvd6 cb4rsvd7 cb4rsvd8 MAP RPMLO RPMHI cb5rsvd HYD2 HYD1 FF2 USD2 EGT1HI EGT2HI EGT3HI EGT4HI EGT5HI EGT6HI TIT1HI TIT2HI EGT7HI EGT8HI EGT9HI cb7r1 cb7r2 cb7r3 cb7r4 cb7r5 AMPS1 VOLTS2 AMPS2 RFLVL LFLVL FP cb8r LFLVLAUX NG NP TORQ ITT NGHI NPHI HOBSLO HOBSHI RECTIME LONGHI LATHI ALT RFLVLAUX GSPD LONG LAT

Most of them speak for themselves, if a legend is needed, can share that also if needed.

cb_x_r fields represent "controlblock x, reserved" and serve no purpose for displaying.

Since all fields are 8 bits in nature, the highest they can up or down a (prior) value is by 255. For that purpose ...HI fields are used in case a higher change is necessary in a record update. These xHI fields merely feed their info directly into the original field (eg EGT1 or RPMLO) in the utility. Therefore you don't need to export them per-se.

I probably should also note that this utility will work for 4 or 6 cylinder engines as well as EDM types 7xx/8xx and 9xx. And more specifically when:
EDM9xx:
900: version >= 1.07.1000
930/960: version >= 472
EDM 730/830 version >= 3.30

this because starting these versions of that sw, the flight header block and the record header use the latest dynamic format.
while I haven't tested it, older versions, would likely STILL work with this utility since it is basically bit and position counting.

With what I have now, I can easily add in these flight and record header formats if needed. Would need your data file and version sw and type of the unit you have and happy to update the tool with it.

xander
 
When I try d option I don’t get any csv file. I expected the entire file to be written out to a csv file?

Possibly good to have to create a set of FILE_id.csv files from the full log. makes it even more simple. will work on that also!
Version 3 coming :)
 
Possibly good to have to create a set of FILE_id.csv files from the full log. makes it even more simple. will work on that also!
Version 3 coming :)

Great, also I noticed Alt are zeros. GSPD, HOBBS are not found. I have a 900 just like you.
 
Last edited:
Great, also I noticed Alt are zeros. GSPD, HOBBS are not found. I have a 900 just like you.
ah yeah in my case also, some fields like LAT/LONG, groundspeed and altitude require a GPS rs232 connection that in my install wasn't done. You probably have a similar configuration/wiring? I am considering wiring that up as those fields could nicely complement RPM/MAP for instance for review/analysis.
The HOBS is indeed malfunctioning. I believe there is a firmware bug there. Although I see little value for that. HOBS tends to be only useful for a rental, and they generally have a oil pressure based counter anyway. (although it could fix the timebase problem I am currently de-ciphering :))
 
ah yeah in my case also, some fields like LAT/LONG, groundspeed and altitude require a GPS rs232 connection that in my install wasn't done. You probably have a similar configuration/wiring? I am considering wiring that up as those fields could nicely complement RPM/MAP for instance for review/analysis.
The HOBS is indeed malfunctioning. I believe there is a firmware bug there. Although I see little value for that. HOBS tends to be only useful for a rental, and they generally have a oil pressure based counter anyway. (although it could fix the timebase problem I am currently de-ciphering :))

Mine is wired up, savvy displays the correct values for the GPS values.

Savvy show the tach value when I select Hobbs.
 
Mine is wired up, savvy displays the correct values for the GPS values.

Savvy show the tach value when I select Hobbs.
that's strange! if the data values are there, the utility should index and update them. as my install doesn't have the gps, could you share/pm an EDM data file with me so I can use that to verify what's going on? If you enable the debugging (eg -x 3) you would see a lot of messages like this:

<snip>
updating..64=AMPS1 with -214, now is 26
updating..69=FP with +16, now is 256
updating..71=LFLVLAUX with +0, now is 0
updating..78=HOBSLO with +0, now is 0
updating..83=ALT with +0, now is 0
updating..84=RFLVLAUX with +0, now is 0
updating..85=GSPD with +0, now is 0
updating..86=LONG with +0, now is 0
updating..87=LAT with +0, now is 0

As you can see in my case, the LAT/LONG/GSPD/ALT is recorded, but it is always 0 and that matches the actual data fields.

Expecting 33 of databytes
e5 d1 fe 68 c6 c5 c5 c8 f0 be f0 a2 63 ec f0 dc "...h........c..."
0f 74 3c 04 01 01 01 01 d6 10 00 00 00 00 00 00 ".t<............."
00
(10hex =16dec for the FP, then 7 remaining fields 0) I'd like to see what yours looks like.
xander
 
hi all,
I have this EDM 900 that has been an amazing instrument during flight. Many times I pull all the data log records for post flight analysis, but it either requires a windows based EZtrends (provided by JPI) or one can use the online savvyanalysis webpage.

The EZtrends while nice I don't believe is further developed/expanded on. It is windows based.
The savvyanalysis, I noticed there are quite some bugs with it. You could look at it from a visual perspective, but you can't rely the timebase or actual values. I tried to give that input and some solutions that were left unresponded. So it was time to DIY :)

I really wanted a utility to convert the log file pulled from the JPI into a CSV for my own plotting and analysis. I finally got to it and around it (thank you retirement :). It was several nights of coding fun staring at hex numbers and addresses. Gotta love it :)

Download a copy here

I was fortunate enough to get connected with the 2 most senior engineers at JPI (Derek and Tai and THANK you once again!), to exchange understanding of the files produced and how to dissect them. Even in the functional specification, of the call it original intent, the implementations didn't match what I actually found during development!
Anyways long story short is that I have now a rock solid utility for LNX, OSX and Windows that can parse the file, display the flight records it captured and allow you to export all parameters recorded from the EDM into a CSV with a user defined selection of what you'd like to capture in the CSV.
I cross compiled it for windows on a mac (mbp2) to an exe but I couldn't test it myself yet. The LNX and OSX versions are solidly tested.

USAGE:
- Execute the utility as is, it will bark an error that it is missing a file to process and show a help.

Normal usage would be: ("platform" is osx,exe,lnx)
1) invoke jpi_<platform> -d
to dump all the flight records it found in the file with their associated date and time as recorded by the EDM (in your timezone)
2) invoke jpi_<platform> -f <U_datedownloadedfromedm_.JPI -p <recordID from the first column, or call it record number>
to create a CSV record with the fields defined in the jpi.cfg file. If not specified a default set of columns/variables is produced.

if you like to see what the utility does during processing invoke it with:
jpi_<platform> -f <file> -p <recordID> -n 1 -x 3
this will process one data record (-n) from the requested recordID/flight (-p) with maximum debug detail (-x)

I am working with JPI once more to understand the timeline of the records, as while the record interval (6sec by default) would produce 10 records per minute, this does not seem to be the case always. There is a variable (SNAP) that seems to affect the record interval (you'll see it in the debugging). (this is also sw bug in the savvy webpage), besides time, besides actual values, it seems to be a business model to have you request analysis for a fee). With this tool and this community, you can do it yourself! :)

The utility would produce a CSV file for the flight you requested and you can process that with Excel or similar to produce whatever graph you want.
I am storing everything in a (mysql) database, Using a TSDB (timeseries database) like INFLUX, you can use grafana very easily and or google charts for display of whatever correlation I'd like to see.

Use cases:
- how does my MAP/RPM with fuel flow affect the EGT/CHT and have some ability to enhance my leaning procedures.
- Correlate OAT with CHT and EGT to see if there is (high density) altitude performance problems potentially.
- Detect spark plug issues early on (you'd see inverted CHT+/EGT- type of graphs for that cyl).
- Identify voltage (regulator) possible problems, a regulator or alternator on the way out
- Detecting OIL flow, temperature, pressure, leaks very early on.

One BIG BIG BIG thing to understand also, one of my concerns earlier on, was some parameters can show flat lines or some show small sawtooth behavior. I was wondering if I had a bad sensor or a problem with the engine. The thing is however that the EDM will only record _delta's_ AND not in every record either!
Its record implementation is almost like an old school audio CD delta sigma encoding. (Apparently this was done to save a few bytes like we still have 8k RAM or so). Different discussion :) It also sometimes doesn't record every variable for record (making it look flat).
Depending on what variable you're looking at this sawtooth is likely ok (eg fuel pressure is not constantly flat 21.1, it can be 19.9-21.2 something like that).

In this version the sum of data records is not yet indicative of the actual duration of the flight that I still want to enhance when I reverse engineer that part, right now at least it provides for solid data logging from your engine.

It also helps in adjusting your K-factor. Which to me is critical to balance and match the fuel quantity left in the wings, vs the fuel-flow/time of what is reported USED/REMAINING in your wings by the EDM. USED/REMAIN are independently calculated values. A next version will report an auto correct recommendation on the K factor also, which it looks like in my plane I need to adjust every so many flights.

Would welcome any inputs/requirements/suggestions you may have!

cheers!
xander
Fantastic! I've talked with Derek over the years about 1) a Mac version and 2) an update. As he put it, there are higher priorities, altho they really want an option to the Windows system. I even went out and bought a used Dell ($40) for the sole purpose of running EzTrends!
 
@xander75

I can't attach the log files but if you send me your email (private msg if you want) I will send it to your directly/
Here's an excerpt:

Expecting 15 of databytes
03 04 04 02 01 01 01 01 01 02 0b 00 01 00 03 "..............."
updating..0=EGT1 with +3, now is 1088
updating..1=EGT2 with +4, now is 1143
updating..2=EGT3 with -4, now is 1141
updating..3=EGT4 with -2, now is 1272
updating..9=CHT2 with +1, now is 254
updating..10=CHT3 with +1, now is 281
updating..11=CHT4 with -1, now is 260
updating..15=OILT with +1, now is 123
updating..21=OAT with -1, now is 18
updating..41=RPMLO with +2, now is 1076
updating..69=FP with +1
updating..71=LFLVLAUX with +0, now is 0
updating..83=ALT with +1, now is -215
updating..84=RFLVLAUX with +0, now is 0
updating..85=GSPD with -3, now is -240
Orig Addr: 0x7b9690, prevRec 0x7bad2e Now at 0x7bad4f
 
Fantastic! I've talked with Derek over the years about 1) a Mac version and 2) an update. As he put it, there are higher priorities, altho they really want an option to the Windows system. I even went out and bought a used Dell ($40) for the sole purpose of running EzTrends!
yeah he is a solid guy! and I totally understand their priorities, but this post-analysis is so useful for us!
I did a windows VM, microsoft has developer virtual machine instances that one can use for free, that is an option too, but yeah this what we have now provides for a bit more flexibility :)
 
I am having difficulties running under windows 10. Tried both download versions. Windows did not like either one. Can try osx....
 
I am having difficulties running under windows 10. Tried both download versions. Windows did not like either one. Can try osx....
can you share a screenshot of some difficulties you are facing? I cross compiled the windows exe through osx/m2 but didnt get a chance to test it. It's probably my bad (laziness) and should fire up a windows dev machine with visual studio to do it correctly and post it as such... But maybe you can help me with those screenshots orReply visuals you are facing and maybe I can cook up a solution for it meanwhile...
It's been so useful for me to be able to plot any graphs I like and I'd love you to experience the same!
cheers!
xander
 
This is really cool stuff, and you are to be commended for your accomplishments and assistance to those that use JPI (I have the EDM-760). But upon reading and assimilating all of these posts, I really have to ask the question, “Where is JPI?”. It’s like they are MIA. Post processing flight data is the most valuable aspect of the EDM. It is where the learning and insights come into play. And no, I don’t want to pay for another service (ie, Savvy) to do this for me. I prefer to examine the data myself.
When they say they have other priotities, they are telling me, as a customer, that I am NOT one of their priorities, which is a bad business decision. At the end of the day, we are all “time limited”, and my preference is to go to the airport, kick some tires and light fires, get the big lunging cylinders warmed up (no rotax for me), and put some distance between me and terra firma. Then upon landing, I’d like to be able to plug a memory stick into the JPI access port, and take the data home. Plug the memory stick into my PC, and have all the data readily accessible using a simple, intuitive, graphical user interface. Where I can easily explore the data, correlations, and perhaps underlying “connections” that are not visible in the data plots. In other words, my priority for my time is flying, with easy to use engine analysis being a secondary priority, that doesn’t involve command level coding, followed by ingestion into visualization software, followed by ingestion into correlation analysis software, in order to gain insights. Too much time and hassle.
Again, no disrespect to xander. Job well done. It seems to me that the best move JPI could make is to hire, or contract with, xander, to develop a seamless, easy to use, GUI system, to handle their data files. And make this system available to customers. Disclosure: I keep an old Dell with Eztrends - but it is antiquated and limited. When I updated a second panel, I went with a competitor EDM mainly because of this lack of customer support by JPI.
 
This is really cool stuff, and you are to be commended for your accomplishments and assistance to those that use JPI (I have the EDM-760). But upon reading and assimilating all of these posts, I really have to ask the question, “Where is JPI?”. It’s like they are MIA. <snip>
hey @wsquare ah thank you for the compliment :) you know when I first contacted them, I got the reply from their 'customer service' rep (jack) to basically bugger off as this was not a priority and I should fire up a virtual machine or get a windows comp (like you did:). I went away with my tail between my legs, but after a few days I decided that I could not let this go and, like you said, should be a priority for precisely the point you make, post flight evaluation. Having data available to illustrate a point when asking a question here for instance is immensely important as opposed to saying I feel I have low fuel pressure, to be able to say my fuel pressure looks like this and what do you think. And paying for a service like savvy, well what makes them the end all be all. I would pay for a PoA account to be able to ask and pipe into the knowledge shared here btw! :)

After I escalated the manner to the highest up I could find and get in touch with (their CFO), I got connected with their lead developers who gave me some pointers to get started. In the end it is mostly functional, except for the timebase (their appear to be certain records that accelerate the timebase) and the GPS LAT/LONG encoding I haven't figured out (float, mask etc).

After being connected with those folks I can feel their desire to make a good product, but they are not pilots, I did explain to them that if you want to build something you have to understand how it is used and what it makes useful. The sale creates a first customer, but the support creates the returning customer and provides for old school "influencers". I couldn't convince them to make it a priority. And one of my life sayings is either one contributes to the problem or provides assistance to the solution.

For which I did this and the next thing will be to integrate this with an influx database ability to store the records and using grafana for displaying. While this csv/text version allows for some EXCEL processing, having a grafana/influx combo definitely makes it 2020's worth :)

ps what device did you replace the EDM with out of curiosity?

Coming soon! :)
cheers!
xander
 
xander, here is what I see when I try to run the V3 program on Windows 10.

1701118751740.png

This is trying to run

1701118795546.png

Thanks,
Bryan
 
Any progress on getting the code into GitHub? I'd contribute to this.

For those struggling with EZTrends on modern PCs, note that you can run it on Windows 10/11 by setting the compatibility mode on the .exe to Windows XP and running it As Administrator.
 
Savvy app for analyzing JPI data is free by the way- you only pay if you want them to analyze the graph for you. But appreciate the home-grown effort. I always wanted a program that was smart enough to analyze trends between flights- say for example CHT and EGT on each cylinder on climb out, cruise, and descent over multiple flights, relative to MAP, RPM, etc so I could identify trends to watch for problems. The individual flight data is nice, but real engine problems show up over multiple flights, if not months or years.
 
Savvy app for analyzing JPI data is free by the way- you only pay if you want them to analyze the graph for you. But appreciate the home-grown effort. I always wanted a program that was smart enough to analyze trends between flights- say for example CHT and EGT on each cylinder on climb out, cruise, and descent over multiple flights, relative to MAP, RPM, etc so I could identify trends to watch for problems. The individual flight data is nice, but real engine problems show up over multiple flights, if not months or years.
The most basic features are free. Anything useful is behind a subscription paywall. I'd love to support a project that wasn't trying to squeeze another dollar out of the pilot community for once.
 
The most basic features are free. Anything useful is behind a subscription paywall. I'd love to support a project that wasn't trying to squeeze another dollar out of the pilot community for once.
I pay for and have used their prebuy service which is nice as it has a helpful checklist of things to look for and they help find a shop in remote areas for you. I have also used their AOG service which was outstanding as it found a cheaper AP to replace an alternator belt on a Saturday instead of waiting until the FBO affiliate shop opened on Monday. And in aviation terms, what you get is relatively inexpensive.
 
Thanks for pulling this together. Very helpful and similarly I'm looking to parse these files myself via some automation and then do my own analysis. I have the free Savvy and I have the EZTrends software, but I'm looking to create my own automation workflow that will process these files and dump the data into a database. I'm doing similar for other log files (e.g., from my Garmin equipment that records other parameters) although thankfully that just exports CSVs to it's easy.

I'm able to get it sort of working for my 6 cylinder engine. With the 'defaults' (without specifying a jpi.cfg file) the data seems to export into the CSV OK but that's only for the first 4 cylinders EGT/CHT. If I add cylinder 5 and 6 I see some odd behavior like:

1) For EGT5 and EGT6 it seems the values are 1000 degrees off. If I add 1000 to the numbers that are exported that seems like mostly line up with the other EGTs.

2) For CHT5 and CHT6 The first 20-30 records will have a very high number (e.g., 4294967248) and then it will start down at 0 and go up from there. It's almost as if it's taking the first 20-30 readings to get established and then after that it's showing the delta between the previous reading and this one (which is how I understand the code works). For some of the other fields (e.g., ALT) I see somewhat similar behavior, or the readings start out OK and then they just jump to a very high number (e.g., 4294967248).

FWIW if I upload the same .JPI files to the Savvy free site they seem to be decoded correctly without the above issues appearing in the data.

Any ideas? Per above posts would also be great if you'd share the code on GitHub as it sounds like you have some other techy pilots that might be able to help.
 
Thanks for pulling this together. Very helpful and similarly I'm looking to parse these files myself via some automation and then do my own analysis. I have the free Savvy and I have the EZTrends software, but I'm looking to create my own automation workflow that will process these files and dump the data into a database. I'm doing similar for other log files (e.g., from my Garmin equipment that records other parameters) although thankfully that just exports CSVs to it's easy.

I'm able to get it sort of working for my 6 cylinder engine. With the 'defaults' (without specifying a jpi.cfg file) the data seems to export into the CSV OK but that's only for the first 4 cylinders EGT/CHT. If I add cylinder 5 and 6 I see some odd behavior like:

1) For EGT5 and EGT6 it seems the values are 1000 degrees off. If I add 1000 to the numbers that are exported that seems like mostly line up with the other EGTs.

2) For CHT5 and CHT6 The first 20-30 records will have a very high number (e.g., 4294967248) and then it will start down at 0 and go up from there. It's almost as if it's taking the first 20-30 readings to get established and then after that it's showing the delta between the previous reading and this one (which is how I understand the code works). For some of the other fields (e.g., ALT) I see somewhat similar behavior, or the readings start out OK and then they just jump to a very high number (e.g., 4294967248).

FWIW if I upload the same .JPI files to the Savvy free site they seem to be decoded correctly without the above issues appearing in the data.

Any ideas? Per above posts would also be great if you'd share the code on GitHub as it sounds like you have some other techy pilots that might be able to help.
I had similar results with data from my 6-cylinder engine using an EDM-830. EGT5 and EGT6 are somewhere around 768 degrees low. The CHT5 and CHT6 numbers start out very large and then drop to very low numbers and never get close to actual readings.

I also am interested in having your code on GitHub and would be willing to help improve it.
 
I just tried to download, no luck. Here's what I see when I go to your github.
 

Attachments

  • jpi.jpg
    jpi.jpg
    104 KB · Views: 15
I tried to run the windows version and get the error:Screenshot 2024-05-29 152247.png

As opposed to asking for a 64-bit version, I thought it might be beneficial to the group if the application were converted from C version to Python, thereby reducing the number of versions supported. I'd be happy to port the application from C to Python, if you would share the source with me. I'm a software engineer with 40 years of development experience in multiple languages and would be glad to develop it open-source.

My ultimate goal is to develop a tool that will export my JPI, EDM900 flight data into my Garmin Pilot Logbook, but the initial step is just to convert the multi-flight JPI file into a multi-sheet excel file.

Let me know.
Tanery
 
Howdy,

Following up with other folks, I can't get the app to operate in Windows 11, either. I would like to use it. The Ex Trends software is awful.

-Chris
 
hi @Wize, to give an update on the windows situation, I have been trying to work with my contacts there to see if there is some way to bypass this "security" situation. because I am not a registered developer for Win, and the sw has not been validated, this is the situation one runs in. For good or bad, it would cost me a load to have the sw validated so that M$ can put their stamp on it for it to work without issues. I am not advocating to disable sw security etc, because there are folks out there that would highly benefit from people doing so. Anyways....

Some more good news then! I have built a docker image with linux that contains a web front end to upload a JPI file and a Grafana dash with prebuilt dashboards one could use to display whatever data there is in the JPI file.

How it works is you'd upload the JPI file to the virtual machine running in your docker container (windows, mac and effectively OS opaque), it dissects the info, inserts it into a MYSQL db and Grafana (my preferred choice of displaying timebased data) to display things like this:
Screenshot 2024-11-04 at 4.20.14 PM.png
Screenshot 2024-11-04 at 4.20.39 PM.png

As you can see I am heavy on lean of peak, and this gives me a perfect view with other displays (in the dash that the docker comes with btw) like fuel flow and horse power and CHT where I am on the power curve or whether I need to change etc.

I have not figured out a way to productize this in the sense how to make it more easier for non sw dev users (/non docker happy folks), but if you're ok with a docker image I can share a docker image fully baked or I can give you a descriptor file so you can build your own docker with that descriptor file and contents (the front end/webpage, grafana prebuilt dash's etc) (that descriptor would fully configure grafana, apache for web front end and the dbase schema for MariaDB/mysql).

Since you are on windows I reckon you are on a X86 hw right?

let me know (and maybe others) what I could do to make it easier and consumable without having the need for a 3rd degree computer science or something :)

cheers!
xander

ps web front end is pretty basic but effective:
upload your jpi file, dupes are automatically ignored
ability to annotate your flight in the database
delete a flight (eg JPI records anything above a threshold of EGT so a restart or simple things like that originate a new entry of a "flight")
etc

Screenshot 2024-11-04 at 4.32.01 PM.png
 
Last edited:
Howdy xander75,

Thank you for doing all of this! While I have a fair amount of software work experience I'm just running a standard x86 based Windows PC right now without doing much development work and don't care to set up any servers on this PC. I actually was looking to get the CSV files so I can combine them using Alteryx script into a flat file that I use as a database for a Tableau workbook of all my flights and engine data. One of the big limitations with the Savvy platform is the inability to easily compare historical data or get data sets beyond a single flight visualized easily. I.e. I like comparing my carb temp vs. OAT and setting like this picture below using a scatter plot. Tableau lets me create all sorts of interesting graphics and, perhaps most importantly, allow me to filter out bad or otherwise erroneous data.

I'll hang tight until another solution comes along. It takes me about an hour to extract a year's worth of CSV files out of the JPI files. And then I have to filter them for all the instances when the JPI instrument was only on for a ground run or something that I don't want to consider as a true "flight". So that's probably a quicker process than setting up a virtual server to run Grafana, mysql, et al.


1730771667529.png
 
Back
Top