Decyphering iMiEV and iON CAR-CAN message data

Mitsubishi i-MiEV Forum

Help Support Mitsubishi i-MiEV Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
kiev said:
i think the i909 would have to send commands to read ecu Data Items, and to do a Clear of the DTC faults.

It is slow and clunky in that you have to page thru the list of available Data Items, 4 or 5 items per page, selecting the ones you want to see; then hit return and the selected list values are displayed. If you want to add or change to another DI, then you have to start over.

I went ahead and ordered the Max yesterday, hopefully gets here in a day or two. Also ordered a Y OBD2 connector, so can daisy chain both the iCarsoft and can logger.

Should also receive my canEdge 2 today or tomorrow.

I did have a very unfortunate realization. The charger we use at our apartment you 'blip' to start. When the car is done charging it naturally stops, and requires another human interaction to start. So even if I solve all this; come a cold winter morning. You'd need to physically go start the charger ^_^. Still going to pursue this as we are actively searching for a house so this blip-style charger will be temporary. -- Though with a house I can also just install a heater powered by 220v :X... Still going to try to solve this as i'm in too deep :)
 
dopey said:
On the install, on C:\ do you have MUTSW or MUTSW_SE or both?
I have both. I think I've been concentrating on the 2012 distribution.

The javascript is under MUTSW/MUT3/MENU/SCRIPTS
I can't believe I didn't notice that. Or realise that there was a web browser version separate to the binary version. Sigh.

The .ocx binaries that are loaded as activex controls are under SYSTEM --- I think these be the crown jewels to crack open or fool into a debug mode to spit out all the details :)
See below.

What I can gather is the javascript is the entire GUI that you navigate.
Wow. A lot easier than wading through a disassembly of the main x86 executable.

It can load a half dozen different activex controls which are .ocx binaries which I have not found a way to decompile.
OCX files are just special PE (Portable Executable) files, with a particular interface. Ida Pro knows how to disassemble them. Even the free version of Ida Pro should be able to deal with these. Of course, you have to be familiar with X86 assembly language instructions.

I have not found any instance where the javascript is compiling the actual DATA hex to be sent.
Yes. The Javascript seems to be higher level.

It can also ask to read some of the local file based databases (.mdb) for information such as based on vin lookup. To get things like canbusID, constitutionnumber, etc. Looking at the MSSQL databases these references are also there.
I don't think that you'll find databases with CAN or LIN messages in them.

Is it possible MUT is using the K-Line to actuate things?
For mundane things like lamps and door switches, yes I believe so. Perhaps even less mundane things.

Or even the folks that have 'solved' this without sharing?
I suspect that there are Russians who know these things but are not sharing.

The Canedge2 I am receiving can monitor LIN bus but it's not clear to me if K-Line / LIN is interchangeable or just very similar protocols?
It seems to me that K-line is the physical layer for LIN.
 
I will have to check out Ida Pro, there is a couple very interesting sounding .ocx files -- like 'canspec'. :)

On databases, i dunno there is some interesting sounding structures;
Code:
DiagInfoIxNo	CheckCode	SysId	LangApply	SysChInfo0	SysChInfo1	SysChInfo2	SysChInfo3	SysChInfo4	SysChInfo5	SysChInfo6	SysChInfo7	SysRule	SysType	CommRuleIxNo	CommFuncIxNo	DiagTypeIxNo
1196033	4672	0	0	255	15	255	0	255	255	255	255	2	0	1196033	1196033	0
1310720	5120	0	0	255	15	255	0	255	255	255	255	3	0	2	3	0
1310721	5120	0	0	255	15	255	0	255	255	255	255	2	0	1310721	1310721	0
1310976	5121	0	0	255	15	255	0	255	255	255	255	3	0	2	3	0

Can't help but wonder if this is D0 -> D7 and the decimal value for the request. But you need to link back to an index that ultimately is a link on a link of a link for the specific car.

Or this;
Code:
DiagInfoIxNo	FfdNo	ItemType	ItemNameIxNo	BytePos	SendByte	ProcIxNo	FormIxNo	UnitNameIxNo	ReceiveInfo	BitLogic	BitPosition	GraphIxNo	DrFlag
16	1	0	68387	1	1	-3902	-3902	3	0	0	0	-1	0
16	2	0	68388	2	1	-3902	-3902	3	0	0	0	-1	0
16	3	0	68389	3	1	-3902	-3902	3	0	0	0	-1	0

It's quite spread out, so I had been hoping to find in the .JS functions with effectively the SQL statements on the appropiate joins to return the values needed to form a command to the car.


I'd definitely think the information needed to build a request exists in either the MSSQL databases, or the .mdb files. Your code/logic be allot more car agnostic eh? So it must build it's request from some lookup, or know which PID to issue it on or whether to go kline vs can?

I have slowed down my digging and going to shift back to improving my capture/processing abilities, and what the iCarSoft Max can show me. Hoping that is a more straight forward path :)

-------------------------------------------

On another note; My iCarSoft Max arrived today. Unfortunately my OBD2 Y Splitter has not -- should be here tomorrow. The device also does not use db9 as a connection, so my current db9 split will not allow me to daisy chain.

I did some quick test and I was able to actuate quite a few things within the HVAC -- fan speed, temp, max, etc. As well quite a few other menus and options from immobilizer to 'cell voltage smoothing' on the BMU. If any interest I can document all the functions it is offering per module. Then ofcourse view information from the modules as well.

Tomorrow evening I should be able to daisy chain OBD and have my canEdge2 connected in parallel to fully capture sessions. I could tap into the EVECU or ACECU tonight, but i'm going to focus on the software side of canEdge this evening.

Not sure others have seen/used, but this is the company i've ordered more than a sane person should:
https://www.csselectronics.com/

I have the clx2000 which I can do live sessions with savvycan.

Also the canEdge2 which is more log and view later -- though you can configure it to send commands. It can also upload directly to s3 object storage, and the company even has some open source tooling to visualize the data in grafana.

I think at this point I have nearly all their cables, extensions, etc. Even the alligator one which I think be handy but now not sure I ever have the room to use it :)

At the moment I have their backend grafana containerized running in GCP Cloud run, with my existing grafana able to connect. The device itself configured to leverage a mobile hotspot to upload it's logs straight to GCP cloud storage.

My goal this evening is to start building a DBC file for our Miev and tying it into CSS's software stack in GCP to begin widdling down and identifying what is left to decode -- To my knowledge this does *not* exist? Unfortunately I have yet to find a decent tool to build/generate these files -- on Linux.

I generally store my personal code on Google's source repo (convenience -- like the dockerfile to run grafana/backend), but for the DBC I will create a github project (assuming there isn't a better place for such an item?). I will then tie it together that an update to the DBC project update the grafana instance, etc, etc. If others are interested i'm happy to give access to the grafana, raw data, code repos.


Also happy to share whichever format canbus logs on any captures I do -- with carsoft, etc.
 
First attempts at dbc is up; https://github.com/slackspace-io/imiev-dbc

I am using the canmatrix python library. I'll add a readme, requirements, virtualenv steps, etc tomorrow.

I initially started to just use the script to generate the dbc, and effectively hardcode the python to generate the dbc. That felt.. bad.

At the moment file structure looks like this;
Code:
[dopey@dopey-desktop tools]$ tree
.
├── genDbc.py
└── pids
    ├── 0x346.yaml
    └── 0x373.yaml

1 directory, 3 files
[dopey@dopey-desktop tools]$


The yaml syntax will be just a human friendly way to define the variables of canmatrix Frame and Signal classes:
Code:
[dopey@dopey-desktop tools]$ cat pids/0x346.yaml 
Frame: 
 can_id: 0x346
 comment: "Range and Handbrake"

Signal_1:
  name: "Range"
  size: 8
  start_bit: 56
  unit: "Kilometers"

[dopey@dopey-desktop tools]$

The genDbc.py script does the following:

* Reads in the yaml, creating a new frame based off the variables
* For each Signal found (Signal_X pattetrn), iterates through the options vs defaults.
* Passes the completed variables to create a new signal
* Creates the .dbc file


It's very simple, likely has bugs. Will continue tomorrow.

I have not implemented all of the variables to be parsed by the yaml -> python. At the moment only size, start_byte, offset, scale .

If someone knows of an existing DBC or a better method i'm all ears. Trying to find the right balance of human readable without reinventing the wheel just to create a .DBC ¨
 
I did some quick test and I was able to actuate quite a few things within the HVAC -- fan speed, temp, max, etc. As well quite a few other menus and options from immobilizer to 'cell voltage smoothing' on the BMU. If any interest I can document all the functions it is offering per module. Then ofcourse view information from the modules as well.

Very interesting.
 
Wow, Jacob thank you for diving in to work on all this. i'm just a bit banger when it comes to CAN, but willing to help if i can.

i don't know which GUI that Dala the Great (Daniel Öster) is using over on the Leaf CAN buss .dbc activities, but it seems to be quite a useful tool. https://github.com/dalathegreat/
[edit: found it, 'Kvaser Database Editor 3' ]

His research has made it possible to swap or upgrade Packs, and get the car to accept it thru the CAN buss. https://mynissanleaf.com/viewtopic.php?t=32819

It would be great if we can figure out how to do that over here for the miev.
 
