<sup>1</sup>Requires an [OBD-II car harness](https://comma.ai/shop/products/comma-car-harness) and [community built ASCM harness](https://github.com/commaai/openpilot/wiki/GM#hardware). ***NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).*** <br/>
<sup>1</sup>Requires an [OBD-II car harness](https://comma.ai/shop/products/comma-car-harness) and [community built ASCM harness](https://github.com/commaai/openpilot/wiki/GM#hardware). ***NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).*** <br/>
<sup>2</sup>Only includes the MQB Passat sold outside of North America. The NMS Passat made in Chattanooga TN is not yet supported.
<sup>2</sup>Only includes the MQB Passat sold outside of North America. The NMS Passat made in Chattanooga TN is not yet supported.
"Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off.",
"Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off.",
@ -62,7 +61,7 @@ QWidget * toggles_panel() {
"In this mode openpilot will ignore lanelines and just drive how it thinks a human would.",
"In this mode openpilot will ignore lanelines and just drive how it thinks a human would.",
"Preview the driver facing camera to help optimize device mounting position for best driver monitoring experience. (vehicle must be off)",
"openpilot requires the device to be mounted within 4° left or right and within 5° up or down. openpilot is continuously calibrating, resetting is rarely required.",
[=](){
[=](){
Params().putBool("IsDriverViewEnabled",true);
if(ConfirmationDialog::confirm("Are you sure you want to reset calibration?")){
"openpilot requires the device to be mounted within 4° left or right and within 5° up or down. openpilot is continuously calibrating, resetting is rarely required.",[=](){
if(ConfirmationDialog::confirm("Are you sure you want to reset calibration?")){
Params().remove("CalibrationParams");
}
}));
device_layout->addWidget(newButtonControl("Review Training Guide","REVIEW",
offroad_btns.append(newButtonControl("Review Training Guide","REVIEW",
"Review the rules, features, and limitations of openpilot",
"Review the rules, features, and limitations of openpilot",[=](){
[=](){
if(ConfirmationDialog::confirm("Are you sure you want to review the training guide?")){
if(ConfirmationDialog::confirm("Are you sure you want to review the training guide?")){
SshControl::SshControl():AbstractControl("SSH Keys","Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username.",""){
SshControl::SshControl():AbstractControl("SSH Keys","Warning: This grants SSH access to all public keys in your GitHub settings. Never enter a GitHub username other than your own. A comma employee will NEVER ask you to add their GitHub username.",""){