Shift Light Project


Hello, I am working on making a shift light, gear indicator, and RPM readout display on a 2018 mustang. This is my first project like this and I am having trouble identifying the PID that relates to these functions. I am using savvycan and M2RET to log the messages. any assistance you guys can offer would be extremely appreciated.



It would be easier to help if you explained what you have tried and what you have found. 2018 Mustangs may have some sort of security system or may not fully expose the canbus on the diagnostic port without asking.



Of course, sorry for the vagueness of the post. Currently am using M2RET with savvycan. I have gotten about 100 different PID ranging from 0X041 to 0X6 or 0X7 something. I dont have a dbc file to read what the PID is and i am kind of just going through each code individually and trying to see which ones are changing and slowly narrow it down to whay i want. So far ive identified the message and bytes that corelate to blinkers and highbeams. I am attempting to run the OBD2scan sketch becausese i think this will work much better for what I am trying to do… However i am unable to get the sketch yo work. And I have downloaded all of the most recent files off of Collins github. I come up with an error " OBD2Scan:18:error: no matching function to call for 'isotp::


OBD2Scan:18: error: no matching function for call to ‘IsoTp::IsoTp(CANRaw*)’
IsoTp isotp0(&Can0);”
I appologize for the split reply, accidentally tapped the send button on my phone.
Anyway. That is where I currently am. I am getting messages with M2RET and savvycan, although they appear to be 11 bit messages and not necisarily the ones I need, and I am unable to get OBD2Scan working but I am fairly sure thats what I will need to get the information i want


You may be able to accomplish without the IsoTp module. I’ve not played with my M2 in a little while, but you can use regular CAN commands to get diagnostic info (Like RPM). is a good resource. You can actually use the tables to craft a message, so for rpm for instance you’d request:

7df # 02 01 0C 00 00 00 00 00
Where 7df is the diagnostic request, 02 is the length of the request, 01 is the mode (as seen in the Wiki tables) and 0C is Engine RPM.

Then the response will be around 7E8 if I remember correctly. You just decode it using the values on the wiki table to get your rpm in an understandable value.

Hope this helps!