I'm a bit lost Carloop Pro + Chevy Volt

I have a Carloop and a car. I want to do intelligent things mostly around battery level. I did the Hello World app and that worked fine. Now I want to see the CAN messages, preferrably via my USB wire to save on bandwidth costs. Where is the documentation for the carloop API? It would be very helpful to get going DIY.

I would suggest you take a look at the sample firmware apps for carloop.
This is the link:

When it comes to coding, it is not an API, but is an object. See the docs here:

If you want to know what the CAN messages mean for a chevy volt, then you probably need to reverse engineer it yourself or join a chevy volt forum where someone else has posted the CAN messages used in the volt. Every model of car is different…

That pages doesn’t document any of the functions nor includes all the methods transmit?. Is there an example showcasing all the methods and especially the query format.

I’m not able to make vehicle specific queries: OBD-II PIDs - Wikipedia

	CANMessage message;
	message.id = 0X7DF;
	message.len = 8;

	message.data[0] = 0x02; // 0 = single-frame format, 2	 = num data bytes
	message.data[1] = 0x22; // special Chevy mode
	message.data[2] = 0x00;        
	message.data[3] = 0x5b; // OBD PID

No response is received for this query. The mode and PID for this call (hybrid voltage battery percentage) is 22005B

Instead of jumping into car-specific queries, I suggest figuring out basic operations. Can you get any of the sample firmware apps going, without modifying the sample? That will do two things. The first is figuring out how your car actually responds to the carloop. Things like what speed the CANbus runs on, and whether the exposed CANbus of the car is the primary bus or a secondary bus. Also, you can see how the carloop object is used in the sample firmware.

Once you have that up and running, then you can start doing car-specific things. You will need to program in the parameters such as CANbus speed from what you learned above. Also, once you get into the car-specific queries, the query format will be specific to that model of car.

Yes, I have run through several of them without issues. However, Visualize Car Data must be polling too aggressively. It causes my car to report system errors, turns off the A/C fans, and sometimes shutting down the radio.

What is the query format for vehicle specific codes? It appears the Volt doesn’t respond to the standard HYBRID_BATTERY_PACK_REMAINING_LIFE 0x01 0x5b. The volt forum lists a vehicle specific query for this 22005b. How is this formatted? Based on the doc that I linked, it should be formatted as I mentioned above in the code block.

That sounds strange that the car would respond to aggressive polling.
Have you tried adjusting the polling rate to see if that helps?
In theory, that sample only asks for information and does not try to set parameters in the car. Then again, does the volt actually follow the CANbus protocol? If I understand, only the ODBII codes are legally required and the rest is optional. Has anyone else on the volt forum got a carloop and are they having the same issues?

Found the issue, the ODB header and size are off.

message.id = 0x7E4;
message.len = 8;

message.data[0] = 0x03; // 2 byte request
message.data[1] = 0x22;
message.data[2] = 0x43;
message.data[3] = 0x69;

Data comes back, works great. Car isn’t doing significantly weird things in a while either.

1 Like

How did you found that you have to change the message.id from 0x7df to 0x7e4 ?

I guess that I’m in the same situation.


What you are looking for is described in a general sense here:

It is really important that you study the details in this section, plus on this whole page.

It is a case of the car control unit does not respond to broadcast messages (0x7df).
This particular module only responds to messages that are specifically addressed to this module (0x7e4). This sort of thing is found by trial-and-error, or paying close attention to the forums that discuss your particular model of car so you can learn what others have figured out.