E90 EPS (Active Steering Rack integration)
E90 EPS (Active Steering Rack integration)
Hi all,
So I'm in the process of understanding how to Integrate the active steering rack on the BMW E90 Into my conversion project, and will update It as I go along. Please feel free to add any additional information that you may have so we can get this going.
I have a 7802277625 EPS which appears to come to life when I started to drive the car, around 5 miles pre hour But completely useless at the lower speeds. You can imagine the fun parking that thing Anyways, upon attempting to manually control EPS, I noticed to five wires in total connected to it.
Large Red - 12V+
Large Brown - Ground
small Red - Maybe CAN
small Red and Blue - Maybe CAN
small Green and Red - ???? Feedback
First I thought of hacking into the eps manually and forcing It on via a relay, However that seemed a bit barbaric, and CAN It Seems to be the way forward.
Unfortunately I have no experience with CAN but I understand the idea of the communication technology. From what I can understand, I need to send a signal, equivalent to the engine starting, over the CAN BUS, To trick the system into thinking that there is still an engine.
After coming back to the forum today, I received an email from @Dilbert and @john Pretty much confirming my suspicion. So it seems I will be learning CAN
More on that later
Any help would be appreciated in advanced
Thanks
Vin
So I'm in the process of understanding how to Integrate the active steering rack on the BMW E90 Into my conversion project, and will update It as I go along. Please feel free to add any additional information that you may have so we can get this going.
I have a 7802277625 EPS which appears to come to life when I started to drive the car, around 5 miles pre hour But completely useless at the lower speeds. You can imagine the fun parking that thing Anyways, upon attempting to manually control EPS, I noticed to five wires in total connected to it.
Large Red - 12V+
Large Brown - Ground
small Red - Maybe CAN
small Red and Blue - Maybe CAN
small Green and Red - ???? Feedback
First I thought of hacking into the eps manually and forcing It on via a relay, However that seemed a bit barbaric, and CAN It Seems to be the way forward.
Unfortunately I have no experience with CAN but I understand the idea of the communication technology. From what I can understand, I need to send a signal, equivalent to the engine starting, over the CAN BUS, To trick the system into thinking that there is still an engine.
After coming back to the forum today, I received an email from @Dilbert and @john Pretty much confirming my suspicion. So it seems I will be learning CAN
More on that later
Any help would be appreciated in advanced
Thanks
Vin
-
- Posts: 656
- Joined: Sat Oct 05, 2019 6:50 pm
- Location: Northern California, USA
- Been thanked: 1 time
- Contact:
Re: E90 EPS (Active Steering Rack integration)
You say it comes alive when you hit 5mph.
So hook up a CAN logger to the EPS wires. This is usually a piece of hardware (CAN-Due for example) connected to a laptop running suitable software (savvyCAN is a good one).
Drive 10mph or so and record some CAN (get someone to help you of course). A few seconds should be plenty.
Disconnect the EPS CAN wires from the rest of the car and play your recording back to the EPS. This should bring it to life!
Then it's just a matter of simplifying the commands so you don't need a laptop hooked up all the time. Take some messages out of the recording and see if it still makes the EPS go. Basically take stuff out til it stops, you want just the bare minimum.
I followed this process on Tuesday to get a water pump in a Coda EV working. It took a couple of hours, but the end result was a loop of five commands that when repeatedly sent made the pump turn on.
-Isaac
So hook up a CAN logger to the EPS wires. This is usually a piece of hardware (CAN-Due for example) connected to a laptop running suitable software (savvyCAN is a good one).
Drive 10mph or so and record some CAN (get someone to help you of course). A few seconds should be plenty.
Disconnect the EPS CAN wires from the rest of the car and play your recording back to the EPS. This should bring it to life!
Then it's just a matter of simplifying the commands so you don't need a laptop hooked up all the time. Take some messages out of the recording and see if it still makes the EPS go. Basically take stuff out til it stops, you want just the bare minimum.
I followed this process on Tuesday to get a water pump in a Coda EV working. It took a couple of hours, but the end result was a loop of five commands that when repeatedly sent made the pump turn on.
-Isaac
Re: E90 EPS (Active Steering Rack integration)
Just so i'm understanding correctly; the rack is currently connected to the correct CAN bus (PT-CAN?) in the E90 and once the speed goes > 5mph it will become active? That sounds like progress. That is probably a safety mode, so if the engine was to cut-out you wouldn't be without power steering. Was this streering rack originally fitted to the vehicle? or did this vehicle have hydraulic steering?
So the vehicle currently has no engine ECU? Or is it still fitted and sending messages?
Have you looked at Damian's code for the E63? he has the CAN ID's for simulating the ignition signal and engine tach signal. You could compile this code for an arduino Due and use it to send the same CAN messages:-
https://github.com/damienmaguire/Lexus- ... 50h_v7.ino
Or use another tool to send them from a PC (probably easier). The two frames i'd look to send would be:-
outframe.id = 0x332; // dash on message
outframe.length = 2; // Data payload 2 bytes
outframe.extended = 0; // standard id
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x61; //sets max rpm on tach (temp thing)
outframe.data.bytes[1]=0x82;
Can1.sendFrame(outframe);
outframe.id = 0x0AA; // Set our transmission address ID
outframe.length = 8; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x5f;
outframe.data.bytes[1]=0x59;
outframe.data.bytes[2]=0xff;
outframe.data.bytes[3]=0x00;
outframe.data.bytes[4]=lowByte(RPM_A);
outframe.data.bytes[5]=highByte(RPM_A);
outframe.data.bytes[6]=0x80;
outframe.data.bytes[7]=0x99;
You should really see if you can get an DBC file for the P-CAN bus on the E90, as that might have the correct CAN IDs in it that you need to send.
So the vehicle currently has no engine ECU? Or is it still fitted and sending messages?
Have you looked at Damian's code for the E63? he has the CAN ID's for simulating the ignition signal and engine tach signal. You could compile this code for an arduino Due and use it to send the same CAN messages:-
https://github.com/damienmaguire/Lexus- ... 50h_v7.ino
Or use another tool to send them from a PC (probably easier). The two frames i'd look to send would be:-
outframe.id = 0x332; // dash on message
outframe.length = 2; // Data payload 2 bytes
outframe.extended = 0; // standard id
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x61; //sets max rpm on tach (temp thing)
outframe.data.bytes[1]=0x82;
Can1.sendFrame(outframe);
outframe.id = 0x0AA; // Set our transmission address ID
outframe.length = 8; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x5f;
outframe.data.bytes[1]=0x59;
outframe.data.bytes[2]=0xff;
outframe.data.bytes[3]=0x00;
outframe.data.bytes[4]=lowByte(RPM_A);
outframe.data.bytes[5]=highByte(RPM_A);
outframe.data.bytes[6]=0x80;
outframe.data.bytes[7]=0x99;
You should really see if you can get an DBC file for the P-CAN bus on the E90, as that might have the correct CAN IDs in it that you need to send.
Re: E90 EPS (Active Steering Rack integration)
If you could connect something like savyCAN to the the PT CAN bus, i'm not sure if that's on the diag connector so would be best to Tap it at the main engine ECU, you could load a DBC file to decode the data.
https://github.com/dzid26/opendbc-BMW-E ... 9x_e8x.dbc
https://github.com/dzid26/opendbc-BMW-E ... 9x_e8x.dbc
Re: E90 EPS (Active Steering Rack integration)
Isaac96 wrote: ↑Fri Feb 26, 2021 1:58 am You say it comes alive when you hit 5mph.
So hook up a CAN logger to the EPS wires. This is usually a piece of hardware (CAN-Due for example) connected to a laptop running suitable software (savvyCAN is a good one).
Drive 10mph or so and record some CAN (get someone to help you of course). A few seconds should be plenty.
Disconnect the EPS CAN wires from the rest of the car and play your recording back to the EPS. This should bring it to life!
Then it's just a matter of simplifying the commands so you don't need a laptop hooked up all the time. Take some messages out of the recording and see if it still makes the EPS go. Basically take stuff out til it stops, you want just the bare minimum.
I followed this process on Tuesday to get a water pump in a Coda EV working. It took a couple of hours, but the end result was a loop of five commands that when repeatedly sent made the pump turn on.
-Isaac
Hi Isaac
Thanks for the input. I'm in the process of installing SavvyCAN to see what it's like, however I need to source some hardware to interface the laptop to the CAN.
Thanks again fo your input. Great stuff.
Re: E90 EPS (Active Steering Rack integration)
Dilbert wrote: ↑Fri Feb 26, 2021 8:29 am Just so i'm understanding correctly; the rack is currently connected to the correct CAN bus (PT-CAN?) in the E90 and once the speed goes > 5mph it will become active? That sounds like progress. That is probably a safety mode, so if the engine was to cut-out you wouldn't be without power steering. Was this streering rack originally fitted to the vehicle? or did this vehicle have hydraulic steering?
So the vehicle currently has no engine ECU? Or is it still fitted and sending messages?
Have you looked at Damian's code for the E63? he has the CAN ID's for simulating the ignition signal and engine tach signal. You could compile this code for an arduino Due and use it to send the same CAN messages:-
https://github.com/damienmaguire/Lexus- ... 50h_v7.ino
Or use another tool to send them from a PC (probably easier). The two frames i'd look to send would be:-
outframe.id = 0x332; // dash on message
outframe.length = 2; // Data payload 2 bytes
outframe.extended = 0; // standard id
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x61; //sets max rpm on tach (temp thing)
outframe.data.bytes[1]=0x82;
Can1.sendFrame(outframe);
outframe.id = 0x0AA; // Set our transmission address ID
outframe.length = 8; // Data payload 8 bytes
outframe.extended = 0; // Extended addresses - 0=11-bit 1=29bit
outframe.rtr=1; //No request
outframe.data.bytes[0]=0x5f;
outframe.data.bytes[1]=0x59;
outframe.data.bytes[2]=0xff;
outframe.data.bytes[3]=0x00;
outframe.data.bytes[4]=lowByte(RPM_A);
outframe.data.bytes[5]=highByte(RPM_A);
outframe.data.bytes[6]=0x80;
outframe.data.bytes[7]=0x99;
You should really see if you can get an DBC file for the P-CAN bus on the E90, as that might have the correct CAN IDs in it that you need to send.
Hi Dilbert
Thanks again I'm definitely going to dig through this info as soon as I get some hardware to interface the CAN BUS to my laptop. To answer your question, the steering rack came with this car i believe its on all BMW from 2005 onwards, don't quote me on that. I found this site which shows the EPSs and BMWs that are fitted. https://www.ecutesting.com/product-catalogue/bmw/
Also I only removed the engine, so all other ECUs are still in the car so hopefully I can figure out how to tap into them soon.
I know @Jack Bauer has some codes on his GitHub so i'll definitely have a look at it.
Thanks again, much appreciated.
Re: E90 EPS (Active Steering Rack integration)
Ok so that means the rack is coded to the vehicle, so there'll be no coding issues.
Yep capture some can data from the power train can bus, you should see the existing ecu sending 0rpm for the tach. You'll probably need to unplug the existing ecu so you can try send that message yourself.
Once they ecu is disconnected the dash will light up like a Christmas tree, as lots of other ecu's will be expecting messages from the engine ecu, stuff like engine torque etc...so these will need to be simulated too.
Yep capture some can data from the power train can bus, you should see the existing ecu sending 0rpm for the tach. You'll probably need to unplug the existing ecu so you can try send that message yourself.
Once they ecu is disconnected the dash will light up like a Christmas tree, as lots of other ecu's will be expecting messages from the engine ecu, stuff like engine torque etc...so these will need to be simulated too.
- Jack Bauer
- Posts: 3563
- Joined: Wed Dec 12, 2018 5:24 pm
- Location: Ireland
- Has thanked: 1 time
- Been thanked: 87 times
- Contact:
Re: E90 EPS (Active Steering Rack integration)
Might find something useful here :
http://www.loopybunny.co.uk/CarPC/k_can.html
http://www.loopybunny.co.uk/CarPC/k_can.html
I'm going to need a hacksaw
Re: E90 EPS (Active Steering Rack integration)
Jack Bauer wrote: ↑Sun Feb 28, 2021 2:12 pm Might find something useful here :
http://www.loopybunny.co.uk/CarPC/k_can.html
That's absolutely fantastic stuff, I'm looking at it now.
Has anyone tried pulling car CAN using the VCU? I'm using the latest version for the Prius Gen 2.
Re: E90 EPS (Active Steering Rack integration)
In theory it is possible if the correct firmware is on the unit.
Your main problem will be running the serial bus fast enough to take the 500kbps CAN data.
If you have an arduino due you can connect up a can transceiver and run the savycan firmware. You can also do the same on an esp32 wifi module. I've done both. But it does require some fiddling to get the code to compile and the CAN physical layers connected up.
The savycan pc tool is actually quite good if you can get the interface setup.
Your main problem will be running the serial bus fast enough to take the 500kbps CAN data.
If you have an arduino due you can connect up a can transceiver and run the savycan firmware. You can also do the same on an esp32 wifi module. I've done both. But it does require some fiddling to get the code to compile and the CAN physical layers connected up.
The savycan pc tool is actually quite good if you can get the interface setup.
Re: E90 EPS (Active Steering Rack integration)
Hi Dilbert,Dilbert wrote: ↑Wed Mar 03, 2021 10:47 pm In theory it is possible if the correct firmware is on the unit.
Your main problem will be running the serial bus fast enough to take the 500kbps CAN data.
If you have an arduino due you can connect up a can transceiver and run the savycan firmware. You can also do the same on an esp32 wifi module. I've done both. But it does require some fiddling to get the code to compile and the CAN physical layers connected up.
The savycan pc tool is actually quite good if you can get the interface setup.
So I've managed to configure the Arduino Due with a SN65HVD230 transceiver and connect to the car's CAN High and Low from the OBD port, It appears that I'm talking an ECU because I'm getting some CAN, but the only codes I'm getting is from the ignition (ID 130).
I don't have any filters set, I've put the key into the ignition, I've been playing with some of the buttons to see if something else registers, but nothing. I think I might have to tap into the CAN from a different location. Still doing some research.
Thanks
Re: E90 EPS (Active Steering Rack integration)
can you tap the CAN at the steering rack?
what CAN IDs are you seeing?
what CAN IDs are you seeing?
Re: E90 EPS (Active Steering Rack integration)
Hi Guys,
I think we're getting somewhere with the EPS. Today I've managed to get some IDs and hack through them thought the PT CAN BUS (Red blue-red strip twisted Pair). I found ID 1A0 and had a bit of a play with it. Looking Good.
I'll attach a link of the video, if you're interested.
I think we're getting somewhere with the EPS. Today I've managed to get some IDs and hack through them thought the PT CAN BUS (Red blue-red strip twisted Pair). I found ID 1A0 and had a bit of a play with it. Looking Good.
I'll attach a link of the video, if you're interested.
Re: E90 EPS (Active Steering Rack integration)
Hi Dilbert,
I tapped into the the PT-Can and was able to get loads of can messages. ID 1A0 seems to be the one.
Re: E90 EPS (Active Steering Rack integration)
That's 416 in decimal
BO_ 416 Speed: 8 XXX
SG_ Counter1 : 55|4@0+ (1,0) [0|14] "" XXX
SG_ AccY : 16|12@1- (1,0) [0|255] "" XXX
SG_ YawRate : 40|12@1- (1,0) [0|255] "" XXX
SG_ AccX : 28|12@1- (1,0) [0|15] "" XXX
SG_ Moving : 12|1@0+ (1,0) [0|15] "" XXX
SG_ VehicleSpeed : 0|12@1+ (0.103,0) [0|255] "kph" XXX
SG_ Checksum : 63|8@0+ (1,0) [0|15] "" XXX
BO_ 416 Speed: 8 XXX
SG_ Counter1 : 55|4@0+ (1,0) [0|14] "" XXX
SG_ AccY : 16|12@1- (1,0) [0|255] "" XXX
SG_ YawRate : 40|12@1- (1,0) [0|255] "" XXX
SG_ AccX : 28|12@1- (1,0) [0|15] "" XXX
SG_ Moving : 12|1@0+ (1,0) [0|15] "" XXX
SG_ VehicleSpeed : 0|12@1+ (0.103,0) [0|255] "kph" XXX
SG_ Checksum : 63|8@0+ (1,0) [0|15] "" XXX
Re: E90 EPS (Active Steering Rack integration)
There seems to be a number of ID with speed references, however this ID does not seem to be engine or Tach related also the gittering improved drastically when I reduces the trigger to 1ms. I will do some more testing tomorrow.
Re: E90 EPS (Active Steering Rack integration)
There is a flag in that message called moving it may we'll be using this flag along with the speed signal for the assist level.
This might be for fail safe, where if an engine was to cut out while traveling at speed, to make sure assist us there to get off the road.
There's a counter and a checksum in that message too, so these might need to be set/calculated.
This might be for fail safe, where if an engine was to cut out while traveling at speed, to make sure assist us there to get off the road.
There's a counter and a checksum in that message too, so these might need to be set/calculated.
- crasbe
- Posts: 245
- Joined: Mon Jul 08, 2019 5:18 pm
- Location: Germany
- Has thanked: 44 times
- Been thanked: 110 times
Re: E90 EPS (Active Steering Rack integration)
Even though this might not be relevant anymore since the thread is nearly one year old, I think I can explain how to make the EPS happy. It's explained in the BMW WDS Wiring Diagram System:
The conditions to enable the EPS are:
- Ignition on
- DME/DDE (Digital Motor Electronics/Digital Diesel Electronics, essentially your ECU) sends a "Engine running" signal and the current RPM on the PT_CAN Bus
The conditions to turn the EPS off are:
- Engine off
- Vehicle Speed = 0
This is probably the reason why the EPS activates itself as soon as the vehicle speed is above 5km/h.
There shouldn't be any more communication than this necessary between the DME/DDE and the EPS.
The conditions to enable the EPS are:
- Ignition on
- DME/DDE (Digital Motor Electronics/Digital Diesel Electronics, essentially your ECU) sends a "Engine running" signal and the current RPM on the PT_CAN Bus
The conditions to turn the EPS off are:
- Engine off
- Vehicle Speed = 0
This is probably the reason why the EPS activates itself as soon as the vehicle speed is above 5km/h.
There shouldn't be any more communication than this necessary between the DME/DDE and the EPS.
- EV_Builder
- Posts: 1199
- Joined: Tue Apr 28, 2020 3:50 pm
- Location: The Netherlands
- Has thanked: 16 times
- Been thanked: 33 times
- Contact:
Re: E90 EPS (Active Steering Rack integration)
Ok counter and CRC formula are important.Dilbert wrote: ↑Mon Mar 22, 2021 9:39 pm That's 416 in decimal
BO_ 416 Speed: 8 XXX
SG_ Counter1 : 55|4@0+ (1,0) [0|14] "" XXX
SG_ AccY : 16|12@1- (1,0) [0|255] "" XXX
SG_ YawRate : 40|12@1- (1,0) [0|255] "" XXX
SG_ AccX : 28|12@1- (1,0) [0|15] "" XXX
SG_ Moving : 12|1@0+ (1,0) [0|15] "" XXX
SG_ VehicleSpeed : 0|12@1+ (0.103,0) [0|255] "kph" XXX
SG_ Checksum : 63|8@0+ (1,0) [0|15] "" XXX
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
see http://www.wdrautomatisering.nl for bespoke BMS modules.
-
- Posts: 1
- Joined: Mon Jun 12, 2023 3:03 pm
Re: E90 EPS (Active Steering Rack integration)
Very interesting your project, did you finally make it work? Could you tell me what messages you sent by can to make it work? thank you.vin wrote: ↑Mon Mar 22, 2021 8:45 pm Hi Guys,
I think we're getting somewhere with the EPS. Today I've managed to get some IDs and hack through them thought the PT CAN BUS (Red blue-red strip twisted Pair). I found ID 1A0 and had a bit of a play with it. Looking Good.
I'll attach a link of the video, if you're interested.