OpenPilot 2019 Chevy Bolt Port

Image result for 2019 chevy bolt

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, but the support is not ready (and may never be ready) to merge into the main OpenPilot source.
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 Control Working*

* Power Steering control module still faults after some length of time (up to an hour) requiring a complete shutdown of the car to resolve.

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 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

Wiring

(Insert diagram here) 🙂

The Bolt’s FFC connector pinout:

 Pin  Wire color  description
 1  BK      Ground
 2  
 3  RD/GY   10A Fuse B+ F45DA 12v
 4  WH      Switched to ground, air bag coil, LED indicator on wheel, steering wheel control switch right??
 5  BU      Powertrain CAN ECM side, High
 6  WH      Powertrain CAN ECM side, Low
 7  BU      Powertrain CAN BCM side, High (steering side)
 8  WH      Powertrain CAN BCM side, Low (steering side)
 9  WH/BU  (IGN) 5986 (data link to inst cluster & radio)
 10 GY/WH  air bag coil, LKAS switch & collision switch (resistance based differential)
 11 GN     Low speed GMLAN
 12 

Obd-II pins (Panda Perspective)

OBD-II cable wire colors (assuming you used the one referenced. You should probably double check in case Amazon switches manufacturers):

1 – Brown
2 – brown/wh
3 – orange
4 – red/wh
5 – green
6 – green/wh
7 – black
8 – black/wh
9 – lt orange
10- white
11- yellow
12- peach
13- gray
14- teal
15- dk blue
16- purple

In our case, CAN1 is the Powertrain CAN Bus. CAN2 is the Chassis CAN bus. CAN3 is connected directly to the FFC’s Powertrain bus wires and requires a 100-120-ohm terminating resistor.

  • Cut the OBD extension cable in half, remove the outer insulation maybe 2 inches
  • Remove 2 inches of insulation from both sides

(I will provide more complete instructions later)
Here are the connections that need to be made.

OBD-II car port (male) <-> female OBD-II connector

From the OBD-II port we need to run the following signals through the CAT-5 cable:

  • 3 & 11 – CAN2H and CAN2L (use a twisted pair)
  • 7 & 15 – K-LIN and L-LIN (use a twisted pair) (may not be required)
  • 4 & 8 – Ground and Ignition (use a twisted pair) (technically ground isn’t required but I’d rather not have the spare wire of a twisted pair floating)

These need to be connected to the same pins on the female OBD-II connector.
Primarily we need the Chassis bus. Note that this is a filtered Chassis bus – most likely we will tap into the unfiltered Chassis Bus at the Chassis Control Module or the Power Steering Control Module in the future.
I’m not sure the LIN is used – I brought them up for safety.

Camera side Molex (female) <-> Vehicle side Molex (male)

The following pins on the camera Molex connector should be connected straight from the female to the male: 1, 3, 4, 9, 10, 11. Note that we will need to tap into pins 1, 3 & 11. (I was naughty and stripped a small section to wrap wires around – there must be a better way)

On both the male and female Molex connectors, pins 5 & 7 should be connected together, and pins 6 & 8 should be tied together. For the rest of the document when I refer to pin 5, I mean 5 & 7; likewise pin 6 refers to pins 6 & 8.

Have fun crimping those terminals! Do NOT fold the wire over and crimp with insulation – the terminals will not fit in the connector!

(TODO: picture)

Camera side Molex (female) <-> female OBD-II connector
Pin 5 Molex -> Pin 12 OBD
Pin 6 Molex -> Pin 13 OBD

Vehicle Side Molex (male) <-> female OBD-II connector

Pin 1 Molex -> Pin 4 OBD
Pin 3 Molex -> Pin 16 OBD
Pin 5 Molex -> Pin 6 OBD
Pin 6 Molex -> Pin 14 OBD
Pin 11 Molex -> Pin 1 OBD

When you are done you will have a Male OBD-II connector that plugs into the car’s OBD-II port with a cat 5 cable running up to the FFC area.

Plugging it in

  • 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 3 minutes for the car to COMPLETELY shut down. Don’t touch anything!
  • 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 connect and squeeze, wiggle / pull the connector out of the camera.
  • Plug the Male socket on your Giraffe into the Vehicle-side connector
  • Plug the female connector on your Giraffe into the Camera
  • Plug the Male OBD-II connector on you giraffe inte the vehicle’s OBD-II port
  • Plug the Panda into the female OBD-II port and hang it over top of the rearview mirror (TODO: Image)
  • Plug the Panda into the EON
  • Pray we didn’t make any mistakes

Functionality

This current configuration will disable the forward facing camera entirely if OP is not active. When we either build a proper giraffe (or harness for the Panda Black) there should be an option to bypass OP.

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. (Note: this does not work at the moment)

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…
For a while. There is an issue that the Power Steering Control Module will fault seemingly at random. When this happens neither OP nor the stock LKAS will function until you have shut down the car completely (ie turn it off and wait 5 minutes)

We are actively working on diagnosing the PSCM issue.

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!