Mini Cooper Forum banner

21 - 40 of 60 Posts

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts
@sb2002 did your car already have a KCAN3 bus for, say LED headlights?
I still have had no joy getting my reversing camera to work and I am now fairly certain that it's because my BDC doesn't support KCAN3.

The camera does work on KCAN2, however is invisible to E-Sys and therefore cannot be coded - which is required. So equally if anyone knows how to code an ECU directly or on another bus, please do let me know.
When you say your BDC doesn't support K-CAN3, do you mean it's not there, or it wasn't there but you've retrofitted it, but it's still not working?
 

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts
Just an update, I've posted the following in my guide (linked in signature)

After the discussion had in this thread with regards to KCAN 3, I would like to warn anyone attempting the camera retrofit to check if CAN3 is active first.

I've installed 2 retrofit kits that both came with a retrofit canbus terminating resistor for KCAN 2. This suggests that whatever your build, KCAN 2 should be active.

The retrofit document from mini is for a BMW 2 Series. This contains a retrofit canbus terminating resistor for KCAN 3.

The fact that this kit is not available to Minis, and the discussions in the thread linked to, suggests that not all BDCs will be KCAN3 ready.

There are too my knowledge only 3 systems that use KCAN3...

  1. The reversing camera
  2. LED headlights
  3. Longitudinal torque distribution (All4 only)
  4. Active sound design (Electric/Hybrid only)
So unless you have an All4, electric/hybrid vehicle, or LED headlights, you might have issues getting the camera to work.

