Dear Community:
The Openpilot Community needs your help to continue to keep opc.ai's lights on and support the path to Workbench v0.2. With only a one person crew and without commercial funding it's not always financially feasible to fund these services out of pocket. Please consider becoming a Patreon supporter of the Openpilot Community project and receive exclusive perks and benefits!
Become a patreon Learn more Maybe Later

Vasily Tarasov
Sep 07, 2018·6 min read

Openpilot port for General Motors cars

Image
Openpilot offers a much better lane keep assist than General Motors cars come with from the factory (except for supercruise). This guide uses pictures and pinouts for 2017 Chevrolet Volt with Adaptive Cruise Control (ACC) package, but should work pretty much the same way for any ACC-equipped GM car, except for Impala and supercruise models. Check out pull requests on openpilot github repo for current status of GMC Acadia and Chevy Malibu interface updates.

Demo video

Installation guide video

Installation

  • Get a GM-made car with Adaptive Cruise Control package, except for Impala or supercruise-equipped car. In some cars, ACC is a part of Driver Confidence II package, for some it's a separate package. Non-ACC cars don't have a front radar, and (at least currently) are not supported by openpilot. Most often Premier trim is required to be able to add ACC package. Chevrolet Volt Premier 2017+ with ACC is currently the best supported GM car.
  • Buy an EON and a Panda. All types of pandas are supported, grey and white.
  • Ordering a GM Giraffe is optional. Giraffe simplifies powering front radar module.
  • Check out #gm slack channel slack channel for latest news. Ask a lot of questions, and suggest improvements to this guide.
  • Turn off the car, and wait for couple minutes until car's dashboard screen turns off completely, no backlight. Car doesn't turn off quite fully with just pressing the start button, and it effectively turns on for every user interaction, like pressing a button, pedal, closing the door, etc. Proceeding while car is turned on may result in ECUs throwing communication errors (engine light comes on).
  • Pull out fuse marked "OBS DET" (stands for obstacle detection). Fuse descriptions are usually located on the fuse box cover. On Volt, it's the fuse F19 located in the trunk. This will power off adaptive cruise modules, as well as side alert system. This way ACC ECUs won't throw errors due to not seeing other modules.
  • If you have a GM Giraffe, just swap stock adaptive cruise control module with a GM giraffe, put the fuse back in, and you're done. If you don't have a giraffe, follow the steps below.
  • Remove the front camera module outer cover, and unplug the module. Leave rear view mirror and camera module itself as-is, no need to remove those.
  • Car-specific step, the pinout and connector are for Chevy Volt. Manufacture 12-pin Molex 34825 plug to manually control the radar power. On the adapter, short pins 5&7, and 6&8 (CAN_H "high" shorted to another CAN_H, same for CAN_L "low") to keep continuity of the "object detection" CAN bus, and pins 3&9 to provide power to the radar. Feel free to make 3&9 connection through a rocker switch, for convenience.
  • Camera Module pinout, for Chevy Volt:

| pin | description |
| 1 | ground |
| 2 | not connected |
| 3 | +12v power |
| 4 | not connected |
| 5 | object detection CAN high, can_h |
| 6 | object detection CAN low, can_l |
| 7 | object detection CAN high, can_h |
| 8 | object detection CAN low, can_l |
| 9 | +12v radar power |
| 10 | not connected |
| 11 | single-wire GMLAN |
| 12 | not connected |

  • Don't leave radar powered on when you leave the car: radar may have to be restarted if left running for a long time; it uses about 6 watts of power, which is a bit much radiation to be exposed to; and the worst thing is it will drain your lead-acid 12v car battery, if left running for about a week without a charger cord connected.

  • Optional step, for setup convenience. You can reach also the ACC module through the emergency hole just as well. Pull out the interior panel to the left of rear seats. Locate the adaptive cruise control module, right behind the storage compartment, and unplug it.

  • On the 16-pin harness, put 120 Ohm resistor between pins 6&14 on the unplugged harness. This is terminating CAN bus resistor for object detection CAN bus.
  • On the 16-pin harness, short pairs of pins 1&2, 3&4, 9&10 and 11&12 on the unplugged harness, to keep continuity of the chassis and object CAN buses. This shorts CAN_H to another CAN_H of the same bus, same goes for CAN_L. Never drive your Volt without continuity on chassis and powertrain CAN buses!
  • Alternative setup. You can leave ACC module's 16-pin connector plugged in, to provide equivalent continuity and bus termination. If you do this, ignore the two steps above.
  • On the 14-pin harness, short pins 6&7, and 13&14 (CAN_H shorted to another CAN_H, same for CAN_L) on the unplugged harness, to keep continuity of the powertrain CAN bus. Never drive your Volt without continuity on chassis and powertrain CAN buses!
  • ACC Module pinout, for Chevy Volt:

|
|
| pin | description, 16-pin connector |
| 1 | chassis CAN high, can_h |
| 2 | chassis CAN high, can_h |
| 3 | object detection CAN high, can_h |
| 4 | object detection CAN high, can_h |
| 6 | object detection CAN high, can_h |
| 7 | single-wire GMLAN |
| 9 | chassis CAN low, can_l |
| 10 | chassis CAN low, can_l |
| 11 | object detection CAN low, can_l |
| 12 | object detection CAN low, can_l |
| 14 | object detection CAN low, can_l |
|
|
| pin | description, 14-pin connector |
| 1 | +12v power |
| 3 | steering wheel LKA LED control |
| 6 | powertrain CAN high, can_h |
| 7 | powertrain CAN high, can_h |
| 8 | ground |
| 9 | +12v radar power |
| 12 | ??? |
| 13 | powertrain CAN high, can_l |
| 14 | powertrain CAN high, can_l |
|
|

  • Plug fuse F19 back in. Note that you will see "Service adaptive cruise control" and potentially "Service front camera" messages on the dashboard if EON is unplugged.

Limitations

  • Openpilot must be engaged with pressing "set/-" button while going above 18 MPH, with ACC enabled. Press main ACC steering wheel button to get a white speedometer icon on dashboard, to enable ACC.
  • After first openpilot engagement, and until car is restarted (or ACC mode is tuned off and on), openpilot can be engaged with either "set/-" or "res/+" buttons. In other words, car needs to be put in adaptive cruise control mode first, for "resume" steering wheel button to work.
  • In a stop-and-go traffic, if car comes to a full stop, press "res/+" button to take off. Auto-resume is a work-in-progress, currently there is a solution known for 2017 Volt that unfortunately doesn't work on other cars.
  • Lane keep is unavailable while driving under about 7 MPH.
  • Lane keep torque is limited. Expect to have to take over on curvy highway stretches.