openpilot 0.9.3

3 minute read

New driving model

This release’s “Hot Coffee” model includes additional improvements in height estimation, as well as tracking the height output from the model in the liveCalibration.height output of calibrationd.

Driving personality

This release introduces a setting that changes the personality of how openpilot drives. Standard mode has the same behavior as openpilot has had in the past, and is the recommended mode. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode, openpilot will stay further away from lead cars. Aggressive mode was tuned such that it can follow lead cars a little closer but maintain the same buffer by being more aggressive on the brakes.

Driving personality setting

In the future this setting will be an input to the model, and will control how openpilot drives in a more nuanced and natural way.

UI updates

It’s important to connect your device to Wi-Fi regularly to upload your drives to connect and check for updates. Your driving data is also used to train openpilot’s driving model and help us identify bugs. We’ve added a widget to the home screen which reminds you to setup Wi-Fi and shows when your device is connected (#28273).

Sometimes you might need to reflash AGNOS, the operating system for your comma three. Our new web tool at makes it easier - just follow the instructions and after a few steps your device will be reflashed and ready to go. Check out the code at


Fuzzy fingerprinting for Hyundai, Kia, Genesis

Before openpilot can interface with the car it is connected to, it needs to know what messages to send and what it can expect to receive. This process of detecting the vehicle platform is called fingerprinting.

Each car we support has multiple Electronic Control Units (ECUs) on the CAN bus that we can query for their firmware (FW) versions, which describes each ECU’s functions and capabilities. When paired with a large database of FW versions, we can reliably fingerprint a previously-seen car to a specific openpilot platform.

However, this method of requiring all FW versions to match means we often fail to fingerprint identical cars from other countries or with slightly different trims or engines. This leads to a poor first impression of openpilot, and many pull requests to openpilot just to add a single FW version.

In 0.9.3, we’ve made significant improvements to fuzzy fingerprinting for Hyundai, Kia, and Genesis models. Instead of exact matching against the known FW versions, we can exclude ECUs and parts of the FW version that are not essential to controlling the car. Specifically, we now ensure matches for:

  • the ADAS camera, radar, and electronic power steering ECUs
  • platform codes that are vehicle generation-specific
  • part numbers, which describes differences in ADAS functionality
  • part manufacture dates, which allows us to exclude new model years we haven’t seen or tested yet

With these changes we expect cases where the car fails to fingerprint on its first drive to drop significantly. Below you can see that roughly 30% of all new users with these vehicles (hyundai) had issues preventing them from experiencing a hassle-free setup, and we’re excited to improve upon that in this release.

Time to first fingerprint (TTFF) plot for new users in the last 12 months

More comprehensive setup docs

In an effort to make it easier to understand what you need to get openpilot running in a supported car, we now document and show all the required parts (#28212) alongside the features in our car documentation. Check it out here!

Soon, we’ll also use these docs to show a more exact “What’s in the Box?” when you buy a comma three and select your car in the dropdown.

Bug Fixes

  • Fingerprinting: count number of ECUs for fuzzy matching, reduces false positives (#28423)
  • Honda: correctly set stop and go in the car documentation (#28458)


  • Improved fuzzy fingerprinting for Hyundai, Kia, and Genesis models (#28531)
  • Ford: log stock AEB events (#28228)
  • Honda: log ACC faults (#28339 and #28338)

Join the team

We’re hiring great engineers to own and work on all parts of the openpilot stack. If anything here interests you, apply for a job or join us on GitHub! We’re also offering a cash hiring bounty if you refer someone.