wastegate Posted April 9, 2022 Report Share Posted April 9, 2022 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. 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). 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. 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 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. 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. 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. Hopefully that helps some people. Quote Link to comment Share on other sites More sharing options...
Adamw Posted April 9, 2022 Report Share Posted April 9, 2022 16 hours ago, wastegate said: Link uses Decimal, Haltech use Hex. 0x3E4 = 2047 Note 0x3E4 is dec 996. Quote Link to comment Share on other sites More sharing options...
wastegate Posted April 9, 2022 Author Report Share Posted April 9, 2022 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.. Adam, Just replicated it changing the ID on me. PCLink_jYvjnZzZDJ.mp4 Quote Link to comment Share on other sites More sharing options...
Vaughan Posted April 27, 2022 Report Share Posted April 27, 2022 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. Quote Link to comment Share on other sites More sharing options...
Turbo.Tim Posted May 2, 2022 Report Share Posted May 2, 2022 I was trying to follow this post and I am not able to change the output. Quote Link to comment Share on other sites More sharing options...
Adamw Posted May 2, 2022 Report Share Posted May 2, 2022 This post is in the G4X section, it looks like you have a G4+. In G4+ you go to the output you want to use and set its function to "CE Light". Quote Link to comment Share on other sites More sharing options...
Nielsen Rallysport Posted September 15, 2022 Report Share Posted September 15, 2022 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! Quote Link to comment Share on other sites More sharing options...
sasquatch989 Posted July 25, 2023 Report Share Posted July 25, 2023 I also have the same problem as Nielson, only works when IC7 is setup in Haltech v2, any ideas on where I could have gone wrong? Quote Link to comment Share on other sites More sharing options...
wastegate Posted July 26, 2023 Author Report Share Posted July 26, 2023 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. 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. Sorry for the late response, been distracted. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.