kiev said:
Wow, Jacob thank you for diving in to work on all this. i'm just a bit banger when it comes to CAN, but willing to help if i can.

i don't know which GUI that Dala the Great (Daniel Öster) is using over on the Leaf CAN buss .dbc activities, but it seems to be quite a useful tool. https://github.com/dalathegreat/
[edit: found it, 'Kvaser Database Editor 3' ]

His research has made it possible to swap or upgrade Packs, and get the car to accept it thru the CAN buss. https://mynissanleaf.com/viewtopic.php?t=32819

It would be great if we can figure out how to do that over here for the miev.



He is using kvaser tool, which is a windows tool. I did manage to run it on wine, but I'm just generally allergic to graphical tools, clicking, etc. For me the easiest path was writing a script to parse <some input> into the .dbc format. Yaml is a comfortable language.

I am making progress today with the script and pids -- have a handful entered. I am trying to convert https://github.com/KommyKT/i-miev-obd2 to .DBC

I was quite confused how to get an expression like below into a DBC file.
(D0 * 256 + D1) / 128

I couldn't find any logic for doing math between different Bytes within a Frame. Thought maybe multiplex, but thought that was for multiple frames.. and i've yet to work through an example of that :D

I eventually just played with numbers and think I solved it..

For vehicle speed, on pid 0x215 you have 8 bits of data as below:
130A2BE32C4D0000
Per Kommy's github the formulate for speed is:
(D0 * 256 + D1) / 128
Which becomes:
(0x13 * 256 + 0x0A) / 128
which to decimal is:
(19*256+10)/128 = 38.078 km/h


Trying to find what this means in a .DBC file..
(D0 * 256 + D1) = 4874 decimal
D0= 0x13
D1= 0x0A

0x130A = 4874


So I think, when I see (Dx * 256 + Dy) on the github page, that becomes 'Big Endian' in DBC aka ; 7|16@0-

For the scale just do 1/128, then that is the scale multiplier. (The python library says factor instead of scale.. bit annoying as most DBC sites I see call it scale)

The yaml ends looking like this:
Code:
(env) [dopey@dopey-desktop tools]$ cat pids/0x215.yaml 
Frame: 
 name: "0x215"
 arbitration_id: 0x215
 comment: "Vehicle Speed"
 test_frame: "130A2BE32C4D0000"

Signal_1:
  name: "Vehicle Speed"
  size: 16
  start_bit: 0
  factor: 0.0078125
  unit: "km/h"
  is_little_endian: False
(env) [dopey@dopey-desktop tools]$

Which produces a .dbc entry like this:
Code:
NS_ :

BS_:

BU_: 


BO_ 533 0x215: 2 Vector__XXX
 SG_ Vehicle_Speed : 7|16@0- (0.0078125,0) [-256.0000000|255.9921875] "km/h" Vector__XXX


CM_ BO_ 533  "Vehicle Speed";

Perhaps common sense for everyone else, but as a new-to-hex newbie I spent far longer than I care to admit trying to find a way to effectively write 'D0 * D1 + 256' in DBC before just experimenting with little vs big Endian..


I will upload my latest work thus far on trying to convert the known expressions into a DBC File tonight. I also received the Y splitter for OBD so will get my first logs sniffing the iCarsoft traffic when actuating on the car :)
 
dopey said:
Can't help but wonder if this is D0 -> D7 and the decimal value for the request.
I don't think so. Some of the values are over one million, which is too much even for two bytes (max 2¹⁶-1 = 65,535).

It doesn't seem likely to me; sorry.

I'd definitely think the information needed to build a request exists in either the MSSQL databases, or the .mdb files. Your code/logic be allot more car agnostic eh? So it must build it's request from some lookup, or know which PID to issue it on or whether to go kline vs can?
That would make some sense, but sadly I think that they just customise binaries for each car.
 
I'll just pretend I didn't spend hour(s) staring at those tables trying to make my own joins. :)

I did my first sniffing of iCarSoft Max.

Few raw logs available here:
https://github.com/slackspace-io/imiev-dbc/tree/main/rawLogs

1.) Actuated max fan speed 5x
2.) Actuated 'Max Heat' 5x
3.) New diagnostic session -- aka open diagnostic, select mitsubishi, manual vehicle entry.....and then 'quick test' option. It also reported a few faults.

Just starting to look, a quick comparison of the actuation logs. I do not see any 'new' PIDs. Taking a quick glance at the 3A4 pid which generally reports the HVAC, I noticed a couple interesting entries.

These logs were captured using a canusb device daisy chained behind my canEdge2. If you want the MDF files from canedge let me know.

F77F00FF388103A4 and F87F00FF508103A4 -- I need to check other captures, but I wonder if this is 'entering actuation mode' sort of message. Would need to go start, exit, the menu itself numerous times to get any confirmation. I have not plotted the values between these to see if it merely reports the normal expected bytes/bits indicating the mode it's being actuated to.

Unfortunately these things have to be done with key on or in Ready, so the noise is quite high.

I'm going to keep hacking at the DBC creation as that will make it allot easier to realtime parse the data and filter out known vs unknown vs unusual behaviours.
 
When you did the testing, did you manually turn the fan speed knob or did the iCarSoft Max do the actuation?

So in the first test i found about 333 instances of the 3A4 pid, for example

(1660146840.995169) slcan0 3A4# C1 19 BC D0 92 56 00 00

(1660146858.595504) slcan0 3A4# C1 19 BC D0 95 56 00 00

