DashCommand Dashboard and custom PID's for CX-5

pjensen641

Member
:
2013 CX-5 AWD Touring Zeal Red
I've been working with Dashcommand, which is an Android app for viewing and logging OBD data. It is similar to Torque, which may be a bit more well known. If you are not familiar, it basically allows you to do 3 things. First is to do the typical reading and clearing of diagnostic codes. Second is that you can look at a live virtual dashboard or a custom set of gauges which you can define. Third is that you can data log.

In addition to all of this, you can create your own custom PIDs and Dashboards. I've messed around a bit and created some custom PIDs to calculate fuel flow, Inst MPF, Torque, Power, and BSFC all based on extended Mazda PIDs which are more accurate than the ones in the basic app. I've also taken the basic "Tuexedo" Dashboard and customized the "Performance" page for the CX-5. Since the CX-5 is all about efficiency, I have focused on gauges for monitoring the efficient performance. You can monitor the Atkinson cycle behavior (90-95% MAP at anything over 50% load) of the engine and tune your driving style to take advantage of it. You can monitor things like Fuel trim and knock retard to make sure the engine is happy with the fuel you are buying. You can look at instant BSFC to understand the most efficient way to accelerate (basically 1500-3000 RPM at 80-100% load shows a consistent minimum BSFC). If you have any aspirations of achieving the best fuel mileage, this should be a useful tool.

Right now I have the following displays on the Performance page
-%Engine Load
-Speed
-Intake Cam Advance (in %)
-Relative MAP in % of Barometric
-Instant MPG based on the MAZDA.FIA PID
-Avg MPG as provided by Dashcommand (they provide a fill-up "learning" scheme to increase accuracy)
-Manifold Vacuum
-Fuel Trims
-Instant BSFC
-Timing and Knock Retard
-Instant Power
-Instant Torque
-Coolant Temp

It requires the custom PIDs I have created in order to work correctly. Also, I have really only focused on English units and the 2.0 engine. Still a work in progress. I have one error with BSFC digital readout I need to fix with the current version, but should get that done tomorrow.

Anyway, if you are interested it is available here or if you search for dashboards using the tag"cx5" within the app.

Custom PIDs are here, and require the Mazda extended PID package from Dashcommand.


I've made some general observations using this dash.
-Once warmed up, you will achieve 90-95% MAP (virtually unthrottled) at 50% engine load. Anything below 50% is throttled, anything above will be controlled by the intake cam.
-Any engine temp below 160ish seems to make it behave more like an otto cycle. Significant throttling with higher cam advance.
-Best BSFC I have shown is 0.34lb/HP-Hr. While my calculation method isnt perfect due to assuming a preset torque curve, it is very near something like a Prius engine.
-Best BSFC is 1500-3000 RPM at 80-100% load, with virtually no penalty for reving out to 3000. No need to accelerate abnormally slow!
-In 6th gear cruise at 65, you must try to stay below 60% engine load to achieve low 30's MPG. 50% load is high 30's
-WOT enrichment will begin at 4000RPM. Below that shows a Lambda of 0.95-1. Above that tapers gradually to 0.75-0.8.
-The intake cam will only stay 100% advanced from 2000-3500 or so. It will back off to about 50% advance by redline.
 
Last edited:
Wow, amazing. Definitely something I will look into. I have used basics from ScanGauge and Torque. Tried to read into DashCommand, but unfortunately Palmer Performance's website is down. Loving the open source skins so far.
 
Last edited:
I found out the other day you can see timing advance and a bunch of other stuff with torque pro. It also shows intake temp (however I forgot to compare it to see if it was actually the same sensor that shows OAT on the instrument panel). On my next fuel up I will compare timing advance vs premium and reg.
 
I found out the other day you can see timing advance and a bunch of other stuff with torque pro. It also shows intake temp (however I forgot to compare it to see if it was actually the same sensor that shows OAT on the instrument panel). On my next fuel up I will compare timing advance vs premium and reg.

On one of my other threads, I had posed the same question to myself. So far, i have not seen a significant difference between 87 and 91 straight gas. I have seen small instances of up to 2 degrees of knock retard with both. The other day I did 4 uphill runs in 3rd gear from 2K RPM to redline in order to test my calculated torque and Hp. I was between 1 degree of knock retard and 1 degree advance. Not certain why the PID sometimes indicates advance. Most of the time, it seems the knock retard happens around town at low RPM high load (1200-2000 RPM) which I suppose is expected.

