Jump to content

Extra ICONs on IC7 with G4X


wastegate

Recommended Posts

Not really a request for help, just sharing knowledge for others too.

If you currently have a g4x and a IC7 dash, you will likely see some icons on the dash that just don't trigger with the Link protocol (Displaydash). 

A lot of these status fields are not in the standard Displaydash CAN package. 
And Haltech did not include them in the Link CAN protocol on their dash when you choose it.

But don't worry, we can still get them working with a little text editing and CAN setup.

There are quite a few options for flag/status on the IC7, a lot that is currently not integrated, like cruise control status etc.
But for this setup, I wanted to get the Battery Light, Oil Light and Check Engine light on the dash.

Prerequisites;

Setup the IC7 in PCLink like normal, using Displaylink and ID
Load the IC7 with the Link CAN protocol like normal.
Check that your Link ECU is communicating to the IC7 ok.
Save your IC7 .map config to a file.
A good Text editor (Notepad++ is fine, vim if you are elite)
A good zip utility (7zip is great, Unregistered Winzip if fine, )

Here is the full Haltech CAN schema as of late last year. It's the latest I got from Haltech.
https://drive.google.com/file/d/1aHkwiXcw1WpFAPQFni7nCmqO_iwTeuIh/view?usp=sharing

note: I'm going to use the Haltech can IDs and byte addresses here, only purely for ease of reference. But there is nothing stopping you changing the addresses, certainly if you have two status fields over two different IDs.. you can change the address in PCLink and also in the IC7 config.

The status for CE Light and Oil Light used below, are at Haltech CAN ID 0x3E4 7:7 and 1:0 respectively.

Secondary, we need to add the status fields to output to CAN in the Link ECU.

1. For the CE Light, I had to change the output from a DI it was assigned to originally to a CAN Aux 1. Go to "Auxiliary Outputs" -> "CE Light", change the Output to CAN Aux 1. You will need to change the GP Output 1 - CE Light to trigger CAN Aux 1 for SW Parameter 2. It isn't needed in my instance as the IC7 has alerts anyway for ECT etc.

tBmlmJq.png

2. For Oil Pressure Light, I setup a new GP Output 2, Labelled it "Oil Pressure Low" Output was CAN Aux 2, SW Parameter 1 = Oil Pressure < 15.0psi. No other conditions. So this will trigger CAN Aux 2 if oil pressure is below 15psi. The pressure value, you can change yourself, by my idle pressure when hot was 25 and I knew it got below 15, there is a serous issue (this is linked into engine protection not covered here).

mNqgmiB.png

 

Now that we have what we want to send setup to send it on CAN, lets setup the stream.

3. In PCLink's CAN setup, add a new stream and put CAN Aux 1 (CE Light) as the parameter with a start position of 56 and only 1 bit wide. Then add any others you you may want, like I did adding the Oil Pressure Low. 

W4mYwBI.png

4. Then assign the stream to a Channel, with a Transmit rate of 5 hz, it's only a status, doesn't need to be quick. And give it the correct ID, remember, Link uses Decimal, Haltech use Hex. 0x3E4 = 2047

TdVJdqu.png

6. Now we are setup to send the messages over CAN. We can move to the IC7 to configure it to receive the CAN messages and assign the correct status.

7. Now since the IC7 ICC software does not have any direct way to configure CAN messages, we need to do this old school and edit text files, or more correctly JSON files, which are a structured file for configurations used on a lot of things. You need to extract the .map config file as a zip file to your drive. Sometimes it's easy just to rename the extension of the config file from .map to .zip remember to backup your file before editing it.

8. Once the config file is extracted, it should have a new directory with the same name as your map name.
You can then browse to the data directory, you should see a bunch of json file in there. You need to open the file called ecuchannels.json in Notepad++ or any other good text editor. If it looks messed up or everything is on one line, change your editor. 
image.png.44f355cc01f711b0545b62bb9706f4e3.png

rIKfdse.png


9. This is where we need to add in the new status fields. Scroll all the way to the bottom, now if you started with a Link setup in IC7, the last one would be Speed Pulse Rate. The config is enclosed in parent [] brackets and each Function is closed in child {} brackets and comma separated. This is VERY important, because if your commas and brackets are not right, the map will fail to load.
Each new function needs to start with a { and end with a }, including the comma except for the last one.
Example;