entire filter here:
Code:
khouse@kennys-MacBook-Pro Jacob CAN % grep -ae 3A4 MaxFan5x.txt 
(1660146828.194439) slcan0 3A4#C118BCD090560000
(1660146828.294479) slcan0 3A4#C118BCD090560000
(1660146828.394171) slcan0 3A4#C118BCD090560000
(1660146828.494271) slcan0 3A4#C118BCD090560000
(1660146828.593940) slcan0 3A4#C118BCD090560000
(1660146828.695410) slcan0 3A4#C118BCD090560000
(1660146828.794878) slcan0 3A4#C118BCD090560000
(1660146828.894533) slcan0 3A4#C118BCD090560000
(1660146828.994660) slcan0 3A4#C118BCD090560000
(1660146829.094645) slcan0 3A4#C118BCD090560000
(1660146829.194182) slcan0 3A4#C118BCD090560000
(1660146829.294015) slcan0 3A4#C118BCD090560000
(1660146829.394133) slcan0 3A4#C118BCD090560000
(1660146829.495115) slcan0 3A4#C118BCD090560000
(1660146829.594839) slcan0 3A4#C118BCD090560000
(1660146829.694474) slcan0 3A4#C118BCD090560000
(1660146829.794407) slcan0 3A4#C118BCD090560000
(1660146829.894273) slcan0 3A4#C118BCD090560000
(1660146829.994554) slcan0 3A4#C118BCD090560000
(1660146830.094204) slcan0 3A4#C118BCD090560000
(1660146830.194891) slcan0 3A4#C118BCD090560000
(1660146830.294725) slcan0 3A4#C118BCD090560000
(1660146830.394883) slcan0 3A4#C118BCD090560000
(1660146830.494620) slcan0 3A4#C118BCD090560000
(1660146830.594724) slcan0 3A4#C118BCD090560000
(1660146830.694243) slcan0 3A4#C118BCD090560000
(1660146830.794226) slcan0 3A4#C118BCD090560000
(1660146830.894424) slcan0 3A4#C118BCD090560000
(1660146830.995061) slcan0 3A4#C118BCD090560000
(1660146831.094647) slcan0 3A4#C118BCD090560000
(1660146831.194541) slcan0 3A4#C118BCD090560000
(1660146831.294371) slcan0 3A4#C118BCD090560000
(1660146831.394285) slcan0 3A4#C118BCD090560000
(1660146831.494414) slcan0 3A4#C118BCD090560000
(1660146831.594019) slcan0 3A4#C118BCD090560000
(1660146831.694879) slcan0 3A4#C119BCD090560000
(1660146831.795058) slcan0 3A4#C119BCD090560000
(1660146831.894898) slcan0 3A4#C119BCD090560000
(1660146831.994482) slcan0 3A4#C119BCD090560000
(1660146832.094597) slcan0 3A4#C119BCD090560000
(1660146832.194499) slcan0 3A4#C119BCD090560000
(1660146832.294367) slcan0 3A4#C119BCD090560000
(1660146832.393988) slcan0 3A4#C119BCD090560000
(1660146832.494841) slcan0 3A4#C119BCD090560000
(1660146832.594727) slcan0 3A4#C119BCD090560000
(1660146832.694591) slcan0 3A4#C119BCD090560000
(1660146832.794650) slcan0 3A4#C119BCD090560000
(1660146832.894350) slcan0 3A4#C119BCD090560000
(1660146832.994237) slcan0 3A4#C119BCD090560000
(1660146833.094083) slcan0 3A4#C119BCD090560000
(1660146833.194918) slcan0 3A4#C119BCD090560000
(1660146833.294801) slcan0 3A4#C119BCD090560000
(1660146833.394634) slcan0 3A4#C119BCD090560000
(1660146833.494549) slcan0 3A4#C119BCD090560000
(1660146833.594404) slcan0 3A4#C119BCD090560000
(1660146833.694324) slcan0 3A4#C119BCD090560000
(1660146833.794185) slcan0 3A4#C119BCD090560000
(1660146833.894029) slcan0 3A4#C119BCD091560000
(1660146833.994899) slcan0 3A4#C119BCD091560000
(1660146834.095043) slcan0 3A4#C118BCD091560000
(1660146834.194629) slcan0 3A4#C118BCD091560000
(1660146834.294703) slcan0 3A4#C118BCD091560000
(1660146834.394800) slcan0 3A4#C118BCD091560000
(1660146834.494297) slcan0 3A4#C118BCD091560000
(1660146834.594171) slcan0 3A4#C118BCD091560000
(1660146834.694979) slcan0 3A4#C118BCD091560000
(1660146834.795251) slcan0 3A4#C118BCD091560000
(1660146834.895071) slcan0 3A4#C118BCD091560000
(1660146834.994590) slcan0 3A4#C118BCD091560000
(1660146835.094435) slcan0 3A4#C118BCD091560000
(1660146835.194328) slcan0 3A4#C118BCD091560000
(1660146835.294199) slcan0 3A4#C118BCD091560000
(1660146835.394086) slcan0 3A4#C118BCD091560000
(1660146835.494947) slcan0 3A4#C118BCD091560000
(1660146835.595131) slcan0 3A4#C118BCD091560000
(1660146835.695252) slcan0 3A4#C118BCD091560000
(1660146835.795562) slcan0 3A4#C118BCD091560000
(1660146835.894736) slcan0 3A4#C118BCD091560000
(1660146835.994324) slcan0 3A4#C118BCD091560000
(1660146836.094371) slcan0 3A4#C118BCD091560000
(1660146836.194042) slcan0 3A4#C118BCD091560000
(1660146836.294913) slcan0 3A4#C118BCD091560000
(1660146836.394775) slcan0 3A4#C118BCD091560000
(1660146836.494662) slcan0 3A4#C118BCD091560000
(1660146836.594707) slcan0 3A4#C118BCD091560000
(1660146836.694612) slcan0 3A4#C118BCD091560000
(1660146836.794544) slcan0 3A4#C118BCD091560000
(1660146836.894148) slcan0 3A4#C118BCD091560000
(1660146836.994998) slcan0 3A4#C118BCD091560000
(1660146837.094909) slcan0 3A4#C118BCD091560000
(1660146837.195117) slcan0 3A4#C118BCD091560000
(1660146837.294610) slcan0 3A4#C118BCD091560000
(1660146837.380841) slcan0 149#F77F00FF388103A4
(1660146837.394440) slcan0 3A4#C118BCD091560000
(1660146837.494643) slcan0 3A4#C118BCD091560000
(1660146837.594263) slcan0 3A4#C118BCD091560000
(1660146837.694375) slcan0 3A4#C119BCD091560000
(1660146837.794957) slcan0 3A4#C119BCD091560000
(1660146837.895257) slcan0 3A4#C119BCD092560000
(1660146837.994694) slcan0 3A4#C119BCD092560000
(1660146838.094853) slcan0 3A4#C119BCD092560000
(1660146838.194434) slcan0 3A4#C119BCD092560000
(1660146838.294343) slcan0 3A4#C119BCD092560000
(1660146838.394645) slcan0 3A4#C119BCD092560000
(1660146838.495420) slcan0 3A4#C119BCD092560000
(1660146838.595617) slcan0 3A4#C119BCD092560000
(1660146838.694785) slcan0 3A4#C119BCD092560000
(1660146838.795049) slcan0 3A4#C119BCD092560000
(1660146838.894714) slcan0 3A4#C119BCD092560000
(1660146838.994612) slcan0 3A4#C119BCD092560000
(1660146839.094292) slcan0 3A4#C119BCD092560000
(1660146839.194401) slcan0 3A4#C119BCD092560000
(1660146839.295015) slcan0 3A4#C119BCD092560000
(1660146839.395426) slcan0 3A4#C119BCD092560000
(1660146839.494752) slcan0 3A4#C119BCD092560000
(1660146839.594630) slcan0 3A4#C119BCD092560000
(1660146839.694485) slcan0 3A4#C119BCD092560000
(1660146839.794603) slcan0 3A4#C119BCD092560000
(1660146839.894485) slcan0 3A4#C119BCD092560000
(1660146839.995087) slcan0 3A4#C119BCD092560000
(1660146840.094979) slcan0 3A4#C119BCD092560000
(1660146840.195541) slcan0 3A4#C119BCD092560000
(1660146840.294706) slcan0 3A4#C119BCD092560000
(1660146840.394560) slcan0 3A4#C119BCD092560000
(1660146840.494409) slcan0 3A4#C119BCD092560000
(1660146840.594615) slcan0 3A4#C119BCD092560000
(1660146840.694442) slcan0 3A4#C119BCD092560000
(1660146840.795275) slcan0 3A4#C119BCD092560000
(1660146840.894919) slcan0 3A4#C119BCD092560000
(1660146840.995169) slcan0 3A4#C119BCD092560000
(1660146841.094654) slcan0 3A4#C118BCD092560000
(1660146841.194538) slcan0 3A4#C118BCD092560000
(1660146841.294573) slcan0 3A4#C118BCD092560000
(1660146841.394223) slcan0 3A4#C118BCD092560000
(1660146841.495147) slcan0 3A4#C118BCD092560000
(1660146841.595006) slcan0 3A4#C118BCD092560000
(1660146841.695354) slcan0 3A4#C118BCD092560000
(1660146841.794765) slcan0 3A4#C118BCD092560000
(1660146841.895020) slcan0 3A4#C118BCD092560000
(1660146841.994496) slcan0 3A4#C118BCD092560000
(1660146842.094408) slcan0 3A4#C118BCD092560000
(1660146842.194278) slcan0 3A4#C118BCD092560000
(1660146842.295108) slcan0 3A4#C118BCD092560000
(1660146842.394976) slcan0 3A4#C118BCD092560000
(1660146842.494903) slcan0 3A4#C118BCD092560000
(1660146842.594715) slcan0 3A4#C118BCD092560000
(1660146842.694569) slcan0 3A4#C118BCD092560000
(1660146842.794727) slcan0 3A4#C118BCD092560000
(1660146842.894557) slcan0 3A4#C118BCD092560000
(1660146842.995739) slcan0 3A4#C118BCD092560000
(1660146843.095055) slcan0 3A4#C118BCD092560000
(1660146843.194919) slcan0 3A4#C118BCD092560000
(1660146843.294797) slcan0 3A4#C118BCD092560000
(1660146843.394662) slcan0 3A4#C118BCD092560000
(1660146843.494534) slcan0 3A4#C118BCD092560000
(1660146843.594445) slcan0 3A4#C118BCD092560000
(1660146843.694314) slcan0 3A4#C118BCD092560000
(1660146843.795598) slcan0 3A4#C118BCD092560000
(1660146843.895567) slcan0 3A4#C119BCD092560000
(1660146843.994907) slcan0 3A4#C119BCD092560000
(1660146844.095080) slcan0 3A4#C119BCD092560000
(1660146844.194852) slcan0 3A4#C119BCD092560000
(1660146844.294709) slcan0 3A4#C119BCD092560000
(1660146844.394621) slcan0 3A4#C119BCD092560000
(1660146844.494285) slcan0 3A4#C119BCD092560000
(1660146844.595627) slcan0 3A4#C119BCD092560000
(1660146844.695502) slcan0 3A4#C119BCD092560000
(1660146844.794902) slcan0 3A4#C119BCD092560000
(1660146844.894727) slcan0 3A4#C119BCD092560000
(1660146844.994607) slcan0 3A4#C119BCD092560000
(1660146845.094664) slcan0 3A4#C119BCD092560000
(1660146845.194720) slcan0 3A4#C119BCD092560000
(1660146845.295521) slcan0 3A4#C119BCD093560000
(1660146845.395071) slcan0 3A4#C119BCD093560000
(1660146845.495151) slcan0 3A4#C119BCD093560000
(1660146845.595052) slcan0 3A4#C119BCD093560000
(1660146845.694673) slcan0 3A4#C119BCD093560000
(1660146845.794555) slcan0 3A4#C119BCD093560000
(1660146845.894753) slcan0 3A4#C119BCD093560000
(1660146845.994563) slcan0 3A4#C119BCD093560000
(1660146846.095615) slcan0 3A4#C119BCD093560000
(1660146846.195407) slcan0 3A4#C119BCD093560000
(1660146846.295019) slcan0 3A4#C119BCD093560000
(1660146846.394795) slcan0 3A4#C119BCD093560000
(1660146846.494662) slcan0 3A4#C119BCD093560000
(1660146846.594519) slcan0 3A4#C119BCD093560000
(1660146846.694384) slcan0 3A4#C118BCD093560000
(1660146846.795239) slcan0 3A4#C118BCD093560000
(1660146846.895466) slcan0 3A4#C118BCD093560000
(1660146846.995014) slcan0 3A4#C118BCD093560000
(1660146847.094885) slcan0 3A4#C118BCD094560000
(1660146847.194727) slcan0 3A4#C118BCD094560000
(1660146847.294826) slcan0 3A4#C118BCD094560000
(1660146847.394691) slcan0 3A4#C118BCD094560000
(1660146847.494711) slcan0 3A4#C118BCD094560000
(1660146847.595198) slcan0 3A4#C118BCD094560000
(1660146847.695105) slcan0 3A4#C118BCD094560000
(1660146847.794978) slcan0 3A4#C118BCD094560000
(1660146847.894914) slcan0 3A4#C118BCD094560000
(1660146847.994735) slcan0 3A4#C118BCD094560000
(1660146848.094556) slcan0 3A4#C118BCD094560000
(1660146848.194428) slcan0 3A4#C118BCD094560000
(1660146848.295595) slcan0 3A4#C118BCD094560000
(1660146848.395548) slcan0 3A4#C118BCD094560000
(1660146848.495066) slcan0 3A4#C118BCD094560000
(1660146848.594901) slcan0 3A4#C118BCD094560000
(1660146848.694785) slcan0 3A4#C118BCD094560000
(1660146848.794841) slcan0 3A4#C118BCD094560000
(1660146848.894486) slcan0 3A4#C118BCD094560000
(1660146848.994408) slcan0 3A4#C118BCD094560000
(1660146849.095289) slcan0 3A4#C118BCD094560000
(1660146849.195621) slcan0 3A4#C118BCD094560000
(1660146849.295038) slcan0 3A4#C118BCD094560000
(1660146849.394909) slcan0 3A4#C118BCD094560000
(1660146849.495284) slcan0 3A4#C118BCD094560000
(1660146849.594943) slcan0 3A4#C118BCD094560000
(1660146849.694537) slcan0 3A4#C118BCD094560000
(1660146849.795383) slcan0 3A4#C118BCD094560000
(1660146849.895253) slcan0 3A4#C119BCD094560000
(1660146849.995130) slcan0 3A4#C119BCD094560000
(1660146850.095508) slcan0 3A4#C119BCD094560000
(1660146850.194908) slcan0 3A4#C119BCD094560000
(1660146850.294791) slcan0 3A4#C119BCD094560000
(1660146850.394860) slcan0 3A4#C119BCD094560000
(1660146850.494514) slcan0 3A4#C119BCD094560000
(1660146850.595334) slcan0 3A4#C119BCD094560000
(1660146850.695200) slcan0 3A4#C119BCD094560000
(1660146850.795089) slcan0 3A4#C119BCD094560000
(1660146850.894955) slcan0 3A4#C119BCD094560000
(1660146850.994859) slcan0 3A4#C119BCD094560000
(1660146851.094696) slcan0 3A4#C119BCD094560000
(1660146851.194587) slcan0 3A4#C119BCD094560000
(1660146851.294465) slcan0 3A4#C119BCD094560000
(1660146851.395297) slcan0 3A4#C119BCD094560000
(1660146851.495164) slcan0 3A4#C119BCD094560000
(1660146851.595015) slcan0 3A4#C119BCD094560000
(1660146851.694913) slcan0 3A4#C119BCD094560000
(1660146851.794770) slcan0 3A4#C119BCD094560000
(1660146851.894874) slcan0 3A4#C119BCD094560000
(1660146851.994557) slcan0 3A4#C119BCD094560000
(1660146852.095389) slcan0 3A4#C119BCD094560000
(1660146852.195254) slcan0 3A4#C119BCD094560000
(1660146852.295495) slcan0 3A4#C119BCD094560000
(1660146852.395015) slcan0 3A4#C119BCD094560000
(1660146852.494932) slcan0 3A4#C119BCD094560000
(1660146852.594724) slcan0 3A4#C119BCD094560000
(1660146852.694618) slcan0 3A4#C119BCD094560000
(1660146852.794468) slcan0 3A4#C119BCD094560000
(1660146852.895328) slcan0 3A4#C118BCD094560000
(1660146852.995228) slcan0 3A4#C118BCD094560000
(1660146853.095096) slcan0 3A4#C118BCD094560000
(1660146853.194952) slcan0 3A4#C118BCD094560000
(1660146853.294903) slcan0 3A4#C118BCD094560000
(1660146853.394708) slcan0 3A4#C118BCD094560000
(1660146853.494673) slcan0 3A4#C118BCD094560000
(1660146853.595948) slcan0 3A4#C118BCD094560000
(1660146853.695310) slcan0 3A4#C118BCD094560000
(1660146853.795192) slcan0 3A4#C118BCD094560000
(1660146853.895060) slcan0 3A4#C118BCD094560000
(1660146853.995172) slcan0 3A4#C118BCD094560000
(1660146854.095002) slcan0 3A4#C118BCD094560000
(1660146854.194950) slcan0 3A4#C118BCD094560000
(1660146854.294548) slcan0 3A4#C118BCD094560000
(1660146854.395607) slcan0 3A4#C118BCD094560000
(1660146854.495475) slcan0 3A4#C118BCD094560000
(1660146854.595488) slcan0 3A4#C118BCD094560000
(1660146854.695030) slcan0 3A4#C118BCD094560000
(1660146854.794896) slcan0 3A4#C118BCD094560000
(1660146854.894747) slcan0 3A4#C118BCD094560000
(1660146854.994789) slcan0 3A4#C118BCD094560000
(1660146855.095846) slcan0 3A4#C118BCD094560000
(1660146855.195368) slcan0 3A4#C118BCD094560000
(1660146855.295244) slcan0 3A4#C119BCD095560000
(1660146855.395725) slcan0 3A4#C119BCD095560000
(1660146855.495219) slcan0 3A4#C119BCD095560000
(1660146855.594906) slcan0 3A4#C119BCD095560000
(1660146855.695242) slcan0 3A4#C119BCD095560000
(1660146855.794948) slcan0 3A4#C119BCD095560000
(1660146855.895848) slcan0 3A4#C119BCD095560000
(1660146855.995350) slcan0 3A4#C119BCD095560000
(1660146856.095209) slcan0 3A4#C119BCD095560000
(1660146856.195096) slcan0 3A4#C119BCD095560000
(1660146856.295156) slcan0 3A4#C119BCD095560000
(1660146856.395333) slcan0 3A4#C119BCD095560000
(1660146856.494663) slcan0 3A4#C119BCD095560000
(1660146856.594778) slcan0 3A4#C119BCD095560000
(1660146856.695723) slcan0 3A4#C119BCD095560000
(1660146856.795713) slcan0 3A4#C119BCD095560000
(1660146856.895168) slcan0 3A4#C119BCD095560000
(1660146856.995062) slcan0 3A4#C119BCD095560000
(1660146857.095248) slcan0 3A4#C119BCD095560000
(1660146857.195210) slcan0 3A4#C119BCD095560000
(1660146857.294929) slcan0 3A4#C119BCD095560000
(1660146857.395519) slcan0 3A4#C119BCD095560000
(1660146857.495697) slcan0 3A4#C119BCD095560000
(1660146857.595634) slcan0 3A4#C119BCD095560000
(1660146857.695780) slcan0 3A4#C119BDD095560000
(1660146857.795528) slcan0 3A4#C119BDD095560000
(1660146857.894941) slcan0 3A4#C119BCD095560000
(1660146857.994967) slcan0 3A4#C119BCD095560000
(1660146858.095000) slcan0 3A4#C119BCD095560000
(1660146858.195816) slcan0 3A4#C119BCD095560000
(1660146858.295382) slcan0 3A4#C119BCD095560000
(1660146858.395519) slcan0 3A4#C119BCD095560000
(1660146858.495554) slcan0 3A4#C119BCD095560000
(1660146858.595504) slcan0 3A4#C119BCD095560000
(1660146858.695220) slcan0 3A4#C119BCD095560000
(1660146858.794711) slcan0 3A4#C119BCD095560000
(1660146858.895899) slcan0 3A4#C118BCD095560000
(1660146858.995765) slcan0 3A4#C118BCD095560000
(1660146859.095552) slcan0 3A4#C118BCD095560000
(1660146859.195163) slcan0 3A4#C118BCD095560000
(1660146859.295087) slcan0 3A4#C118BCD095560000
(1660146859.395268) slcan0 3A4#C118BCD095560000
(1660146859.494825) slcan0 3A4#C118BCD095560000
(1660146859.594853) slcan0 3A4#C118BCD095560000
(1660146859.695530) slcan0 3A4#C118BCD095560000
(1660146859.781815) slcan0 149#F77F00FF388103A4
(1660146859.795948) slcan0 3A4#C118BCD095560000
(1660146859.895602) slcan0 3A4#C118BCD095560000
(1660146859.995373) slcan0 3A4#C118BCD095560000
(1660146860.095027) slcan0 3A4#C118BCD095560000
(1660146860.194925) slcan0 3A4#C118BCD095560000
(1660146860.294777) slcan0 3A4#C118BCD095560000
(1660146860.394871) slcan0 3A4#C118BCD095560000
(1660146860.495870) slcan0 3A4#C118BCD095560000
(1660146860.595393) slcan0 3A4#C118BCD095560000
(1660146860.695274) slcan0 3A4#C118BCD096560000
(1660146860.795689) slcan0 3A4#C118BCD096560000
(1660146860.895584) slcan0 3A4#C118BCD096560000
(1660146860.994930) slcan0 3A4#C118BCD096560000
(1660146861.094755) slcan0 3A4#C118BCD096560000
(1660146861.195624) slcan0 3A4#C118BCD096560000
(1660146861.295518) slcan0 3A4#C118BCD096560000
(1660146861.395383) slcan0 3A4#C118BCD096560000