I don't think Torque pro has the Mazda extended PID to specifically look at Knock Retard, but maybe I am wrong. That is one reason I am using DashCommand (extended PIDS). Certianly you can look at overall timing, but I would think a degree or two might be difficult to see in the timing read-out.

When summer temps come and IATs climb way higher, Premium might be better. Don't know yet.
 
I fixed the error with the BSFC digital display. Also created a torque PID for the 2.5 liter by scaling from the 2.0 and using the peak torque and power at the respective RPMs as listed for the 2.5.
 
I have a 2003.5 mazdaspeed protege and just recently started using daashcommand as well. I bought the the PID package. do I need to load that into my settings or what? im still learning this thing. any help would be awesome!!
 
I have a 2003.5 mazdaspeed protege and just recently started using daashcommand as well. I bought the the PID package. do I need to load that into my settings or what? im still learning this thing. any help would be awesome!!

After you purchase the extended PID's you need to go in to your vehicle set-up and look for the "Validate PIDs." The software then scans the ECU with the extended PID library and verifies if the ECU is returning a valid response. Once that is done, any PID that has a valid response will show up in the list of PIDs when you "add PID" to your data grid or create a new gauge for example. I think the disclaimer here is that not every Mazda ECU supports all of the extended PIDs. I want to say that I picked up like 15 or so Mazda specific PIDS on my CX5. Many of them were redundant ones that normally show up as SAE generic PIDS, but they seem to be a bit smoother (not as much hash band in the signal.
 
Ok sweet!! I am going to play with it more today and yes the PID did have my speed avalible, so I should be ok. Hav you found any really cool features thats not too obvious??
 
I've created a new "lite" version of my efficiency dashboard. Got rid of all the trip computer stuff and the Shift assist. I really never used them, and this version is a smaller file size.

Located here....
Link

download.php
 
-A newer android smartphone or tablet with Bluetooth seems to be best. Iphones work to, but I think it costs more for the app and there seems to be some other issues.
-Dashcommand app with Mazda extended PID package. I think this is like $20 total for the full versions.
-A bluetooth OBDII Dongle. OBDLink MX, or LX are the high quality suggestions. Otherwise there are Chinese knockoffs that work, but maybe not as reliably. more info here
-If you want my custom dash to work, you need to download and install my custom scripts. This is done by entering the full URL of the ATTACHMENTS located in the info at my link in the above post in to the "add custom scripts" page inside the dashcommand app.


I would suggest browsing the Palmer Performance forum for more info.
 
I've been working with Dashcommand, which is an Android app for viewing and logging OBD data. It is similar to Torque, which may be a bit more well known. If you are not familiar, it basically allows you to do 3 things. First is to do the typical reading and clearing of diagnostic codes. Second is that you can look at a live virtual dashboard or a custom set of gauges which you can define. Third is that you can data log.

In addition to all of this, you can create your own custom PIDs and Dashboards.

Do you know some other custom PIDs for Mazda6/CX-5 skyactiv vehicles? I'm mostly interestead in BATT_SOC, BATT_CUR and other battery related pids. How can I add those to Torque or DashCommand software?
Thanks.
 
Do you know some other custom PIDs for Mazda6/CX-5 skyactiv vehicles? I'm mostly interestead in BATT_SOC, BATT_CUR and other battery related pids. How can I add those to Torque or DashCommand software?
Thanks.

I am only using the PIDs that Palmer Performance has identified and provided in their extended PID package for Mazda. Not sure how familiar you are with OBD, but essentially the EPA mandates a certain standard set of PIDs. However, the manufacturer apparently has many more proprietary PIDs that are accessed when hooking up their diagnostic tool. Sometimes these are found out and can be used by folks like Palmer, but it isn't very easy from what i understand.

There is a plug-in for Torque I think which allows you to port sniff the OBD II data stream. It basically records every hex communication, and you somehow have to filter and identify PIDs which ar changing(indicating a measurement of some sort) and then you have to figure out what the measurement is and what the scaling is. I'm sure it can be done, but you need to somehow figure out a programming algorithm to help sort these out. Not something I am a whiz at, nor do i have the time.

