
Compact XCP on CAN Data Logger for eBikes [A2L | Python]
Case Studies / Bosch

Bosch eBike Systems
Bosch eBike Systems develops innovative products and digital services for eBikes, including drive systems, ABS for eBikes and 'Connected Biking' solutions.
What problem did you solve?
We develop ECUs on eBikes and have the need to record everything on the CAN bus - and also specific ECU internal signals via XCP on CAN. In the automotive industry this is typically done with very expensive and, unfortunately, very big hardware. Such hardware is difficult to mount on a bicycle and it would be particularly dangerous to incorporate on eMTBs (electric mountain bikes) that will be riding steep downhill trails. The added weight might also influence riding dynamics.
In other words, we needed a compact light-weight data logger - which could also support XCP on CAN communication.
How did you solve it?
We decided to deploy the CANedge2 with WiFi for this use case, which is also used by other teams at Bosch. This device has a very small footprint and weight (8 x 5 x 2 CM, 100G), meaning it can be mounted to the bicycle frame or handlebar using e.g. velcro tape. The device is so light that it sticks perfectly, making it easy to mount and unmount. Further, this mounting method allows it to be mounted in crash safe spaces on the bicycles.
"The CANedge is a very capable XCP on CAN logger with a tiny footprint and modern toolchain!"
The canedge-xcp Python script creates a dynamic DAQ list configuration file (and DBC) for the CANedge based on a measurement list and A2L file
The core feature of the CANedge is to log CAN frames, so our need to record everything broadcast on the CAN bus is sorted out-the-box. However, the need to our log ECU internal signals requires the use of XCP on CAN, specifically dynamic DAQ lists including the use of CAN FD frames. The CANedge generally logs raw CAN bus data and does not support loading e.g. A2L or DBC files onto the device - but instead allows the end user to specify custom transmit lists to control communication.
To enable our XCP needs, CSS provides the canedge-xcp Python tool. This tool lets us provide a CSV with required measurements and our A2L file. Based on this, the script produces a configuration file that can be put on the CANedge. This file contains an optimized dynamic DAQ initialization sequence, thus prompting our ECU to start communicating the DAQ-DTOs containing the measurements we need. The script also produces a DBC file that enables us to decode the raw DAQ-DTO CAN frames, using e.g. the asammdf GUI and other software tools.
What benefit has this led to?
In this use case the very tiny size of the CANedge is absolutely needed. Also, the affordable price makes it possible to simply replace the device if a bike crash damages it. Further, the modular, Python-centric and very modern CANedge solution made it possible to fully achieve our logging requirements.
Why did you choose the CANedge?
The CANedge is very small and relatively cheap. The logging is very realiable and the software/APIs are modular, enabling specialized use cases.
— Johann Skatulla, Function Developer at Bosch eBike Systems

Ready to log XCP data?
Get your CANedge today!