Which byte/bits would be changing to indicate the fan speed? i can see a bit flip in the second byte D2, and also changes in the low nib of D5[3-0] has changed in these two lines. That is using the convention of this thread where the first byte is D1. i prefer the standard used by dala where the first byte is D0 since i think that is the .DBC standard.

Concerning the "F77F00FF388103A4 and F87F00FF508103A4"
i found that those showed up with PID 149, which is said to be related to the ESC system.
 
kiev said:
When you did the testing, did you manually turn the fan speed knob or did the iCarSoft Max do the actuation?

So in the first test i found about 333 instances of the 3A4 pid, for example

(1660146840.995169) slcan0 3A4# C1 19 BC D0 92 56 00 00

(1660146858.595504) slcan0 3A4# C1 19 BC D0 95 56 00 00

entire filter here:
Code:
khouse@kennys-MacBook-Pro Jacob CAN % grep -ae 3A4 MaxFan5x.txt 
(1660146828.194439) slcan0 3A4#C118BCD090560000
(1660146828.294479) slcan0 3A4#C118BCD090560000
(1660146828.394171) slcan0 3A4#C118BCD090560000
(1660146828.494271) slcan0 3A4#C118BCD090560000
(1660146828.593940) slcan0 3A4#C118BCD090560000
(1660146828.695410) slcan0 3A4#C118BCD090560000
(1660146828.794878) slcan0 3A4#C118BCD090560000
(1660146828.894533) slcan0 3A4#C118BCD090560000
(1660146828.994660) slcan0 3A4#C118BCD090560000
(1660146829.094645) slcan0 3A4#C118BCD090560000
(1660146829.194182) slcan0 3A4#C118BCD090560000
(1660146829.294015) slcan0 3A4#C118BCD090560000
(1660146829.394133) slcan0 3A4#C118BCD090560000
(1660146829.495115) slcan0 3A4#C118BCD090560000
(1660146829.594839) slcan0 3A4#C118BCD090560000
(1660146829.694474) slcan0 3A4#C118BCD090560000
(1660146829.794407) slcan0 3A4#C118BCD090560000
(1660146829.894273) slcan0 3A4#C118BCD090560000
(1660146829.994554) slcan0 3A4#C118BCD090560000
(1660146830.094204) slcan0 3A4#C118BCD090560000
(1660146830.194891) slcan0 3A4#C118BCD090560000
(1660146830.294725) slcan0 3A4#C118BCD090560000
(1660146830.394883) slcan0 3A4#C118BCD090560000
(1660146830.494620) slcan0 3A4#C118BCD090560000
(1660146830.594724) slcan0 3A4#C118BCD090560000
(1660146830.694243) slcan0 3A4#C118BCD090560000
(1660146830.794226) slcan0 3A4#C118BCD090560000
(1660146830.894424) slcan0 3A4#C118BCD090560000
(1660146830.995061) slcan0 3A4#C118BCD090560000
(1660146831.094647) slcan0 3A4#C118BCD090560000
(1660146831.194541) slcan0 3A4#C118BCD090560000
(1660146831.294371) slcan0 3A4#C118BCD090560000
(1660146831.394285) slcan0 3A4#C118BCD090560000
(1660146831.494414) slcan0 3A4#C118BCD090560000
(1660146831.594019) slcan0 3A4#C118BCD090560000
(1660146831.694879) slcan0 3A4#C119BCD090560000
(1660146831.795058) slcan0 3A4#C119BCD090560000
(1660146831.894898) slcan0 3A4#C119BCD090560000
(1660146831.994482) slcan0 3A4#C119BCD090560000
(1660146832.094597) slcan0 3A4#C119BCD090560000
(1660146832.194499) slcan0 3A4#C119BCD090560000
(1660146832.294367) slcan0 3A4#C119BCD090560000
(1660146832.393988) slcan0 3A4#C119BCD090560000
(1660146832.494841) slcan0 3A4#C119BCD090560000
(1660146832.594727) slcan0 3A4#C119BCD090560000
(1660146832.694591) slcan0 3A4#C119BCD090560000
(1660146832.794650) slcan0 3A4#C119BCD090560000
(1660146832.894350) slcan0 3A4#C119BCD090560000
(1660146832.994237) slcan0 3A4#C119BCD090560000
(1660146833.094083) slcan0 3A4#C119BCD090560000
(1660146833.194918) slcan0 3A4#C119BCD090560000
(1660146833.294801) slcan0 3A4#C119BCD090560000
(1660146833.394634) slcan0 3A4#C119BCD090560000
(1660146833.494549) slcan0 3A4#C119BCD090560000
(1660146833.594404) slcan0 3A4#C119BCD090560000
(1660146833.694324) slcan0 3A4#C119BCD090560000
(1660146833.794185) slcan0 3A4#C119BCD090560000
(1660146833.894029) slcan0 3A4#C119BCD091560000
(1660146833.994899) slcan0 3A4#C119BCD091560000
(1660146834.095043) slcan0 3A4#C118BCD091560000
(1660146834.194629) slcan0 3A4#C118BCD091560000
(1660146834.294703) slcan0 3A4#C118BCD091560000
(1660146834.394800) slcan0 3A4#C118BCD091560000
(1660146834.494297) slcan0 3A4#C118BCD091560000
(1660146834.594171) slcan0 3A4#C118BCD091560000
(1660146834.694979) slcan0 3A4#C118BCD091560000
(1660146834.795251) slcan0 3A4#C118BCD091560000
(1660146834.895071) slcan0 3A4#C118BCD091560000
(1660146834.994590) slcan0 3A4#C118BCD091560000
(1660146835.094435) slcan0 3A4#C118BCD091560000
(1660146835.194328) slcan0 3A4#C118BCD091560000
(1660146835.294199) slcan0 3A4#C118BCD091560000
(1660146835.394086) slcan0 3A4#C118BCD091560000
(1660146835.494947) slcan0 3A4#C118BCD091560000
(1660146835.595131) slcan0 3A4#C118BCD091560000
(1660146835.695252) slcan0 3A4#C118BCD091560000
(1660146835.795562) slcan0 3A4#C118BCD091560000
(1660146835.894736) slcan0 3A4#C118BCD091560000
(1660146835.994324) slcan0 3A4#C118BCD091560000
(1660146836.094371) slcan0 3A4#C118BCD091560000
(1660146836.194042) slcan0 3A4#C118BCD091560000
(1660146836.294913) slcan0 3A4#C118BCD091560000
(1660146836.394775) slcan0 3A4#C118BCD091560000
(1660146836.494662) slcan0 3A4#C118BCD091560000
(1660146836.594707) slcan0 3A4#C118BCD091560000
(1660146836.694612) slcan0 3A4#C118BCD091560000
(1660146836.794544) slcan0 3A4#C118BCD091560000
(1660146836.894148) slcan0 3A4#C118BCD091560000
(1660146836.994998) slcan0 3A4#C118BCD091560000
(1660146837.094909) slcan0 3A4#C118BCD091560000
(1660146837.195117) slcan0 3A4#C118BCD091560000
(1660146837.294610) slcan0 3A4#C118BCD091560000
(1660146837.380841) slcan0 149#F77F00FF388103A4
(1660146837.394440) slcan0 3A4#C118BCD091560000
(1660146837.494643) slcan0 3A4#C118BCD091560000
(1660146837.594263) slcan0 3A4#C118BCD091560000
(1660146837.694375) slcan0 3A4#C119BCD091560000
(1660146837.794957) slcan0 3A4#C119BCD091560000
(1660146837.895257) slcan0 3A4#C119BCD092560000
(1660146837.994694) slcan0 3A4#C119BCD092560000
(1660146838.094853) slcan0 3A4#C119BCD092560000
(1660146838.194434) slcan0 3A4#C119BCD092560000
(1660146838.294343) slcan0 3A4#C119BCD092560000
(1660146838.394645) slcan0 3A4#C119BCD092560000
(1660146838.495420) slcan0 3A4#C119BCD092560000
(1660146838.595617) slcan0 3A4#C119BCD092560000
(1660146838.694785) slcan0 3A4#C119BCD092560000
(1660146838.795049) slcan0 3A4#C119BCD092560000
(1660146838.894714) slcan0 3A4#C119BCD092560000
(1660146838.994612) slcan0 3A4#C119BCD092560000
(1660146839.094292) slcan0 3A4#C119BCD092560000
(1660146839.194401) slcan0 3A4#C119BCD092560000
(1660146839.295015) slcan0 3A4#C119BCD092560000
(1660146839.395426) slcan0 3A4#C119BCD092560000
(1660146839.494752) slcan0 3A4#C119BCD092560000
(1660146839.594630) slcan0 3A4#C119BCD092560000
(1660146839.694485) slcan0 3A4#C119BCD092560000
(1660146839.794603) slcan0 3A4#C119BCD092560000
(1660146839.894485) slcan0 3A4#C119BCD092560000
(1660146839.995087) slcan0 3A4#C119BCD092560000
(1660146840.094979) slcan0 3A4#C119BCD092560000
(1660146840.195541) slcan0 3A4#C119BCD092560000
(1660146840.294706) slcan0 3A4#C119BCD092560000
(1660146840.394560) slcan0 3A4#C119BCD092560000
(1660146840.494409) slcan0 3A4#C119BCD092560000
(1660146840.594615) slcan0 3A4#C119BCD092560000
(1660146840.694442) slcan0 3A4#C119BCD092560000
(1660146840.795275) slcan0 3A4#C119BCD092560000
(1660146840.894919) slcan0 3A4#C119BCD092560000
(1660146840.995169) slcan0 3A4#C119BCD092560000
(1660146841.094654) slcan0 3A4#C118BCD092560000
(1660146841.194538) slcan0 3A4#C118BCD092560000
(1660146841.294573) slcan0 3A4#C118BCD092560000
(1660146841.394223) slcan0 3A4#C118BCD092560000
(1660146841.495147) slcan0 3A4#C118BCD092560000
(1660146841.595006) slcan0 3A4#C118BCD092560000
(1660146841.695354) slcan0 3A4#C118BCD092560000
(1660146841.794765) slcan0 3A4#C118BCD092560000
(1660146841.895020) slcan0 3A4#C118BCD092560000
(1660146841.994496) slcan0 3A4#C118BCD092560000
(1660146842.094408) slcan0 3A4#C118BCD092560000
(1660146842.194278) slcan0 3A4#C118BCD092560000
(1660146842.295108) slcan0 3A4#C118BCD092560000
(1660146842.394976) slcan0 3A4#C118BCD092560000
(1660146842.494903) slcan0 3A4#C118BCD092560000
(1660146842.594715) slcan0 3A4#C118BCD092560000
(1660146842.694569) slcan0 3A4#C118BCD092560000
(1660146842.794727) slcan0 3A4#C118BCD092560000
(1660146842.894557) slcan0 3A4#C118BCD092560000
(1660146842.995739) slcan0 3A4#C118BCD092560000
(1660146843.095055) slcan0 3A4#C118BCD092560000
(1660146843.194919) slcan0 3A4#C118BCD092560000
(1660146843.294797) slcan0 3A4#C118BCD092560000
(1660146843.394662) slcan0 3A4#C118BCD092560000
(1660146843.494534) slcan0 3A4#C118BCD092560000
(1660146843.594445) slcan0 3A4#C118BCD092560000
(1660146843.694314) slcan0 3A4#C118BCD092560000
(1660146843.795598) slcan0 3A4#C118BCD092560000
(1660146843.895567) slcan0 3A4#C119BCD092560000
(1660146843.994907) slcan0 3A4#C119BCD092560000
(1660146844.095080) slcan0 3A4#C119BCD092560000
(1660146844.194852) slcan0 3A4#C119BCD092560000
(1660146844.294709) slcan0 3A4#C119BCD092560000
(1660146844.394621) slcan0 3A4#C119BCD092560000
(1660146844.494285) slcan0 3A4#C119BCD092560000
(1660146844.595627) slcan0 3A4#C119BCD092560000
(1660146844.695502) slcan0 3A4#C119BCD092560000
(1660146844.794902) slcan0 3A4#C119BCD092560000
(1660146844.894727) slcan0 3A4#C119BCD092560000
(1660146844.994607) slcan0 3A4#C119BCD092560000
(1660146845.094664) slcan0 3A4#C119BCD092560000
(1660146845.194720) slcan0 3A4#C119BCD092560000
(1660146845.295521) slcan0 3A4#C119BCD093560000
(1660146845.395071) slcan0 3A4#C119BCD093560000
(1660146845.495151) slcan0 3A4#C119BCD093560000
(1660146845.595052) slcan0 3A4#C119BCD093560000
(1660146845.694673) slcan0 3A4#C119BCD093560000
(1660146845.794555) slcan0 3A4#C119BCD093560000
(1660146845.894753) slcan0 3A4#C119BCD093560000
(1660146845.994563) slcan0 3A4#C119BCD093560000
(1660146846.095615) slcan0 3A4#C119BCD093560000
(1660146846.195407) slcan0 3A4#C119BCD093560000
(1660146846.295019) slcan0 3A4#C119BCD093560000
(1660146846.394795) slcan0 3A4#C119BCD093560000
(1660146846.494662) slcan0 3A4#C119BCD093560000
(1660146846.594519) slcan0 3A4#C119BCD093560000
(1660146846.694384) slcan0 3A4#C118BCD093560000
(1660146846.795239) slcan0 3A4#C118BCD093560000
(1660146846.895466) slcan0 3A4#C118BCD093560000
(1660146846.995014) slcan0 3A4#C118BCD093560000
(1660146847.094885) slcan0 3A4#C118BCD094560000
(1660146847.194727) slcan0 3A4#C118BCD094560000
(1660146847.294826) slcan0 3A4#C118BCD094560000
(1660146847.394691) slcan0 3A4#C118BCD094560000
(1660146847.494711) slcan0 3A4#C118BCD094560000
(1660146847.595198) slcan0 3A4#C118BCD094560000
(1660146847.695105) slcan0 3A4#C118BCD094560000
(1660146847.794978) slcan0 3A4#C118BCD094560000
(1660146847.894914) slcan0 3A4#C118BCD094560000
(1660146847.994735) slcan0 3A4#C118BCD094560000
(1660146848.094556) slcan0 3A4#C118BCD094560000
(1660146848.194428) slcan0 3A4#C118BCD094560000
(1660146848.295595) slcan0 3A4#C118BCD094560000
(1660146848.395548) slcan0 3A4#C118BCD094560000
(1660146848.495066) slcan0 3A4#C118BCD094560000
(1660146848.594901) slcan0 3A4#C118BCD094560000
(1660146848.694785) slcan0 3A4#C118BCD094560000
(1660146848.794841) slcan0 3A4#C118BCD094560000
(1660146848.894486) slcan0 3A4#C118BCD094560000
(1660146848.994408) slcan0 3A4#C118BCD094560000
(1660146849.095289) slcan0 3A4#C118BCD094560000
(1660146849.195621) slcan0 3A4#C118BCD094560000
(1660146849.295038) slcan0 3A4#C118BCD094560000
(1660146849.394909) slcan0 3A4#C118BCD094560000
(1660146849.495284) slcan0 3A4#C118BCD094560000
(1660146849.594943) slcan0 3A4#C118BCD094560000
(1660146849.694537) slcan0 3A4#C118BCD094560000
(1660146849.795383) slcan0 3A4#C118BCD094560000
(1660146849.895253) slcan0 3A4#C119BCD094560000
(1660146849.995130) slcan0 3A4#C119BCD094560000
(1660146850.095508) slcan0 3A4#C119BCD094560000
(1660146850.194908) slcan0 3A4#C119BCD094560000
(1660146850.294791) slcan0 3A4#C119BCD094560000
(1660146850.394860) slcan0 3A4#C119BCD094560000
(1660146850.494514) slcan0 3A4#C119BCD094560000
(1660146850.595334) slcan0 3A4#C119BCD094560000
(1660146850.695200) slcan0 3A4#C119BCD094560000
(1660146850.795089) slcan0 3A4#C119BCD094560000
(1660146850.894955) slcan0 3A4#C119BCD094560000
(1660146850.994859) slcan0 3A4#C119BCD094560000
(1660146851.094696) slcan0 3A4#C119BCD094560000
(1660146851.194587) slcan0 3A4#C119BCD094560000
(1660146851.294465) slcan0 3A4#C119BCD094560000
(1660146851.395297) slcan0 3A4#C119BCD094560000
(1660146851.495164) slcan0 3A4#C119BCD094560000
(1660146851.595015) slcan0 3A4#C119BCD094560000
(1660146851.694913) slcan0 3A4#C119BCD094560000
(1660146851.794770) slcan0 3A4#C119BCD094560000
(1660146851.894874) slcan0 3A4#C119BCD094560000
(1660146851.994557) slcan0 3A4#C119BCD094560000
(1660146852.095389) slcan0 3A4#C119BCD094560000
(1660146852.195254) slcan0 3A4#C119BCD094560000
(1660146852.295495) slcan0 3A4#C119BCD094560000
(1660146852.395015) slcan0 3A4#C119BCD094560000
(1660146852.494932) slcan0 3A4#C119BCD094560000
(1660146852.594724) slcan0 3A4#C119BCD094560000
(1660146852.694618) slcan0 3A4#C119BCD094560000
(1660146852.794468) slcan0 3A4#C119BCD094560000
(1660146852.895328) slcan0 3A4#C118BCD094560000
(1660146852.995228) slcan0 3A4#C118BCD094560000
(1660146853.095096) slcan0 3A4#C118BCD094560000
(1660146853.194952) slcan0 3A4#C118BCD094560000
(1660146853.294903) slcan0 3A4#C118BCD094560000
(1660146853.394708) slcan0 3A4#C118BCD094560000
(1660146853.494673) slcan0 3A4#C118BCD094560000
(1660146853.595948) slcan0 3A4#C118BCD094560000
(1660146853.695310) slcan0 3A4#C118BCD094560000
(1660146853.795192) slcan0 3A4#C118BCD094560000
(1660146853.895060) slcan0 3A4#C118BCD094560000
(1660146853.995172) slcan0 3A4#C118BCD094560000
(1660146854.095002) slcan0 3A4#C118BCD094560000
(1660146854.194950) slcan0 3A4#C118BCD094560000
(1660146854.294548) slcan0 3A4#C118BCD094560000
(1660146854.395607) slcan0 3A4#C118BCD094560000
(1660146854.495475) slcan0 3A4#C118BCD094560000
(1660146854.595488) slcan0 3A4#C118BCD094560000
(1660146854.695030) slcan0 3A4#C118BCD094560000
(1660146854.794896) slcan0 3A4#C118BCD094560000
(1660146854.894747) slcan0 3A4#C118BCD094560000
(1660146854.994789) slcan0 3A4#C118BCD094560000
(1660146855.095846) slcan0 3A4#C118BCD094560000
(1660146855.195368) slcan0 3A4#C118BCD094560000
(1660146855.295244) slcan0 3A4#C119BCD095560000
(1660146855.395725) slcan0 3A4#C119BCD095560000
(1660146855.495219) slcan0 3A4#C119BCD095560000
(1660146855.594906) slcan0 3A4#C119BCD095560000
(1660146855.695242) slcan0 3A4#C119BCD095560000
(1660146855.794948) slcan0 3A4#C119BCD095560000
(1660146855.895848) slcan0 3A4#C119BCD095560000
(1660146855.995350) slcan0 3A4#C119BCD095560000
(1660146856.095209) slcan0 3A4#C119BCD095560000
(1660146856.195096) slcan0 3A4#C119BCD095560000
(1660146856.295156) slcan0 3A4#C119BCD095560000
(1660146856.395333) slcan0 3A4#C119BCD095560000
(1660146856.494663) slcan0 3A4#C119BCD095560000
(1660146856.594778) slcan0 3A4#C119BCD095560000
(1660146856.695723) slcan0 3A4#C119BCD095560000
(1660146856.795713) slcan0 3A4#C119BCD095560000
(1660146856.895168) slcan0 3A4#C119BCD095560000
(1660146856.995062) slcan0 3A4#C119BCD095560000
(1660146857.095248) slcan0 3A4#C119BCD095560000
(1660146857.195210) slcan0 3A4#C119BCD095560000
(1660146857.294929) slcan0 3A4#C119BCD095560000
(1660146857.395519) slcan0 3A4#C119BCD095560000
(1660146857.495697) slcan0 3A4#C119BCD095560000
(1660146857.595634) slcan0 3A4#C119BCD095560000
(1660146857.695780) slcan0 3A4#C119BDD095560000
(1660146857.795528) slcan0 3A4#C119BDD095560000
(1660146857.894941) slcan0 3A4#C119BCD095560000
(1660146857.994967) slcan0 3A4#C119BCD095560000
(1660146858.095000) slcan0 3A4#C119BCD095560000
(1660146858.195816) slcan0 3A4#C119BCD095560000
(1660146858.295382) slcan0 3A4#C119BCD095560000
(1660146858.395519) slcan0 3A4#C119BCD095560000
(1660146858.495554) slcan0 3A4#C119BCD095560000
(1660146858.595504) slcan0 3A4#C119BCD095560000
(1660146858.695220) slcan0 3A4#C119BCD095560000
(1660146858.794711) slcan0 3A4#C119BCD095560000
(1660146858.895899) slcan0 3A4#C118BCD095560000
(1660146858.995765) slcan0 3A4#C118BCD095560000
(1660146859.095552) slcan0 3A4#C118BCD095560000
(1660146859.195163) slcan0 3A4#C118BCD095560000
(1660146859.295087) slcan0 3A4#C118BCD095560000
(1660146859.395268) slcan0 3A4#C118BCD095560000
(1660146859.494825) slcan0 3A4#C118BCD095560000
(1660146859.594853) slcan0 3A4#C118BCD095560000
(1660146859.695530) slcan0 3A4#C118BCD095560000
(1660146859.781815) slcan0 149#F77F00FF388103A4
(1660146859.795948) slcan0 3A4#C118BCD095560000
(1660146859.895602) slcan0 3A4#C118BCD095560000
(1660146859.995373) slcan0 3A4#C118BCD095560000
(1660146860.095027) slcan0 3A4#C118BCD095560000
(1660146860.194925) slcan0 3A4#C118BCD095560000
(1660146860.294777) slcan0 3A4#C118BCD095560000
(1660146860.394871) slcan0 3A4#C118BCD095560000
(1660146860.495870) slcan0 3A4#C118BCD095560000
(1660146860.595393) slcan0 3A4#C118BCD095560000
(1660146860.695274) slcan0 3A4#C118BCD096560000
(1660146860.795689) slcan0 3A4#C118BCD096560000
(1660146860.895584) slcan0 3A4#C118BCD096560000
(1660146860.994930) slcan0 3A4#C118BCD096560000
(1660146861.094755) slcan0 3A4#C118BCD096560000
(1660146861.195624) slcan0 3A4#C118BCD096560000
(1660146861.295518) slcan0 3A4#C118BCD096560000
(1660146861.395383) slcan0 3A4#C118BCD096560000


