Video Demo
Key things to note:
- Start by checking on the official comma.ai website for vehicle compatibility.
- Make sure your car have some kind of camera on the top mirror.
- Your car should have stock ACC (Adaptive Cruise Control) or LKAS (Lane Keep Assist) → Meaning it can maintain speed and keep on lane.
Car Compatibility
-
If your car is supported by the official comma.ai team. You can just plug and plag with the harness provided.
-
If your car is not supported, make sure may have stock LKAS / ACC. This is the current project will be based on.
-
If your car is not supported, and does not have stock LKAS / ACC due to older year model. There are some mods that will allow swapping with newer model, can check out legacy pilot (This is not the current project will be based on).
-
Car such as BMW / Mercedes might not work due to FlexRay is being used instead of CAN message. There are some POC of analysing and intercept FlexRay, but current approach is not feasible and not mature enough.
Additional Hardware Checking
- If your car is supported, may proceed with the official comma.ai device, and follow the instruction shown on the webpage. If the official price is too expensive, you may consider Clone Version.
Note that you need to make sure is your car in CAN or CAN FD mode. Since only Comma 3X support CAN FD, and for Comma 3 extra hardware such as the red panda might needed.
-
If your car is not supported, but it has stock ACC / LKAS command, without spending your money on the device that might not work. You can try to purchase the white command panda here and plug into your OBD Port, and laptop. You can try use tools such as cabana to analyse the message. If you can analyze it, then your car is using CAN message, else it might be using CAN FD, or other message protocol.
-
There are tools such as CAN and CAN-FD Debugger like cannable that can read both CAN and CAN FD Message. This is only used to confirm is the car using CAN or CAN FD. You can load DBC File into the program to monitor also.
-
Can also try Logic Analyzer to determine the message is CAN / CAN FD based on the frequencies.

CAN vs CAN FD
May refer to the wikipedia here for more complete information.
Based on the hardware method provided above, should be able to determine the message is CAN or CAN FD. If none of the tools work, the car might be using other message protocol.
Camera Pinout
If your car is supported, can skip this step and go to the Harness and connect to the device stage
For the case where the LKAS / ACC on top of the window. Can open the cover and should reveal the ADAS Box like this shown.

There are total 6 cable for this camera.
- 5v (Ignition)
- Ground
- CAN HIGH
- CAN LOW
- EMPTY
- EMPTY
To determine the cable, can refer to the schematic provided, but for this case there are no manual found for this car we can try to measure it by multimeter.
DANGER THIS MIGHT DAMAGE THE CAR SINCE WE MIGHT MEASURE VOLTAGE WHERE IT NOT SUPPOSED TO BE PROCEED WITH CAUTION
- Need to find the ground from the cable, can try measuring different cable
- Once found the ground cable, the 5v cable should give 5v
- CAN High cable should give around 2.6
- CAN LOW cable should give around 2.4
- EMPTY Means that there is no voltage running on that cable, and confirmed to be not ground.
This is how the cable schematic looks like.


Harness and connect to the device
Once determine the cable, we can connect to the harness we selected when purchase the comma device.
If your car is supported, you can just directly plug with the harness provided.
If your car is not supported, you can use Developer Harness, or in my case using VW J533 Harness

Connect based on the schematics shown below for J533.

Once connected it should look like this. (As we does not have proper harness, we can use the male/female Jumper Cable)


Software
This is when most of the development time takes place, as we might need to test drive, capture logs, label it inside DBC using cabana.
PANDA
This is the most common error you will hit when developing a fork. I decided to temporary allow All Message to prevent messsage stuck and being blocked.
Shortcut
Instead of go through one by one for the address assigned for the camera, we can try by reading all the message on the car, then measure one more time but this
time with the camera unplugged. It should show this error on the dashboard (3 error code).

From there we can perform DIFF and capture the missing address (This is the one reserved for camera), we can try monitor this address when the stock ACC / LKAS is activated.
Once found the message.
Steering Command ??
As the message in the address is based on the counter timing + checksum + some steering data, we can send that specific command sent from the stock (We can get it from the logs). As the message should be valid (it came from stock ACC), just the data might not makes sense in the first place. We can loop the program and keep sending the same message to the address this caused some movement on the steering. Here is one of the demonstration
It breaks due to the counter and checksum does not changes.
Gas / Brake
As we have found the steering address, we can do the same for the gas / brake command. but this time the counter and checksum is correct and changes everytime. This will allow us to send continuous message without break.
This is the stage where you need to find the Gas / Brake Command from the Stock ACC, and what is the message looks like.
Wrap it all up.
Once done find the message and address, we need to send a proper message to control the car. Luckily for this car its using steering angle as the input. Openpilot able to produce steering angle as output, so we can plug that in. No Tuning required.
For the Gas / Brake Command, its based on number 0 - 255, 0 means brake 255 means gas The higheer the number, the more gas is produce (touch the pedal).
As openpilot is based on vison only approach, it might suffer from night, rain, and might not be able to react after. There are also issue during downhill where brake is always prossed due to pass the speed limit. From the current community, longitudonal support might still not as clean as we expect due to the limitation.
What next?
As the current device used is Comma 2, the model might not be the latest being used in 3 and 3x. Better model might be able to provide better result, camera has better view.
Also there are experimental feature such as Stop and Go, Navigate on Openpilot seems promising.