30 lines
1.6 KiB
Markdown
30 lines
1.6 KiB
Markdown
# CAN-FD Issues to Investigate
|
|
|
|
## Cruise Control Desync on Hot Start
|
|
|
|
### Problem
|
|
When the car is already in cruise control mode before openpilot starts (or before controlsd initializes), pressing the cruise control button causes a desync:
|
|
|
|
1. Car has active cruise control when openpilot comes online
|
|
2. Driver presses cruise button — car interprets as "toggle off" (cruise was already on)
|
|
3. openpilot interprets it as "engage" (from its perspective, it hasn't seen a cruise enable transition)
|
|
4. Result: car disengages cruise, but openpilot thinks it just engaged lateral mode
|
|
|
|
### Proposed Fix
|
|
When controlsd first reads carState and discovers `cruiseState.enabled` is already true:
|
|
|
|
1. Set a flag `cruise_was_active_at_start = True`
|
|
2. While this flag is set, do NOT allow openpilot to transition to engaged state on button press
|
|
3. Only clear the flag after seeing `cruiseState.enabled` go to `False` at least once (a full stop of cruise, not just standstill/pause)
|
|
4. After the first full off cycle, normal engagement logic resumes
|
|
|
|
### Status
|
|
- Could not reproduce on 2026-04-14 — may require specific timing (openpilot restart while driving with cruise active)
|
|
- Need to capture telemetry data during reproduction to see exact signal sequence
|
|
- Key telemetry groups to watch: `cruise` (enabled, available, ACCMode, VSetDis), `buttons` (cruise_button)
|
|
|
|
### Relevant Code
|
|
- `selfdrive/controls/controlsd.py` — engagement state machine
|
|
- `selfdrive/car/hyundai/carstate.py` — CAN-FD cruise state parsing
|
|
- `selfdrive/car/interfaces.py` — pcm_enable / cruise state transitions
|