From 5fcb9e731954c0f3a28af827c4eb6e9b84838713 Mon Sep 17 00:00:00 2001 From: Daniel Koepping Date: Thu, 8 Oct 2026 20:38:08 -0700 Subject: [PATCH] bump opendbc (#39057) (cherry picked from commit 0e5718116af4e1cfc004ace0aa22b0f19a5b1635) --- opendbc_repo/.github/workflows/tests.yml | 2 +- opendbc_repo/docs/CARS.md | 2 +- opendbc_repo/opendbc/car/honda/fingerprints.py | 1 + opendbc_repo/opendbc/car/honda/values.py | 2 +- opendbc_repo/opendbc/car/volkswagen/carstate.py | 7 ++++++- opendbc_repo/opendbc/car/volkswagen/mebcan.py | 6 ++++-- .../opendbc/dbc/generator/volkswagen/_vw_meb_common.dbc | 3 +++ 7 files changed, 17 insertions(+), 6 deletions(-) diff --git a/opendbc_repo/.github/workflows/tests.yml b/opendbc_repo/.github/workflows/tests.yml index fdeacf46fb..8f75793f3c 100644 --- a/opendbc_repo/.github/workflows/tests.yml +++ b/opendbc_repo/.github/workflows/tests.yml @@ -116,7 +116,7 @@ jobs: path: /tmp/comma_download_cache key: car_models-${{ hashFiles('opendbc/car/tests/test_models.py', 'opendbc/car/tests/routes.py') }}-${{ matrix.job }} - name: Test car models - timeout-minutes: ${{ contains(runner.name, 'nsc') && (steps.routes-cache.outputs.cache-hit == 'true') && 2 || 6 }} + timeout-minutes: ${{ contains(runner.name, 'nsc') && (steps.routes-cache.outputs.cache-hit == 'true') && 2 || 8 }} run: source .venv/bin/activate && MAX_EXAMPLES=1 opendbc/car/tests/test_models.py env: NUM_JOBS: 4 diff --git a/opendbc_repo/docs/CARS.md b/opendbc_repo/docs/CARS.md index 9cdbbe0f85..85d2d83b40 100644 --- a/opendbc_repo/docs/CARS.md +++ b/opendbc_repo/docs/CARS.md @@ -111,7 +111,7 @@ |Honda|CR-V 2017-22|Honda Sensing|[Upstream](#upstream)| |Honda|CR-V 2023-26|All|[Upstream](#upstream)| |Honda|CR-V Hybrid 2017-22|Honda Sensing|[Upstream](#upstream)| -|Honda|CR-V Hybrid 2023-26|All|[Upstream](#upstream)| +|Honda|CR-V Hybrid 2023-27|All|[Upstream](#upstream)| |Honda|e 2020|All|[Upstream](#upstream)| |Honda|Fit 2018-20|Honda Sensing|[Upstream](#upstream)| |Honda|Freed 2020|Honda Sensing|[Upstream](#upstream)| diff --git a/opendbc_repo/opendbc/car/honda/fingerprints.py b/opendbc_repo/opendbc/car/honda/fingerprints.py index 9a06621511..16173b3eb4 100644 --- a/opendbc_repo/opendbc/car/honda/fingerprints.py +++ b/opendbc_repo/opendbc/car/honda/fingerprints.py @@ -1162,6 +1162,7 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x18dab0f1, None): [ b'8S302-3A0-A060\x00\x00', b'8S302-3A0-A220\x00\x00', + b'8S302-3A0-A230\x00\x00', b'8S302-3C0-Q050\x00\x00', b'8S302-3D4-A050\x00\x00', b'8S302-3D4-A060\x00\x00', diff --git a/opendbc_repo/opendbc/car/honda/values.py b/opendbc_repo/opendbc/car/honda/values.py index 7abaae8b97..07392fdfcb 100644 --- a/opendbc_repo/opendbc/car/honda/values.py +++ b/opendbc_repo/opendbc/car/honda/values.py @@ -229,7 +229,7 @@ class CAR(Platforms): HONDA_CRV_6G = HondaBoschCANFDPlatformConfig( [ HondaCarDocs("Honda CR-V 2023-26", "All"), - HondaCarDocs("Honda CR-V Hybrid 2023-26", "All"), + HondaCarDocs("Honda CR-V Hybrid 2023-27", "All"), ], CarSpecs(mass=1703, wheelbase=2.7, steerRatio=16.2, centerToFrontRatio=0.42), ) diff --git a/opendbc_repo/opendbc/car/volkswagen/carstate.py b/opendbc_repo/opendbc/car/volkswagen/carstate.py index a7cf18c743..e535246420 100644 --- a/opendbc_repo/opendbc/car/volkswagen/carstate.py +++ b/opendbc_repo/opendbc/car/volkswagen/carstate.py @@ -17,6 +17,7 @@ class CarState(CarStateBase): self.CCP = CarControllerParams(CP) self.button_states = {button.event_type: False for button in self.CCP.BUTTONS} self.esp_hold_confirmation = False + self.esp_standstill = False self.upscale_lead_car_signal = False self.eps_stock_values = False self.acc_type = 0 @@ -279,7 +280,11 @@ class CarState(CarStateBase): ret.espActive = bool(pt_cp.vl["ESP_21"]["ESP_Eingriff"]) self.acc_type = ext_cp.vl["ACC_18"]["ACC_Typ"] - self.esp_hold_confirmation = bool(pt_cp.vl["ESC_50"]["Standstill"]) + self.esp_standstill = bool(pt_cp.vl["ESC_50"]["Standstill"]) + if self.CP.flags & VolkswagenFlags.MEB_GEN2: + self.esp_hold_confirmation = pt_cp.vl["VMM_02"]["HMS_Status"] == 1 + else: + self.esp_hold_confirmation = self.esp_standstill self.travel_assist_available = bool(cam_cp.vl["TA_01"]["Travel_Assist_Available"]) ret.stockFcw = bool(ext_cp.vl["AWV_03"]["FCW_Active"]) ret.stockAeb = bool(ext_cp.vl["AWV_03"]["AEB_Active"]) diff --git a/opendbc_repo/opendbc/car/volkswagen/mebcan.py b/opendbc_repo/opendbc/car/volkswagen/mebcan.py index b2f4bed3fb..9d76bd61a6 100644 --- a/opendbc_repo/opendbc/car/volkswagen/mebcan.py +++ b/opendbc_repo/opendbc/car/volkswagen/mebcan.py @@ -98,10 +98,12 @@ class MebLongStateMachine: # warning: car is reacting to hold mechanic even with long control off # HALTEN -> KEINE_ANFORDERUNG causes the car to fault into park, so both branches below put a ramp in # between: disengaging always ramps, and while engaged a release ramps until 5 kph - # NOTE: this allows KEINE_ANFORDERUNG -> ANFAHREN, but we haven't observed a fault due to this yet + # NOTE: ANFAHREN faults TSK if the hold manager isn't holding # TODO: camera can send 7 on disengage at a stop which we don't fully understand yet stopping = CC.actuators.longControlState == LongCtrlState.stopping - starting = CC.actuators.longControlState == LongCtrlState.pid and CS.esp_hold_confirmation + # HMS_Status leaves holding as soon as we send anfahren, so keep driving off until we leave standstill + driving_off = self.prev_acc_hold_type == self.acc_hold_type_vals['ANFAHREN'] and CS.esp_standstill + starting = CC.actuators.longControlState == LongCtrlState.pid and (CS.esp_hold_confirmation or driving_off) long_active = CC.longActive and not CS.out.accFaulted # catches it one frame earlier, not sure if needed if not long_active: diff --git a/opendbc_repo/opendbc/dbc/generator/volkswagen/_vw_meb_common.dbc b/opendbc_repo/opendbc/dbc/generator/volkswagen/_vw_meb_common.dbc index ec128cdcd7..303ae0be04 100644 --- a/opendbc_repo/opendbc/dbc/generator/volkswagen/_vw_meb_common.dbc +++ b/opendbc_repo/opendbc/dbc/generator/volkswagen/_vw_meb_common.dbc @@ -299,6 +299,7 @@ BO_ 313 VMM_02: 32 XXX SG_ FCW_Reaction_2 : 56|1@1+ (1,0) [0|1] "" XXX SG_ Brake_Pressure : 76|11@1+ (1,0) [0|100] "" XXX SG_ FCW_Reaction_3 : 88|5@1+ (1,0) [0|31] "" XXX + SG_ HMS_Status : 196|4@1+ (1,0) [0|15] "" XXX BO_ 317 QFK_01: 32 XXX SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX @@ -2027,6 +2028,7 @@ CM_ SG_ 219 Unknown_192 "Constant per platform (0 on all gen1 ID.4/Born, 1 on al CM_ SG_ 219 Unknown_27 "Low bit tracks AWV_Unavailable, but is also set in 20-33% of normal driving"; CM_ SG_ 219 Unknown_80 "Low bit is normally 1 and clears with AWV_Unavailable, but also clears in ~1% of normal driving"; CM_ SG_ 313 Long_Control_Inhibit "Goes high after user brakes hard, causes temporary TSK_Status fault"; +CM_ SG_ 313 HMS_Status "Hold manager response to ACC_18.ACC_Anforderung_HMS and auto hold, 2024+ only"; CM_ SG_ 333 SET_ME_0x2FE "Only set by stock ACC on 2024+; reads 0 on pre-2024 and is not packed by mebcan"; CM_ SG_ 380196013 AWV_Status "Mirrors AWV_03.AWV_Unavailable, at a higher rate"; CM_ BO_ 317 "Lenkungssteuergerät"; @@ -2155,6 +2157,7 @@ VAL_ 299 GRA_LIM_Taste_verfuegbar 0 "Limiter_Taste_nicht_vorhanden" 1 "Limiter_T VAL_ 299 GRA_Tip_Stufe_2 0 "Tip_Stufe_1__keine_Betaetigung" 1 "Tip_Stufe_2"; VAL_ 299 GRA_TravelAssist 0 "nicht_betaetigt" 1 "betaetigt"; VAL_ 313 Long_Control_Inhibit 1 "not_inhibited" 2 "inhibited"; +VAL_ 313 HMS_Status 0 "not_holding" 1 "holding" 5 "starting" 6 "releasing" 9 "stopping"; VAL_ 317 LatCon_HCA_Status 0 "disabled" 1 "initializing" 2 "ready" 3 "fault" 4 "active" 5 "preempted" 6 "fault" 7 "rejected"; VAL_ 319 PreCrash_Charisma_FahrPr 0 "keine_Funktion" 1 "Programm_1" 2 "Programm_2" 3 "Programm_3" 4 "Programm_4" 5 "Programm_5" 6 "Programm_6" 7 "Programm_7" 8 "Programm_8" 9 "Programm_9" 10 "Programm_10" 11 "Programm_11" 12 "Programm_12" 13 "Programm_13" 14 "Programm_14" 15 "Programm_15"; VAL_ 319 PreCrash_Charisma_Status 0 "Init" 1 "verfuegbar" 2 "nicht_verfuegbar" 3 "asynchron_durch_Fahrerwunsch";