It has been suggested elsewhere that up to a certain point, BDCs were available in low, medium, and high (and after that they're bespoke). I cannot confirm this, but it could add weight to the reason the guy trying to add LED headlights is having issues.
 

·
Registered
Joined
·
21 Posts
After A LOT of reverse engineering, trial and error I did get it working.

At the top level two things are required:
  1. The ICAM module needs to be coded to the car using E-Sys. (I also updated the firmware to match the car I-level)
  2. Connect ICAM to KCAN4 (the CAN bus with the head unit) and forward all KCAN4 messages with ID number 37A (hex) to KCAN2 (the CAN bus with the PDC/PMA)
Coding & programming was far from straightforward as the body gateway (ZGW) will send all messages for ICAM to KCAN3, which in my case doesn't exist. I built a rig using a Raspberry Pi with a (seriously cheap) CAN bus module. I am currently working on an alternative using my "permanent fit" solution below. I will write this up once done.

Once coded (and after more experimentation and reverse engineering) I hooked the ICAM onto KCAN4 (terminating resistor in the left hand side of the boot).
Once powered up the ICAM sends a message roughly once per second with ID number 37A, which needs to make it onto KCAN2. Without this, the camera option never appears on the head unit.
Once I had worked out that was what was needed, this was a piece of cake using a Raspberry Pi with two CAN bus modules, however this wouldn't be appropriate for as permanent fit due to startup delays and the idea of running a Linux operating system as part of the car.
I have set up an Arduino with two CAN shields, one connected to KCAN2 the other to KCAN4. Note that stacking two CAN shields requires the top one to have a bit of modification so that the two shields can be addressed individually: I cut pins D3 and D10, then linked pin D9 to the input of pin D10 and pin D2 to the input of pin D3.
For power I used the PDC/PMA power - as per the ICAM itself - and an external Car 5v power module. Whilst an Arduino has its own regulator for 7-12V DC, I didn't want to rely on it in the car given that the alternator runs at 14V.

My car has a third row of seats, with plenty of space below the rear to hide the electronics.

Photo attached. I will try to draw up a couple of diagrams. Code below:
#include <mcp2515.h>

const int KCAN2_CS_PIN = 10;
const int KCAN4_CS_PIN = 9;
const CAN_SPEED KCAN_DATA_RATE= CAN_500KBPS;
const CAN_CLOCK MCP_OSC = MCP_8MHZ;
const uint32_t CAN_ID_FWD = 0x37A;

struct can_frame message;

MCP2515 kcan2(KCAN2_CS_PIN);
MCP2515 kcan4(KCAN4_CS_PIN);

void setup()
{
Serial.begin(115200);
while(!Serial) {};

kcan2.reset();
kcan2.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan2.setNormalMode();

kcan4.reset();
kcan4.setConfigMode();
kcan4.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan4.setFilterMask(MCP2515::MASK0, false, 0x7FF);
kcan4.setFilterMask(MCP2515::MASK1, false, 0x7FF);
kcan4.setFilter(MCP2515::RXF0, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF1, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF2, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF3, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF4, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF5, false, CAN_ID_FWD);
kcan4.setNormalMode();

Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}

void loop()
{
switch(kcan4.readMessage(&message))
{
case MCP2515::ERROR_OK:
Serial.print(message.can_id, HEX); // print ID
Serial.print(" ");
Serial.print(message.can_dlc, HEX); // print DLC
Serial.print(" ");

for (int i = 0; i<message.can_dlc; i++)
{ // print the data
Serial.print(message.data,HEX);
Serial.print(" ");
}

Serial.print(" -> ");
Serial.print(kcan2.sendMessage(&message));
Serial.println();
break;
}
}
 

Attachments

·
Registered
Joined
·
21 Posts
When you say your BDC doesn't support K-CAN3, do you mean it's not there, or it wasn't there but you've retrofitted it, but it's still not working?
Apologies - I missed your post. It wasn't there, I retrofitted it but my ZGW refused to support it, even after many many attempts with E-Sys. Presumably the supporting hardware is not fitted.
 

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts
After A LOT of reverse engineering, trial and error I did get it working.

At the top level two things are required:
  1. The ICAM module needs to be coded to the car using E-Sys. (I also updated the firmware to match the car I-level)
  2. Connect ICAM to KCAN4 (the CAN bus with the head unit) and forward all KCAN4 messages with ID number 37A (hex) to KCAN2 (the CAN bus with the PDC/PMA)
Coding & programming was far from straightforward as the body gateway (ZGW) will send all messages for ICAM to KCAN3, which in my case doesn't exist. I built a rig using a Raspberry Pi with a (seriously cheap) CAN bus module. I am currently working on an alternative using my "permanent fit" solution below. I will write this up once done.

Once coded (and after more experimentation and reverse engineering) I hooked the ICAM onto KCAN4 (terminating resistor in the left hand side of the boot).
Once powered up the ICAM sends a message roughly once per second with ID number 37A, which needs to make it onto KCAN2. Without this, the camera option never appears on the head unit.
Once I had worked out that was what was needed, this was a piece of cake using a Raspberry Pi with two CAN bus modules, however this wouldn't be appropriate for as permanent fit due to startup delays and the idea of running a Linux operating system as part of the car.
I have set up an Arduino with two CAN shields, one connected to KCAN2 the other to KCAN4. Note that stacking two CAN shields requires the top one to have a bit of modification so that the two shields can be addressed individually: I cut pins D3 and D10, then linked pin D9 to the input of pin D10 and pin D2 to the input of pin D3.
For power I used the PDC/PMA power - as per the ICAM itself - and an external Car 5v power module. Whilst an Arduino has its own regulator for 7-12V DC, I didn't want to rely on it in the car given that the alternator runs at 14V.

My car has a third row of seats, with plenty of space below the rear to hide the electronics.

Photo attached. I will try to draw up a couple of diagrams. Code below:
#include <mcp2515.h>

const int KCAN2_CS_PIN = 10;
const int KCAN4_CS_PIN = 9;
const CAN_SPEED KCAN_DATA_RATE= CAN_500KBPS;
const CAN_CLOCK MCP_OSC = MCP_8MHZ;
const uint32_t CAN_ID_FWD = 0x37A;

struct can_frame message;

MCP2515 kcan2(KCAN2_CS_PIN);
MCP2515 kcan4(KCAN4_CS_PIN);

void setup()
{
Serial.begin(115200);
while(!Serial) {};

kcan2.reset();
kcan2.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan2.setNormalMode();

kcan4.reset();
kcan4.setConfigMode();
kcan4.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan4.setFilterMask(MCP2515::MASK0, false, 0x7FF);
kcan4.setFilterMask(MCP2515::MASK1, false, 0x7FF);
kcan4.setFilter(MCP2515::RXF0, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF1, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF2, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF3, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF4, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF5, false, CAN_ID_FWD);
kcan4.setNormalMode();

Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}

void loop()
{
switch(kcan4.readMessage(&message))
{
case MCP2515::ERROR_OK:
Serial.print(message.can_id, HEX); // print ID
Serial.print(" ");
Serial.print(message.can_dlc, HEX); // print DLC
Serial.print(" ");

for (int i = 0; i<message.can_dlc; i++)
{ // print the data
Serial.print(message.data,HEX);
Serial.print(" ");
}

Serial.print(" -> ");
Serial.print(kcan2.sendMessage(&message));
Serial.println();
break;
}
}
Holy ****ballls...

That's amazing work.

This might be useful to the guys trying to install LED headlights without CAN3 - assuming someone can work out what needs to be done.

Far more than I could do though.

I salute you.
 

·
Registered
Joined
·
80 Posts
Wow, that's pretty impressive!
I'm curious, I assume the F46 is available with a backup camera, and it looks like there is only one BDC part number, so I wonder how BMW does it?

Very amazing work!

Dan
 

·
Registered
Joined
·
21 Posts
Dan
Backup camera is available as both a factory fit and retrofit option for F46 (which is an F56 platform). I believe this kit would fit F45 & F48 too.
The retrofit kit is in the parts catalogue here. What I failed to spot were the magic words at the bottom of this page "only in conjunction with.... BDC"...

There isn't a retrofit kit for F56 however it will be eminently possible (especially for a vehicle with KCAN3!) I would expect the only difference for an F56 would be the boot handle.

BMW are known (on BMW badged vehicles) to manufacture the BDCs specific to the chassis order with only the components needed for the chosen options, however replacement BDCs are "fully capable". In an F56 the BDC contains the key stuff, so is challenging to replace.


If anyone is looking to retrofit KCAN3 for LED lights, I would be happy to give them some suggestions.
I will write up the "bench coder" and get it posted for reference. This would be needed to code any retrofit ECU to a car without the expected CAN bus as the ZGW (part of BDC) will not route the required diagnostic messages.
 

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts
I successfully installed the camera on my F54, but I had Can3 already. I believe there have been some successful F55/F56 installations.

There is however, no official retrofit kit for Mini's, so you have to piece it together yourself with the repair cable (that is available), and the correct camera and housings.
 

·
Registered
Joined
·
116 Posts
Dan
Backup camera is available as both a factory fit and retrofit option for F46 (which is an F56 platform). I believe this kit would fit F45 & F48 too.
The retrofit kit is in the parts catalogue here. What I failed to spot were the magic words at the bottom of this page "only in conjunction with.... BDC"...

There isn't a retrofit kit for F56 however it will be eminently possible (especially for a vehicle with KCAN3!) I would expect the only difference for an F56 would be the boot handle.

BMW are known (on BMW badged vehicles) to manufacture the BDCs specific to the chassis order with only the components needed for the chosen options, however replacement BDCs are "fully capable". In an F56 the BDC contains the key stuff, so is challenging to replace.


If anyone is looking to retrofit KCAN3 for LED lights, I would be happy to give them some suggestions.
I will write up the "bench coder" and get it posted for reference. This would be needed to code any retrofit ECU to a car without the expected CAN bus as the ZGW (part of BDC) will not route the required diagnostic messages.
Hey, I have 2020 mini cooper ”cooper” with halogen lights. I bought the camera module (Icam). Can you elaborate more about the process? Here is a screenshot before the installation. (didn’t install it yet)
71108
 

·
Registered
Joined
·
18 Posts
Hey Bill,
Amazing job!! Impressive.
I have quite the same issue, like you.
No KCAN3 on my BDC_BODY, even after several and several tests.To resumed, I tried to retrofit some led headlights in place of my halogen lights in my 2016 f55, but no way. KCAN3 doesn't exist in my BDC_BODY .

I tried to connect my led headlights on kcan2 network and at this time, lights is up.
Daylight + low beam stay on but no way to control from the switch . No effect.
Could you help me and give some advice in order to control my headlights from another kcan network ?
I really appreciate
Thanks (y)

After A LOT of reverse engineering, trial and error I did get it working.

At the top level two things are required:
  1. The ICAM module needs to be coded to the car using E-Sys. (I also updated the firmware to match the car I-level)
  2. Connect ICAM to KCAN4 (the CAN bus with the head unit) and forward all KCAN4 messages with ID number 37A (hex) to KCAN2 (the CAN bus with the PDC/PMA)
Coding & programming was far from straightforward as the body gateway (ZGW) will send all messages for ICAM to KCAN3, which in my case doesn't exist. I built a rig using a Raspberry Pi with a (seriously cheap) CAN bus module. I am currently working on an alternative using my "permanent fit" solution below. I will write this up once done.

Once coded (and after more experimentation and reverse engineering) I hooked the ICAM onto KCAN4 (terminating resistor in the left hand side of the boot).
Once powered up the ICAM sends a message roughly once per second with ID number 37A, which needs to make it onto KCAN2. Without this, the camera option never appears on the head unit.
Once I had worked out that was what was needed, this was a piece of cake using a Raspberry Pi with two CAN bus modules, however this wouldn't be appropriate for as permanent fit due to startup delays and the idea of running a Linux operating system as part of the car.
I have set up an Arduino with two CAN shields, one connected to KCAN2 the other to KCAN4. Note that stacking two CAN shields requires the top one to have a bit of modification so that the two shields can be addressed individually: I cut pins D3 and D10, then linked pin D9 to the input of pin D10 and pin D2 to the input of pin D3.
For power I used the PDC/PMA power - as per the ICAM itself - and an external Car 5v power module. Whilst an Arduino has its own regulator for 7-12V DC, I didn't want to rely on it in the car given that the alternator runs at 14V.

My car has a third row of seats, with plenty of space below the rear to hide the electronics.

Photo attached. I will try to draw up a couple of diagrams. Code below:
#include <mcp2515.h>

const int KCAN2_CS_PIN = 10;
const int KCAN4_CS_PIN = 9;
const CAN_SPEED KCAN_DATA_RATE= CAN_500KBPS;
const CAN_CLOCK MCP_OSC = MCP_8MHZ;
const uint32_t CAN_ID_FWD = 0x37A;

struct can_frame message;

MCP2515 kcan2(KCAN2_CS_PIN);
MCP2515 kcan4(KCAN4_CS_PIN);

void setup()
{
Serial.begin(115200);
while(!Serial) {};

kcan2.reset();
kcan2.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan2.setNormalMode();

kcan4.reset();
kcan4.setConfigMode();
kcan4.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan4.setFilterMask(MCP2515::MASK0, false, 0x7FF);
kcan4.setFilterMask(MCP2515::MASK1, false, 0x7FF);
kcan4.setFilter(MCP2515::RXF0, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF1, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF2, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF3, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF4, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF5, false, CAN_ID_FWD);
kcan4.setNormalMode();

Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}

void loop()
{
switch(kcan4.readMessage(&message))
{
case MCP2515::ERROR_OK:
Serial.print(message.can_id, HEX); // print ID
Serial.print(" ");
Serial.print(message.can_dlc, HEX); // print DLC
Serial.print(" ");

for (int i = 0; i<message.can_dlc; i++)
{ // print the data
Serial.print(message.data,HEX);
Serial.print(" ");
}

Serial.print(" -> ");
Serial.print(kcan2.sendMessage(&message));
Serial.println();
break;
}
}
 

·
Registered
Joined
·
116 Posts
After A LOT of reverse engineering, trial and error I did get it working.

At the top level two things are required:
  1. The ICAM module needs to be coded to the car using E-Sys. (I also updated the firmware to match the car I-level)
  2. Connect ICAM to KCAN4 (the CAN bus with the head unit) and forward all KCAN4 messages with ID number 37A (hex) to KCAN2 (the CAN bus with the PDC/PMA)
Coding & programming was far from straightforward as the body gateway (ZGW) will send all messages for ICAM to KCAN3, which in my case doesn't exist. I built a rig using a Raspberry Pi with a (seriously cheap) CAN bus module. I am currently working on an alternative using my "permanent fit" solution below. I will write this up once done.

Once coded (and after more experimentation and reverse engineering) I hooked the ICAM onto KCAN4 (terminating resistor in the left hand side of the boot).
Once powered up the ICAM sends a message roughly once per second with ID number 37A, which needs to make it onto KCAN2. Without this, the camera option never appears on the head unit.
Once I had worked out that was what was needed, this was a piece of cake using a Raspberry Pi with two CAN bus modules, however this wouldn't be appropriate for as permanent fit due to startup delays and the idea of running a Linux operating system as part of the car.
I have set up an Arduino with two CAN shields, one connected to KCAN2 the other to KCAN4. Note that stacking two CAN shields requires the top one to have a bit of modification so that the two shields can be addressed individually: I cut pins D3 and D10, then linked pin D9 to the input of pin D10 and pin D2 to the input of pin D3.
For power I used the PDC/PMA power - as per the ICAM itself - and an external Car 5v power module. Whilst an Arduino has its own regulator for 7-12V DC, I didn't want to rely on it in the car given that the alternator runs at 14V.

My car has a third row of seats, with plenty of space below the rear to hide the electronics.

Photo attached. I will try to draw up a couple of diagrams. Code below:
#include <mcp2515.h>

const int KCAN2_CS_PIN = 10;
const int KCAN4_CS_PIN = 9;
const CAN_SPEED KCAN_DATA_RATE= CAN_500KBPS;
const CAN_CLOCK MCP_OSC = MCP_8MHZ;
const uint32_t CAN_ID_FWD = 0x37A;

struct can_frame message;

MCP2515 kcan2(KCAN2_CS_PIN);
MCP2515 kcan4(KCAN4_CS_PIN);

void setup()
{
Serial.begin(115200);
while(!Serial) {};

kcan2.reset();
kcan2.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan2.setNormalMode();

kcan4.reset();
kcan4.setConfigMode();
kcan4.setBitrate(KCAN_DATA_RATE, MCP_OSC);
kcan4.setFilterMask(MCP2515::MASK0, false, 0x7FF);
kcan4.setFilterMask(MCP2515::MASK1, false, 0x7FF);
kcan4.setFilter(MCP2515::RXF0, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF1, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF2, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF3, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF4, false, CAN_ID_FWD);
kcan4.setFilter(MCP2515::RXF5, false, CAN_ID_FWD);
kcan4.setNormalMode();

Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}

void loop()
{
switch(kcan4.readMessage(&message))
{
case MCP2515::ERROR_OK:
Serial.print(message.can_id, HEX); // print ID
Serial.print(" ");
Serial.print(message.can_dlc, HEX); // print DLC
Serial.print(" ");

for (int i = 0; i<message.can_dlc; i++)
{ // print the data
Serial.print(message.data,HEX);
Serial.print(" ");
}

Serial.print(" -> ");
Serial.print(kcan2.sendMessage(&message));
Serial.println();
break;
}
}
WOW. What year is your mini?
 

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts

·
Registered
Joined
·
116 Posts
By the way, I checked my LCI LHD lights and it seems like I have the new connector (the same as the LEDS) any thoughts regarding having R3 installing (which I need to do once the cable arrives) and the fact that I have the new BCD that supports LED?
 

·
Premium Member
2016 F54 BMW Mini Cooper S All4 Clubman
Joined
·
456 Posts
By the way, I checked my LCI LHD lights and it seems like I have the new connector (the same as the LEDS) any thoughts regarding having R3 installing (which I need to do once the cable arrives) and the fact that I have the new BCD that supports LED?
Which connector are you talking about?

The connector on the back of the headlights is identical whether they're halogen, LED, or LCI LED.

But the wiring is different between the halogen and the LED. LED and LCI LED wiring is the same.
 

·
Registered
Joined
·
21 Posts
Bear with me folks. I am currently updating the ZGW proxy software I wrote to make it rather more suitable for general consumption before making it public, as this is required to code any ECU which the car expects to be on KCAN3.
I will let you know once this is available, with write up, diagrams, pictures, etc. It will still require a bit of computer savvy, but not to the point of modifying or compiling stuff!!

For VO coding, ECU coding & programming I tried ISTA but found E-Sys far more useful. Through painful trial and error (again!) I found that E-Sys 3.27.1 didn't work on my (2015) car. E-Sys 3.33.4 isn't supported by E-Sys Launcher (required for FDL coding & programming). E-Sys 3.30.1 worked well for me.

Resources:
  • E-Sys Software, Launcher & psdzdata - Use launcher v2.8.2. It's free
  • E-Sys v3.30.1 if you need find that neither v3.27.1 or v3.31 work for you, however do not use the linked Token Generator - It contains malware.
  • VO (Vehicle Option) Coding Guide. Practice by adding 6NS to the Headunit if you don't already have it. That will give you "enhanced bluetooth" functionality such as SMS messages from your phone.
  • If you want the older tools (you don't need them, however I find them simpler for some tasks such as reading fault codes) - Mike's Easy BMW Tools

Please remember that I don't have any inside information. All I have done is reverse engineer the protocols and messages involved using tools such as candump (which requires Linux, hence my use of a Raspberry Pi) and Wireshark.

Radj411
I haven't tried to get LED Headlights working but had a look at the wiring diagrams and to be honest it does look like a real challenge. I would guess that the LIN bus connection is for the levelling. It might just work if you connect it directly to the LIN bus connection to the level dial next to the light switch.
KCAN2 certainly has the side light messages since that's where the trailer module (AHM) resides. This doesn't require VO coding (I fitted mine myself way before I touched coding), so would be my first try too.
Have you coded the LED headlights to the car in some way? They are unlikely to play without this at least.
Given that the halogen headlights are driven directly by the BDC, the actual main beam/side beam messages may not be on any other CAN bus.

The way I identified the messages sent by the ICAM was to put it on it's own dedicated CAN bus, relaying all messages between this and the actual car CAN bus network. This is straightforward with a Linux machine (e.g. Raspberry Pi) with two CAN modules. If you then record the dedicated CAN bus messages, you just see those generated by the ECU under test.

Eyalco101
From your screenshot I can see that the VO coding (add 3AG to HU_ENTRYNAV & PMA) is yet to be done - See the VO coding guide above. Then if you pull up that ECU map you will see TRSVC (which is equivalent to ICAM) shown but "not responding".
The rest of it I will come back once I have everything written up.
 

·
Registered
Joined
·
116 Posts
Bear with me folks. I am currently updating the ZGW proxy software I wrote to make it rather more suitable for general consumption before making it public, as this is required to code any ECU which the car expects to be on KCAN3.
I will let you know once this is available, with write up, diagrams, pictures, etc. It will still require a bit of computer savvy, but not to the point of modifying or compiling stuff!!

For VO coding, ECU coding & programming I tried ISTA but found E-Sys far more useful. Through painful trial and error (again!) I found that E-Sys 3.27.1 didn't work on my (2015) car. E-Sys 3.33.4 isn't supported by E-Sys Launcher (required for FDL coding & programming). E-Sys 3.30.1 worked well for me.

Resources:
  • E-Sys Software, Launcher & psdzdata - Use launcher v2.8.2. It's free
  • E-Sys v3.30.1 if you need find that neither v3.27.1 or v3.31 work for you, however do not use the linked Token Generator - It contains malware.
  • VO (Vehicle Option) Coding Guide. Practice by adding 6NS to the Headunit if you don't already have it. That will give you "enhanced bluetooth" functionality such as SMS messages from your phone.
  • If you want the older tools (you don't need them, however I find them simpler for some tasks such as reading fault codes) - Mike's Easy BMW Tools

Please remember that I don't have any inside information. All I have done is reverse engineer the protocols and messages involved using tools such as candump (which requires Linux, hence my use of a Raspberry Pi) and Wireshark.

Radj411
I haven't tried to get LED Headlights working but had a look at the wiring diagrams and to be honest it does look like a real challenge. I would guess that the LIN bus connection is for the levelling. It might just work if you connect it directly to the LIN bus connection to the level dial next to the light switch.
KCAN2 certainly has the side light messages since that's where the trailer module (AHM) resides. This doesn't require VO coding (I fitted mine myself way before I touched coding), so would be my first try too.
Have you coded the LED headlights to the car in some way? They are unlikely to play without this at least.
Given that the halogen headlights are driven directly by the BDC, the actual main beam/side beam messages may not be on any other CAN bus.

The way I identified the messages sent by the ICAM was to put it on it's own dedicated CAN bus, relaying all messages between this and the actual car CAN bus network. This is straightforward with a Linux machine (e.g. Raspberry Pi) with two CAN modules. If you then record the dedicated CAN bus messages, you just see those generated by the ECU under test.

Eyalco101
From your screenshot I can see that the VO coding (add 3AG to HU_ENTRYNAV & PMA) is yet to be done - See the VO coding guide above. Then if you pull up that ECU map you will see TRSVC (which is equivalent to ICAM) shown but "not responding".
The rest of it I will come back once I have everything written up.
I'm still trying to figure it out:
I bought the ICAM module and I'll install it as soon as it will arrive. But, My mini "Cooper" 2020 is with the new BCD as i've been told. What about the CAN3, do you think that my car will support that? any additional wiring, software updates or modification needed?
 

·
Registered
Joined
·
116 Posts
Bear with me folks. I am currently updating the ZGW proxy software I wrote to make it rather more suitable for general consumption before making it public, as this is required to code any ECU which the car expects to be on KCAN3.
I will let you know once this is available, with write up, diagrams, pictures, etc. It will still require a bit of computer savvy, but not to the point of modifying or compiling stuff!!

For VO coding, ECU coding & programming I tried ISTA but found E-Sys far more useful. Through painful trial and error (again!) I found that E-Sys 3.27.1 didn't work on my (2015) car. E-Sys 3.33.4 isn't supported by E-Sys Launcher (required for FDL coding & programming). E-Sys 3.30.1 worked well for me.

Resources:
  • E-Sys Software, Launcher & psdzdata - Use launcher v2.8.2. It's free
  • E-Sys v3.30.1 if you need find that neither v3.27.1 or v3.31 work for you, however do not use the linked Token Generator - It contains malware.
  • VO (Vehicle Option) Coding Guide. Practice by adding 6NS to the Headunit if you don't already have it. That will give you "enhanced bluetooth" functionality such as SMS messages from your phone.
  • If you want the older tools (you don't need them, however I find them simpler for some tasks such as reading fault codes) - Mike's Easy BMW Tools

Please remember that I don't have any inside information. All I have done is reverse engineer the protocols and messages involved using tools such as candump (which requires Linux, hence my use of a Raspberry Pi) and Wireshark.

Radj411
I haven't tried to get LED Headlights working but had a look at the wiring diagrams and to be honest it does look like a real challenge. I would guess that the LIN bus connection is for the levelling. It might just work if you connect it directly to the LIN bus connection to the level dial next to the light switch.
KCAN2 certainly has the side light messages since that's where the trailer module (AHM) resides. This doesn't require VO coding (I fitted mine myself way before I touched coding), so would be my first try too.
Have you coded the LED headlights to the car in some way? They are unlikely to play without this at least.
Given that the halogen headlights are driven directly by the BDC, the actual main beam/side beam messages may not be on any other CAN bus.

The way I identified the messages sent by the ICAM was to put it on it's own dedicated CAN bus, relaying all messages between this and the actual car CAN bus network. This is straightforward with a Linux machine (e.g. Raspberry Pi) with two CAN modules. If you then record the dedicated CAN bus messages, you just see those generated by the ECU under test.

Eyalco101
From your screenshot I can see that the VO coding (add 3AG to HU_ENTRYNAV & PMA) is yet to be done - See the VO coding guide above. Then if you pull up that ECU map you will see TRSVC (which is equivalent to ICAM) shown but "not responding".
The rest of it I will come back once I have everything written up.
We are all waiting for an update :) let us know once you have finished the "mission"
Thanks!
(I'm also with cooper 2020, halogen lights, new BCD and etc, but it seems like i don't have the can3 network)
 

·
Registered
Joined
·
18 Posts
We are all waiting for an update :) let us know once you have finished the "mission"
Thanks!
(I'm also with cooper 2020, halogen lights, new BCD and etc, but it seems like i don't have the can3 network)
Which BDC_BODY version do you have?
 
21 - 40 of 60 Posts
Top