Which byte/bits would be changing to indicate the fan speed? i can see a bit flip in the second byte D2, and also changes in the low nib of D5[3-0] has changed in these two lines. That is using the convention of this thread where the first byte is D1. i prefer the standard used by dala where the first byte is D0 since i think that is the .DBC standard.

Concerning the "F77F00FF388103A4 and F87F00FF508103A4"
i found that those showed up with PID 149, which is said to be related to the ESC system.


Ah you are right; the F7*/F8* were another pid. My quick sort was for '3A4' in the dataset then chop just the data, sort, unique. So it found those two lines since they have 3A4 in them:) Should of done grep '3A4#' instead. My bad, shouldn't of tried to quickly assess the logs.

I've tried issuing/replaying 3A4 PIDs and never got any response from the unit -- so I don't think it's that simple unfortunately.

Per the github page:
Code:
Transmitted every 100ms. Data bits:

D0: Heating level:
D0 bit 15 = 7 Middle
D0 bit 15 < 7 Cooling
D0 bit 15 > 7 Heating
D0: Recirculation: D0 bit 64
D0: AC On: D0 bit 128
D0: Fan spee MAX: D0 bit 32
D1: Fan speed (%): ((D1 bit 15) * 12.5) + 0.5
D1: Ventillation direction:
D1 >> 4 3
1/2: Face
3/4: Legs + Face
5/6: Legs
7/8: Legs + Windshield
9: Windshield

