As described in wiring the iBooster you can already use it in failsafe mode. However, it might even be more interesting to use advanced features via the CAN-BUS or even CAN control the iBooster. The latter can be interesting from DIY autonomous driving projects for example with OpenPilot by comma.ai. Join the quest for reverse engineering the iBooster CAN-BUS.
Unfortunately the CAN-BUS details of the iBooster are not publicly available (as far as I know) and I have not been able to find .dbc files covering the data. So it is a process of sniffing and decoding to hopefully find all ins and outs. Use at your own risk!
2x iBooster CAN-BUS
The iBooster is a dual CAN device. Both channels have no termination and run at 500 kbps.
- Vehicle CAN (CAN-H = pin 25 / CAN-L = pin 16 on the iBooster ECU)
- YAW (CAN-H = pin 18 / CAN-L = pin 10 on the iBooster ECU)
Did some CAN-BUS sniffing on the bench with my Peak CAN adapter and SavvyCAN.
In a short while I’ll hook up my brand new CANedge1 too, but I still need to make cables. I’m becoming a reseller so drop me a line if you want one too. CSS Electronics has some great visualization and logging over time tools.
Deciphering iBooster CAN
Previously this post contained the findings of just sniffing the CAN-BUS. While working on this together with Jon (@tesla_bimmer on Insta) he pointed me towards a huge pile of .dbc files in the DCBTools project. A pot of gold I’d say. Below you can find the ones for Tesla:
Sniffing vehicle CAN
I’ve used the tesla_models.dbc and on the vehicle CAN I’d did get some proper interpretations. Brake input stroke in mm via CAN!
This can be useful to improve regenerative braking in a conversion.
Traditionally a pressure transducer is used to know the driver hits the brakes. That signal is then used in the vehicle control unit (VCU) to also activate regenerative braking. The advantage of using a CAN input based on stroke is that it is faster. You can immediately (gradually) increase regenerative braking and don’t have to wait for pressure buildup. Additionally it can be used to overrule any throttle input.
Sniffing YAW CAN
On the YAW CAN-BUS only two messages are being send, 0x38E and 0x38F. While pushing in the rod on the YAW CAN-BUS I did get some consistent results. It looks like Byte 3 of message 0x38E represents the push rod position. Unfortunately these ID’s are not in the .dbc’s I have. Jon has figured this out (it’s not only Byte 3).
The output with the push-rod in IDLE position is 0x40 (so 64 decimal) and when fully pressed the value is 0xC0 (192 decimal). Potentially this value can be used to trigger regenerative braking. The only thing is that it does not tell us how hard someone it pressing the pedal. Furthermore the value range will depend on the brake pad travel and will be different on every car. However from a deviation from IDLE position you do know the brake is being pressed.
More sniffing? Playback?
So what’s next? This is as much as I can do for now with my set of skills, tools and hardware. Think it would be beneficial to get CAN data from a driving Tesla. The vehicle CAN of the iBooster should be available on the diagnostics port. Once I get my hands on such a log, I can do a playback to the booster and see whether we can get it to work on the bench.
If you have any ideas or input on how we can move forward, please drop me a line. If someone for example already has a CAN-BUS log of a Tesla Model S, I could do a playback and see what happens and eliminate rows from the playback to find out what CAN ID’s are inputs for the iBooster.
If someone is intterested in the logs I made from the two busses, let me know and I can share them.
Looking forward to hearing from you! You can contact me via e-mail.
Blog series on power brakes
- Vacuum assisted power brakes
- Electric power brakes
- Installing the iBooster
- Wiring the Tesla iBooster
- Performance test of the Tesla iBooster
- CAN control of the iBooster
- Other donor vehicles for the iBooster
Disclaimer/warning that is not only valid for this article but applies in general.
It is the sole responsibility of the person or company selecting or installing any component or kit in any car modification or upgrade (like brakes, drivetrain, etcetera) to determine the suitability of the component or kit for that particular application. Especially when using parts or components that were not directly designed for use in that specific brand or model. If you are not sure how to safely use a part, component or kit, you should not install or use it. Do not assume anything. Inspiration and information found on this website, elsewhere or examples that others are using a part, component or kit does not guarantee proper installation or match with your particular setup.