This documents my efforts to add support for the 2019 Chevy Bolt to comma.ai OpenPilot open-source self-driving software.
Good progress has been made. I have submitted PRs to the Comma.ai stock, but they aren’t insterested until I get Longitudinal support working.
If you want to try this you will need to use my fork of the OP source. Please be aware that this is a Work In Progress and may be broken from time to time.
Current status: Lateral & Longitudinal Control Working
Background
OpenPilot has previously been ported to the 2016-2018 Chevy Volt so long as it has Adaptive cruise control (ACC) and Lane Keep Assist (LKAS) . On the pre-2019 Volt (and other GM cars) it was possible to implement through the OBD-II port with a community developed “Giraffe” (Giraffe is the generic term for an adapter / extra wiring required to make it work).
The Volt has an ASCM that must be bypassed in order for OP to control the car; additionally some tomfoolery is required to power on the radar module.
The Bolt does not yet support ACC at any trim levels. LKAS and Forward Collision Avoidance (FCA) are available with the Driver Confidence II package – this package is required to get anywhere. If you don’t have it, this will never work.
Additionally, GM has added a Serial Data Gateway with “Cyber Security” filtering that blocks important messages from the OBD-II port (this applies to the 2019 Volt as well). We must interface the unfiltered CAN busses through other connectors in the car.
The Bolt does not contain an ASCM – all the self actuating functionality is handled directly by the Forward Facing Camera (FFC) module. Because of this, it is possible to intercept the required CAN busses from the FFC connector.
Requirements
- comma.ai EON Devkit
- Uninstall chffr
- Use OP Workbench to install OP from my custom Fork
- comma.ai Grey Panda
- A Chevy Bolt with the Driver Confidence II package
- The Bolt Giraffe Board
- You can request one be built by messaging jshuler on the Comma.ai Discord group.
- You can build one yourself:
- Order this board from JLCPCB https://easyeda.com/jshuler/chevy-bolt-openpilot-giraffe-rev-3 (The BOM is included in the EasyEDA project description)
- In addition to the board:
- A female solder-to-board OBD-II connector. These are hard to find. If you are in a hurry, you can use these from Amazon: https://www.amazon.com/gp/product/B06X91M9X1/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1
- If you are not in a hurry, you can get them from AliExpress here: https://www.aliexpress.com/item/32803775218.html?spm=a2g0s.9042311.0.0.f01c4c4dgNDUJO
- 6 inches or so of ribbon cable with 12 conductors
- At least 12 terminals for the female connector: https://www.mouser.com/ProductDetail/molex/560023-0548/?qs=HXFqYaX1Q2zvl1a1PMnUQQ%3D%3D&countrycode=US¤cycode=USD
- A female molex connector: https://www.mouser.com/ProductDetail/Molex/34824-0124?qs=%2Fha2pyFaduh7QMR2U%2FN5mjfSk7K41%252Bzpu0Tl9UBb0W7fVIfPgcB9jA%3D%3D
- A means of crimping the terminals
- A Ribbon cable connector with 12 pins, such as this one: https://www.mouser.com/ProductDetail/Samtec/IDSD-06-S-1100?qs=sGAEpiMZZMsgIz308WEU09pkw8SPIpDFEl6zdp9YbrW7bimij9psRQ%3D%3D
- Soldering iron, solder, recommend some heat shrink tubing
- Patience and a steady hand
Assembling the board
Solder the resistor, the Molex connector, the OBD-II connector (you may need to use pliars to crimp the pins), the RJ-45 connector, the dip switches, and the camera header to the board.
Separate the wires on one end of the ribbon cable, strip them, attach and crimp the terminal (pro tip: the terminals are MUCH easier to work with if you cut up the strip of metal holding them together to be used as a handle rather than detaching the terminal first)
Insert the terminals into the female connector so that the wires match the below image (keep in mind that you have to reverse this when looking at the back side of the connector). Because 1,2,3,4 are across the bottom your cable will look twisted to the casual observer, but it is not.
Attach the ribbon cable connector to the end of the ribbon cable. Make sure you place it on the correct side of the cable so that pin 1 is on the correct side.
Plug the camera connector into the board, and you are done!
Installation
- Remove the plastic cover behind the rear view mirror to expose the Forward Facing Camera (TODO Image)
- Get in the car, close the doors, make sure the car is turned OFF and wait for at least 5 minutes for the car to COMPLETELY shut down. Don’t touch anything!
- The Camera module is held in place by two plastic clips on the sides – you can pry it loose to make disconnecting the cable MUCH easier.
- There is a white retainer clip on the top of the connector going into the camera – slide / pull this out. (It does not come off, just slides out maybe 1/4 inch)
- Press down on the top of the connector and squeeze, wiggle / pull the connector out of the camera.
- Plug the male connector from the car into the socket on the Giraffe
- Plug the female connector into the back of the camera.
- Attach the Panda to the OBD-II port on the Giraffe
- Plug your USB cable into the Giraffe that will connect to the EON
- Make a big decision
- If you do not intend to connect the EON any time soon, flip dip switches 1 & 2 to on, 3 & 4 to off. This is stock mode and will operate as such.
- If you are ready to go, flip dip switches 3 & 4 to on, 1 & 2 to off. This enabled OpenPilot Passthrough mode – this is probably what you want.
- If for whatever reason you do not want to attach the stock camera, leave all the switches off. You will get errors on the dash that the camera is broken, but OP will still work.
- On your EON get connected to some Wifi.
- Use OpenPilot Workbench to connect remotely to the EON.
- On the left side select the option to install openpilot.
- For the git url use “https://github.com/JasonJShuler/openpilot”
- IMPORTANT: change the branch to “devel”
- Hit run.
It will take OpenPilot up to 30 minutes to compile. So long as your car is turned off, it will automatically update the code on the Panda.
Functionality
When you start the vehicle the EON should wake up and say something along the lines of “keep your eyes on the road.” If it says “Unsupported car,” please get on the comma.ai discord group in the GM channel for assistance – your car may have a different fingerprint we can add.
Speed (Longitudinal) control is not yet possible!
It is recommended to disable the LKAS while using OP. The system automatically passes through the stock LKAS when OP is not engaged so you are not losing any functionality.
Get up to your desired speed and activate the cruise control.
Press the cruise control Set or Resume button to activate OpenPilot. If everything works and you are lucky, the EON will have a green border and will start steering the car.
Congratulations! You Bolt is now steering itself…
We are also working on implementing automatic braking – when complete the car will slow down when you get too close to the car in front of you, but the cruise control will disengage and you will have to manually resume.
Finally we are working on implementing a gas pedal interceptor to enable full adaptive cruise control using OP’s camera.
If you have any questions or need any assistance, please visit the comma.ai Discord group‘s GM channel.
Be Safe!