Perhaps I was optimistic, but I was hoping to see a 'new' pid that was issuing commands which would cause 3A4 to reflect new values.

I'm going to keep focusing on the DBC converter, as a DBC loaded into savvycan should make it easier to parse out real time what is known vs not, etc. If there is any specific sequence or captures other's like to have to triage, happy to do a capture. Will hold off parsing until I get a complete DBC working :)

--------------------

On the DBC creation. I'm having a bit of a problem, as if I am not mistaken DBCs will calculate a value such as :
D0 + offset * scale

Allot of the PID formulas are (D0 + Offset) * scale

I've been experimenting all evening but not found a clean solution. I can't help but think since the offsets tend to repeat themselves (+210), that it must translate to something. Similar to how (Dx*256+Dy) is big endian DxDy.
 
Lots of new or unknown high-priority PIDs were showing in the third raw capture file, 9.8Mb.

We need a way to tag the data stream for significant events, such as sending commands, or getting DTCs, pressing a button or twisting a knob.

One idea would be to press the brake pedal just before the action of interest, then release it when the action is complete or reply received. This will bracket the data to know where/when to look by the toggle of the brake pedal PID, then we can just zoom in on that section.

i don't understand reference to bit position by the decimal value that it represents--why not just refer to them by position in the byte, like 7 to 0, msb to lsb.

