diff --git a/docs/CARS.md b/docs/CARS.md
index 5757dd6d26..efd9b3c520 100644
--- a/docs/CARS.md
+++ b/docs/CARS.md
@@ -4,227 +4,212 @@
A supported vehicle is one that just works when you install a comma device. Every car performs differently with openpilot, but all supported cars should provide a better experience than any stock system.
-## How We Rate The Cars
-
-### Stop and Go
-- [](##) - openpilot operates down to 0 mph.
-- [](##) - openpilot operates only above a minimum speed. See your car's manual for the minimum speed.
-
-### Steer to 0
-- [](##) - openpilot can control the steering wheel down to 0 mph.
-- [](##) - No steering control below certain speeds. See your car's manual for the minimum speed.
-
-### Steering Torque
-- [](##) - Car has enough steering torque to comfortably take most highway turns.
-- [](##) - Limited ability to make tighter turns.
-
-
# 202 Supported Cars
-|Make|Model|Supported Package|openpilot ACC|Stop and Go|Steer to 0|Steering Torque|
-|---|---|---|:---:|:---:|:---:|:---:|
-|Acura|ILX 2016-19|AcuraWatch Plus|[](##)|[](##)|[](##)|[](##)|
-|Acura|RDX 2016-18|AcuraWatch Plus|[](##)|[](##)|[](##)|[](##)|
-|Acura|RDX 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Audi|A3 2014-19|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Audi|A3 Sportback e-tron 2017-18|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Audi|Q2 2018|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Audi|Q3 2020-21|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Audi|RS3 2018|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Audi|S3 2015-17|ACC + Lane Assist|[](##)|[](##)|[](##)|[](##)|
-|Cadillac|Escalade ESV 2016[1](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Chevrolet|Bolt EUV 2022-23|Premier/Premier Redline Trim|[](##)|[](##)|[](##)|[](##)|
-|Chevrolet|Volt 2017-18[1](#footnotes)|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Chrysler|Pacifica 2017-18|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Chrysler|Pacifica 2019-20|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Chrysler|Pacifica 2021|All|[](##)|[](##)|[](##)|[](##)|
-|Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Chrysler|Pacifica Hybrid 2019-22|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|comma|body|All|[](##)|[](##)|[](##)|[](##)|
-|Genesis|G70 2018-19|All|[](##)|[](##)|[](##)|[](##)|
-|Genesis|G70 2020|All|[](##)|[](##)|[](##)|[](##)|
-|Genesis|G80 2017-19|All|[](##)|[](##)|[](##)|[](##)|
-|Genesis|G90 2017-18|All|[](##)|[](##)|[](##)|[](##)|
-|GMC|Acadia 2018[1](#footnotes)|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Honda|Accord 2018-22|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Accord Hybrid 2018-22|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Civic 2016-18|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Civic 2019-21|All|[](##)|[](##)|[](##)[2](#footnotes)|[](##)|
-|Honda|Civic 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Civic Hatchback 2017-21|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Civic Hatchback 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|CR-V 2015-16|Touring Trim|[](##)|[](##)|[](##)|[](##)|
-|Honda|CR-V 2017-22|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|CR-V Hybrid 2017-19|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|e 2020|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Fit 2018-20|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Freed 2020|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|HR-V 2019-22|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Insight 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Inspire 2018|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Odyssey 2018-20|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Passport 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Honda|Pilot 2016-22|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Honda|Ridgeline 2017-22|Honda Sensing|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Elantra 2017-19|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Elantra 2021-22|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Elantra Hybrid 2021-22|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Genesis 2015-16|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq 5 2022|Highway Driving Assist II|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Electric 2020|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Hybrid 2020-22|Smart Cruise Control (SCC) & LFA|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Plug-in Hybrid 2019|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Ioniq Plug-in Hybrid 2020-21|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Kona 2020|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Kona Electric 2022|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Palisade 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Santa Fe 2019-20|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Santa Fe 2021-22|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Santa Fe Hybrid 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Santa Fe Plug-in Hybrid 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Sonata 2018-19|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Sonata 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Sonata Hybrid 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Tucson 2021|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|Kia|Ceed 2019|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|EV6 2022|Highway Driving Assist II|[](##)|[](##)|[](##)|[](##)|
-|Kia|Forte 2018|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Forte 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Kia|K5 2021-22|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Electric 2019|All|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Electric 2020|All|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Electric 2021|All|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Electric 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Hybrid 2021|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Hybrid 2022|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Niro Plug-in Hybrid 2018-19|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Optima 2017|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Optima 2019|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Seltos 2021|Smart Cruise Control (SCC)|[](##)|[](##)|[](##)|[](##)|
-|Kia|Sorento 2018|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Sorento 2019|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Stinger 2018-20|Smart Cruise Control (SCC) & LKAS|[](##)|[](##)|[](##)|[](##)|
-|Kia|Telluride 2020|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|CT Hybrid 2017-18|Lexus Safety System+|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|ES 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|ES Hybrid 2017-18|Lexus Safety System+|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|ES Hybrid 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|IS 2017-19|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|NX 2018-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|NX 2020-21|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|NX Hybrid 2018-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|NX Hybrid 2020-21|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|RC 2017-20|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|RX 2016-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|RX 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|RX Hybrid 2016-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Lexus|RX Hybrid 2020-21|All|[](##)|[](##)|[](##)|[](##)|
-|Lexus|UX Hybrid 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Mazda|CX-5 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Mazda|CX-9 2021-22|All|[](##)|[](##)|[](##)|[](##)|
-|Nissan|Altima 2019-20|ProPILOT Assist|[](##)|[](##)|[](##)|[](##)|
-|Nissan|Leaf 2018-22|ProPILOT Assist|[](##)|[](##)|[](##)|[](##)|
-|Nissan|Rogue 2018-20|ProPILOT Assist|[](##)|[](##)|[](##)|[](##)|
-|Nissan|X-Trail 2017|ProPILOT Assist|[](##)|[](##)|[](##)|[](##)|
-|Ram|1500 2019-22|Adaptive Cruise Control|[](##)|[](##)|[](##)|[](##)|
-|SEAT|Ateca 2018|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|SEAT|Leon 2014-20|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Ascent 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Crosstrek 2020-21|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Forester 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Impreza 2017-19|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Impreza 2020-22|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Legacy 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Subaru|Outback 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Subaru|XV 2018-19|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Subaru|XV 2020-21|EyeSight Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Kamiq 2021[5](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Karoq 2019-21[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Kodiaq 2018-19|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Octavia 2015, 2018-19|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Octavia RS 2016|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Scala 2020|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Škoda|Superb 2015-18|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Alphard 2019-20|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Alphard Hybrid 2021|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Avalon 2016|Toyota Safety Sense P|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Avalon 2017-18|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Avalon 2019-21|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Avalon 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Avalon Hybrid 2019-21|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Avalon Hybrid 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|C-HR 2017-21|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|C-HR Hybrid 2017-19|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Camry 2018-20|All|[](##)|[](##)[4](#footnotes)|[](##)|[](##)|
-|Toyota|Camry 2021-22|All|[](##)|[](##)[4](#footnotes)|[](##)|[](##)|
-|Toyota|Camry Hybrid 2018-20|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Camry Hybrid 2021-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Corolla 2017-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Corolla 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Corolla Cross (Non-US only) 2020-21|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Corolla Hatchback 2019-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Corolla Hybrid 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Highlander 2017-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Highlander 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Highlander Hybrid 2017-19|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Highlander Hybrid 2020-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Mirai 2021|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Prius 2016|Toyota Safety Sense P|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Prius 2017-20|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Prius 2021-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Prius Prime 2017-20|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|Prius Prime 2021-22|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Prius v 2017|Toyota Safety Sense P|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 2016|Toyota Safety Sense P|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 2017-18|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 Hybrid 2017-18|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 Hybrid 2019-21|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|RAV4 Hybrid 2022|All|[](##)|[](##)|[](##)|[](##)|
-|Toyota|Sienna 2018-20|All|[](##)[3](#footnotes)|[](##)|[](##)|[](##)|
-|Volkswagen|Arteon 2018-22[7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Arteon eHybrid 2020-22[7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Arteon R 2020-22[7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Atlas 2018-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Atlas Cross Sport 2021-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|California 2021[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Caravelle 2020[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|CC 2018-22[7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|e-Golf 2014-20|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf 2015-20[8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf Alltrack 2015-19|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf GTD 2015-20|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf GTE 2015-20|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf GTI 2015-21|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf R 2015-19[8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Golf SportsVan 2015-20|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Jetta 2018-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Jetta GLI 2021-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Passat 2015-22[6,7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Passat Alltrack 2015-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Passat GTE 2015-22[7,8](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Polo 2020-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Polo GTI 2020-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|T-Cross 2021[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|T-Roc 2021[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Taos 2022[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Teramont 2018-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Teramont Cross Sport 2021-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Teramont X 2021-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Tiguan 2019-22[7](#footnotes)|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
-|Volkswagen|Touran 2017|Driver Assistance|[](##)|[](##)|[](##)|[](##)|
+|Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Harness|
+|---|---|---|:---:|:---:|:---:|:---:|:---:|
+|Acura|ILX 2016-19|AcuraWatch Plus|openpilot|25 mph|25 mph|[](##)|Honda Nidec|
+|Acura|RDX 2016-18|AcuraWatch Plus|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Acura|RDX 2019-22|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Audi|A3 2014-19|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Audi|A3 Sportback e-tron 2017-18|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Audi|Q2 2018|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Audi|Q3 2020-21|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Audi|RS3 2018|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Audi|S3 2015-17|ACC + Lane Assist|Stock|0 mph|0 mph|[](##)|VW|
+|Cadillac|Escalade ESV 2016[1](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[](##)|OBD-II|
+|Chevrolet|Bolt EUV 2022-23|Premier/Premier Redline Trim|Stock|0 mph|7 mph|[](##)|GM|
+|Chevrolet|Volt 2017-18[1](#footnotes)|Adaptive Cruise Control|openpilot|0 mph|7 mph|[](##)|OBD-II|
+|Chrysler|Pacifica 2017-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[](##)|FCA|
+|Chrysler|Pacifica 2019-20|Adaptive Cruise Control|Stock|0 mph|39 mph|[](##)|FCA|
+|Chrysler|Pacifica 2021|All|Stock|0 mph|39 mph|[](##)|FCA|
+|Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[](##)|FCA|
+|Chrysler|Pacifica Hybrid 2019-22|Adaptive Cruise Control|Stock|0 mph|39 mph|[](##)|FCA|
+|comma|body|All|Stock|0 mph|0 mph|[](##)|None|
+|Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[](##)|Hyundai F|
+|Genesis|G70 2020|All|openpilot|0 mph|0 mph|[](##)|Hyundai F|
+|Genesis|G80 2017-19|All|Stock|0 mph|0 mph|[](##)|Hyundai H|
+|Genesis|G90 2017-18|All|Stock|0 mph|0 mph|[](##)|Hyundai C|
+|GMC|Acadia 2018[1](#footnotes)|Adaptive Cruise Control|openpilot|0 mph|7 mph|[](##)|OBD-II|
+|Honda|Accord 2018-22|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Honda|Accord Hybrid 2018-22|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Honda|Civic 2016-18|Honda Sensing|openpilot|0 mph|12 mph|[](##)|Honda Nidec|
+|Honda|Civic 2019-21|All|Stock|0 mph|2 mph[2](#footnotes)|[](##)|Honda Bosch A|
+|Honda|Civic 2022|All|Stock|0 mph|0 mph|[](##)|Honda Bosch B|
+|Honda|Civic Hatchback 2017-21|Honda Sensing|Stock|0 mph|12 mph|[](##)|Honda Bosch A|
+|Honda|Civic Hatchback 2022|All|Stock|0 mph|0 mph|[](##)|Honda Bosch B|
+|Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|CR-V 2017-22|Honda Sensing|Stock|0 mph|12 mph|[](##)|Honda Bosch A|
+|Honda|CR-V Hybrid 2017-19|Honda Sensing|Stock|0 mph|12 mph|[](##)|Honda Bosch A|
+|Honda|e 2020|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|HR-V 2019-22|Honda Sensing|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|Insight 2019-22|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Honda|Inspire 2018|All|Stock|0 mph|3 mph|[](##)|Honda Bosch A|
+|Honda|Odyssey 2018-20|Honda Sensing|openpilot|25 mph|0 mph|[](##)|Honda Nidec|
+|Honda|Passport 2019-21|All|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|Pilot 2016-22|Honda Sensing|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Honda|Ridgeline 2017-22|Honda Sensing|openpilot|25 mph|12 mph|[](##)|Honda Nidec|
+|Hyundai|Elantra 2017-19|Smart Cruise Control (SCC) & LKAS|Stock|19 mph|32 mph|[](##)|Hyundai B|
+|Hyundai|Elantra 2021-22|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai K|
+|Hyundai|Elantra Hybrid 2021-22|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai K|
+|Hyundai|Genesis 2015-16|Smart Cruise Control (SCC) & LKAS|Stock|19 mph|37 mph|[](##)|Hyundai J|
+|Hyundai|Ioniq 5 2022|Highway Driving Assist II|Stock|0 mph|0 mph|[](##)|Hyundai Q|
+|Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[](##)|Hyundai C|
+|Hyundai|Ioniq Electric 2020|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai H|
+|Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[](##)|Hyundai C|
+|Hyundai|Ioniq Hybrid 2020-22|Smart Cruise Control (SCC) & LFA|Stock|0 mph|0 mph|[](##)|Hyundai H|
+|Hyundai|Ioniq Plug-in Hybrid 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[](##)|Hyundai C|
+|Hyundai|Ioniq Plug-in Hybrid 2020-21|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai H|
+|Hyundai|Kona 2020|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai B|
+|Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai G|
+|Hyundai|Kona Electric 2022|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai O|
+|Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai I|
+|Hyundai|Palisade 2020-22|All|openpilot|0 mph|0 mph|[](##)|Hyundai H|
+|Hyundai|Santa Fe 2019-20|All|openpilot|0 mph|0 mph|[](##)|Hyundai D|
+|Hyundai|Santa Fe 2021-22|All|Stock|0 mph|0 mph|[](##)|Hyundai L|
+|Hyundai|Santa Fe Hybrid 2022|All|Stock|0 mph|0 mph|[](##)|Hyundai L|
+|Hyundai|Santa Fe Plug-in Hybrid 2022|All|Stock|0 mph|0 mph|[](##)|Hyundai L|
+|Hyundai|Sonata 2018-19|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai E|
+|Hyundai|Sonata 2020-22|All|openpilot|0 mph|0 mph|[](##)|Hyundai A|
+|Hyundai|Sonata Hybrid 2020-22|All|openpilot|0 mph|0 mph|[](##)|Hyundai A|
+|Hyundai|Tucson 2021|Smart Cruise Control (SCC)|Stock|19 mph|0 mph|[](##)|Hyundai L|
+|Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai L|
+|Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[](##)|Hyundai E|
+|Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control|Stock|0 mph|9 mph|[](##)|FCA|
+|Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control|Stock|0 mph|39 mph|[](##)|FCA|
+|Kia|Ceed 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai E|
+|Kia|EV6 2022|Highway Driving Assist II|Stock|0 mph|0 mph|[](##)|Hyundai P|
+|Kia|Forte 2018|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai B|
+|Kia|Forte 2019-21|All|Stock|0 mph|0 mph|[](##)|Hyundai G|
+|Kia|K5 2021-22|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai A|
+|Kia|Niro Electric 2019|All|openpilot|0 mph|0 mph|[](##)|Hyundai H|
+|Kia|Niro Electric 2020|All|openpilot|0 mph|0 mph|[](##)|Hyundai F|
+|Kia|Niro Electric 2021|All|openpilot|0 mph|0 mph|[](##)|Hyundai C|
+|Kia|Niro Electric 2022|All|openpilot|0 mph|0 mph|[](##)|Hyundai H|
+|Kia|Niro Hybrid 2021|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai F|
+|Kia|Niro Hybrid 2022|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai H|
+|Kia|Niro Plug-in Hybrid 2018-19|Smart Cruise Control (SCC) & LKAS|openpilot|10 mph|32 mph|[](##)|Hyundai C|
+|Kia|Optima 2017|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|32 mph|[](##)|Hyundai B|
+|Kia|Optima 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai G|
+|Kia|Seltos 2021|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[](##)|Hyundai A|
+|Kia|Sorento 2018|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai C|
+|Kia|Sorento 2019|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai E|
+|Kia|Stinger 2018-20|Smart Cruise Control (SCC) & LKAS|Stock|0 mph|0 mph|[](##)|Hyundai C|
+|Kia|Telluride 2020|All|openpilot|0 mph|0 mph|[](##)|Hyundai H|
+|Lexus|CT Hybrid 2017-18|Lexus Safety System+|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|ES 2019-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|ES Hybrid 2017-18|Lexus Safety System+|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|ES Hybrid 2019-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|IS 2017-19|All|Stock|19 mph|0 mph|[](##)|Toyota|
+|Lexus|NX 2018-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|NX 2020-21|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|NX Hybrid 2018-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|NX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|RC 2017-20|All|Stock|19 mph|0 mph|[](##)|Toyota|
+|Lexus|RX 2016-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|RX 2020-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|RX Hybrid 2016-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Lexus|RX Hybrid 2020-21|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Lexus|UX Hybrid 2019-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Mazda|CX-5 2022|All|Stock|0 mph|0 mph|[](##)|Mazda|
+|Mazda|CX-9 2021-22|All|Stock|0 mph|28 mph|[](##)|Mazda|
+|Nissan|Altima 2019-20|ProPILOT Assist|Stock|0 mph|0 mph|[](##)|Nissan B|
+|Nissan|Leaf 2018-22|ProPILOT Assist|Stock|0 mph|0 mph|[](##)|Nissan A|
+|Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[](##)|Nissan A|
+|Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[](##)|Nissan A|
+|Ram|1500 2019-22|Adaptive Cruise Control|Stock|0 mph|32 mph|[](##)|Ram|
+|SEAT|Ateca 2018|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|SEAT|Leon 2014-20|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Subaru|Ascent 2019-21|All|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Crosstrek 2020-21|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Forester 2019-21|All|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Impreza 2017-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Impreza 2020-22|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|Legacy 2020-22|All|Stock|0 mph|0 mph|[](##)|Subaru B|
+|Subaru|Outback 2020-22|All|Stock|0 mph|0 mph|[](##)|Subaru B|
+|Subaru|XV 2018-19|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Subaru|XV 2020-21|EyeSight Driver Assistance|Stock|0 mph|0 mph|[](##)|Subaru A|
+|Škoda|Kamiq 2021[5](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Karoq 2019-21[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Kodiaq 2018-19|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Octavia 2015, 2018-19|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Octavia RS 2016|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Scala 2020|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Škoda|Superb 2015-18|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon 2016|Toyota Safety Sense P|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon 2017-18|All|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon 2019-21|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon 2022|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon Hybrid 2019-21|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Avalon Hybrid 2022|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|C-HR 2017-21|All|Stock|0 mph|0 mph|[](##)|Toyota|
+|Toyota|C-HR Hybrid 2017-19|All|Stock|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Camry 2018-20|All|Stock|0 mph[4](#footnotes)|0 mph|[](##)|Toyota|
+|Toyota|Camry 2021-22|All|openpilot|0 mph[4](#footnotes)|0 mph|[](##)|Toyota|
+|Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Camry Hybrid 2021-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla 2017-19|All|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla 2020-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla Cross (Non-US only) 2020-21|All|openpilot|17 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla Cross Hybrid (Non-US only) 2020-22|All|openpilot|17 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Highlander 2017-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Highlander 2020-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Highlander Hybrid 2017-19|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Highlander Hybrid 2020-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius 2016|Toyota Safety Sense P|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius 2017-20|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius 2021-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius Prime 2017-20|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius Prime 2021-22|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Prius v 2017|Toyota Safety Sense P|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 2016|Toyota Safety Sense P|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 2017-18|All|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 2022|All|Stock|0 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 Hybrid 2017-18|All|Stock[3](#footnotes)|0 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[](##)|Toyota|
+|Toyota|RAV4 Hybrid 2022|All|Stock|0 mph|0 mph|[](##)|Toyota|
+|Toyota|Sienna 2018-20|All|Stock[3](#footnotes)|19 mph|0 mph|[](##)|Toyota|
+|Volkswagen|Arteon 2018-22[7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Arteon eHybrid 2020-22[7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Arteon R 2020-22[7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Atlas 2018-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Atlas Cross Sport 2021-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|California 2021[7](#footnotes)|Driver Assistance|Stock|0 mph|31 mph|[](##)|J533|
+|Volkswagen|Caravelle 2020[7](#footnotes)|Driver Assistance|Stock|0 mph|31 mph|[](##)|J533|
+|Volkswagen|CC 2018-22[7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|e-Golf 2014-20|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf 2015-20[8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf Alltrack 2015-19|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf GTD 2015-20|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf GTE 2015-20|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf GTI 2015-21|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf R 2015-19[8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Golf SportsVan 2015-20|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
+|Volkswagen|Jetta 2018-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Jetta GLI 2021-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Passat 2015-22[6,7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Passat Alltrack 2015-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Passat GTE 2015-22[7,8](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Polo 2020-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Polo GTI 2020-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|T-Cross 2021[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|T-Roc 2021[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Taos 2022[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Teramont 2018-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Teramont Cross Sport 2021-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Teramont X 2021-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Tiguan 2019-22[7](#footnotes)|Driver Assistance|Stock|0 mph|0 mph|[](##)|J533|
+|Volkswagen|Touran 2017|Driver Assistance|Stock|0 mph|0 mph|[](##)|VW|
1Requires a community built ASCM harness. NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).
diff --git a/selfdrive/car/CARS_template.md b/selfdrive/car/CARS_template.md
index e448c19d35..d306ca5d92 100644
--- a/selfdrive/car/CARS_template.md
+++ b/selfdrive/car/CARS_template.md
@@ -7,22 +7,10 @@
A supported vehicle is one that just works when you install a comma device. Every car performs differently with openpilot, but all supported cars should provide a better experience than any stock system.
-## How We Rate The Cars
-
-{% for star_row in STAR_DESCRIPTIONS.values() %}
-{% for name, stars in star_row.items() %}
-### {{name}}
-{% for star, description in stars %}
-- {{star_icon.format(star)}} - {{description}}
-{% endfor %}
-
-{% endfor %}
-{% endfor %}
-
# {{all_car_info | length}} Supported Cars
|{{Column | map(attribute='value') | join('|')}}|
-|---|---|---|:---:|:---:|:---:|:---:|
+|---|---|---|{% for _ in range((Column | length) - 3) %}{{':---:|'}}{% endfor +%}
{% for car_info in all_car_info %}
|{% for column in Column %}{{car_info.get_column(column, star_icon, footnote_tag)}}|{% endfor %}
diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py
index 0caf93b619..61b72d5ade 100644
--- a/selfdrive/car/body/values.py
+++ b/selfdrive/car/body/values.py
@@ -2,7 +2,7 @@ from typing import Dict
from cereal import car
from selfdrive.car import dbc_dict
-from selfdrive.car.docs_definitions import CarInfo, Harness
+from selfdrive.car.docs_definitions import CarInfo
Ecu = car.CarParams.Ecu
SPEED_FROM_RPM = 0.008587
@@ -18,7 +18,7 @@ class CAR:
BODY = "COMMA BODY"
CAR_INFO: Dict[str, CarInfo] = {
- CAR.BODY: CarInfo("comma body", package="All", harness=Harness.none),
+ CAR.BODY: CarInfo("comma body", package="All"),
}
FW_VERSIONS = {
diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py
index 5793596a43..795668381c 100755
--- a/selfdrive/car/docs.py
+++ b/selfdrive/car/docs.py
@@ -8,16 +8,15 @@ from natsort import natsorted
from typing import Dict, List
from common.basedir import BASEDIR
-from selfdrive.car.docs_definitions import STAR_DESCRIPTIONS, StarColumns, TierColumns, CarInfo, Column, Star
+from selfdrive.car.docs_definitions import CarInfo, Column
from selfdrive.car.car_helpers import interfaces, get_interface_attr
from selfdrive.car.hyundai.radar_interface import RADAR_START_ADDR as HKG_RADAR_START_ADDR
-def get_all_footnotes(only_tier_cols: bool = False) -> Dict[Enum, int]:
+def get_all_footnotes() -> Dict[Enum, int]:
all_footnotes = []
- hide_cols = set(StarColumns) - set(TierColumns) if only_tier_cols else []
for footnotes in get_interface_attr("Footnote", ignore_none=True).values():
- all_footnotes.extend([fn for fn in footnotes if fn.value.column not in hide_cols])
+ all_footnotes.extend(footnotes)
return {fn: idx + 1 for idx, fn in enumerate(all_footnotes)}
@@ -25,9 +24,9 @@ CARS_MD_OUT = os.path.join(BASEDIR, "docs", "CARS.md")
CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md")
-def get_all_car_info(only_tier_cols: bool = False) -> List[CarInfo]:
+def get_all_car_info() -> List[CarInfo]:
all_car_info: List[CarInfo] = []
- footnotes = get_all_footnotes(only_tier_cols)
+ footnotes = get_all_footnotes()
for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True).items():
# Hyundai exception: those with radar have openpilot longitudinal
fingerprint = {0: {}, 1: {HKG_RADAR_START_ADDR: 8}, 2: {}, 3: {}}
@@ -57,21 +56,13 @@ def group_by_make(all_car_info: List[CarInfo]) -> Dict[str, List[CarInfo]]:
return dict(sorted_car_info)
-def generate_cars_md(all_car_info: List[CarInfo], template_fn: str, only_tier_cols: bool) -> str:
+def generate_cars_md(all_car_info: List[CarInfo], template_fn: str) -> str:
with open(template_fn, "r") as f:
template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True)
- cols = list(Column)
- if only_tier_cols:
- hide_cols = set(StarColumns) - set(TierColumns)
- cols = [c for c in cols if c not in hide_cols]
- for car in all_car_info:
- for c in hide_cols:
- del car.row[c]
-
- footnotes = [fn.value.text for fn in get_all_footnotes(only_tier_cols)]
+ footnotes = [fn.value.text for fn in get_all_footnotes()]
cars_md: str = template.render(all_car_info=all_car_info, group_by_make=group_by_make,
- footnotes=footnotes, Star=Star, Column=cols, STAR_DESCRIPTIONS=STAR_DESCRIPTIONS)
+ footnotes=footnotes, Column=Column)
return cars_md
@@ -79,11 +70,10 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Auto generates supported cars documentation",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser.add_argument("--tier-columns", action="store_true", help="Include only columns that count in the tier")
parser.add_argument("--template", default=CARS_MD_TEMPLATE, help="Override default template filename")
parser.add_argument("--out", default=CARS_MD_OUT, help="Override default generated filename")
args = parser.parse_args()
with open(args.out, 'w') as f:
- f.write(generate_cars_md(get_all_car_info(args.tier_columns), args.template, args.tier_columns))
+ f.write(generate_cars_md(get_all_car_info(), args.template))
print(f"Generated and written to {args.out}")
diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py
index d882cd120d..52d6388d7e 100644
--- a/selfdrive/car/docs_definitions.py
+++ b/selfdrive/car/docs_definitions.py
@@ -2,7 +2,7 @@ import re
from collections import namedtuple
from dataclasses import dataclass, field
from enum import Enum
-from typing import Dict, List, Optional, Tuple, Union, no_type_check
+from typing import Dict, List, Optional, Tuple, Union
from cereal import car
from common.conversions import Conversions as CV
@@ -15,20 +15,15 @@ NO_AUTO_RESUME_STOCK_LONG = {"toyota", "gm"}
NO_AUTO_RESUME = NO_AUTO_RESUME_STOCK_LONG | {"nissan", "subaru"}
-class Tier(Enum):
- GOLD = 0
- SILVER = 1
- BRONZE = 2
-
-
class Column(Enum):
MAKE = "Make"
MODEL = "Model"
PACKAGE = "Supported Package"
- LONGITUDINAL = "openpilot ACC"
- FSR_LONGITUDINAL = "Stop and Go"
- FSR_STEERING = "Steer to 0"
+ LONGITUDINAL = "ACC"
+ FSR_LONGITUDINAL = "No ACC accel below"
+ FSR_STEERING = "No ALC below"
STEERING_TORQUE = "Steering Torque"
+ HARNESS = "Harness"
class Star(Enum):
@@ -37,9 +32,46 @@ class Star(Enum):
EMPTY = "empty"
-StarColumns = list(Column)[3:]
-TierColumns = (Column.FSR_LONGITUDINAL, Column.FSR_STEERING, Column.STEERING_TORQUE)
-CarFootnote = namedtuple("CarFootnote", ["text", "column", "star"], defaults=[None])
+class Harness(Enum):
+ nidec = "Honda Nidec"
+ bosch_a = "Honda Bosch A"
+ bosch_b = "Honda Bosch B"
+ toyota = "Toyota"
+ subaru_a = "Subaru A"
+ subaru_b = "Subaru B"
+ fca = "FCA"
+ ram = "Ram"
+ vw = "VW"
+ j533 = "J533"
+ hyundai_a = "Hyundai A"
+ hyundai_b = "Hyundai B"
+ hyundai_c = "Hyundai C"
+ hyundai_d = "Hyundai D"
+ hyundai_e = "Hyundai E"
+ hyundai_f = "Hyundai F"
+ hyundai_g = "Hyundai G"
+ hyundai_h = "Hyundai H"
+ hyundai_i = "Hyundai I"
+ hyundai_j = "Hyundai J"
+ hyundai_k = "Hyundai K"
+ hyundai_l = "Hyundai L"
+ hyundai_m = "Hyundai M"
+ hyundai_n = "Hyundai N"
+ hyundai_o = "Hyundai O"
+ hyundai_p = "Hyundai P"
+ hyundai_q = "Hyundai Q"
+ custom = "Developer"
+ obd_ii = "OBD-II"
+ gm = "GM"
+ nissan_a = "Nissan A"
+ nissan_b = "Nissan B"
+ mazda = "Mazda"
+ ford_q3 = "Ford Q3"
+ ford_q4 = "Ford Q4"
+ none = "None"
+
+
+CarFootnote = namedtuple("CarFootnote", ["text", "column"], defaults=[None])
def get_footnotes(footnotes: List[Enum], column: Column) -> List[Enum]:
@@ -83,7 +115,7 @@ class CarInfo:
footnotes: List[Enum] = field(default_factory=list)
min_steer_speed: Optional[float] = None
min_enable_speed: Optional[float] = None
- harness: Optional[Enum] = None
+ harness: Enum = Harness.none
def init(self, CP: car.CarParams, all_footnotes: Dict[Enum, int]):
# TODO: set all the min steer speeds in carParams and remove this
@@ -103,11 +135,11 @@ class CarInfo:
Column.MAKE: self.make,
Column.MODEL: self.model,
Column.PACKAGE: self.package,
- # StarColumns
- Column.LONGITUDINAL: Star.FULL if CP.openpilotLongitudinalControl and not CP.radarOffCan else Star.EMPTY,
- Column.FSR_LONGITUDINAL: Star.FULL if self.min_enable_speed <= 0. else Star.EMPTY,
- Column.FSR_STEERING: Star.FULL if self.min_steer_speed <= 0. else Star.EMPTY,
+ Column.LONGITUDINAL: "openpilot" if CP.openpilotLongitudinalControl and not CP.radarOffCan else "Stock",
+ Column.FSR_LONGITUDINAL: f"{max(self.min_enable_speed * CV.MS_TO_MPH, 0):.0f} mph",
+ Column.FSR_STEERING: f"{max(self.min_steer_speed * CV.MS_TO_MPH, 0):.0f} mph",
Column.STEERING_TORQUE: Star.EMPTY,
+ Column.HARNESS: self.harness.value,
}
# Set steering torque star from max lateral acceleration
@@ -115,26 +147,7 @@ class CarInfo:
if CP.maxLateralAccel >= GOOD_TORQUE_THRESHOLD:
self.row[Column.STEERING_TORQUE] = Star.FULL
- if CP.notCar:
- for col in StarColumns:
- self.row[col] = Star.FULL
-
self.all_footnotes = all_footnotes
- for column in StarColumns:
- # Demote if footnote specifies a star
- for fn in get_footnotes(self.footnotes, column):
- if fn.value.star is not None:
- self.row[column] = fn.value.star
-
- # openpilot ACC star doesn't count for tiers
- full_stars = [s for col, s in self.row.items() if col in TierColumns].count(Star.FULL)
- if full_stars == len(TierColumns):
- self.tier = Tier.GOLD
- elif full_stars == len(TierColumns) - 1:
- self.tier = Tier.SILVER
- else:
- self.tier = Tier.BRONZE
-
self.year_list = get_year_list(self.years)
self.detail_sentence = self.get_detail_sentence(CP)
@@ -167,10 +180,9 @@ class CarInfo:
else:
raise Exception(f"This notCar does not have a detail sentence: {CP.carFingerprint}")
- @no_type_check
def get_column(self, column: Column, star_icon: str, footnote_tag: str) -> str:
item: Union[str, Star] = self.row[column]
- if column in StarColumns:
+ if isinstance(item, Star):
item = star_icon.format(item.value)
elif column == Column.MODEL and len(self.years):
item += f" {self.years}"
@@ -182,61 +194,3 @@ class CarInfo:
return item
-
-class Harness(Enum):
- nidec = "Honda Nidec"
- bosch_a = "Honda Bosch A"
- bosch_b = "Honda Bosch B"
- toyota = "Toyota"
- subaru_a = "Subaru A"
- subaru_b = "Subaru B"
- fca = "FCA"
- ram = "Ram"
- vw = "VW"
- j533 = "J533"
- hyundai_a = "Hyundai A"
- hyundai_b = "Hyundai B"
- hyundai_c = "Hyundai C"
- hyundai_d = "Hyundai D"
- hyundai_e = "Hyundai E"
- hyundai_f = "Hyundai F"
- hyundai_g = "Hyundai G"
- hyundai_h = "Hyundai H"
- hyundai_i = "Hyundai I"
- hyundai_j = "Hyundai J"
- hyundai_k = "Hyundai K"
- hyundai_l = "Hyundai L"
- hyundai_m = "Hyundai M"
- hyundai_n = "Hyundai N"
- hyundai_o = "Hyundai O"
- hyundai_p = "Hyundai P"
- hyundai_q = "Hyundai Q"
- custom = "Developer"
- obd_ii = "OBD-II"
- gm = "GM"
- nissan_a = "Nissan A"
- nissan_b = "Nissan B"
- mazda = "Mazda"
- ford_q3 = "Ford Q3"
- ford_q4 = "Ford Q4"
- none = "None"
-
-
-STAR_DESCRIPTIONS = {
- "Gas & Brakes": { # icon and row name
- Column.FSR_LONGITUDINAL.value: [
- [Star.FULL.value, "openpilot operates down to 0 mph."],
- [Star.EMPTY.value, "openpilot operates only above a minimum speed. See your car's manual for the minimum speed."],
- ],
- },
- "Steering": {
- Column.FSR_STEERING.value: [
- [Star.FULL.value, "openpilot can control the steering wheel down to 0 mph."],
- [Star.EMPTY.value, "No steering control below certain speeds. See your car's manual for the minimum speed."],
- ],
- Column.STEERING_TORQUE.value: [
- [Star.FULL.value, "Car has enough steering torque to comfortably take most highway turns."],
- [Star.EMPTY.value, "Limited ability to make tighter turns."],
- ],
- },
-}
diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py
index 84c6b6e520..af58bb5e59 100755
--- a/selfdrive/car/tests/test_docs.py
+++ b/selfdrive/car/tests/test_docs.py
@@ -13,7 +13,7 @@ class TestCarDocs(unittest.TestCase):
self.all_cars = get_all_car_info()
def test_generator(self):
- generated_cars_md = generate_cars_md(self.all_cars, CARS_MD_TEMPLATE, False)
+ generated_cars_md = generate_cars_md(self.all_cars, CARS_MD_TEMPLATE)
with open(CARS_MD_OUT, "r") as f:
current_cars_md = f.read()
diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py
index b4e82ec3e3..8915146063 100644
--- a/selfdrive/car/toyota/values.py
+++ b/selfdrive/car/toyota/values.py
@@ -6,7 +6,7 @@ from typing import Dict, List, Union
from cereal import car
from common.conversions import Conversions as CV
from selfdrive.car import dbc_dict
-from selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, Harness, Star
+from selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, Harness
Ecu = car.CarParams.Ecu
MIN_ACC_SPEED = 19. * CV.MPH_TO_MS
@@ -89,7 +89,7 @@ class Footnote(Enum):
DSU = CarFootnote(
"When the Driver Support Unit (DSU) is disconnected, openpilot Adaptive Cruise Control (ACC) will replace " +
"stock Adaptive Cruise Control (ACC). NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).",
- Column.LONGITUDINAL, star=Star.HALF)
+ Column.LONGITUDINAL)
CAMRY = CarFootnote(
"openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.",
Column.FSR_LONGITUDINAL)