diff --git a/docs/CARS.md b/docs/CARS.md
index 068a81eec3..80c625e1ee 100644
--- a/docs/CARS.md
+++ b/docs/CARS.md
@@ -24,7 +24,7 @@
| Honda | Insight 2019-21 | All | Stock | 0mph | 3mph |
| Honda | Inspire 2018 | All | Stock | 0mph | 3mph |
| Honda | Odyssey 2018-20 | Honda Sensing | openpilot | 25mph1 | 0mph |
-| Honda | Passport 2019 | All | openpilot | 25mph1 | 12mph |
+| Honda | Passport 2019-21 | All | openpilot | 25mph1 | 12mph |
| Honda | Pilot 2016-21 | Honda Sensing | openpilot | 25mph1 | 12mph |
| Honda | Ridgeline 2017-21 | Honda Sensing | openpilot | 25mph1 | 12mph |
| Hyundai | Palisade 2020-21 | All | Stock | 0mph | 0mph |
diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py
index c45573c726..21f094f91a 100644
--- a/selfdrive/car/honda/carstate.py
+++ b/selfdrive/car/honda/carstate.py
@@ -162,7 +162,7 @@ class CarState(CarStateBase):
self.main_on_sig_msg = "SCM_FEEDBACK"
if CP.carFingerprint in (CAR.ACURA_ILX, CAR.ACURA_RDX, CAR.CRV, CAR.CRV_EU, CAR.FIT, CAR.FREED, CAR.HRV,
- CAR.ODYSSEY_CHN, CAR.PILOT, CAR.PILOT_2019, CAR.RIDGELINE):
+ CAR.ODYSSEY_CHN, CAR.PILOT, CAR.PILOT_2019, CAR.PASSPORT, CAR.RIDGELINE):
self.main_on_sig_msg = "SCM_BUTTONS"
self.shifter_values = can_define.dv[self.gearbox_msg]["GEAR_SHIFTER"]
@@ -288,7 +288,7 @@ class CarState(CarStateBase):
ret.cruiseState.available = bool(cp.vl[self.main_on_sig_msg]["MAIN_ON"])
# Gets rid of Pedal Grinding noise when brake is pressed at slow speeds for some models
- if self.CP.carFingerprint in (CAR.PILOT, CAR.PILOT_2019, CAR.RIDGELINE):
+ if self.CP.carFingerprint in (CAR.PILOT, CAR.PILOT_2019, CAR.PASSPORT, CAR.RIDGELINE):
if ret.brake > 0.05:
ret.brakePressed = True
diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py
index adeec6bd49..b9b2987a80 100755
--- a/selfdrive/car/honda/interface.py
+++ b/selfdrive/car/honda/interface.py
@@ -252,6 +252,16 @@ class CarInterface(CarInterfaceBase):
tire_stiffness_factor = 0.444
ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]]
+ elif candidate == CAR.PASSPORT:
+ stop_and_go = False
+ ret.mass = 4204. * CV.LB_TO_KG + STD_CARGO_KG # average weight
+ ret.wheelbase = 2.82
+ ret.centerToFront = ret.wheelbase * 0.428
+ ret.steerRatio = 17.25 # as spec
+ ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end
+ tire_stiffness_factor = 0.444
+ ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]]
+
elif candidate == CAR.RIDGELINE:
stop_and_go = False
ret.mass = 4515. * CV.LB_TO_KG + STD_CARGO_KG
diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py
index 26a6d2ce35..4cc5084a09 100644
--- a/selfdrive/car/honda/values.py
+++ b/selfdrive/car/honda/values.py
@@ -76,6 +76,7 @@ class CAR:
ACURA_RDX_3G = "ACURA RDX 2020"
PILOT = "HONDA PILOT 2017"
PILOT_2019 = "HONDA PILOT 2019"
+ PASSPORT = "HONDA PASSPORT 2021"
RIDGELINE = "HONDA RIDGELINE 2017"
INSIGHT = "HONDA INSIGHT 2019"
HONDA_E = "HONDA E 2020"
@@ -1046,6 +1047,35 @@ FW_VERSIONS = {
b'57114-TGT-A530\x00\x00',
],
},
+ CAR.PASSPORT: {
+ (Ecu.programmedFuelInjection, 0x18da10f1, None): [
+ b'37805-RLV-B220\x00\x00',
+ ],
+ (Ecu.eps, 0x18da30f1, None): [
+ b'39990-TGS-A230\x00\x00',
+ ],
+ (Ecu.fwdRadar, 0x18dab0f1, None): [
+ b'36161-TGS-A030\x00\x00',
+ ],
+ (Ecu.gateway, 0x18daeff1, None): [
+ b'38897-TG7-A040\x00\x00',
+ ],
+ (Ecu.srs, 0x18da53f1, None): [
+ b'77959-TGS-A010\x00\x00',
+ ],
+ (Ecu.shiftByWire, 0x18da0bf1, None): [
+ b'54008-TG7-A530\x00\x00',
+ ],
+ (Ecu.transmission, 0x18da1ef1, None): [
+ b'28101-5EZ-A600\x00\x00',
+ ],
+ (Ecu.combinationMeter, 0x18da60f1, None): [
+ b'78109-TGS-AT20\x00\x00',
+ ],
+ (Ecu.vsa, 0x18da28f1, None): [
+ b'57114-TGS-A530\x00\x00',
+ ],
+ },
CAR.ACURA_RDX: {
(Ecu.vsa, 0x18da28f1, None): [
b'57114-TX5-A220\x00\x00',
@@ -1284,6 +1314,7 @@ DBC = {
CAR.ODYSSEY_CHN: dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'),
CAR.PILOT: dbc_dict('honda_pilot_touring_2017_can_generated', 'acura_ilx_2016_nidec'),
CAR.PILOT_2019: dbc_dict('honda_pilot_touring_2017_can_generated', 'acura_ilx_2016_nidec'),
+ CAR.PASSPORT: dbc_dict('honda_pilot_touring_2017_can_generated', 'acura_ilx_2016_nidec'),
CAR.RIDGELINE: dbc_dict('honda_ridgeline_black_edition_2017_can_generated', 'acura_ilx_2016_nidec'),
CAR.INSIGHT: dbc_dict('honda_insight_ex_2019_can_generated', None),
CAR.HONDA_E: dbc_dict('acura_rdx_2020_can_generated', None),
diff --git a/selfdrive/test/test_routes.py b/selfdrive/test/test_routes.py
index 7c59472071..615462c505 100755
--- a/selfdrive/test/test_routes.py
+++ b/selfdrive/test/test_routes.py
@@ -60,6 +60,7 @@ routes = [
TestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.INSIGHT),
TestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.PILOT),
TestRoute("fa1cd231131ca137|2021-05-22--07-59-57", HONDA.PILOT_2019),
+ TestRoute("684e8f96bd491a0e|2021-11-03--11-08-42", HONDA.PASSPORT),
TestRoute("0a78dfbacc8504ef|2020-03-04--13-29-55", HONDA.CIVIC_BOSCH),
TestRoute("f34a60d68d83b1e5|2020-10-06--14-35-55", HONDA.ACURA_RDX),
TestRoute("54fd8451b3974762|2021-04-01--14-50-10", HONDA.RIDGELINE),