i don't know where or when or who came up with that scheme, but it makes no sense or has any value, and is more of a distraction and source of confusion than a benefit. Am i wrong here, is there some hidden benefit for such a cumbersome representation?
 
kiev said:
Lots of new or unknown high-priority PIDs were showing in the third raw capture file, 9.8Mb.

We need a way to tag the data stream for significant events, such as sending commands, or getting DTCs, pressing a button or twisting a knob.

One idea would be to press the brake pedal just before the action of interest, then release it when the action is complete or reply received. This will bracket the data to know where/when to look by the toggle of the brake pedal PID, then we can just zoom in on that section.

I can do such a test this evening! Smart to use something like a brake pedal that is a clear signal. I'll write a couple scripts for doing it as well.

Think I was optimistic this would be an 'obvious' new addition.

kiev said:
i don't understand reference to bit position by the decimal value that it represents--why not just refer to them by position in the byte, like 7 to 0, msb to lsb.

I am so glad I am not the only one that is confused at times by way of articulating things -- just assumed my lack of experience with hex, binary, etc makes it seem strange :)

I generally look at the github page, but also the code from OVMS for our vehicle if in doubt to see how it was programatically calculated in real life-- https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_mitsubishi/src/vehicle_mitsubishi.cpp .

Unfortunately, unless I am mistaken, a DBC file does not have do any () on the operations. It is always value + offset * scale . Where programatically we often do the value+offset *first* then scale the result of that.

My google-fu skills have not found an answer :) I think today I will try to compare the twiz dbc with it's source code on OVMS. I believe that is a verhicle with allot development on both. Hopefully they do some of the +210 or -62345 offsets in the code, and can compare to the DBC of how it was written in DBC language. I can't help but think there is a mathematic answer for 'when I see (D0 * 256 + D1 - 62345) that is actually ____ in DBC language. Same with +210 for offsets. Guessing some base16 or other obvious once you understand it answer that my simple brain doesn't know :D


