It seems that E60 has only 2 buttons "Check" and "BC" and they are sent by CAN bus. But since it does not have up and down it seems that it does not have menu in instrument cluster, so emulating buttons on E60 are not that useful.
The link in the first post seems to be broken? working link https://www.loopybunny.co.uk/CarPC/k_can.html ?
Great project! I have an E66 and a very ambitious goal of running it on my own ECU I hope to learn a lot here!
One of the areas of my interest is HDEV modules. Those are on Local-CAN, not sure what BMW models had Local-CAN and how much is known about Local-CAN traffic.
Do you have two sets of all this with one set actually attached to a driving E65?
Anyway Heinrich and I both have driving 760 vehicles and at the moment we are focusing on 6HP control. The overall pipe dream is to have N73 controlled by rusEFI ECU and have the whole vehicle driving.
Only recording of two buses at https://github.com/HeinrichG-V12/E65_ReverseEngineering so far.
E65_ReverseEngineering repo is private
E46 M54B30 MT Touring = ESS TwinScrew + SS Headers + S38 Flywheel&Clutch + MFactory LSD 3.07 + Koni Sport + Eibach Pro + ///M3-Look
=============================
imBMW.net = BMW + iBus + .NET MF + .NET PCL & UWP + Bluetooth + Arduino + STM32 + music + handsfree + DIY + DBus DS2 DME Logging + etc...
Can you send me the same INFO as i am doing the same mod. Thanks
I have an e90 sitting around to test on. I'm trying to get some e92 sport seats working for a street rod install. I have an arduino Uno and a can-shield. We modified it with the 1055 fault tolerant can chip. I'm probing the CAN wires on the back of the control unit in the center dash. I'm using the basic script from the arduino library to try and read what's on the canbus. I'm set at 100kbps, which is what the Kcan should be based on what I was reading here. All I get right now in the message window when running the arduino is the Can init OK! message.
Where do I go from here to figure out how to get it working? I was looking to find the messages needed on the e90 so I can build the arduino to run the e92 seats on an independent canbus in the street rod.
hey nathaniel, i have been looking at your work on the e46 can bus project and i have a few questions about it. could you give me your email.
I logged the communication between INPA and an E91 with a DCAN interface. Below (rename to .zip) are the traces what the interface sent (write) and what the car sent back (read). I connected with INPA to the cluster and read some live values and then did the same to the ECU (MSD80). Maybe its useful for somebody.
Hi Heinrich,
can you please tell me if you managed to move the needles on the BMW E65 clocks? if you succeeded, how did you do it? I have tried in every way, I can only turn them on, signal, light them and turn on the low beam headlights, I am also attaching a video in this regard, please if you can give me some advice, thank you very much!
Last edited by doruceanu; 12-21-2022 at 03:57 AM.
Hello everyone , I made a FLA ( High Beams Assist ) project to control the high beams of a car which doesn't support that function. I got a mirror with FLA from E60 - 90 and when connect it to the can bus shield at speed 100 kbps I receive in can bus ID message 0x292 bytes : 4 - to turn on the high beams, 12 - to turn off the high beams and 16 - when there a light in the ambient sensor of the mirror. I found the follow recourse " High Beam Assistant (FLA) Model: E60, E61, E63 LCI, E64 LCI Production: From 2008 Model Year" and on the table " K-CAN Signals at Control Unitfor High Beam Assistant " they say the following :
In - Road Speed
> Wheel speed sensors
> DSC
Deactivation of high beam assistant
below certain speed
In -Yaw Rate
> DSC Sensor
> DSC
Adaptation of detection range when
cornering
In - Bulb Condition > Footwell Module Monitoring condition of high beam
on/off
Out - Switch-on and switchoff
recommendation > Footwell Module
Switch-on and switch-off recommendation
to footwell module -
footwell module decides whether
system is switched on or off
Ok my question is about can bus IDs for "In - Road Speed > Wheel speed sensors > DSC" , " In -Yaw Rate > DSC Sensor > DSC Adaptation of detection range when
cornering" and " In - Bulb Condition > Footwell Module Monitoring condition of high beam
on/off " . I want to enulate and send to the FLA module the can bus messages to work correct. Maby for weel speed sensors they mean 0x1B4 ?
Hello everyone , I made a FLA ( High Beams Assist ) project to control the high beams of a car which doesn't support that function. I got a mirror with FLA from E60 - 90 and when connect it to the can bus shield at speed 100 kbps I receive in can bus ID message 0x292 bytes : 4 - to turn on the high beams, 12 - to turn off the high beams and 16 - when there a light in the ambient sensor of the mirror. I found the follow recourse " High Beam Assistant (FLA) Model: E60, E61, E63 LCI, E64 LCI Production: From 2008 Model Year" and on the table " K-CAN Signals at Control Unitfor High Beam Assistant " they say the following :
In - Road Speed
> Wheel speed sensors
> DSC
Deactivation of high beam assistant
below certain speed
In -Yaw Rate
> DSC Sensor
> DSC
Adaptation of detection range when
cornering
In - Bulb Condition > Footwell Module Monitoring condition of high beam
on/off
Out - Switch-on and switchoff
recommendation > Footwell Module
Switch-on and switch-off recommendation
to footwell module -
footwell module decides whether
system is switched on or off
Ok my question is about can bus IDs for "In - Road Speed > Wheel speed sensors > DSC" , " In -Yaw Rate > DSC Sensor > DSC Adaptation of detection range when
cornering" and " In - Bulb Condition > Footwell Module Monitoring condition of high beam
on/off " . I want to enulate and send to the FLA module the can bus messages to work correct. Maby for weel speed sensors they mean 0x1B4 ?
Hey Guys,
I'm Working on an E60 being converted to Electric.
trying to utilize the cluster to reflect my EV data.
i worked out everything I need repurposing the gauges to reflect EV stuff.
two things that driving me crazy and cant figrure them out.
1- is the Fuel consumption needle (MPG), i need to control that needle as it will reflect the Current being used by the EV Motor.
I tried CAN ID 0x1D0 but it does nothing. i think it is mentioned that here it is for oil temperature on e90. My car is E60 so it is MPG.
does anyone knows what is the ID ?? Byte and Counter ? i have couple of logs of the car driving. but cant pinpoint where is that ID. or maybe im using the wrong counter and the Cluster is ignoring it.
Second Issue but this isnt urgent now, is the 0xA8 ABS Messages, Counter and Checksum. I Saw Hinrich code for the E65 but it is 0xA8 and 0xA9 which the car doesn't report. E60 only send 0xA8.
any light of that will be great. Any help will be great. TIA
Thank Thaniel for this work. it is amazing and impressive.
Karim
Hi,
Made an account just for this, I am working on getting heated seats working with a driver seat I have from a e93 M3. Standalone as an office chair so I need to do some electronic foolery with the can bus (KCAN I believe).
I have managed to find code for sending the ignition message to keep the seat module awake but now the heated seats, not sure how I should go about getting the commands for this, seems like I have to find it out myself. I have a CAN-Arduino module coming (MCP2551, MCP2515) Searching the datasheet of the CAN transceiver it says its fault tolerant (no idea what that means just saw you or someone else mention it, but I'll have a read over again to see what it means)
My plan is to connect the CAN bus module to the obd2 port in a e93 M3 (what speed would this be? 100kbps like the seat?)
Then hopefully when I trigger the heated seats I'll get some data appear in the serial monitor, what is the risk of damaging something like the bus if I do this? How can I make it as safe as possible?
One worry I have is how will I find out what CANID in the received data is what module? Any tips on how I can zone into a specific module or something?
EDIT:
- Found out the transceiver on the seat is a NXP TJA1055, studying the datasheet for it right now (just for me to know, regarding voltage levels and other signal requirements)
Thank you a lot
Last edited by draun21; 05-28-2023 at 05:18 PM.
You probably may not have K-CAN on obd2. (See if there is a lot of pins there or half populated.). If half of the pins are populated, then you can tap on K-CAN splice in the driver footwell or anywhere you can splice / tap yourself anywhere the K-CAN is used, e.g. behind the radio.
Cable colors https://www.bimmerfest.com/threads/k...estion.866777/
Heated seat messages
https://github.com/dzid26/opendbc-BM...x_e8x.dbc#L471 driver/passenger.
The message may contain rolling counter and checksum, which might be satisfied with your code.
Great explanation!
Got it working on Fedora Linux:
Code:[...] (1684259501.318124) slcan0 130#C540FFFFFF (1684259501.372758) slcan0 6F1#4003221010000000 (1684259501.397152) slcan0 640#F110146210105742 (1684259501.397361) slcan0 6F1#4030000100000000 (1684259501.399090) slcan0 640#F121415742373335 [...]
Alpina B3 Flash/BMS OCC/ER CP/ETS 5/HKS BOV/M3 Control Arms
Here is an Arduino sketch to send the seats a keep alive, HTH:
https://github.com/RevEngOps/BMW-E90-Seat-CAN
Alpina B3 Flash/BMS OCC/ER CP/ETS 5/HKS BOV/M3 Control Arms
Typically you will see calculated physical value of speed on all BMW CANbuses. The technology behind the sensor shouldn't matter in general.
Magnetic sensing (thanks to smooth magnetic field between the poles) helps with precise speed measurment at low speed and I assume is required for good feel of the hill start assist.
Here is a wheels speed message for E90.
https://github.com/dzid26/opendbc-BM....dbc#L100-L104
And, here, a identical message for E65:
https://github.com/HeinrichG-V12/E65.../docs/0x0CE.md
I would assume E46 uses the same CAN message.
There might be some special speed values that are reserved for sensor diagnostic, power up, etc. Here is some indication of that. https://forum.autosportlabs.com/viewtopic.php?t=4488
Hi All,
Very nice thread, good guidance and informative,
Just want to share...I have manage to make my memory seat to work with my custom board outside a car. I have memory as what I required. I will retrofit this seat (E90 sport seat) to my toyota car.
But I have some issued as below,
1. When I already set my memory, when I push button 1 or 2 after that, it does not move to the set position. I need to power off the seat and on again then only I can push the 1 or 2 button to the setting position. I think I am missing canbus message to the seat or the message is not send at correct interval,
2. I manage to make the seat move with one touch press, but the movement is not complete to the set position.
Can anyone help me to sniff the canbus message when the memory are activating during both event mention above so I can simulate the canbus messages, as I am not own a BMW car,
Highly appreciate it
Thanks
Last edited by penjejakbumi13; 09-06-2023 at 02:18 AM.
Hello again , I have found the FLA ( front light assist ) need to receive the CAN ID 0x1A0 Speed from DSC . I try to found the description about the 1A0 but I have only found this :
https://github.com/HeinrichG-V12/E65.../docs/0x1A0.md
Signal Start bit Length Order Value type Factor Offset Unit V_VEH 0 12 Intel Unsigned 0.1 0 km/h ST_VEH_DVCO 12 3 Intel Unsigned 1 0 ACLH_VEH_LN_DSC 16 12 Intel Signed 0.025 0 m/sē ACLH_VEH_ACRO_DSC 28 12 Intel Signed 0.025 0 m/sē ANGV_YAW_DSC 40 12 Intel Signed 0.05 0 °/s ALIV_V 52 4 Intel Unsigned 1 0 CHKSM_V_V 56 8 Intel Unsigned 1 0
- ST_VEH_DVCO, status vehicle driver choice:
Value Description 0x0 vehicle standing 0x1 moves forward, FL/FR forward 0x2 moves backward, FL/FR backward 0x2 vehicle moves, direction detection not possible 0x7 signal invalid
- ACLH_VEH_LN_DSC, horizontal longitudinal acceleration
- ACLH_VEH_ACRO_DSC, horizontal cross acceleration
- ANGV_YAW_DSC, yaw angle
Message example:
- 0x1A0 8 00 80 00 50 00 02 80 F4
- V_VEH: 0km/h
- ST_VEH_DVCO: 0
- ACLH_VEH_LN_DSC: 0
- ACLH_VEH_ACRO_DSC: 0.1250ms/s
- ANGV_YAW_DSC: 0.1 1/s
- CHKSM_V_V: F4
Does anybody know how to calculate the Speed because from the this documentation is 12 bits. Now I have put in every bytes with 0xFF and FLA its work like sending 0 to turn ON the Main beams and 8 to turn OFF it. Then I have put the 0x00 the FLA is sending 4 and 12 only but its very lazy and it's not working correctly. There are the source code :
const uint16_t CAN_ID = 0x1A0;
uint8_t speed_DSC_frame_1A0[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
void canSend_speed_DSC_1A0(){
CAN.sendMsgBuf(CAN_ID, 0, 8, speed_DSC_frame_1A0);
}
<font color="#D4D4D4"><span style="font-family: Consolas">https://youtube.com/shorts/4W5CPx-ij8o
You need to set 8 bit | 4 bit to form 12bit.
Factor is 0.1, so raw data is 10x bigger than speed value.
BMW uses Intel (Little endian byte ordering) - most significant bit is bit 3 in byte 1.
Google the terms. Or open https://github.com/dzid26/opendbc-BM...x_e8x.dbc#L166 in Kvaser Database Editor to visualize Speed message layout.
E.g. 50km/s -> 500(dec) -> 0x1F4 (hex)
Separate Byte 0 and 4 bits from Byte 1 - use bitwise operation in your code:
spd_val = 0x1F4;
spd_val_lower_byte = val & 0xFF; //extract 1byte -> 0xF4
spd_val_higher_byte = (val >> 8) & 0xF; //shift right and extract half a byte -> 0x1
uint8_t speed_DSC_frame_1A0[8] = {spd_val_lower_byte , spd_val_higher_byte , 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
Miraculously for point number 2, my seat can do one touch press and the seat will move to setting position completely. But I did simulate canbus signal of door open. Previously its not working but suddenly now its working 🤷*♂️. But have other issue come out which the button for forward and backward now reverse. When I push the button forward, the seat go backward, and vice versa.
Bookmarks