So basically, if Dashcommand or Torque don't have extended PIDs for what you are looking for, it will be difficult. You'll have to do the research and become more familiar than I am with the port sniffing process.
 
I am only using the PIDs that Palmer Performance has identified and provided in their extended PID package for Mazda. Not sure how familiar you are with OBD, but essentially the EPA mandates a certain standard set of PIDs. However, the manufacturer apparently has many more proprietary PIDs that are accessed when hooking up their diagnostic tool. Sometimes these are found out and can be used by folks like Palmer, but it isn't very easy from what i understand.

There is a plug-in for Torque I think which allows you to port sniff the OBD II data stream. It basically records every hex communication, and you somehow have to filter and identify PIDs which ar changing(indicating a measurement of some sort) and then you have to figure out what the measurement is and what the scaling is. I'm sure it can be done, but you need to somehow figure out a programming algorithm to help sort these out. Not something I am a whiz at, nor do i have the time.

So basically, if Dashcommand or Torque don't have extended PIDs for what you are looking for, it will be difficult. You'll have to do the research and become more familiar than I am with the port sniffing process.

Thank you for your reply. I can't say I have some deep knowledge of OBD, but as far as I understand each PID is located under some "header". Header can be either some hex value or just "AUTO" (which is suggested by default by most OBD2 software). Please correct me if I'm mistaking here.

The thing is, I have a win32 software which shows me the desired BATT_SOC parameter, and I even was able to sniff a serial port communication of this software. However, I still can't understand how to use the information I've got to add this PID to Torque (android).

Here is the serial port communication:

>ATSH0007E0
OK

>ATCRA7E8
OK

>2240281
62402843

>2240281
62402843

>2240281
62402843

The last 3 commands - are repeating polling commands. 62402843 is the result, and the last "43" is a hex value of my PID (decimal 67). As far as I understand, in terms of Torque the result consists of 4 bytes A,B,C and D. Not sure if the "43" considered as A or D. Going further, as far as I understand 2240281 - is a PID value, and since PID can be up to 3 bytes maximum, it must be in decimal, so the value in hex would be 222F19. I've tried to create a custom PID in Torque with 222F19 value, but it didn't work. I've tried to use "0007E0", "A7E8" and "AUTO" as header value, but still no luck. Also, there are "diagnostic start command" and "diagnostic stop command" fields in PID Editor dialog. Not sure if I need to use those.

I realize all this stuff can be not really interesting/familiar to you. Anyway, if you have any thoughts or clues regarding this, you are welcome to post them. Thanks.
 
Last edited:
The thing is, I have a win32 software which shows me the desired BATT_SOC parameter, and I even was able to sniff a serial port communication of this software. However, I still can't understand how to use the information I've got to add this PID to Torque (android).
Have you considered posting in the forums (http://torque-bhp.com/forums/) for the torque software? Someone there might be able to help....
 
Here is the serial port communication:

>ATSH0007E0
OK

>ATCRA7E8
OK

>2240281
62402843

>2240281
62402843

>2240281
62402843

The last 3 commands - are repeating polling commands. 62402843 is the result, and the last "43" is a hex value of my PID (decimal 67). As far as I understand, in terms of Torque the result consists of 4 bytes A,B,C and D. Not sure if the "43" considered as A or D. Going further, as far as I understand 2240281 - is a PID value, and since PID can be up to 3 bytes maximum, it must be in decimal, so the value in hex would be 222F19. I've tried to create a custom PID in Torque with 222F19 value, but it didn't work. I've tried to use "0007E0", "A7E8" and "AUTO" as header value, but still no luck. Also, there are "diagnostic start command" and "diagnostic stop command" fields in PID Editor dialog. Not sure if I need to use those.

Ok, looks like I've figured it out. Going to explain it here for all who will be searching similar information in future.
So if you deal with serial communication similar to quoted above, here is the interpretation:

>ATSH0007E0
This one is a header value: 7E0

...

>2240281
62402843
And these are the PID request and response.
Request:
224028 - is PID request in hex (22 is a service number and 4028 is pid number, the tailing 1 is a trash)
Response:
624028 - means that request of 4028 was successful (62 4028)
And 43 is the real data. In this particular case it's just one byte. But there could be more bytes. Also there could be even multiline pakcage in response.

To interpret response data you need to refer to some internal service manual or search it on the web.
 

Latest posts

Back