kiev said:
i don't know where or when or who came up with that scheme, but it makes no sense or has any value, and is more of a distraction and source of confusion than a benefit. Am i wrong here, is there some hidden benefit for such a cumbersome representation?

If I had to *guess* -- the DBC spec does allow assigning values. Such as 0x101 or 0x012 pids indicate key status in D0 being 0x4 vs 0x0. In the DBC you can write something like; VAL_ 257 Key_Status 0 "Off" 4 "On"; Perhaps that is what this scheme is trying to be similar to? I agree tho, it hurts my brain.. but I also have no idea what I am doing.
 
PID 101 is a great example. It is a high priority (low numbered) PID that gives indication of the Key Switch. It only has 1 data byte, 8 bits long, so x101 D0, where D0 is bbbb-bbbb

But it is not important about what the decimal value of D0, it is just a switch, On or Off, a 1 or zero, a single bit, bit 2. D0 = 0000-0b00

So it is easier to evaluate D0[2] rather than make a calculation of its value converted to decimal. The decimal value has no real meaning in this case, it is just a bit eval/compare in a computer.

Other PIDs are obviously more important in the measurement value that they send, such as sensor data. In that case there would be some conversion of 1 or 2 bytes to some decimal value for engineering evaluation by a human. In these cases the bits are not evaluated but rather the entire word or byte.

The stacked CAN frame such as shown here seems to be a great format for reference. If the .dbc could reflect this sort of organization then i think it would make CAN investigation easier, what do you think...

oueFUfZ.png
 
I don't know how much one can alter the DBC format, since it's the kvaser standard. The positive with having a .DBC is it can be imported by majority of tools one would use working with canbus logs (savvycan, asammdf, kvaser, etc). If there is a spec to generate such a view I'm happy to code it :)

https://docs.fileformat.com/database/dbc/
https://www.csselectronics.com/pages/can-dbc-file-database-intro

Mainly trying to get the groups efforts into a standardized format that can be used in applications, and in theory be converted to other standard formats.

I read through other vehicle OVMS implementations + DBC files I could find. I had hoped to see the offsets folks have defined for miev also defined over there, since I had assumed there may be a consistent conversion in terms of bits and bytes offsets -- I didn't.


This evening I ended up just writing a brute force method to try and 'find' the value I calculate with the manual documents from github.

(0xb6 + 210) / 100 = 3.92v for batteries

I wrote a script to try different bitstart, bit lengths, offsets, and scaling. Then saved any results between 3 <-> 4 and manually reviewed. This is likely to leads to incorrect DBC translations, but it's a way for me to find *a* conversion, create a DBC then I can implement into my log viewers and see if the formula holds consistent.

Essentially i'm using the community findings to conclude the number I 'should' be able to calculate, then brute forcing +/- a few bits in terms of starting/length to find this. As well little vs big endian, and sign vs unsigned. Hopefully a match stands out as being fairly 'clean' and will try that in the DBC.

This is the nasty little nested for loops. Trying to find 3.92 for the max cell voltage using the formula (0xb6 + 210) / 100 . So trying every combination and checking for 3.92 in the result.
Code:
testFrame=bytearray.fromhex("B6B47F280D720016")
arbitration_id=0x373
name="Test"
for i in range(6,18):
  start_bit=i
  for i in range(12,30):
    size=i
    if size+start_bit > 63:
      continue
    for i in range(1,500):
      offset=i
      for i in range(1,200):
        scale=i*.01
        #print(start_bit,size)
        frame = canmatrix.Frame(name, arbitration_id=arbitration_id, size=8)
        signal = canmatrix.Signal(name, size = size,  start_bit = start_bit, is_little_endian=False, is_signed=False,offset=offset, factor=scale)
        frame.add_signal(signal)
        cm.add_frame(frame)
        testSignal(testFrame, name)
        
        
        
def testSignal(testFrame, name):
  decoded=frame.decode(testFrame)
  for (signal, value) in decoded.items():
    val_string=value.phys_value
    val=int(value.phys_value)
    if 2 <= val <= 3:
      print("%s | %s | %s | %s | %s | %s | %s" % (val_string, hex(val),val,start_bit,size, offset, scale))


By the end of this I may have a multi threaded machine learning can bus cracking nightmare :p
 
[Edit] 75A and 75B, These were found previously when just turning the Key to Ready, so not related to the scan tool. But still unknowns. Low Priority

Code:
(1660147536.032634) slcan0 75A#03E803E864644848
(1660147536.033605) slcan0 75B#4545454F2F8B8700
(1660147536.133464) slcan0 75A#03E903E864644848
(1660147536.133479) slcan0 75B#4545454F2F8B8700
(1660147536.233376) slcan0 75A#03E903E864644848
(1660147536.233393) slcan0 75B#4545454F2F8B8700
(1660147536.333239) slcan0 75A#03E903E864644848
(1660147536.333261) slcan0 75B#4545454F2F8B8700
(1660147536.433324) slcan0 75A#03E903E864644848
(1660147536.433327) slcan0 75B#4545454F2F8B8700
(1660147536.533003) slcan0 75A#03E903E764644848
(1660147536.533007) slcan0 75B#4545454F2F8B8700
(1660147536.632895) slcan0 75A#03E903E864644848
(1660147536.633849) slcan0 75B#4545454F2F8B8700
(1660147536.733241) slcan0 75A#03E903E864644848
(1660147536.733994) slcan0 75B#4545454F2F8B8700
(1660147536.832617) slcan0 75A#03E903E864644848
(1660147536.833576) slcan0 75B#4545454F2F8B8700
(1660147536.933592) slcan0 75A#03E803E864644848
(1660147536.933625) slcan0 75B#4545454F2F8B8700
 
I'd guess those could be from the diag code reading and replying, but need to dig in.

On your earlier comments about the way of writing the D0 bit 15 and being confusion. I believe this is from the C code used in OVMS now. The C syntax is D[0] & 15 to get bytes 0-3 of D0. 15 being Binary of 1111, to indicate the first 3 bytes (0-3) of D0 Byte. After reading the C code here https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_mitsubishi/src/vehicle_mitsubishi.cpp for AC pids, it made a bit more sense why it was written how it was on github.

The original 'find' was in this post; http://myimiev.com/forum/viewtopic.php?p=31226 which had a more natural way of wording the findings.



I believe I have the first testable DBC file uploaded;
https://github.com/slackspace-io/imiev-dbc/blob/main/imiev.dbc

Total of 21 pids configured . I had to find my own offset and scale for several, so need to do some testing to ensure the logic works as expected.

I have not started on any multiplex'd PIDs (such as 0x29A), as I need to still undestand how that logic even works :)

Will probably format this differently in the future, but tried to keep track of PIDs I confirmed with quick skimming of data within SaavyCan having the DBC file loaded;
https://github.com/slackspace-io/imiev-dbc/blob/main/confirmed.pids

For testing, I think live streaming canbus data into SaavyCan with the DBC loaded will be quite useful. Can select a specific pid(0x424) then test that the different statuses work as expected. Or that range reflects what is shown on the dash, etc.

A few of the PIDs I could not manually replicate what the github page claimed -- for example; 0x697 claims D1 is % of charge on Chademo -- a random sampling of my data found 0x65 as D1 which is 101 decimal :) This is something that real life testing will be better to zero on on some of the math trying to use big/small endian, offset, and scale per DBC standard to match real life results.

I will be traveling for the weekend so will be unable to do any in-car testing. I will however work on parsing existing canbus log dumps, applying the DBC, and visualizing the result -- if I have time on my laptop. This should atleast let me find completely out-of-range results from the DBC.

If anyone does test and finds a crazy result, please share the pid/data and if you know what the 'expected' value aught to of been.
 
CZeroOwner said:
If we can find a temperature that has better agreement with the true outside temperature I will change it in the app.

The sensor for this is easily accessible at the front of the car. It would be simple enough to hit it with a heat gun and/or cooling spray to check calibration and what PIDs change whilst this is happening (My car is a 2012 Pugeot Ion)
 
stoatwblr said:
The sensor for this is easily accessible at the front of the car. It would be simple enough to hit it with a heat gun and/or cooling spray to check calibration and what PIDs change whilst this is happening (My car is a 2012 Pugeot Ion)

Thanks for the suggestion. I will try it.
 
This BMU 100% battery capacity was supplied by anko on https://www.myoutlanderphev.com/forum/viewtopic.php?f=10&t=1796
It is the capacity shown by CaniOn, EvBatMon, HobDrive and now by OBDZero.

The second data, present charge in Ah, is as far as I know new.

These are the commands to the dongle that I use to change the data stream
ATWS
ATE1
ATSP6
ATH1
ATL0
ATS1
ATFCSH761
ATFCSD300000
ATFCSM1
ATSH761
2101

This makes this data available:

762:D1=36 (D4 * 256 + D5) / 10.0 = BMU 100% battery capacity in Ah
762:D1=36 (D6 * 256 + D7) / 10.0 = BMU present charge in Ah

BMU SoC = 100* present charge / battery capacity

This SoC is similar to SoC1 as shown by OBDZero but a bit more precise. It agrees less well with SoC2 which is the most often reported SoC.

These dongle commands return the data stream to normal.
ATFCSM0
ATCAF0
ATCM D00
 
Back
Top