[
  {
     "Function1" : data,
   },
   {
     "Function2" : data,
   }
]

Here is the edits I made to mine. Which are enclosed within the main [] brackets

      {
        "unitGroup": 20,
        "unitSelection": 0,
        "ID": 88,
        "Name": "Check Engine Light",
        "DefaultLabel": "CHECK ENGINE",
        "DefaultUnit": null,
        "MinimumValue": 0.0,
        "MaximumValue": 1.0,
        "Shortname": "CEL,MIL,Diagnostic Light",
        "Function": "Check Engine Light",
        "Unit": "enum",
        "PullupPosition": "",
        "PullupStatus": 0,
        "ThresholdValue": 2.5,
        "SensorIndex": -1,
        "EcuCanID": 996,
        "EcuByteOrder": "7:7",
        "OBDIICanId": 0,
        "OBDIIByteOrder": null
    },
        {
        "unitGroup": 20,
        "unitSelection": 0,
        "ID": 143,
        "Name": "Oil Pressure Light",
        "DefaultLabel": "OIL PRESSURE LIGHT",
        "DefaultUnit": null,
        "MinimumValue": 0.0,
        "MaximumValue": 1.0,
        "Shortname": "OilLight",
        "Function": "Oil Pressure Light",
        "Unit": "enum",
        "PullupPosition": "",
        "PullupStatus": 0,
        "ThresholdValue": 2.5,
        "SensorIndex": -1,
        "EcuCanID": 996,
        "EcuByteOrder": "1:0",
        "OBDIICanId": 0,
        "OBDIIByteOrder": null
    }

10. Now that the file is edited, save it. Now we need to compress this back to a zip file. You need to ZIP up the main directory with the data, images, qml, styles etc directories. You can name it something different if you like. Once zipped up, rename the extension from .zip to .map. 
image.png.79b541fe6982b8a46e0c7a23566c07b6.png

 

11. Load the config to IC7, make sure it loads ok. If there is a error, or crashes, you have failed at formatting the JSON correctly or fiddled what you should not have fiddled.

12. Once loaded to your dash, you should see at lease CE light and Oil Pressure light working, giving a little more OEM look.

vLPFFxe.jpeg

 

Hopefully that helps some people.

image.png

Link to comment
Share on other sites

Hmm so that is not the first time I've noticed PCLink replace the ID... Usually when clicking on different streams it would randomly change the ID.

To check, I reloaded the map, sure enough, it's changed back to the way it suppose to be 996..

6eKiiHb.png

Adam, 

Just replicated it changing the ID on me.

 

 

Link to comment
Share on other sites

  • 3 weeks later...
On 4/10/2022 at 11:41 AM, wastegate said:

Hmm so that is not the first time I've noticed PCLink replace the ID... Usually when clicking on different streams it would randomly change the ID.

this has been fixed and the fix will be in the next release.

Link to comment
Share on other sites

  • 4 months later...

Awesome post wastegate. Thanks for sharing!

I have been playing around with this and can't seem to get my Link template to work with the warning lights. I found if I load up the Haltech default template, the warning lights work fine, but nothing else does (so would require creating custom streams for each output on the link end). Would prefer to avoid this if possible! When loading up my edited "ecuchannels", everything else still reads fine on the dash, possibly I've stuffed something in the code. Any tips?

Thanks in advance!

 

 

 

Haltech code2.jpg

Link to comment
Share on other sites

  • 10 months later...

Here is my IC7 config with the warning lights working.
https://drive.google.com/file/d/1yXibZ4oG7pv9rlA_w-yDUdTBeQ7oD_EM/view?usp=sharing

Here is my Warning Light Stream File. I use ID 996, update rate 2hz.
https://drive.google.com/file/d/1-Hocp5d4fcS3d1dAv8VGA7bsFsapH3ie/view?usp=sharing

This is how it's configured on my ECU if the stream file doesn't work for whatever reason.
yv4Wp6D.png

 

 

And this is the Winmerge compare between the fresh Link profile IC7 config and the modded one included in this post. You can see the added data to the file.

dLL52lV.png

 

Sorry for the late response, been distracted.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...