How do companies read SoH using OBD devices?

I’ve seen companies advertising services to check the State of Health (SoH) of EV batteries using simple plug-in devices. I understand the limitations of SoH values reported by OEMs via OBD, but I’m curious about how these companies can provide such a service.

From what I can tell, they use a SIM-enabled OBD dongle to scan the car and send data to a cloud server, which then interprets the data. My question is: how do they figure out how to read and interpret CAN bus messages, considering these vary across manufacturers? Do they reverse-engineer a bunch of cars, or is there some kind of database or shortcut that makes this possible? It seems like reverse-engineering every model would be a massive undertaking.

They likely use a DBC file, which contains CAN bus information. If you can get your hands on one (either from the OEM or elsewhere), it’ll have the info you need.

> A DBC file encodes, in a human-readable way, the information needed to understand a vehicle’s CAN bus traffic.

Check this out: opendbc/opendbc/dbc at master · commaai/opendbc · GitHub

Vehicles built on the same platform usually share the same CAN messages. Even across different platforms, the differences aren’t as massive as you might think. In practice, they only need to support a handful of variations rather than hundreds of completely unique setups.