Compare commits

..

380 Commits

Author SHA1 Message Date
DevTekVE 790a762a05 temp: comment out blind-spot monitoring signals due to DBC changes
- Avoided crash caused by missing signals in updated DBC definitions.
- Added a TODO to revisit and validate blind-spot logic.
2026-04-01 08:55:26 +02:00
Jason Wen 221c219fca bump 2026-03-31 21:57:58 -04:00
Jason Wen 8b60649eed must gate 2026-03-31 21:42:06 -04:00
Jason Wen ded0b506d6 show torque reduction gain 2026-03-31 07:46:13 -04:00
Jason Wen b51d9af9a0 upstream pending tune 2026-03-31 06:56:52 -04:00
Jason Wen 4460ce8166 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-03-18 03:43:10 -04:00
Jason Wen 9a8795f063 Sync: commaai/openpilot:mastersunnypilot/sunnypilot:master (#1772) 2026-03-17 23:12:59 -04:00
Jason Wen d5b25e14fd Merge branch 'upstream/openpilot/master' into sync-20260317
# Conflicts:
#	.github/workflows/auto_pr_review.yaml
#	.gitignore
#	opendbc_repo
#	panda
#	selfdrive/ui/mici/layouts/home.py
#	selfdrive/ui/mici/layouts/onboarding.py
#	selfdrive/ui/mici/layouts/settings/device.py
#	selfdrive/ui/tests/diff/replay.py
#	selfdrive/ui/translations/app_fr.po
#	system/ui/mici_setup.py
Sync: `commaai/opendbc:master` → `sunnypilot/opendbc:master`
Sync: `commaai/panda:master` → `sunnypilot/panda:master`
2026-03-17 23:02:10 -04:00
Jason Wen 23c774eb19 sunnylinkd: fetch compressed params schema (#1771) 2026-03-17 06:21:03 -04:00
Adeeb Shihadeh a68ea44af3 cabana: use vendored libusb from commaai/dependencies (#37681) 2026-03-14 16:47:17 -07:00
Adeeb Shihadeh 5e7f5dd840 replay/cabana: remove unused openssl dependency (#37680) 2026-03-14 16:43:19 -07:00
Adeeb Shihadeh cc4f786846 deps: switch vendored packages to per-package release branches (#37678) 2026-03-14 15:01:45 -07:00
Harald Schäfer f4657aa2d5 Sconstruct: use name (#37675) 2026-03-14 13:42:57 -07:00
Shane Smiskol 46bbe6890a mici ui: consistent dialogs (#37671)
* new dialog

* clean up

* got wish

* use in mici reset

* punctuation

* clean up
2026-03-13 21:56:07 -07:00
Adeeb Shihadeh 380d91c8f7 don't need to whitelist on larch64 2026-03-13 20:26:32 -07:00
Shane Smiskol 24121f8abf ui: asynchronous ssh key fetcher (#37668)
* async

* clean on failure

* fix

* meh job

* one less

* no clear

* disable

* no clue

* better

* always passed
2026-03-13 20:16:34 -07:00
Adeeb Shihadeh 9d19cca006 scons: whitelist non-vendored includes and libraries (#37670) 2026-03-13 20:12:13 -07:00
Adeeb Shihadeh ee9da82aab cleanup build paths (#37667)
* cleanup build paths

* not used

* lil more

* rm those too

* rm

* lil more
2026-03-13 19:20:33 -07:00
Adeeb Shihadeh 06630e8a39 setup: remove brew (#37669) 2026-03-13 19:20:02 -07:00
David 2cc70ef2e4 record: smaller clip sizes by adjusting preset (#37666)
use veryfast instead of ultrafast
2026-03-13 16:34:22 -07:00
Jason Wen 37ac33fbcc gitignore: add CLAUDE.md and SKILL.md 2026-03-13 19:19:37 -04:00
James Vecellio-Grant 0376660023 ci: modify models repo title (#1764) 2026-03-13 13:19:45 -04:00
David 5908b7cda0 ui replay: add mici UI exploration (#37641)
* replay: add dragging gesture support

* update dragging to support distance and duration; update mici script to go through settings

* refactor

* fix and add network

* add more

* interact device

* fix

* match statements

* more

* improve

* simplify script

* add keyboard test

* format

* simplify

* improve

* comment

* improve

* clarify

* clean

* simplify

* simplify

* move

* improve

* more delay

* simplify keyboard test

* simplify

* comment

* add onroad alert tests to mici

* scroll less

* test offroad alerts

* remove space

* scroll faster

* more toggle tests

* back to home

* test settings onroad

* fix pairing qr code

* add replay progress bar

* add replay progress bar

* simplify

* correct comment

* remove _

* we don't need this

* change click

* add return types

* fast typing

* use frames instead

* use frames instead

* update

* disable in CI

* +1

* fix script

* refactor how mici replay script cases are built

* refactor

* refactor: rename helper function for exploring settings in build_mici_script

* remove onroad settings check

* refactor

* simplify

* refactor: use explore_setting in more places to reduce duplication

* add type

* refactor: simplify explore_cases function by removing swipe_wait parameter

* add case to open wifi selection

* refactor: enhance run_actions to support after_each callback for interaction tests; rename explore_cases to scroll_through_cases

* add review training guide

* update comment

* comments

* comment

* fix swipe back
2026-03-12 20:09:10 -07:00
Shane Smiskol d0375942b8 Revert "onboarding: block back" (#37663)
Revert "onboarding: block back (#37655)"

This reverts commit d8ae8c201a.
2026-03-12 20:03:22 -07:00
Shane Smiskol bbed1a2551 scroll: use iOS-style weighted velocity averaging for fling (#37659)
* scroll: use iOS-style weighted velocity averaging for fling

Weight older velocity samples more heavily on finger release to produce
more consistent fling velocities. The last touch samples before lift are
noisy (finger decelerating, rotating, jittering), so we trust the earlier
steadier samples more: 60% oldest, 35% middle, 5% newest.

Reverse-engineered from iOS UIScrollView by the Flutter team.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update system/ui/lib/application.py

* Apply suggestions from code review

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 02:55:56 -07:00
Shane Smiskol 2b0aab3a38 ui: round QR code draw position in onboarding (#37656)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 01:47:20 -07:00
Shane Smiskol d8ae8c201a onboarding: block back (#37655)
no back from onboarding
2026-03-12 00:15:14 -07:00
Shane Smiskol 9bcd965f0b ui: don't load unused light font 2026-03-11 23:38:51 -07:00
Shane Smiskol 6e7587a75c modeld: quiet do_chunk output during scons build (#37654)
* modeld: quiet do_chunk output during scons build

SCons default-prints Python function actions with all their args.
The do_chunk function has 1259 tinygrad source files as deps, causing
a wall of text during builds. Wrap in SAction with a short strfunction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* split compile and chunk into separate Commands

cleaner fix: do_chunk only depends on the pkl, not tinygrad files

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:35:56 -07:00
Shane Smiskol c631a22eb6 ui: fix 1px flash at bottom of DM camera during onboarding swipe (#37653)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:19:02 -07:00
Shane Smiskol 7dfb7967b6 ui: proper mici scaling (#37652)
* scale

* remove low res image finder

* check self scale

* simplify
2026-03-11 19:51:34 -07:00
Shane Smiskol 58d6211bc2 ui: no int textures (#37649)
* no int textures

* round qr code

* unround firehose

* ignore here
2026-03-11 18:58:51 -07:00
Adeeb Shihadeh 4e239dbc22 bump opendbc: in-memory DBC generation, drop scons build (#37646) 2026-03-11 11:35:32 -07:00
Shane Smiskol 3469d9aadb AGNOS 17.2 (#37644)
* 17.2

* 17.2

* new updater

* shimmer offset
2026-03-11 00:05:04 -07:00
Shane Smiskol 18da21e65b Add shimmer offset for custom software 2026-03-10 23:26:39 -07:00
Shane Smiskol 50f0cf25a6 ui: slider shimmer sans shader (#37640)
* actually epic

* use child

* inside label

* revert other stuff

* no reset_shimmer: bool

* try 2 char

* not worth dynamic chunking

* bring back

* rm

* no emoji support on shimmer
2026-03-10 20:53:17 -07:00
Shane Smiskol bea040095c Make sliders children 2026-03-10 20:44:56 -07:00
Daniel Koepping 3584523a93 fix process replay race on push (#37643) 2026-03-10 20:27:40 -07:00
Adeeb Shihadeh d3bcc80d28 jenkins: push mici and tizi builds together 2026-03-10 17:01:23 -07:00
David 0ce679f687 ui replay: Add progress bar (#37471)
* add replay progress bar

* simplify

* use frames instead

* update

* disable in CI

* +1
2026-03-10 16:42:56 -07:00
David d55ccba5fe clip: only fast rendering when headless (#37635)
only set offscreen when headless
2026-03-10 16:42:38 -07:00
David f85b3473a2 ui replay: Improve big (tizi) replay coverage (#37468)
* fix pairing qr code

* test pair device

* merge and pick from explore-more

* key

* fast click

* again

* add branch selection test

* click uninstall

* test prime states

* view regulatory

* test expand calibration desc

* override interactive timeout

* reorder

* remove todo

* update

* clarify

* test reset calibration

* update

* add calibration params test

* comments

* reorganize

* clarify

* add click through training guide
2026-03-10 16:02:55 -07:00
David b750229e70 fix(sim): remove alpha channel for improved performance (#37602)
fix: update RGB image processing in CopyRamRGBCamera
2026-03-10 16:02:02 -07:00
David 40b61a8212 clip: load metadata params within OpenpilotPrefix (#37634)
fix: move metadata loading inside OpenpilotPrefix context
2026-03-10 16:01:31 -07:00
Adeeb Shihadeh 5927316788 ci: revert first-interaction to v1 (#37639)
* ci: revert first-interaction to v1

* ci: retrigger PR review on synchronize
2026-03-10 15:57:26 -07:00
Trey Moen dd89bc30fa set preference for python 3.12.13 (#37637) 2026-03-10 15:08:56 -07:00
Adeeb Shihadeh bf4bf0e5b7 qcomgpsd, timed: reject invalid GPS timestamps (#37633) 2026-03-10 11:44:25 -07:00
Trey Moen 9164148d48 feat: uv manages python (#37535) 2026-03-10 10:58:21 -07:00
Armand du Parc Locmaria ac3dcbe62f Revert "op switch: sync submodules" (#37632)
Revert "op switch: sync submodules (#37618)"

This reverts commit 1dbae159a8.
2026-03-10 10:55:17 -07:00
Adeeb Shihadeh ba19527181 0.11.1: a nice DM focused release 2026-03-10 10:20:23 -07:00
Shane Smiskol 4acf0438c8 AGNOS 17.1 (#37631)
* agnos 17.1

* bump version
2026-03-10 03:17:18 -07:00
Shane Smiskol bd5fbbabda setup: simplify cache branch (#37630)
* this wasn't atomic!

* start mici

* always require internet to download installer

* this made it never use cached fetch!

* this skipped installer when it wrote it raced trying to run

* entirely remove

* clean up mici

* fix tici setup

* inline

* works
2026-03-09 22:25:49 -07:00
Adeeb Shihadeh 1777d548bf stagger driver camera SOF (#37628) 2026-03-09 20:11:26 -07:00
Shane Smiskol 095d96fbe0 reset: erase in thread (#37627)
erase in thread
2026-03-09 18:43:42 -07:00
Shane Smiskol 2ca6f893df New updater_magic 2026-03-09 17:34:16 -07:00
Shane Smiskol a17a8daad5 pack.py: exclude large unused folderrs 2026-03-09 17:32:33 -07:00
Shane Smiskol acace97ef8 add warning to pack.py (#37624)
* start

* works!

* can't check ls-files because we need built files too >:(

* add print
2026-03-09 17:18:40 -07:00
Shane Smiskol 0208d26845 reset: don't swipe down confirm slider (#37620)
* test and broke

* fix

* clean up
2026-03-09 15:39:06 -07:00
Shane Smiskol dd8aa4a21e setup: don't swipe down custom fork screen 2026-03-09 14:20:16 -07:00
Shane Smiskol d6c85abcd3 setup: copy changes
from https://github.com/commaai/openpilot/pull/37611
2026-03-09 14:11:01 -07:00
Shane Smiskol 56d1961625 Revert "setup & reset tuneups" (#37619)
Revert "setup & reset tuneups (#37611)"

This reverts commit 9510e05dc0.
2026-03-09 14:09:13 -07:00
Armand du Parc Locmaria 1dbae159a8 op switch: sync submodules (#37618) 2026-03-09 14:02:03 -07:00
github-actions[bot] 76458d175f [bot] Update translations (#37530)
Update translations

Co-authored-by: Vehicle Researcher <user@comma.ai>
2026-03-09 09:33:00 -07:00
Adeeb Shihadeh ad181ba501 agnos 17 (#37552) 2026-03-08 20:54:31 -07:00
Adeeb Shihadeh 71290f3805 cabana: gitignore assets.cc 2026-03-08 19:16:38 -07:00
Adeeb Shihadeh e42ee228c2 gitignore cleanups (#37615)
* gitignore cleanups

* lil more

* one more
2026-03-08 18:31:11 -07:00
Adeeb Shihadeh 9510e05dc0 setup & reset tuneups (#37611)
* period

* no exit there

* fasle

* edit those

* swipe down to go back

* fix weird animation
2026-03-08 18:07:05 -07:00
Adeeb Shihadeh 6e87e66bc5 0.11 time 2026-03-08 11:54:15 -07:00
Shane Smiskol 1197ea9ab9 sliders: fix clicking anywhere activates press (#37605)
* fix

* finish

* fix
2026-03-08 00:13:08 -08:00
Shane Smiskol 9d7edbf57a ui: remove MiciLabel (#37599)
* unified

* newl

* do home too

* pairing

* match style

* delete micilabel!

* default color
2026-03-07 23:11:38 -08:00
David acec60d19e docs: update WSL2 hardware acceleration note (#37603)
* docs: update WSL2 hardware acceleration note for improved UI performance

* space

* clarify
2026-03-07 18:23:20 -08:00
Shane Smiskol 6a3dcc74e8 ui: mark more child widgets (#37596)
* do onboarding

* do tici

* clean

* hide event reset state :(
2026-03-07 05:28:51 -08:00
Shane Smiskol 6e851ff886 ui: missing super show event (#37597)
missing
2026-03-07 05:21:06 -08:00
Shane Smiskol 7a5d8a813b Turn off Widget debug mode 2026-03-07 05:08:58 -08:00
Shane Smiskol 4742bf0230 HBoxLayout: use children 2026-03-07 05:08:44 -08:00
Shane Smiskol 4bf2bfb122 ui: child widget support (#37594)
* child widgets!

* cmt

* missing

* group

* add debug flag

* use in scroller

* not clean yet

* restore
2026-03-07 05:07:03 -08:00
Shane Smiskol 797b769478 ui: sliders bounce (#37595)
* sliders bounce

* start page should bounce too

* clean up

* bouncy sliders

* bouncy everything

* tiny bounce

* clean up

* no scroll bounce
2026-03-07 04:32:47 -08:00
Shane Smiskol 024e2af269 slider: use self.confirmed 2026-03-07 03:10:29 -08:00
Shane Smiskol e35513afc4 ui: fix 1px overshoot on NavWidget show (#37593)
fix
2026-03-07 02:55:10 -08:00
Shane Smiskol 6607283cec mici ui: engaged confirmation buttons (#37589)
* do deviec

* clean up

* clean up

* todo

* action text

* back
2026-03-07 02:17:36 -08:00
Shane Smiskol 08162be765 mici reset: new flow (#37584)
* copy

* add back

* stash

* fix

* more

* dot animation

* fix anim

* 0.6

* fix
2026-03-07 01:53:41 -08:00
Shane Smiskol 7061c18cee ui: antialias text (#37592)
aa
2026-03-07 01:45:46 -08:00
Shane Smiskol c36c30e74b reset: rm --format (#37591)
* reset: rm --format

* same for tici
2026-03-07 00:14:01 -08:00
Shane Smiskol 1f9ec135a4 BigButton: take icon texture and fix image sizes (#37590)
* more explicit pass texture like everything else, esp since sizes are not all same

* fix some confirmation dialog images

* fix image sizes

* do bigbutton

* fix

* static
2026-03-06 23:40:42 -08:00
Jason Wen f1aa0c7f78 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-03-07 01:49:09 -05:00
Shane Smiskol 0557283e3d ui: add confirmation circle button (#37586)
* try this

* clean up and use it

* clean up

* simpler

* do this later

* do onboarding & reset

* do setup

* temp

* Revert "temp"

This reverts commit 22fbbf5c813b4915e784b9ee235ed3bde2229048.

* simpler again

* missing size

* fix

* Revert "fix"

This reverts commit 53c4e29e614181029dc8e9a2baea7694957dc8fb.

* nl
2026-03-06 22:38:00 -08:00
Utkarsh Gill 793f8fee32 fix(sim): use getRamImageAs for correct channel order (#37528)
getRamImage() returns panda3d's internal BGRA format. on macOS this
produces swapped red/blue channels in the sim camera feed.

getRamImageAs("RGBA") requests explicit RGBA reordering from panda3d,
correct on all platforms. no-op where internal format is already RGBA.

ref: https://docs.panda3d.org/1.10/python/reference/panda3d.core.Texture#panda3d.core.Texture.getRamImageAs

fixes #37526
2026-03-06 22:14:31 -08:00
Lukas Heintz 5e1a576f3d cabana: exclude SocketCAN on macOS (#37553)
fix cabana on macos

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2026-03-06 22:13:16 -08:00
Shane Smiskol fd98db72ab ui: make confirm callback required for confirmation dialog (#37585)
* always required!

* reoreder

* reorder again

* make required so better order

* not clear better
2026-03-06 21:36:43 -08:00
Shane Smiskol 2f1a58f991 mici setup: connect to continue (#37583)
* connect to continue

* fix
2026-03-06 20:45:39 -08:00
Kacper Rączy 4cc68f57cf lagd: change lag candidate threshold range (#37581)
* Use extended_roi_ncc instead of roi_ncc

* It doesnt make sense to use non-positive lags in thresholding
2026-03-07 04:17:26 +00:00
Kacper Rączy 5e2a5b5355 lagd: smooth lat accel + min lat accel range (#37424)
* Smooth

* Min lat accel range

* Make the moving average masked

* Bring back the range

* Update test

* Smooth desired signal too

* Diff

* Gaussian

* Fix fmt

* Remove newline
2026-03-07 03:00:15 +00:00
Shane Smiskol 44ec08c112 sliders: clean up (#37580)
* remove small buttons!

* remove those assets

* clean up sliders

* fix

* abc

* base
2026-03-06 18:36:12 -08:00
Shane Smiskol 60ec7dc7b6 Remove unused icons 2026-03-06 18:33:26 -08:00
Shane Smiskol af1fb2644e mici ui: remove unused widgets (#37579)
* remove small buttons!

* remove those assets
2026-03-06 18:17:26 -08:00
Shane Smiskol 4651bc6a1f ui: rename BigConfirmationDialogV2 (#37578)
* ui: rename BigConfirmationDialogV2

* clean up
2026-03-06 17:33:50 -08:00
Adeeb Shihadeh ac1dd692af ui: fix BigButton shake on startup (#37577)
_shake_start defaults to None, but `None or 0.0` treated it as
time zero, so any button rendered within 0.5s of window creation
would play the shake animation.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 17:18:41 -08:00
YassineYousfi 363735f7ce Update RELEASES.md 2026-03-05 09:38:51 -08:00
Shane Smiskol 5303afb0dc mici installer: bring back finishing setup (#37574)
need this :(
2026-03-05 07:20:50 -08:00
Shane Smiskol 118d903e2d mici ui: slim review terms (#37573)
* replace

* fix
2026-03-05 06:04:01 -08:00
Shane Smiskol 93eb8418b7 Zip app updater (#37572)
replace
2026-03-05 05:54:44 -08:00
Shane Smiskol 6922d58762 mici setup: swipe down on wifi connect, then wait for internet (#37569)
* try this

* try this

* fix

* delay hide on wifi/internet

* 0.5

* fix flash on forgetting

* also reset

* fix

* todo

* dupl

* wifi after

* bring back cmts

* fix spotty internet check while downloading!

* cmt

* cmt

* todo

* resort

* more delay

* redundtant

* nl

* scroll over for wifi (waiting) OR internet (continue)

* fix scroll

* fix scroll

* show_event fully manages its scroll over, not some weiird delay mixed with other triggers via fake rising edge

* instant if not popping

* cmt
2026-03-05 04:58:18 -08:00
Shane Smiskol b4b747e5cb mici scroller: fix scroll bar direction with less content than viewport (#37571)
fix
2026-03-05 04:48:30 -08:00
Shane Smiskol 2d53f4cf01 WifiUi: re-sort buttons on show (#37570)
sort
2026-03-05 03:36:37 -08:00
Shane Smiskol 4a1101c032 mici setup: don't run network tick while not in network setup page 2026-03-05 02:54:24 -08:00
Shane Smiskol 41bba2b55a mici setup: fix race on disconnect guard 2026-03-05 02:11:23 -08:00
Shane Smiskol d801cebb2e mici setup: guard continue button when forgetting/connecting (#37568)
* test

* fix

* test

* too much

* simple to ship

* revert

* bug free

* simpler

* fix

* even safer guard
2026-03-05 01:23:29 -08:00
Shane Smiskol 3a19f85512 WifiManager: guard AP paths failure 2026-03-05 01:04:16 -08:00
Shane Smiskol dcc166343f mici setup: get time immediately after internet (#37565)
* should be instant

* guard on disconnect

* just time fix
2026-03-05 00:25:09 -08:00
Shane Smiskol 4f5df6589d mici setup: set WifiManager active on network setup page show (#37566)
* set active

* cmt
2026-03-04 23:47:34 -08:00
Shane Smiskol 3cc9d89d45 mici ui: wifi scanning card (#37564)
* start

* yes

* no more show

* clean up
2026-03-04 23:07:37 -08:00
Jason Wen e7c8126fd9 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-03-05 02:01:04 -05:00
Shane Smiskol e59f675715 new reset (#37563)
* start new reset w navwidgets

* full port

* clean up

* clean up

* clean up

* fixes

* rm
2026-03-04 22:36:25 -08:00
Shane Smiskol 5beae930e4 setup: new scroller failed screen (#37561)
* better update flow

* clean up

* clean up

* cmt

* clean up

* todo

* failed scroller

* fix for setup

* show wrong url

* setup failed is red not orange

* clean up and fix all flashing in setup
2026-03-04 20:44:29 -08:00
Adeeb Shihadeh 0274b73760 jenkins: always run pandad tests 2026-03-04 20:20:07 -08:00
Shane Smiskol 055b29b226 updater: better flow (#37560)
* better update flow

* clean up

* clean up

* cmt

* clean up

* todo
2026-03-04 19:37:24 -08:00
Jacob Pfeifer 6330a9c53a add explicit include for cstdint instead of relying on leaky include (#37559) 2026-03-04 18:59:57 -08:00
Shane Smiskol 2c4e114b51 updater: new scroller style (#37556)
* good start

* reset on push

* clean up

* why tf it remove comments

* no more base unnav

* repack
2026-03-04 17:35:24 -08:00
Adeeb Shihadeh e264b4269f reset: don't timeout if partition is corrupt 2026-03-04 14:39:11 -08:00
Adeeb Shihadeh fef89d1039 op adb: find free port 2026-03-04 14:18:35 -08:00
Jason Wen 125999c364 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-03-01 16:34:41 -05:00
Jason Wen 5b25ea7f99 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-28 15:47:57 -05:00
Jason Wen b7e2631286 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-27 21:56:34 -05:00
Jason Wen a838871189 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-19 01:51:17 -05:00
Jason Wen 1827331599 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-17 20:12:13 -05:00
Jason Wen 5c777bbe01 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-13 23:41:06 -05:00
Jason Wen fb97f993d1 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-13 17:32:10 -05:00
Jason Wen 94b67077e3 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-12 23:35:46 -05:00
Jason Wen 14f17699b9 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-11 00:35:20 -05:00
Jason Wen 80e27d5cbb Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-10 23:41:27 -05:00
Jason Wen 039dbcd877 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-02-09 01:46:00 -05:00
Jason Wen 8c134ae555 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-08 20:04:01 -05:00
Jason Wen 276c7a2b34 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-02-02 22:40:14 -05:00
Jason Wen 0e2dbcebfa Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-01-26 11:45:29 -05:00
Jason Wen bbb7760a95 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2026-01-19 01:43:21 -05:00
Jason Wen 23a27b2fbf Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2026-01-09 18:48:43 -05:00
Jason Wen 8b78107a40 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-31 00:49:56 -05:00
Jason Wen c27b6007de wrong bump? 2025-12-26 10:08:31 -05:00
Jason Wen 36c2dce247 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-26 10:08:23 -05:00
Jason Wen 8035039731 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-12-23 00:52:24 -05:00
Jason Wen 8aa6c9440f Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-20 17:01:25 -05:00
Jason Wen 34ef40fd81 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-12-18 00:19:20 -05:00
Jason Wen 4d044d7618 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-15 02:25:04 -05:00
Jason Wen 6247e3dc84 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-12-13 01:59:06 -05:00
Jason Wen b1131289b7 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-07 01:37:16 -05:00
Jason Wen 35dc7d661e Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-12-07 00:11:54 -05:00
DevTekVE c39b2dad94 Merge branch 'master' into hkg-angle-steering-2025 2025-11-29 10:12:31 +01:00
Jason Wen e6b769245c Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
#	selfdrive/ui/sunnypilot/SConscript
#	selfdrive/ui/sunnypilot/qt/offroad/settings/lateral_panel.cc
#	selfdrive/ui/sunnypilot/qt/offroad/settings/lateral_panel.h
#	selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc
2025-11-25 18:54:02 -05:00
DevTekVE 8b94f8b2f8 Merge branch 'master' into hkg-angle-steering-2025 2025-11-06 18:31:16 +01:00
Jason Wen dec014cd17 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	sunnypilot/selfdrive/car/interfaces.py
2025-11-04 17:45:05 -05:00
DevTekVE 7b40272866 Add sunnypilot-specific stats logging and handling
- Introduced `StatLogSP` for sunnypilot-specific metrics.
- Integrated stats collection and submission pathways for sunnylink.
- Extended parameters and handlers to support additional metrics.
- Added gzip compression and base64 encoding for oversized payload handling.
2025-11-04 21:20:16 +01:00
DevTekVE 506456e7f0 Merge branch 'master' into hkg-angle-steering-2025 2025-11-01 13:31:23 +01:00
DevTekVE 4ea4b9d177 Merge branch 'master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-10-31 06:59:39 +01:00
DevTekVE 0e2313dc31 Merge branch 'master' into hkg-angle-steering-2025 2025-10-18 11:14:45 +02:00
Jason Wen 79ea7db103 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-10-17 23:42:01 -04:00
Jason Wen f9ae9192fa Merge branch 'ui-icbm-universal' into hkg-angle-steering-2025 2025-10-17 21:55:00 -04:00
Jason Wen 7ec23006c6 check this 2025-10-17 21:54:44 -04:00
Jason Wen 2be9447a6c Merge branch 'ui-icbm-universal' into hkg-angle-steering-2025 2025-10-17 21:19:09 -04:00
Jason Wen cfd926778e always init true 2025-10-17 21:19:03 -04:00
Jason Wen a97a67e3d0 need 2025-10-17 21:17:31 -04:00
Jason Wen 518b6de08d Merge branch 'ui-icbm-universal' into hkg-angle-steering-2025 2025-10-17 21:15:59 -04:00
Jason Wen 6933e3bcdb fix cruise toggles 2025-10-17 21:15:43 -04:00
Jason Wen 05e0ca8bee some more 2025-10-17 20:46:36 -04:00
Jason Wen 410614fcf3 single location 2025-10-17 20:26:18 -04:00
Jason Wen e2bc0996ef Merge branch 'ui-icbm-universal' into hkg-angle-steering-2025 2025-10-17 12:21:47 -04:00
Jason Wen 1be0c20cf5 oops 2025-10-17 12:21:37 -04:00
Jason Wen 839143b9ed oops 2025-10-17 12:20:23 -04:00
Jason Wen bce86637ae Merge branch 'ui-icbm-universal' into hkg-angle-steering-2025 2025-10-17 12:15:23 -04:00
Jason Wen b833d3ee89 ui: update ICBM-related settings handling 2025-10-17 12:14:44 -04:00
Jason Wen e0441dfb4b Merge branch 'sla-event' into hkg-angle-steering-2025 2025-10-17 11:58:42 -04:00
Jason Wen 62ec40bba6 Speed Limit Assist: update active event handling 2025-10-17 11:58:19 -04:00
Jason Wen 15c6d38028 bump 2025-10-16 17:05:58 -04:00
Jason Wen 56eb9f555c Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	sunnypilot/selfdrive/controls/lib/e2e_alerts_helper.py
2025-10-16 01:12:10 -04:00
Jason Wen 2f9951df02 Merge branch 'e2e-alert-state-machine' into hkg-angle-steering-2025 2025-10-15 23:55:40 -04:00
Jason Wen 6030bf4da3 less 2025-10-15 23:52:03 -04:00
Jason Wen 074694d660 lead depart: only arm if we have a confirmed close lead for over a second after allowing alert 2025-10-15 23:48:13 -04:00
Jason Wen df35f48f3b magic 2025-10-15 22:56:08 -04:00
Jason Wen 4fb9704540 time based 2025-10-15 22:51:40 -04:00
Jason Wen 48cbe266fc 10 frames for both 2025-10-15 22:50:42 -04:00
Jason Wen 21aa7ff367 rename 2025-10-15 22:47:08 -04:00
Jason Wen 7caf05dd51 not used 2025-10-15 22:41:00 -04:00
Jason Wen 2d779f5db9 E2E Helper: universal state machine 2025-10-15 22:38:57 -04:00
Jason Wen 18208f1da0 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-10-15 17:41:56 -04:00
Jason Wen 5a3c6ddf57 gate lka angle steering out of alpha long 2025-10-14 23:25:00 -04:00
Jason Wen eaa8732ab0 Merge branch 'e2e-alerts-cooldown' into hkg-angle-steering-2025 2025-10-14 14:44:00 -04:00
Jason Wen 6f0284c84f try preventing startup false trigger 2025-10-14 14:43:47 -04:00
Jason Wen 999ea03f23 try preventing startup false trigger 2025-10-14 14:42:42 -04:00
Jason Wen 0975db3ff1 Merge branch 'e2e-alerts-cooldown' into hkg-angle-steering-2025 2025-10-14 14:31:59 -04:00
Jason Wen 8d70a8b80a only when long not engaged 2025-10-14 14:31:48 -04:00
Jason Wen da93f92887 rename 2025-10-14 14:26:57 -04:00
Jason Wen 9117f6c071 Merge branch 'e2e-alerts-cooldown' into hkg-angle-steering-2025 2025-10-14 14:23:46 -04:00
Jason Wen 3567ff9691 introduce recent moving check 2025-10-14 14:22:41 -04:00
Jason Wen f44ae2ced9 too complicated 2025-10-14 14:08:40 -04:00
Jason Wen 376e0ca615 only allow one trigger per standstill session 2025-10-14 14:07:16 -04:00
Jason Wen 32b7686468 Merge branch 'master' into e2e-alerts-cooldown 2025-10-14 11:40:58 -04:00
nayan b9e0f52ea9 E2E Alert Cooldown 2025-10-14 07:43:15 -04:00
Jason Wen a3163b680f Merge branch 'sla-chimes' into hkg-angle-steering-2025 2025-10-14 02:01:05 -04:00
Jason Wen 8a927d808f Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-10-14 02:00:36 -04:00
Jason Wen bc7d5e474d Speed Limit Assist: audible alerts for certain states 2025-10-14 01:45:13 -04:00
Jason Wen 36f192b5fe Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-10-13 03:10:47 -04:00
Jason Wen ffd5cd4ac2 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-10-11 02:29:47 -04:00
Jason Wen e4a00fcd6c Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025 2025-10-10 17:28:16 -04:00
Jason Wen 0bdcb41103 Merge remote-tracking branch 'sunnypilot/sunnypilot/master' into hkg-angle-steering-2025
# Conflicts:
#	common/params_keys.h
#	opendbc_repo
#	selfdrive/ui/sunnypilot/qt/offroad/settings/lateral_panel.cc
2025-10-10 17:02:14 -04:00
DevTekVE 78051085ca Merge branch 'master' into hkg-angle-steering-2025 2025-09-23 07:54:32 +02:00
DevTekVE 4910d5809a bump opendbc 2025-09-23 07:45:39 +02:00
DevTekVE 8dd862ff28 yikes, becoming picky huh? 2025-09-14 22:50:21 +02:00
DevTekVE 1b57497da9 Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-09-14 22:48:00 +02:00
DevTekVE 8d8d1ffc7a bump opendbc again 2025-09-14 22:46:20 +02:00
DevTekVE c5919d5495 wrong dbc lol 2025-09-14 22:42:19 +02:00
DevTekVE da71951c95 This is no longer in use nor needed. Bai! 2025-09-14 12:56:28 +02:00
DevTekVE 25a152cd8b Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-09-14 12:44:23 +02:00
DevTekVE 9077a1082a Sorry for C3 :( but moving you out to a last working branch before I sync it up 2025-09-14 06:52:24 +02:00
DevTekVE 7ae7000254 Rework override behavior and feeling 2025-09-14 06:38:00 +02:00
DevTekVE 7029455706 better juggle 2025-09-13 08:32:27 +02:00
DevTekVE 3a71a62215 Merge branch 'master' into hkg-angle-steering-2025 2025-09-12 10:14:52 +02:00
DevTekVE 00622e8c33 Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-09-05 09:46:41 +02:00
DevTekVE 549da3ee92 Merge branch 'master' into hkg-angle-steering-2025 2025-09-04 20:20:37 +02:00
DevTekVE e038a65ef8 Merge branch 'master' into hkg-angle-steering-2025 2025-08-31 13:14:33 +02:00
DevTekVE 8d0513c657 dbc: update CHECKSUM format for multiple messages to improve data integrity 2025-08-30 19:56:21 +02:00
DevTekVE 2cea48f4cd Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-08-30 15:27:45 +02:00
DevTekVE 8855a9ab65 Improve surprise jerk by safety blocks 2025-08-26 14:47:26 +02:00
DevTekVE 32321c01cc A bit more helpful safety block investigation help 2025-08-26 10:09:11 +02:00
DevTekVE 52cd65fefb lint dont bother me 2025-08-25 08:24:24 +02:00
DevTekVE 1fcdeccd40 Merge branch 'master' into hkg-angle-steering-2025
# Conflicts:
#	common/params_keys.h
#	opendbc_repo
2025-08-25 08:01:51 +02:00
DevTekVE 3517c36978 Revert "Add HkgAngleDebug structure and enhance angle debugging in car controller" 2025-08-24 19:02:48 +02:00
DevTekVE fb30c3c1e8 cleanup and honour params 2025-08-23 15:42:47 +02:00
DevTekVE 1c25e568d5 Update steering pressed logic to include hands-on-wheel detection for improved safety 2025-08-23 15:11:07 +02:00
DevTekVE f172122b7c Update steering pressed logic to include hands-on-wheel detection for improved safety 2025-08-22 19:55:16 +02:00
Jason Wen 67d6cdc7cd Merge remote-tracking branch 'sunnypilot/sunnypilot/hkg-angle-steering-2025' into hkg-angle-steering-2025 2025-08-21 16:39:36 -04:00
DevTekVE 6724085cfd Refactor angle limit calculations and adjust average road roll for improved steering dynamics 2025-08-21 20:09:57 +02:00
DevTekVE 6774f34eee Refine non-linear mapping in torque reduction gain calculation for improved steering response 2025-08-21 00:21:46 +02:00
DevTekVE 6d0402896d Adjust STEER_THRESHOLD and refine non-linear mapping in torque reduction gain calculation for improved steering response 2025-08-20 23:16:04 +02:00
DevTekVE 344021a3d9 Adjust non-linear mapping in torque reduction gain calculation for improved response 2025-08-20 19:54:31 +02:00
DevTekVE a9b85ab27d Refactor HkgAngleDebug structure to include current and baseline limits for angle parameters 2025-08-20 19:54:10 +02:00
DevTekVE 17204a46e4 Add HkgAngleDebug structure and enhance angle debugging in car controller 2025-08-20 18:39:53 +02:00
DevTekVE 7c4d415462 Enhance torque reduction gain calculation with non-linear mapping and smoothing 2025-08-20 00:12:43 +02:00
DevTekVE b8985b6d72 Enhance torque reduction gain calculation with non-linear mapping and smoothing 2025-08-19 19:50:13 +02:00
DevTekVE c669473f88 Refine torque reduction parameters and update UI for angle error analysis 2025-08-19 19:35:34 +02:00
DevTekVE 8751435bf5 Improving tq redc gain and override behavior 2025-08-19 10:08:51 +02:00
DevTekVE 30ae210761 Merge branch 'master' into hkg-angle-steering-2025 2025-08-19 10:07:42 +02:00
Jason Wen 3eb693f58b Merge remote-tracking branch 'sunnypilot/sunnypilot/hkg-angle-steering-2025' into hkg-angle-steering-2025 2025-08-18 12:30:29 -04:00
DevTekVE 7b4a31c5ac bugfix 2025-08-17 16:07:45 +02:00
DevTekVE 1527c8cf88 bump opendbc 2025-08-17 15:31:31 +02:00
DevTekVE ab0a7ae666 no joystick on this branch, causing issues 2025-08-17 15:25:40 +02:00
DevTekVE 11ec2f1f21 Apply suggestions from code review 2025-08-17 15:10:17 +02:00
DevTekVE 2c6808d37e Merge branch 'master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-08-17 15:02:28 +02:00
Jason Wen 2e96382c49 notebook init 2025-08-17 00:34:01 -04:00
DevTekVE 0239e440ca Adjust replay 2025-08-15 10:32:07 +02:00
Jason Wen 76b972daff Hyundai angle steering: STEERING_ANGLE_2 available on all cars 2025-08-14 01:56:46 -04:00
Jason Wen bc3ef3e7dd Hyundai angle steering: hugging no more - use the true steering angle signal from MDPS 2025-08-13 23:08:32 -04:00
DevTekVE 9839291dd0 Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025 2025-08-13 20:13:42 +02:00
DevTekVE 17cba328d6 refactor: update torque tuning configuration for angle steering
- Adjusted torque tuning configuration to avoid reliance on torque controller for Hyundai angle steering.
- Simplified control logic by removing unnecessary checks for torque control type.
refactor: clean up code formatting and improve test structure for torque reduction gain
2025-08-13 20:03:51 +02:00
DevTekVE 86093765d8 Merge branch 'master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-08-13 07:55:46 +02:00
DevTekVE 05fa1c8ae8 Adjust default params and cleanup 2025-08-12 21:36:22 +02:00
DevTekVE e8a40d6b85 Merge branch 'master' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
#	system/manager/process_config.py
2025-08-10 14:24:10 +02:00
DevTekVE c265e0bb85 Merge remote-tracking branch 'origin/master' into hkg-angle-steering-2025
# Conflicts:
#	common/params_keys.h
#	opendbc_repo
#	system/manager/manager.py
2025-08-02 09:56:58 +02:00
DevTekVE c6b118788b Merge branch 'master-new' into hkg-angle-steering-2025 2025-07-31 18:25:08 +02:00
DevTekVE b004f6dbdc Merge branch 'master-new' into hkg-angle-steering-2025 2025-07-31 18:17:34 +02:00
DevTekVE cd4930b680 Bump opendbc 2025-07-26 10:56:49 +02:00
DevTekVE f861aca628 Refactor vehicle model initialization and adjust angle limits for baseline model 2025-07-26 08:12:06 +02:00
DevTekVE 1ff0d8e2ee please don't bother me anymore! 2025-07-26 08:09:51 +02:00
DevTekVE d76d70764e Update slip factor precision for Hyundai steering parameters
- Adjusted `slip_factor` in Hyundai CANFD safety modes for improved consistency and accuracy.
- Ensured proper representation of `slip_factor` output in test logs.
2025-07-25 20:17:19 +02:00
DevTekVE dc73ce0b71 save tools replay 2025-07-25 19:47:31 +02:00
DevTekVE 3f666748af bump opendbc 2025-07-25 14:16:02 +02:00
DevTekVE 8de8a8838c bumo opendbc 2025-07-25 14:08:53 +02:00
DevTekVE f563b7eb71 Refactor steering angle limit application for improved safety and model compliance 2025-07-25 12:12:42 +02:00
DevTekVE 3c18b83708 save temp 2025-07-25 09:56:30 +02:00
DevTekVE bd35f5904b Enhance steering angle rate limiting and safety enforcement logic
- Introduced explicit post-rate limiting using model-specific dynamics.
- Improved low-speed smoothing and precision of applied angles.
2025-07-25 08:12:41 +02:00
DevTekVE 474f2737f6 Refactor steering angle limit logic for conservative seleion
- Removed unused lateral accel/jerk logic for simplicity.
- Updated angle limit calculations to choose the smallest delta for safer control.
2025-07-24 21:48:24 +02:00
DevTekVE ea1ac4a212 Revert "Add configurable max lateral accel and jerk parameters for Hyundai vehicles"
This reverts commit b95f8c5929.

Revert "Add baseline safety model and improve steering angle limiting logic"

This reverts commit b53cbb2e18.

Revert "Disable lateral accel/jerk params and ensure float consistency in angle limits"

This reverts commit 165d7c7b36.
2025-07-24 10:02:48 +02:00
DevTekVE 165d7c7b36 Disable lateral accel/jerk params and ensure float consistency in angle limits
- Commented out unused lateral accel/jerk parameters for clarity.
- Ensured `np.clip` always returns a float for precision.
2025-07-24 09:41:52 +02:00
DevTekVE b53cbb2e18 Add baseline safety model and improve steering angle limiting logic
- Introduced a baseline safety model (`GENESIS_GV80_2025`) for comparison.
- Enhanced steer angle limit calculation using both baseline and current limits for improved safety and precision.
2025-07-24 09:38:03 +02:00
DevTekVE b95f8c5929 Add configurable max lateral accel and jerk parameters for Hyundai vehicles
- Introduced user-configurable options for max lateral acceleration and jerk.
- Enables fine-tuning of vehicle handling for smoother control.
2025-07-24 08:39:10 +02:00
DevTekVE e564bb0b85 bumo openbc 2025-07-23 18:46:52 +02:00
DevTekVE e2ec8a7b13 Refine lateral control limits and simplify safety model handling
- Reduced max lateral acceleration and jerk by 20% for smoother handling.
- Removed unused `get_safety_CP` function, simplifying `VehicleModel` initialization.
2025-07-22 08:07:51 +02:00
DevTekVE 75c6f0f10e Test with gv80 as baseline for limits 2025-07-20 22:14:18 +02:00
DevTekVE af38044b42 Merge branch 'master-new' into hkg-angle-steering-2025 2025-07-20 10:14:46 +02:00
DevTekVE 684fa846d8 Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	.codespellignore
#	opendbc_repo
#	system/manager/manager.py
2025-07-19 21:51:46 +02:00
DevTekVE 416e722855 Update baseline model to IONIQ 5 PE for improved angle safety tuning
- Replaced conservative GENESIS_GV80_2025 model with IONIQ 5 PE parameters.
- Adjusted steering parameters (ratio, slip factor, wheelbase) for better lateral control performance.
2025-07-19 21:46:17 +02:00
DevTekVE 9fd4613bbb Add 2025 Kia EV6 support with updated radar and camera fingerprints 2025-07-09 09:47:31 +02:00
DevTekVE a0362e3c5f "Refined UI labels and tooltips for HKG tuning options to improve clarity and user understanding." 2025-06-29 16:48:53 +02:00
DevTekVE e32ef1cdc0 Fix incorrect torque sign usage in torque reduction calculation
Ensure `actuators.torque` uses its absolute value in the `calculate_angle_torque_reduction_gain` method to prevent sign-related issues during Hyundai steering angle control.
2025-06-29 14:33:30 +02:00
DevTekVE 20673ec8a6 Adjust warning font size in angle tuning settings panel. 2025-06-29 13:35:09 +02:00
DevTekVE 53fbdf7329 Rename "IdleTorque" to "ActiveTorque" for clarity.
The parameter name "HkgTuningAngleIdleTorqueReductionGain" was updated to "HkgTuningAngleActiveTorqueReductionGain" across multiple files for better clarity and alignment with its functionality. This change ensures consistency in naming conventions and improves code readability.
2025-06-29 13:23:56 +02:00
DevTekVE 6f72b74fac Add idle torque reduction for Hyundai lateral control
Introduced `ANGLE_IDLE_TORQUE_REDUCTION_GAIN` to manage torque when the vehicle is stationary, ensuring smoother handling and better lane centering. Updated parsing, parameters, and UI settings to support this new idle torque parameter. Adjusted torque calculation logic and smoothing factor behavior for enhanced control flexibility.
2025-06-29 13:22:18 +02:00
DevTekVE e83705a32e Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-06-29 09:44:01 +02:00
DevTekVE 95d36b9ba2 Refactor and enhance HKG angle tuning logic.
Introduced a toggle for angle smoothing factor and renamed related parameters for clarity. Refactored backend settings to use new parameter names and expanded smoothing matrices for better tuning granularity. Updated UI elements to reflect these changes, emphasizing usability and consistency.
2025-06-28 21:25:44 +02:00
DevTekVE b9e74254bd Merge branch 'master-new' into hkg-angle-steering-2025 2025-06-27 10:46:22 +02:00
DevTekVE b4405b200d Merge remote-tracking branch 'origin/master-new' into hkg-angle-steering-2025 2025-06-25 09:27:21 +02:00
DevTekVE a8a3fdac54 Rename parameter in calculate_target_torque for clarity. 2025-06-23 22:53:45 +02:00
DevTekVE 4eddc622a7 Refactor torque calculations in Hyundai controller
Rename methods and variables for clarity in torque reduction and override calculations. Adjust logic to streamline handling of steering inputs and improve maintainability.
2025-06-23 22:51:40 +02:00
DevTekVE 4e42ada240 Refactor torque management in Hyundai controller for cleaner override and ramp logic
Extract torque ramping and override functionality into dedicated methods within `LkasTorqueManager` to improve maintainability and reduce redundancy. Simplify `update` logic by delegating state-specific operations to new methods.
2025-06-23 22:47:51 +02:00
DevTekVE 6266217655 Introduce LkasTorqueManager for LKAS torque handling in Hyundai controller
Encapsulate LKAS torque calculations, ramping, and override logic into the new `LkasTorqueManager` class to improve modularity and maintainability. Replace existing torque logic with calls to the manager.
2025-06-23 22:20:10 +02:00
DevTekVE ea09d32e98 Remove lateral acceleration logic from Hyundai steering controller 2025-06-23 21:55:17 +02:00
DevTekVE 15958c88d3 Refactor lateral acceleration scaling logic in Hyundai controller
Move scaling of `max_angle_delta` under high lateral acceleration to improve clarity and prevent redundant operations.
2025-06-23 20:22:03 +02:00
DevTekVE b80d7fb5ea Adding GV70 electrified 2026 2025-06-22 14:30:59 +02:00
DevTekVE 1c3d25c6ff Refine lateral acceleration handling in Hyundai steering logic
Enforce absolute check for `real_a_lat` against `MAX_LATERAL_ACCEL` to improve angle scaling under high lateral acceleration conditions.
2025-06-22 11:03:35 +02:00
rav4kumar c9f22b32c7 Revert "Incorporate lateral acceleration in Hyundai angle steering logic"
This reverts commit c0524985bb.
2025-06-21 11:40:58 -07:00
DevTekVE c0524985bb Incorporate lateral acceleration in Hyundai angle steering logic
Add handling for IMU lateral acceleration to refine steering angle limits in CAN FD configurations. Parse and utilize `IMU_LatAccelVal` signal for enhanced lateral control accuracy.
2025-06-21 17:34:13 +02:00
DevTekVE 83839c7ea7 Add angle steering support and refactor related logic for Hyundai CAN FD.
Introduced support for CAN FD angle steering, including updated parameters, signal parsing, and new tests. Refactored related steering logic for clarity, reducing unused code and enhancing maintainability.
2025-06-21 13:38:50 +02:00
DevTekVE c1a1d4b4c3 Update lint script to exclude .xml files in layouts directory
Added `layouts/.*\.xml` to `IGNORED_FILES` in `lint.sh` to prevent linting of layout XML files.
2025-06-20 10:50:45 +02:00
DevTekVE b5af7a905a Merge branch 'master-new' into hkg-angle-steering-2025 2025-06-18 20:13:45 +02:00
DevTekVE 96b1b2f55f Update steering request logic in Hyundai controller
Ensure steering request activation depends on lateral control being active. This adds clarity and aligns better with control logic requirements.
2025-06-17 18:51:54 +02:00
DevTekVE 9361ba5d70 Refactor Hyundai steering angle handling logic
Streamline steering angle calculations and fault avoidance logic by removing redundant comments and unused code. Simplified `round_angle` implementation for clarity and consistency.
2025-06-17 12:08:06 +02:00
DevTekVE 4e9014311e Refactor steeringPressed logic in Hyundai carstate.py.
Revised the determination of `steeringPressed` to account for both hands-on-wheel detection and torque overriding in CAN FD setups. Simplified fallback logic for non-CAN FD configurations for better code clarity and maintainability.
2025-06-12 00:31:07 +02:00
DevTekVE 232873fc70 Refine steering press detection logic.
Adjusted the sensitivity and threshold values for `HOD_Dir_Status` in steering press updates, improving accuracy in detecting steering input. This change aligns with updated parameter requirements for better responsiveness.
2025-06-12 00:14:05 +02:00
DevTekVE 0a61fca9c9 Fix steering press detection for Hyundai models.
Updated the condition to detect steering press by changing HOD_Dir_Status threshold from `> 2` to `>= 2`. This ensures the detection logic aligns correctly with expected behavior.
2025-06-12 00:06:52 +02:00
DevTekVE 480bdc34dc Add support for CANFD angle steering in Hyundai cars
Introduced handling for the `HOD_FD_01_100ms` message when the CANFD angle steering flag is enabled. This ensures proper message parsing and extends compatibility for specific Hyundai vehicle configurations.
2025-06-12 00:04:44 +02:00
DevTekVE 716b475a13 Update Hyundai controls for HOD status and steer limits
Adjusted the steering override frame window and incorporated new HOD_Dir_Status to improve hands-on detection. Added parsing for new signals in Hyundai CAN FD, enhancing steering override responsiveness and reliability.
2025-06-12 00:01:31 +02:00
DevTekVE b1ec5ec034 Adjust override angle cap in Hyundai car controller
Increased the minimum override angle cap from 0.01 to 0.1 and explicitly cast the maximum cap to a float. This change improves consistency and ensures proper handling of steering limits.
2025-06-11 23:20:19 +02:00
DevTekVE 470613c2b7 Adjust Hyundai steer override parameters for improved control.
Reduced the override frame window and updated the angle cap logic to use MAX_ANGLE_RATE. These changes aim to enhance steering responsiveness and safety by fine-tuning steer angle limits.
2025-06-11 23:07:49 +02:00
DevTekVE 336c5b4154 Remove smoothing_factor from Hyundai car controller logic
The `smoothing_factor` parameter and related logic have been removed to simplify the steering angle smoothing approach. All references and usage of this parameter have been eliminated, relying solely on speed-based dynamic interpolation. This change streamlines the code while maintaining functionality.
2025-06-11 23:04:32 +02:00
DevTekVE abdb9dc750 Adjust Hyundai steering override frame logic
Reduced `OVERRIDE_FRAME_WINDOW` and updated condition to properly respect override frame limits. This ensures smoother handling and more precise steering adjustments under certain driving scenarios.
2025-06-11 22:49:04 +02:00
DevTekVE ab98683973 Refactor steering override logic in Hyundai carcontroller
Replaced `recently_overridden` with `frames_since_override` for better granularity and added dynamic override angle limits using interpolation. These changes enhance steering control accuracy during user overrides and improve overall code readability.
2025-06-11 22:42:05 +02:00
DevTekVE 186c24dbe6 Refine Hyundai steering override handling logic
Adjusted logic for recently overridden steering to improve angle limits and torque smoothing. Removed unused or redundant code, optimizing the functionality and maintaining cleaner readability.
2025-06-11 21:49:18 +02:00
DevTekVE 9cdf6340a1 Refactor steering angle smoothing for clarity and reuse.
Extracted the steering angle smoothing logic into a standalone function `sp_smooth_angle` to enhance readability and reusability. Adjusted angle smoothing parameters and introduced a maximum vehicle speed threshold for applying smoothing. Minor updates improve maintainability and ensure consistent behavior across speed ranges.
2025-06-11 10:07:44 +02:00
DevTekVE 2855b1341c Adjust steering thresholds for Hyundai CAN FD vehicles
Updated `STEER_THRESHOLD` to 350 and `NO_LONGER_OVERRIDING_THRESHOLD` to 150 for better alignment with Hyundai CAN FD steering behavior. These changes ensure improved compatibility and more accurate steering response.
2025-06-10 09:53:08 +02:00
DevTekVE cf28f99976 Revert "Add twilsonco's LKAS torque calculator for improved lateral control"
This reverts commit b1770fb0e7aece0e160b1b083cb260edbbdc53dd.
2025-06-10 09:40:59 +02:00
DevTekVE a39d67dc47 Fix apply_angle_last reset logic in Hyundai carcontroller
Re-enables resetting `apply_angle_last` to `steering_angle` when steering is recently overridden. This ensures proper handling of steering angle limits during transitions.
2025-06-08 19:04:02 +02:00
DevTekVE 7e75257f12 Refine Hyundai steering control logic.
Simplified torque ramp-up logic by combining conditions and adjusted `STEER_THRESHOLD` for CANFD angle steering. These changes aim to enhance control precision and maintain consistency in overrides.
2025-06-08 19:02:49 +02:00
DevTekVE df38449553 Reduce override timeout for Hyundai carcontroller
Decrease the override timeout from 100 to 50 frames, ensuring quicker recognition of driver input override. This improves responsiveness and aligns with refined control behavior.
2025-06-08 18:22:44 +02:00
DevTekVE 1385ef3bc5 Fix steering control behavior during user override
Removed restrictive rate limiting during recent user overrides to improve steering response. Adjusted logic to ensure correct handling of steering angle when lateral control is inactive or overridden.
2025-06-08 18:01:47 +02:00
DevTekVE 7c23c11c51 Refine steering logic with override detection.
Adjust steering behavior to account for recent user overrides, improving safety and control. Introduced a "recently_overridden" check to limit angle rates and torque adjustments when user intervention is detected.
2025-06-08 17:52:16 +02:00
DevTekVE aeff2e12ec Refine steering logic with user override handling.
Added logic to use the current steering angle when the steering wheel is pressed, ensuring smoother transitions during user overrides. Updated function parameters and implementation to reflect this enhancement.
2025-06-08 17:38:34 +02:00
DevTekVE 7274899671 Refactor Hyundai override logic for steering thresholds
Removed redundant `recently_overridden` logic and introduced a more robust approach for tracking user steering overrides. Added `NO_LONGER_OVERRIDING_THRESHOLD` and updated conditions to improve steer override handling. Adjustments ensure smoother torque transitions and more accurate steering state detection.
2025-06-08 17:00:44 +02:00
DevTekVE 6c00fd608f pass tests? 2025-06-08 12:28:11 +02:00
DevTekVE df6a034c11 Bump opendbc 2025-06-08 12:26:09 +02:00
DevTekVE acb109c290 adding plotjuggler stuff 2025-06-08 10:02:44 +02:00
DevTekVE b227b00249 Update torque clamping to use parameterized min torque
Replaced hardcoded `angle_min_active_torque` with `ANGLE_MIN_TORQUE` from params for better configurability and consistency. This ensures the torque clamping logic aligns with defined parameters.
2025-06-07 19:43:01 +02:00
DevTekVE 3ec9d6c18a Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	common/params_keys.h
2025-06-07 15:04:16 +02:00
DevTekVE 86db8b95f0 Refactor torque calculation and deactivate live tuning.
Updated torque calculation logic with a new optional parameter for minimum active torque, streamlining control behavior. Deactivated and cleaned up references to HkgAngleLiveTuning, simplifying configuration and reducing runtime complexities. Updated relevant UI and parameter descriptions for clarity.
2025-06-07 11:55:57 +02:00
DevTekVE 4cfff8a35f Merge branch 'master-new' into hkg-angle-steering-2025 2025-06-06 23:08:37 +02:00
DevTekVE 962fedf48c Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	opendbc/car/tests/routes.py
2025-06-06 20:49:06 +02:00
DevTekVE 04494414d1 Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-06-05 09:18:53 +02:00
DevTekVE 0b83576e9b Adjust torque ramping logic and update steering thresholds
Increase the override window and refine torque ramp-up behavior to avoid conflicts during recent overrides. Updated steering driver allowance and threshold values for CANFD angle steering to improve compatibility and performance.
2025-06-02 09:49:31 +02:00
DevTekVE ce4ef0f817 Refine steering override logic in Hyundai car controller
Added logic to track recent steering overrides and adjust LKAS torque behavior accordingly. This ensures smoother transitions when the steering is overridden and reduces potential conflicts with driver input. Updated CANFD-specific steering thresholds for enhanced compatibility.
2025-06-02 09:12:03 +02:00
DevTekVE f0b15c1c56 Adding twil's torque calculation 2025-06-01 19:04:34 +02:00
DevTekVE f898e9fdfe Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-06-01 09:46:45 +02:00
DevTekVE 8ee7804b0e Bump opendbc (no tesla controls, no twil yet) 2025-05-29 16:31:42 +02:00
DevTekVE 923228194e bump opendbc to prior tesla changes until i can pass safety validations 2025-05-28 12:44:44 +02:00
DevTekVE 8837b2e3f6 Merge branch 'master-new' into hkg-angle-steering-2025
# Conflicts:
#	opendbc_repo
2025-05-28 12:36:02 +02:00
DevTekVE f48c9dc1c2 bump opendbc 2025-05-25 17:34:24 +02:00
DevTekVE 74aa07a8cd Ingore something i dont control thx 2025-05-25 17:31:37 +02:00
DevTekVE 5236e4860f Make lint happy, maybe 2025-05-25 17:31:37 +02:00
DevTekVE 3d174da1c3 adding some of my tests and validaitons 2025-05-25 17:31:25 +02:00
DevTekVE 8faa40f3a3 clean 2025-05-25 17:31:25 +02:00
DevTekVE 3e03275f28 Add PlotJuggler layout for analyzing torque and angle data
This new layout visualizes actuator data, CAN steering messages, and car state variables. It provides multiple time-series plots to aid in debugging and analysis. Plugin configurations are also included for extended functionality.
2025-05-25 17:31:22 +02:00
DevTekVE 7595cf8a25 Refine Hyundai angle and torque control logic.
Simplified control flag handling for angle steering, adjusted torque calculations for smoother ramp rates, and updated tuning parameters for the Hyundai Ioniq 5 PE. Minor adjustment to return value handling in lateral control functions.
2025-05-25 17:31:22 +02:00
DevTekVE 2675d43adb bump opendbc
Remove duplicate STEER_ANGLE_SATURATION_THRESHOLD import

Cleaned up an unnecessary duplicate import of STEER_ANGLE_SATURATION_THRESHOLD from latcontrol_angle_torque. This simplifies the module imports and prevents potential redundancy or confusion.

Refactor lateral control to combine torque and angle logic

Merged functionalities of LatControlTorque and LatControlAngle into a single LatControlAngleTorque class. Refactored code to utilize methods from both parent classes, reducing duplication and improving maintainability.

Add angle-torque hybrid lateral control for Hyundai CAN FD

Introduces `LatControlAngleTorque` to enable hybrid angle and torque-based steering for specific Hyundai models. Updates related logic in carcontroller, interface, and controlsd to accommodate this new lateral control method. Adjusts torque parameters for enhanced control in supported models.
2025-05-25 17:31:21 +02:00
DevTekVE d9f4ce82e6 clean 2025-05-25 17:31:21 +02:00
DevTekVE 648a1845d8 cleanup the mess 2025-05-25 17:31:21 +02:00
DevTekVE a87eff6d1c Add HKG Angle Live Tuning parameter and update related handling 2025-05-25 17:31:21 +02:00
DevTekVE dd6ad37e23 Absolutely zero clue on this, I did it with AI and it's for me to play. Don't take this notebook seriously please 2025-05-25 17:31:21 +02:00
DevTekVE c5e778b939 How annoying the linter on a comment lol 2025-05-25 17:31:21 +02:00
DevTekVE a9ab81a77a useless but should keep linter happy 2025-05-25 17:31:21 +02:00
DevTekVE 2d40e1d8e5 Refactor torque parameter handling in Hyundai carcontroller
Replaced direct access to `params` with instance variables for torque parameters to improve code clarity and maintainability. Updated smoothing factor description in angle tuning settings to include speed-related behavior. This enhances readability and prepares for further tuning adjustments.
2025-05-25 17:31:20 +02:00
DevTekVE 7c8f367a5d Fix data type for HkgTuningOverridingCycles value
Updated the value of HkgTuningOverridingCycles to a string for consistency with other parameters in the tuning configuration. This ensures proper handling and avoids potential issues with type mismatches.

Add overriding cycles parameter for torque adjustment

Introduced "HkgTuningOverridingCycles" for configurable user override torque ramp-down cycles. Updated relevant logic in torque control and UI settings to handle the new parameter. This improves flexibility in adjusting steering torque override behavior.
2025-05-25 17:31:20 +02:00
DevTekVE ff4cf558aa Add HKG angle tuning settings with min/max torque parameters
Introduce separate angle tuning controls for HKG vehicles, including smoothing factor, min torque, and max torque parameters. Refactor developer panel to integrate the new settings into a dedicated UI panel, enhancing modularity and customization capabilities.
2025-05-25 17:31:20 +02:00
DevTekVE 0e151e51bc Update HKG Angle Smoothing Factor description in Developer Panel
Enhanced the description to clarify its effect on steering behavior. Included details on how the smoothing factor impacts steering smoothness using EMA, aiding user understanding.
2025-05-25 17:31:20 +02:00
DevTekVE 60cc0031b0 Revert "Revert "Revert the EMA calculation on the curvature to test another approach""
This reverts commit 58fcda8c
2025-05-25 17:31:20 +02:00
DevTekVE d24cac0998 Refactor steering angle logic for smoother control adjustments
Refactored the calculation and application of the steering angle to improve code clarity and ensure smoother transitions. Removed unused parameter update logic in `latcontrol_angle.py` and enhanced handling of driver overrides in `carcontroller.py`.
2025-05-25 17:31:20 +02:00
DevTekVE 45d110830c Fix typo in parameter access method.
Replaced `self._params` with `self.params` to correctly access the parameter `HkgTuningAngleSmoothingFactor`. This ensures the smoothing factor is updated as intended during the control loop.
2025-05-25 17:31:20 +02:00
DevTekVE ea3a9ae911 Improve angle smoothing by integrating dynamic parameter tuning
Introduced a dynamic smoothing factor using the `HkgTuningAngleSmoothingFactor` parameter. This allows more granular control over curvature smoothing based on customizable user input, enhancing driving smoothness. Added necessary logic to process and apply this parameter efficiently.
2025-05-25 17:31:19 +02:00
DevTekVE 6bff8c0e7c Revert "Revert the EMA calculation on the curvature to test another approach"
This reverts commit bd471b3498.
2025-05-25 17:31:19 +02:00
DevTekVE bc6b8802b8 Add HKG angle smoothing factor for steering adjustments
Introduced a new parameter, `HkgTuningAngleSmoothingFactor`, to apply exponential moving average (EMA) smoothing to steering angle changes, reducing sudden adjustments. Added associated UI controls, parameter persistence, and integration into Hyundai carcontroller logic for improved steering stability.
2025-05-25 17:31:19 +02:00
DevTekVE 252ef572d3 Revert the EMA calculation on the curvature to test another approach 2025-05-25 17:31:19 +02:00
DevTekVE 414d397e3f Handle missing pygame import gracefully
Wrap the pygame import in a try-except block to catch ImportError. This prevents the script from crashing and provides a clear message prompting the user to install pygame if it's missing.

Remove "inputs" package and update "pygame" dependency

The "inputs" package has been removed from the lockfile and dependency list, while "pygame" is now included universally without the "dev" extra marker. This change simplifies dependencies and ensures consistency across environments.

Update dependencies: replace 'inputs' with 'pygame'

Replaced the 'inputs' library with 'pygame' for joystickd dependencies in `pyproject.toml`. Additionally, removed a redundant 'pygame' entry from the general dependencies.

Ugly, I know, but soundd is unhappy with joystick

Allowing lat with mads

Invert steering input for joystick control

The steering axis input is now multiplied by -1 to reverse its direction. This ensures correct handling of the left stick's horizontal input, aligning behavior with expected control dynamics.

Refactor joystick control to use pygame for broader support

Replaced the `inputs` library with `pygame` for joystick handling, providing improved compatibility with Xbox and PlayStation controllers. Added initialization, adaptive mappings, deadzone handling, and enhanced event processing for robust joystick operation. Updated README with dependencies and usage information for Xbox controllers.
2025-05-25 17:31:19 +02:00
DevTekVE 11b7b3789d Adjust speed thresholds in filter_speed_matrox.
Updated the `filter_speed_matrox` values to improve curvature filtering behavior at different speeds. This change ensures better handling and stability across a wider range of driving conditions.
2025-05-25 17:31:19 +02:00
DevTekVE 871ac53717 Optimize curvature filtering by adding speed-dependent logic.
Introduced speed-based dynamic alpha adjustment using interpolation for smoother curvature filtering. This improves steering angle calculations by adapting filter sensitivity to vehicle speed, enhancing control performance.
2025-05-25 17:31:19 +02:00
DevTekVE 64ea66b6e6 chsnge alpha to nicer value 2025-05-25 17:31:19 +02:00
DevTekVE 6d7c6759b3 Adjust curvature handling and filtering parameters
Updated curvature breakpoints and torque scaling for improved control in sharp turns. Increased filter alpha for faster curvature response while maintaining system stability.
2025-05-25 17:31:18 +02:00
DevTekVE 4cea013570 Adjust curvature handling and filtering parameters
Updated curvature breakpoints in Hyundai carcontroller to improve torque scaling for curved driving. Slightly refined the filter coefficient in lateral control for smoother curvature filtering and more accurate steering adjustments.
2025-05-25 17:31:18 +02:00
DevTekVE eb375c0587 Refactor curvature-based steering angle and torque logic.
Introduced dynamic torque scaling based on curvature for smoother and more adaptive steering control. Replaced raw curvature inputs with filtered curvature for enhanced stability and reduced noise in steering angle calculations. Removed unused speed scaling logic to simplify the lateral control flow.
2025-05-25 17:31:18 +02:00
DevTekVE 7fd8a5a4bd Reapply "Significant improvement on the jerkiness"
This reverts commit 85ce84e7b7.
2025-05-25 17:31:18 +02:00
DevTekVE b3c90216bb Revert "Significant improvement on the jerkiness"
This reverts commit ea1af879ba2905b076ccfe65993a9db701d689dd.

Revert "More improvement but still not quite"

This reverts commit ad95493c5c61b2ace7c459d2ebc151ddaa80040f.

Revert "Adjust low-speed scaling for lateral control angle"

This reverts commit 6f789ac1ebb66b0239b4028303573c2d7d386b39.

Revert "Refactor speed-based steering scaling logic."

This reverts commit 1d40735ab8db8d470ff3b287a6b42847beffff7d.
2025-05-25 17:31:18 +02:00
DevTekVE 10f345f956 Refactor speed-based steering scaling logic.
Updated the steering angle computation to use a clearer and more descriptive speed-scaling configuration. Replaced low-speed-specific logic with a generalized approach based on speed breakpoints and corresponding influence factors. This improves maintainability and ensures smoother steering adjustments at varying speeds.
2025-05-25 17:31:18 +02:00
DevTekVE 956d2c36d0 Adjust low-speed scaling for lateral control angle
Refined the low-speed scaling parameters by modifying speed breakpoints and factors. This improves handling at lower speeds for smoother and more predictable behavior.
2025-05-25 17:31:18 +02:00
DevTekVE 55e688b6f2 More improvement but still not quite 2025-05-25 17:31:17 +02:00
DevTekVE f017954027 Significant improvement on the jerkiness 2025-05-25 17:31:17 +02:00
DevTekVE 7e992d11b1 bump panda and opendbc 2025-05-25 17:31:15 +02:00
276 changed files with 9595 additions and 13917 deletions
+1
View File
@@ -2,5 +2,6 @@ Wen
REGIST
PullRequest
cancelled
indeces
FOF
NoO
@@ -34,10 +34,10 @@ jobs:
echo "tinygrad_ref=$ref" >> $GITHUB_OUTPUT
echo "tinygrad_ref is $ref"
- name: Checkout docs repo (sunnypilot-docs, gh-pages)
- name: Checkout docs repo (sunnypilot-models, gh-pages)
uses: actions/checkout@v4
with:
repository: sunnypilot/sunnypilot-docs
repository: sunnypilot/sunnypilot-models
ref: gh-pages
path: docs
ssh-key: ${{ secrets.CI_SUNNYPILOT_DOCS_PRIVATE_KEY }}
@@ -202,7 +202,7 @@ jobs:
- name: Checkout docs repo
uses: actions/checkout@v4
with:
repository: sunnypilot/sunnypilot-docs
repository: sunnypilot/sunnypilot-models
ref: gh-pages
path: docs
ssh-key: ${{ secrets.CI_SUNNYPILOT_DOCS_PRIVATE_KEY }}
@@ -119,7 +119,7 @@ jobs:
- name: Checkout docs repo
uses: actions/checkout@v4
with:
repository: sunnypilot/sunnypilot-docs
repository: sunnypilot/sunnypilot-models
ref: gh-pages
path: docs
ssh-key: ${{ secrets.CI_SUNNYPILOT_DOCS_PRIVATE_KEY }}
-66
View File
@@ -1,66 +0,0 @@
name: sunnypilot docs
on:
push:
branches:
- docs
paths:
- 'docs_sp/**'
- 'zensical.toml'
pull_request:
paths:
- 'docs_sp/**'
- 'zensical.toml'
concurrency:
group: docs-sp-${{ github.event_name == 'push' && github.ref == 'refs/heads/docs' && github.run_id || github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
build:
name: build sunnypilot docs
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: |
pip install uv
uv pip install --system zensical
- name: Build docs
run: zensical build
# Push to docs.sunnypilot.ai
- uses: actions/checkout@v6
if: github.ref == 'refs/heads/docs' && github.repository == 'sunnypilot/sunnypilot'
with:
path: sunnypilot-docs
ssh-key: ${{ secrets.OPENPILOT_DOCS_KEY }}
repository: sunnypilot/sunnypilot-docs
- name: Push to GitHub Pages
if: github.ref == 'refs/heads/docs' && github.repository == 'sunnypilot/sunnypilot'
run: |
set -x
source release/identity.sh
cd sunnypilot-docs
git checkout --orphan tmp
git rm -rf .
cp -r ../docs_site_sp/ docs/
touch docs/.nojekyll
echo -n docs.sunnypilot.ai > docs/CNAME
git add -f .
git commit -m "build sunnypilot docs"
git push -f origin tmp:gh-pages
-47
View File
@@ -1,47 +0,0 @@
name: Sync docs to Discourse
on:
workflow_run:
workflows: ["sunnypilot docs"]
types:
- completed
branches:
- docs
concurrency:
group: forum-docs-sync
cancel-in-progress: true
jobs:
sync:
name: sync docs to Discourse
runs-on: ubuntu-24.04
if: >
github.event.workflow_run.conclusion == 'success' &&
github.repository == 'sunnypilot/sunnypilot'
steps:
- uses: actions/checkout@v6
with:
ref: docs
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Restore sync cache
uses: actions/cache@v4
with:
path: .discourse_sync_cache
key: discourse-sync-${{ hashFiles('docs_sp/**/*.md') }}
restore-keys: |
discourse-sync-
- name: Sync to Discourse
env:
DISCOURSE_URL: ${{ secrets.DISCOURSE_URL }}
DISCOURSE_API_KEY: ${{ secrets.DISCOURSE_API_KEY }}
DISCOURSE_API_USER: ${{ secrets.DISCOURSE_API_USER }}
DISCOURSE_CATEGORY: ${{ vars.DISCOURSE_DOCS_CATEGORY || 'documentation' }}
DOCS_BASE_URL: https://docs.sunnypilot.ai
run: ruby docs_sp/tools/sync_docs_discourse.rb --verbose
@@ -0,0 +1,105 @@
name: 'Post to Discourse'
description: 'Posts a message to a Discourse topic (existing or new)'
inputs:
discourse-url:
description: 'Discourse instance URL (e.g., https://discourse.example.com)'
required: true
api-key:
description: 'Discourse API key'
required: true
api-username:
description: 'Discourse API username'
required: true
topic-id:
description: 'Discourse topic ID to post to (use this OR category-id + title)'
required: false
category-id:
description: 'Category ID for new topic (required if topic-id not provided)'
required: false
title:
description: 'Title for new topic (required if topic-id not provided)'
required: false
message:
description: 'Message content (markdown supported)'
required: true
outputs:
post-number:
description: 'The post number in the topic'
value: ${{ steps.post.outputs.post_number }}
post-url:
description: 'Direct URL to the post'
value: ${{ steps.post.outputs.post_url }}
topic-id:
description: 'The topic ID (useful when creating a new topic)'
value: ${{ steps.post.outputs.topic_id }}
runs:
using: "composite"
steps:
- name: Post to Discourse
id: post
shell: bash
run: |
# Validate inputs
if [ -z "${{ inputs.topic-id }}" ] && ([ -z "${{ inputs.category-id }}" ] || [ -z "${{ inputs.title }}" ]); then
echo "❌ Error: Must provide either topic-id OR both category-id and title"
exit 1
fi
if [ -n "${{ inputs.topic-id }}" ] && ([ -n "${{ inputs.category-id }}" ] || [ -n "${{ inputs.title }}" ]); then
echo "⚠️ Warning: Both topic-id and category-id/title provided. Will post to existing topic."
fi
# Determine if creating new topic or posting to existing
if [ -n "${{ inputs.topic-id }}" ]; then
echo "📝 Posting to existing topic ID: ${{ inputs.topic-id }}"
# Create JSON payload for posting to existing topic
PAYLOAD=$(jq -n \
--arg content '${{ inputs.message }}' \
--arg topic_id "${{ inputs.topic-id }}" \
'{topic_id: $topic_id, raw: $content}')
else
echo "✨ Creating new topic: ${{ inputs.title }}"
# Create JSON payload for new topic
PAYLOAD=$(jq -n \
--arg content '${{ inputs.message }}' \
--arg title "${{ inputs.title }}" \
--arg category "${{ inputs.category-id }}" \
'{title: $title, category: ($category | tonumber), raw: $content}')
fi
# Post to Discourse
RESPONSE=$(curl -s -w "\n%{http_code}" \
-X POST "${{ inputs.discourse-url }}/posts.json" \
-H "Content-Type: application/json" \
-H "Api-Key: ${{ inputs.api-key }}" \
-H "Api-Username: ${{ inputs.api-username }}" \
-d "$PAYLOAD")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | sed '$d')
if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
echo "✅ Successfully posted to Discourse!"
POST_NUMBER=$(echo "$BODY" | jq -r '.post_number // "unknown"')
TOPIC_ID=$(echo "$BODY" | jq -r '.topic_id // "${{ inputs.topic-id }}"')
POST_URL="${{ inputs.discourse-url }}/t/${TOPIC_ID}/${POST_NUMBER}"
echo "post_number=${POST_NUMBER}" >> $GITHUB_OUTPUT
echo "post_url=${POST_URL}" >> $GITHUB_OUTPUT
echo "topic_id=${TOPIC_ID}" >> $GITHUB_OUTPUT
echo "Topic ID: ${TOPIC_ID}"
echo "Post number: ${POST_NUMBER}"
echo "URL: ${POST_URL}"
else
echo "❌ Failed to post to Discourse"
echo "HTTP Code: ${HTTP_CODE}"
echo "Response: ${BODY}"
exit 1
fi
-1
View File
@@ -72,7 +72,6 @@ jobs:
git add .
- name: update car docs
run: |
scons -j$(nproc) --minimal opendbc_repo
python selfdrive/car/docs.py
git add docs/CARS.md
- name: Create Pull Request
-93
View File
@@ -1,93 +0,0 @@
# Discourse Docs Sync — one-way push from docs_sp/ Markdown to Discourse API.
#
# WARNING: This workflow is strictly for Discourse API syncing.
# Do NOT add Zensical build steps, GitHub Pages deployment, or any
# static-site generation to this file. Those belong in docs.yaml.
name: Sync Docs to Discourse
on:
push:
# paths:
# - "docs_sp/**"
# - "zensical.toml"
pull_request:
# paths:
# - "docs_sp/**"
# - "zensical.toml"
workflow_dispatch:
jobs:
smoke-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup environment
run: ./tools/op.sh setup
- name: Smoke test - post one doc to Discourse
env:
DISCOURSE_URL: ${{ secrets.DISCOURSE_URL }}
DISCOURSE_API_KEY: ${{ secrets.DISCOURSE_API_KEY }}
DISCOURSE_API_USER: ${{ secrets.DISCOURSE_API_USER }}
DISCOURSE_CATEGORY_MAP: '{"getting-started": 133}'
run: |
uv run --python 3.12 python -c "
import os, sys
sys.path.insert(0, 'docs_sp/tools')
from pathlib import Path
from converter import convert
from discourse_client import DiscourseClient, DiscourseConfig
DOC_PATH = 'getting-started/what-is-sunnypilot.md'
GITHUB_BRANCH = os.environ.get('GITHUB_REF_NAME', 'master')
raw = (Path('docs_sp') / DOC_PATH).read_text()
body = convert(raw, file_path=DOC_PATH)
# Append sync footer
gh_url = f'https://github.com/sunnypilot/sunnypilot/blob/{GITHUB_BRANCH}/docs_sp/{DOC_PATH}'
body = body.rstrip('\n') + f'\n\n---\n<small>This document is version-controlled. Suggest changes [on GitHub]({gh_url}).</small>\n\n[^docs-sync]: docs-sync-id: {DOC_PATH}\n'
# Extract title from front matter or first heading
title = None
for line in raw.splitlines():
s = line.strip()
if s.startswith('title:'):
title = s[len('title:'):].strip().strip('\"').strip(\"'\")
break
if s.startswith('# '):
title = s[2:].strip()
break
title = f'{title or \"What is sunnypilot?\"} - sunnypilot Docs'
print(f'Title: {title}')
print(f'Body: {len(body)} chars')
config = DiscourseConfig.from_env()
client = DiscourseClient(config)
category_id = config.category_id_for(DOC_PATH)
print(f'Category ID: {category_id}')
existing = client.find_topic_by_sync_id(DOC_PATH)
if existing is not None:
topic_id = existing['id']
post_id = client.first_post_id(topic_id)
if post_id is None:
print(f'ERROR: No first post for topic {topic_id}')
sys.exit(1)
result = client.update_post(post_id, body, edit_reason='CI smoke test')
if result is None:
print('ERROR: Failed to update post')
sys.exit(1)
print(f'Updated: {config.base_url}/t/{topic_id}')
else:
result = client.create_topic(title=title, raw=body, category_id=category_id, tags=['docs-auto-sync'])
if result is None:
print('ERROR: Failed to create topic')
sys.exit(1)
print(f'Created: {config.base_url}/t/{result.get(\"topic_id\", \"?\")}')
print('Smoke test passed!')
"
+78
View File
@@ -0,0 +1,78 @@
name: Debug Discourse Posting
on:
push:
jobs:
test-discourse-post:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Post test message to Discourse
uses: ./.github/workflows/post-to-discourse
with:
discourse-url: ${{ vars.DISCOURSE_URL }}
api-key: ${{ secrets.DISCOURSE_API_KEY }}
api-username: ${{ secrets.DISCOURSE_API_USERNAME }}
topic-id: ${{ vars.DISCOURSE_UPDATES_TOPIC_ID }}
message: |
## 🧪 Test Post from GitHub Actions
**This is a test post to verify Discourse integration**
- **Workflow**: ${{ github.workflow }}
- **Run Number**: #${{ github.run_number }}
- **Branch**: `${{ github.ref_name }}`
- **Commit**: ${{ github.sha }}
- **Actor**: @${{ github.actor }}
- **Timestamp**: ${{ github.event.head_commit.timestamp }}
---
### Fake Build Info (for testing)
- **Version**: 0.9.8-test
- **Build**: #42
- **Branch**: release-test
[View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
*This is an automated test message. Drive safe! 🚗💨*
- name: Create topic on Discourse
uses: ./.github/workflows/post-to-discourse
with:
discourse-url: ${{ vars.DISCOURSE_URL }}
api-key: ${{ secrets.DISCOURSE_API_KEY }}
api-username: ${{ secrets.DISCOURSE_API_USERNAME }}
#topic-id: ${{ vars.DISCOURSE_UPDATES_TOPIC_ID }}
category-id: 4
title: "This is a test of a new topic instead of a reply"
message: |
## 🧪 Test Post from GitHub Actions
**This is a test post to verify Discourse integration**
- **Workflow**: ${{ github.workflow }}
- **Run Number**: #${{ github.run_number }}
- **Branch**: `${{ github.ref_name }}`
- **Commit**: ${{ github.sha }}
- **Actor**: @${{ github.actor }}
- **Timestamp**: ${{ github.event.head_commit.timestamp }}
---
### Fake Build Info (for testing)
- **Version**: 0.9.8-test
- **Build**: #42
- **Branch**: release-test
[View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
*This is an automated test message. Drive safe! 🚗💨*
- name: Display results
if: always()
run: |
echo "::notice::Discourse post test completed"
echo "Check your Discourse topic to verify the post appeared correctly"
+1 -1
View File
@@ -181,7 +181,7 @@ jobs:
echo "${{ github.sha }}" > ref_commit
git add .
git commit -m "process-replay refs for ${{ github.repository }}@${{ github.sha }}" || echo "No changes to commit"
git push origin process-replay
git push origin process-replay --force
- name: Run regen
if: false
timeout-minutes: 4
+13 -28
View File
@@ -13,15 +13,13 @@ venv/
a.out
.hypothesis
.cache/
/docs_site/
/docs_site_sp/
/.discourse_sync_cache/
bin/
*.mp4
*.dylib
*.DSYM
*.d
*.pem
*.pyc
*.pyo
.*.swp
@@ -41,11 +39,13 @@ a.out
*.mo
*_pyx.cpp
*.stats
*.pkl
*.pkl*
config.json
clcache
compile_commands.json
compare_runtime*.html
# build artifacts
selfdrive/pandad/pandad
cereal/services.h
cereal/gen
@@ -58,51 +58,36 @@ system/camerad/test/ae_gray_test
.coverage*
coverage.xml
htmlcov
pandaextra
.mypy_cache/
flycheck_*
cppcheck_report.txt
comma*.sh
selfdrive/modeld/models/*.pkl*
sunnypilot/modeld*/models/*.pkl
# openpilot log files
*.bz2
*.zst
*.rlog
build/
!**/.gitkeep
poetry.toml
Pipfile
### VisualStudioCode ###
*.vsix
.history
.ionide
.vscode/*
.history/
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# agents
.claude/
.context/
PLAN.md
TASK.md
CLAUDE.md
SKILL.md
### JetBrains ###
!.idea/customTargets.xml
+7
View File
@@ -21,5 +21,12 @@
</clean>
</configuration>
</target>
<target id="f2590b2b-9b93-49f9-8510-da3f3724a2ae" name="replay" defaultType="TOOL">
<configuration id="d475264f-6f4c-4092-9b4e-6773309f38b7" name="replay" toolchainName="Default">
<build type="TOOL">
<tool actionId="Tool_External Tools_uv build tools replay" />
</build>
</configuration>
</target>
</component>
</project>
+7
View File
@@ -20,4 +20,11 @@
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
<tool name="uv build tools replay" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="false" showConsoleOnStdErr="false" synchronizeAfterRun="true">
<exec>
<option name="COMMAND" value="bash" />
<option name="PARAMETERS" value="-c &quot;source .venv/bin/activate &amp;&amp; scons -u -j$(nproc) tools/replay/&quot;" />
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
</toolSet>
+1
View File
@@ -0,0 +1 @@
3.12.13
+1 -1
View File
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Build Debug" type="CLionExternalRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$/selfdrive/ui" PASS_PARENT_ENVS_2="true" PROJECT_NAME="sunnypilot" TARGET_NAME="uv Scons Build Debug" CONFIG_NAME="uv Scons Build Debug" RUN_PATH="ui">
<configuration default="false" name="Build Debug" type="CLionExternalRunConfiguration" factoryName="Application" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="false" WORKING_DIR="file://$ProjectFileDir$/selfdrive/ui" PASS_PARENT_ENVS_2="true" PROJECT_NAME="openpilot-special" TARGET_NAME="uv Scons Build Debug" CONFIG_NAME="uv Scons Build Debug" RUN_PATH="ui">
<envs>
<env name="QT_DBL_CLICK_DIST" value="150" />
</envs>
+27
View File
@@ -0,0 +1,27 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Debug Route Controls" type="PythonConfigurationType" factoryName="Python">
<module name="openpilot-special" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="FINGERPRINT" value="KIA_EV9" />
<env name="SKIP_FW_QUERY" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/selfdrive/car" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/selfdrive/car/card.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="true" />
<option name="MODULE_MODE" value="false" />
<option name="REDIRECT_INPUT" value="false" />
<option name="INPUT_FILE" value="" />
<method v="2" />
</configuration>
</component>
+7
View File
@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Replay for controls + ui" type="Multirun" separateTabs="false" reuseTabsWithFailures="false" startOneByOne="true" markFailedProcess="true" hideSuccessProcess="false" delayTime="0.0">
<runConfiguration name="replay for controls" type="Native Application" />
<runConfiguration name="Build Debug" type="Custom Build Application" />
<method v="2" />
</configuration>
</component>
+7
View File
@@ -0,0 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="replay for controls" type="CLionNativeAppRunConfigurationType" focusToolWindowBeforeRun="true" PROGRAM_PARAMS="&quot;$Prompt$&quot; --block &quot;sendcan,carState,carParams,carOutput,liveTracks,carParamsSP,carStateSP,bookmarkButton&quot;" REDIRECT_INPUT="false" ELEVATE="false" USE_EXTERNAL_CONSOLE="false" EMULATE_TERMINAL="true" WORKING_DIR="file://$ProjectFileDir$/tools/replay" PASS_PARENT_ENVS_2="true" PROJECT_NAME="openpilot-special" TARGET_NAME="replay" CONFIG_NAME="replay" version="1" RUN_PATH="replay">
<method v="2">
<option name="CLION.COMPOUND.BUILD" enabled="true" />
</method>
</configuration>
</component>
Vendored
+4 -4
View File
@@ -167,7 +167,7 @@ node {
env.GIT_COMMIT = checkout(scm).GIT_COMMIT
def excludeBranches = ['__nightly', 'devel', 'devel-staging', 'release3', 'release3-staging',
'release-tici', 'release-tizi', 'release-tizi-staging', 'testing-closet*', 'hotfix-*']
'release-tici', 'release-tizi', 'release-tizi-staging', 'release-mici-staging', 'testing-closet*', 'hotfix-*']
def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*')
if (env.BRANCH_NAME != 'master' && !env.BRANCH_NAME.contains('__jenkins_loop_')) {
@@ -179,7 +179,7 @@ node {
try {
if (env.BRANCH_NAME == 'devel-staging') {
deviceStage("build release-tizi-staging", "tizi-needs-can", [], [
step("build release-tizi-staging", "RELEASE_BRANCH=release-tizi-staging $SOURCE_DIR/release/build_release.sh"),
step("build release-tizi-staging", "RELEASE_BRANCH=release-tizi-staging $SOURCE_DIR/release/build_release.sh && git push -f origin release-tizi-staging:release-mici-staging"),
])
}
@@ -218,14 +218,14 @@ node {
'camerad OX03C10': {
deviceStage("OX03C10", "tizi-ox03c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py", [diffPaths: ["panda", "selfdrive/pandad/"]]),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 90]),
])
},
'camerad OS04C10': {
deviceStage("OS04C10", "tici-os04c10", ["UNSAFE=1"], [
step("build", "cd system/manager && ./build.py"),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py", [diffPaths: ["panda", "selfdrive/pandad/"]]),
step("test pandad", "pytest selfdrive/pandad/tests/test_pandad.py"),
step("test camerad", "pytest system/camerad/test/test_camerad.py", [timeout: 90]),
])
},
+10 -2
View File
@@ -1,8 +1,16 @@
Version 0.10.4 (2026-02-17)
Version 0.11.1 (2026-04-08)
========================
* New driver monitoring model
* Improved image processing pipeline for driver camera
Version 0.11.0 (2026-03-17)
========================
* New driving model #36798
* Fully trained using a learned simulator
* Improved longitudinal performance in Experimental mode
* Reduce comma four standby power usage by 77% to 52 mW
* Kia K7 2017 support thanks to royjr!
* Lexus LS 2018 support thanks to Hacheoy!
* Reduce comma four standby power usage by 77% to 52 mW
Version 0.10.3 (2025-12-17)
========================
+54 -38
View File
@@ -4,9 +4,11 @@ import sys
import sysconfig
import platform
import shlex
import importlib
import numpy as np
import SCons.Errors
from SCons.Defaults import _stripixes
SCons.Warnings.warningAsException(True)
@@ -14,9 +16,6 @@ Decider('MD5-timestamp')
SetOption('num_jobs', max(1, int(os.cpu_count()/2)))
AddOption('--asan', action='store_true', help='turn on ASAN')
AddOption('--ubsan', action='store_true', help='turn on UBSan')
AddOption('--mutation', action='store_true', help='generate mutation-ready code')
AddOption('--ccflags', action='store', type='string', default='', help='pass arbitrary flags over the command line')
AddOption('--verbose', action='store_true', default=False, help='show full build commands')
AddOption('--minimal',
@@ -38,23 +37,46 @@ assert arch in [
"Darwin", # macOS arm64 (x86 not supported)
]
if arch != "larch64":
import bzip2
import capnproto
import eigen
import ffmpeg as ffmpeg_pkg
import libjpeg
import libyuv
import ncurses
import python3_dev
import zeromq
import zstd
pkgs = [bzip2, capnproto, eigen, ffmpeg_pkg, libjpeg, libyuv, ncurses, zeromq, zstd]
py_include = python3_dev.INCLUDE_DIR
else:
# TODO: remove when AGNOS has our new vendor pkgs
pkgs = []
py_include = sysconfig.get_paths()['include']
pkg_names = ['bzip2', 'capnproto', 'eigen', 'ffmpeg', 'libjpeg', 'libyuv', 'ncurses', 'zeromq', 'zstd']
pkgs = [importlib.import_module(name) for name in pkg_names]
# ***** enforce a whitelist of system libraries *****
# this prevents silently relying on a 3rd party package,
# e.g. apt-installed libusb. all libraries should either
# be distributed with all Linux distros and macOS, or
# vendored in commaai/dependencies.
allowed_system_libs = {
"EGL", "GLESv2", "GL", "Qt5Charts", "Qt5Core", "Qt5Gui", "Qt5Widgets",
"dl", "drm", "gbm", "m", "pthread",
}
def _resolve_lib(env, name):
for d in env.Flatten(env.get('LIBPATH', [])):
p = Dir(str(d)).abspath
for ext in ('.a', '.so', '.dylib'):
f = File(os.path.join(p, f'lib{name}{ext}'))
if f.exists() or f.has_builder():
return name
if name in allowed_system_libs:
return name
raise SCons.Errors.UserError(f"Unexpected non-vendored library '{name}'")
def _libflags(target, source, env, for_signature):
libs = []
lp = env.subst('$LIBLITERALPREFIX')
for lib in env.Flatten(env.get('LIBS', [])):
if isinstance(lib, str):
if os.sep in lib or lib.startswith('#'):
libs.append(File(lib))
elif lib.startswith('-') or (lp and lib.startswith(lp)):
libs.append(lib)
else:
libs.append(_resolve_lib(env, lib))
else:
libs.append(lib)
return _stripixes(env['LIBLINKPREFIX'], libs, env['LIBLINKSUFFIX'],
env['LIBPREFIXES'], env['LIBSUFFIXES'], env, env['LIBLITERALPREFIX'])
env = Environment(
ENV={
@@ -107,14 +129,14 @@ env = Environment(
tools=["default", "cython", "compilation_db", "rednose_filter"],
toolpath=["#site_scons/site_tools", "#rednose_repo/site_scons/site_tools"],
)
if arch != "larch64":
env['_LIBFLAGS'] = _libflags
# Arch-specific flags and paths
if arch == "larch64":
env["CC"] = "clang"
env["CXX"] = "clang++"
env.Append(LIBPATH=[
"/usr/local/lib",
"/system/vendor/lib64",
"/usr/lib/aarch64-linux-gnu",
])
arch_flags = ["-D__TICI__", "-mcpu=cortex-a57", "-DQCOM2"]
@@ -126,19 +148,6 @@ elif arch == "Darwin":
])
env.Append(CCFLAGS=["-DGL_SILENCE_DEPRECATION"])
env.Append(CXXFLAGS=["-DGL_SILENCE_DEPRECATION"])
else:
env.Append(LIBPATH=[
"/usr/lib",
"/usr/local/lib",
])
# Sanitizers and extra CCFLAGS from CLI
if GetOption('asan'):
env.Append(CCFLAGS=["-fsanitize=address", "-fno-omit-frame-pointer"])
env.Append(LINKFLAGS=["-fsanitize=address"])
elif GetOption('ubsan'):
env.Append(CCFLAGS=["-fsanitize=undefined"])
env.Append(LINKFLAGS=["-fsanitize=undefined"])
_extra_cc = shlex.split(GetOption('ccflags') or '')
if _extra_cc:
@@ -176,7 +185,7 @@ if os.environ.get('SCONS_PROGRESS'):
# ********** Cython build environment **********
envCython = env.Clone()
envCython["CPPPATH"] += [py_include, np.get_include()]
envCython["CPPPATH"] += [sysconfig.get_paths()['include'], np.get_include()]
envCython["CCFLAGS"] += ["-Wno-#warnings", "-Wno-cpp", "-Wno-shadow", "-Wno-deprecated-declarations"]
envCython["CCFLAGS"].remove("-Werror")
@@ -210,7 +219,6 @@ Export('common')
env_swaglog = env.Clone()
env_swaglog['CXXFLAGS'].append('-DSWAGLOG="\\"common/swaglog.h\\""')
SConscript(['msgq_repo/SConscript'], exports={'env': env_swaglog})
SConscript(['opendbc_repo/SConscript'], exports={'env': env_swaglog})
SConscript(['cereal/SConscript'])
@@ -236,7 +244,15 @@ if arch == "larch64":
# Build openpilot
SConscript(['third_party/SConscript'])
SConscript(['selfdrive/SConscript'])
# Build selfdrive
SConscript([
'selfdrive/pandad/SConscript',
'selfdrive/controls/lib/lateral_mpc_lib/SConscript',
'selfdrive/controls/lib/longitudinal_mpc_lib/SConscript',
'selfdrive/locationd/SConscript',
'selfdrive/modeld/SConscript',
'selfdrive/ui/SConscript',
])
SConscript(['sunnypilot/SConscript'])
-1
View File
@@ -1 +0,0 @@
*.cpp
+1 -1
View File
@@ -1,4 +1,4 @@
Import('env', 'envCython', 'arch')
Import('env', 'envCython')
common_libs = [
'params.cc',
+1 -1
View File
@@ -28,7 +28,7 @@ class BounceFilter(FirstOrderFilter):
scale = self.dt / (1.0 / 60.0) # tuned at 60 fps
self.velocity.x += (x - self.x) * self.bounce * scale * self.dt
self.velocity.update(0.0)
if abs(self.velocity.x) < 1e-5:
if abs(self.velocity.x) < 1e-3:
self.velocity.x = 0.0
self.x += self.velocity.x
return self.x
+7
View File
@@ -275,4 +275,11 @@ inline static std::unordered_map<std::string, ParamKeyAttributes> keys = {
{"TorqueParamsOverrideEnabled", {PERSISTENT | BACKUP, BOOL, "0"}},
{"TorqueParamsOverrideFriction", {PERSISTENT | BACKUP, FLOAT, "0.1"}},
{"TorqueParamsOverrideLatAccelFactor", {PERSISTENT | BACKUP, FLOAT, "2.5"}},
// Tuning keys
{"EnableHkgTuningAngleSmoothingFactor", {PERSISTENT | BACKUP, BOOL, "1"}},
{"HkgTuningAngleMinTorqueReductionGain", {PERSISTENT | BACKUP, INT, "10"}},
{"HkgTuningAngleMaxTorqueReductionGain", {PERSISTENT | BACKUP, INT, "100"}},
{"HkgTuningAngleActiveTorqueReductionGain", {PERSISTENT | BACKUP, INT, "100"}},
{"HkgTuningOverridingCycles", {PERSISTENT | BACKUP, INT, "17"}},
};
+2 -1
View File
@@ -2,6 +2,7 @@ import datetime
from pathlib import Path
MIN_DATE = datetime.datetime(year=2025, month=2, day=21)
MAX_DATE = datetime.datetime(year=2035, month=1, day=1)
def min_date():
# on systemd systems, the default time is the systemd build time
@@ -12,4 +13,4 @@ def min_date():
return MIN_DATE
def system_time_valid():
return datetime.datetime.now() > min_date()
return min_date() < datetime.datetime.now() < MAX_DATE
-2
View File
@@ -1,2 +0,0 @@
transformations
transformations.cpp
+1 -1
View File
@@ -1 +1 @@
#define COMMA_VERSION "0.10.4"
#define COMMA_VERSION "0.11.1"
-1
View File
@@ -10,7 +10,6 @@ from openpilot.system.hardware import TICI, HARDWARE
# TODO: pytest-cpp doesn't support FAIL, and we need to create test translations in sessionstart
# pending https://github.com/pytest-dev/pytest-cpp/pull/147
collect_ignore = [
"selfdrive/ui/tests/test_translations",
"selfdrive/test/process_replay/test_processes.py",
"selfdrive/test/process_replay/test_regen.py",
]
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f64cd24ccac9a73100f206909639424421db1fce74dc77c386cdeefa9d16df9c
size 1959
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:66b3aefa108dd0c7f64205a11e424430c318e6fd06de31b5550d0b9d05616e6a
size 19035
-27
View File
@@ -1,27 +0,0 @@
---
title: Contributing
---
# Contributing to sunnypilot
We welcome contributions from the community! Here's how you can help.
## Ways to Contribute
- **Report bugs** — See [Reporting a Bug](reporting-a-bug.md)
- **Submit code** — Follow the [Workflow](workflow.md) guide
- **Improve documentation** — Submit PRs to the `docs` branch
- **Help others** — Join the [sunnypilot community forum](https://community.sunnypilot.ai)
## Code of Conduct
Be respectful, constructive, and helpful. We're all here to make driving safer and more enjoyable.
## Getting Started
1. Fork the [sunnypilot repository](https://github.com/sunnypilot/sunnypilot)
2. Create a feature branch
3. Make your changes
4. Submit a pull request
See [Workflow](workflow.md) for detailed steps.
-12
View File
@@ -1,12 +0,0 @@
---
title: Community
---
# Community
Get involved with sunnypilot development and connect with other users.
- **[Contributing](contributing.md)** - How to contribute code, documentation, and translations
- **[Workflow](workflow.md)** - Development workflow and branch strategy
- **[Reporting a Bug](reporting-a-bug.md)** - How to file an effective bug report
- **[Community Forum](https://community.sunnypilot.ai)** - Join the discussion
-69
View File
@@ -1,69 +0,0 @@
---
title: Reporting a Bug
---
# Reporting a Bug
Help us improve sunnypilot by reporting issues you encounter.
## Before Reporting
!!! warning "Remove Customizations First"
If you have any custom modifications (forks, patches, config tweaks), **remove them and reproduce the issue on an official sunnypilot branch** before reporting. This rules out your modifications as the cause and helps maintainers focus on real bugs.
1. **Upgrade** to the latest version — the bug may already be fixed
2. **Remove customizations** — reproduce on a stock official branch
3. **Search** [GitHub Issues](https://github.com/sunnypilot/sunnypilot/issues) and the [sunnypilot community forum](https://community.sunnypilot.ai) for known reports
4. **Preserve the route** — upload raw logs via [Comma Connect](https://connect.comma.ai) and keep the route available
## What to Include
### Required Information
- **Dongle ID** — Your comma Dongle ID (found in **Settings****Device** or in Comma Connect)
- **Route ID** — The route ID from Comma Connect for the drive where the issue occurred
- **Device info** — Hardware model (C3, C3X, C4), software version, branch
- **Vehicle info** — Make, model, year
### Bug Report Template
Use the following structure when filing your report:
!!! example "Bug Report Format"
**Title:** One-sentence summary of the issue
**Description:** 1-2 sentences providing additional context about the problem.
**Steps to Reproduce:**
1. Step one
2. Step two
3. Step three
**Expected behavior:** What should have happened
**Actual behavior:** What actually happened
**Related Links:** Route link, log files, screenshots, or references to related issues
## Pre-Submission Checklist
Before submitting, confirm the following:
- [ ] I am running the latest version of sunnypilot
- [ ] I have removed all custom modifications and reproduced the issue on an official branch
- [ ] I have searched existing issues and community channels for duplicates
- [ ] I have preserved the route and uploaded raw logs via Comma Connect
- [ ] I have included my comma Dongle ID
- [ ] I have included the Route ID for the affected drive
## How to Report
1. Go to [GitHub Issues](https://github.com/sunnypilot/sunnypilot/issues/new)
2. Use the bug report template
3. Fill in all requested information using the format above
4. Submit the issue
!!! tip
The more detail you provide, the faster we can diagnose and fix the issue. Incomplete reports without Dongle IDs or route information may be closed.
-37
View File
@@ -1,37 +0,0 @@
---
title: Workflow
---
# Development Workflow
How to contribute code to sunnypilot.
## Prerequisites
- Git installed
- Python 3.12+
- A GitHub account
## Steps
1. **Fork** the repository on GitHub
2. **Clone** your fork locally
3. **Create a branch** from the appropriate base branch
4. **Make changes** and test locally
5. **Push** your branch to your fork
6. **Open a pull request** against the main repository
## Branch Naming
Use descriptive branch names:
- `feat/feature-name` — New features
- `fix/bug-description` — Bug fixes
- `docs/topic` — Documentation changes
## Pull Request Guidelines
- Keep PRs focused on a single change
- Include a clear description of what and why
- Reference any related issues
- Ensure tests pass
-10
View File
@@ -1,10 +0,0 @@
---
title: Connected Services
---
# Connected Services
Cloud and map integrations that extend sunnypilot beyond the vehicle.
- [sunnylink](sunnylink.md) - settings backup/restore, sponsor tiers, GitHub account pairing, and remote device management
- [OSM Maps](osm-maps.md) - OpenStreetMap data for speed limits, road names, and map-based driving features
-45
View File
@@ -1,45 +0,0 @@
---
title: OSM Maps
---
# OSM Maps
## What It Does
Integrates OpenStreetMap (OSM) data to provide speed limit information, road geometry, and other map attributes. This data powers features like Speed Limit Assist and Smart Cruise Control — Map.
## How It Works
1. Select your country (and state, if in the US)
2. Download the map data to your device
3. The map daemon processes the data and makes it available to driving features
4. Periodically check for updates to keep your map data current
## Requirements
!!! info "Requirements"
- Internet connection for initial download and updates
- Storage space on the device for map data
## How to Set Up
**Settings****OSM**
1. Select your **Country**
2. If in the US, select your **State**
3. Tap **Database Update** to download
4. Wait for the download to complete
## Features That Use OSM Data
- **[Speed Limit Assist](../cruise/speed-limit.md)** — Reads speed limits from map data
- **[Smart Cruise Control — Map](../cruise/scc-m.md)** — Uses road geometry for proactive speed adjustment
## Managing Map Data
- **Update:** Tap "Database Update" to check for newer map data
- **Delete:** Tap "Delete Maps" to remove downloaded data and free storage
## Settings Reference
See [OSM Settings](../../settings/osm.md) for all options and status information.
-67
View File
@@ -1,67 +0,0 @@
---
title: sunnylink
---
# sunnylink
## What It Does
sunnylink is sunnypilot's cloud backend integration system. It connects your device to the sunnypilot cloud infrastructure, enabling settings backup and restore, sponsor benefits, remote device management, and optional driving data uploads.
## Key Features
### Settings Backup & Restore
Securely back up your device configuration to the cloud and restore it on the same or a different device.
- **Backup** compresses and encrypts all your sunnypilot settings using AES-256-CBC encryption derived from your device's unique RSA key
- **Restore** downloads and decrypts your backup, applying only recognized sunnypilot parameters
- Progress is displayed in real-time (0-100%) during both operations
- Backups include all sunnypilot-specific parameters (toggles, tuning values, preferences)
!!! note
Backups are device-key encrypted. A backup created on one device can only be restored to the same device or by using the same device keys.
### Sponsor Tiers
sunnylink has a sponsorship system with multiple tiers:
| Tier | Color |
|------|-------|
| Guardian | Gold |
| Benefactor | Green |
| Contributor | Steel Blue |
| Supporter | Purple |
| Free / Novice | Default |
Sponsor status is displayed in the sunnylink settings panel. Higher tiers may unlock additional features (such as the infrastructure uploader).
### GitHub Account Pairing
Link your GitHub account to your device for sponsor verification and identity management. The pairing status is displayed in the sunnylink settings panel as "Paired" or "Not Paired".
### Data Upload (Infrastructure Test)
When enabled, sunnylink can upload driving logs and camera data to sunnypilot's cloud infrastructure. This feature prioritizes crash and boot logs, respects metered connections (skips video on cellular), and uses signed S3 URLs for secure uploads.
!!! warning
The uploader is currently an infrastructure test feature available to high-tier sponsors only. It provides no direct user benefit at this time.
### Remote Device Management
sunnylink maintains a persistent WebSocket connection to the backend, enabling:
- Remote parameter viewing and modification
- Log upload control
- Local port proxying for SSH-like access
- Queued message processing
## How to Configure
**Settings****sunnylink**
sunnylink requires explicit user consent before activation. On first enable, a consent dialog explains what data is collected and how it is used.
## Settings Reference
See [sunnylink Settings](../../settings/sunnylink.md) for all configuration options.
@@ -1,53 +0,0 @@
---
title: Alpha Longitudinal
---
# Alpha Longitudinal
## What It Does
Alpha Longitudinal provides experimental longitudinal (speed and acceleration) control for vehicles that are openpilot-compatible but do not have official sunnypilot longitudinal support. This enables throttle and brake control on cars that would otherwise be limited to lateral (steering) assistance only.
For officially supported vehicles, sunnypilot provides refined longitudinal tuning tailored to each platform. Alpha Longitudinal extends this capability to additional vehicles using a more generalized approach, allowing drivers of these cars to experience full ACC-like functionality through sunnypilot.
## How It Works
Alpha Longitudinal uses the vehicle's existing communication interfaces to send throttle and brake commands, bypassing the need for the vehicle's stock cruise control system. The system:
- Reads vehicle speed, pedal position, and other sensor data through the car's CAN bus
- Calculates desired acceleration based on the driving model's output
- Sends throttle and brake commands directly to the vehicle's powertrain controllers
- Sets `pcmCruise=False`, meaning sunnypilot takes full control of longitudinal behavior instead of relying on the vehicle's built-in cruise control module
Because this operates outside the vehicle manufacturer's intended cruise control pathway, the tuning is less refined than on officially supported platforms.
!!! danger "AEB Is Disabled"
Enabling Alpha Longitudinal **disables your vehicle's Automatic Emergency Braking (AEB)**. This is a significant safety trade-off. Without AEB, the vehicle will not automatically apply emergency braking in imminent collision scenarios. Drive with extra caution and maintain safe following distances at all times.
## Requirements
!!! info "Requirements"
- Vehicle must be openpilot-compatible (listed on the [comma.ai vehicle compatibility list](https://comma.ai/vehicles))
- Vehicle does not have official sunnypilot longitudinal support
- Vehicle must report `CP.alphaLongitudinalAvailable = True` — availability is determined per vehicle in the car interface code
- Feature is experimental and under active development
!!! warning "Development Branches Only"
Alpha Longitudinal is flagged as `DEVELOPMENT_ONLY`. It is **only available on development and staging branches**, not on release branches. This is intentional — the feature is not considered stable enough for general release.
!!! warning "Mutually Exclusive with ICBM"
Alpha Longitudinal and [ICBM](icbm.md) cannot be active at the same time. Enabling Alpha Longitudinal disables ICBM, and vice versa. Alpha Longitudinal provides direct throttle/brake control, while ICBM works through the stock cruise control system — these two approaches are fundamentally incompatible.
!!! warning "Alpha Quality Software"
This feature is **alpha quality**. Expect rough edges, less smooth acceleration and braking behavior, and less refined stop-and-go performance compared to officially supported vehicles. Longitudinal behavior may vary significantly between vehicle models and driving conditions.
## How to Enable
**Settings****Developer****sunnypilot Longitudinal Control (Alpha)**
!!! note
This toggle only appears on development branches and only for vehicles where `alphaLongitudinalAvailable` is `True`.
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for configuration details.
@@ -1,28 +0,0 @@
---
title: Custom ACC Increments
---
# Custom ACC Increments
## What It Does
Customize the speed increments when you press the cruise control buttons. Instead of the default step sizes, set your own preferred values for both short and long button presses.
## How It Works
- **Short press:** Changes speed by your configured short press increment (110 km/h or mph)
- **Long press:** Changes speed by your configured long press increment (1, 5, or 10 km/h or mph)
## Requirements
!!! info "Requirements"
- Longitudinal control must be available, **or** [ICBM](icbm.md) must be enabled
- PCM Cruise must not be active (factory cruise control must not override)
## How to Enable
**Settings****Cruise****Custom ACC Increments**
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for all increment options.
@@ -1,61 +0,0 @@
---
title: Dynamic Experimental Control
---
# Dynamic Experimental Control (DEC)
## What It Does
DEC automatically switches between openpilot's two longitudinal modes based on real-time road conditions. Instead of manually toggling between modes, the system dynamically selects the most appropriate mode for the current situation.
To understand DEC, it helps to know the two driving modes it switches between:
| Mode | Internal Name | Description |
|------|---------------|-------------|
| **Chill / Standard** | `acc` | The default openpilot driving mode. Follows the lead car and stays in lane at a steady speed. Best suited for highway and open-road driving where stops and complex maneuvers are rare. |
| **Experimental** | `blended` | An enhanced mode that uses the end-to-end (E2E) driving model. Can handle stops at traffic lights and stop signs, navigate turns, and respond to more complex urban scenarios. Designed for city driving. |
!!! note "DEC is a switcher, not a mode"
DEC is not a third driving mode — it is a dynamic switcher that automatically selects between `acc` (Chill/Standard) and `blended` (Experimental) in real time based on road conditions.
## How It Works
DEC uses a confidence-based switching system with specific probability thresholds and hysteresis to prevent rapid mode toggling:
### Detection Signals
| Signal | Threshold | Effect |
|--------|-----------|--------|
| **Lead vehicle probability** | ≥ 0.45 | Favors `acc` mode (standard following) |
| **Slow-down probability** | ≥ 0.3 | Favors `blended` mode (E2E for stops/turns) |
| **Stop sign / traffic light** | Detected by vision model | Triggers switch to `blended` mode |
| **Turn detection** | Upcoming turns | Triggers switch to `blended` mode |
| **Current speed** | Speed-dependent | Lower speeds favor `blended` mode |
### Switching Logic
- DEC uses **Kalman filters** to smooth probability signals and reduce noise
- A **minimum hold time of 10 frames** prevents rapid oscillation between modes
- A **confidence threshold of 0.6** must be met before switching to a new mode
- The system continuously evaluates conditions and transitions seamlessly without driver input
Based on these signals, DEC switches between:
| Mode | When DEC Activates It |
|------|----------|
| **Chill / Standard** (`acc`) | Highway driving with steady speeds, lead vehicle following, clear lanes, and no upcoming stops or complex intersections |
| **Experimental** (`blended`) | City driving with stops, turns, traffic lights, and complex intersections where the vehicle needs to slow down or stop |
## Requirements
!!! info "Requirements"
- Longitudinal control must be available
- Device must be offroad to enable/disable
## How to Enable
**Settings****Cruise****Dynamic Experimental Control**
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for configuration details.
-77
View File
@@ -1,77 +0,0 @@
---
title: Intelligent Cruise Button Management
---
# Intelligent Cruise Button Management (ICBM)
## What It Does
ICBM allows sunnypilot to intercept and dynamically manage your vehicle's cruise control button presses. Instead of directly changing the set speed, button presses are routed through sunnypilot's logic, enabling features like Speed Limit Assist and Smart Cruise Control on vehicles that don't natively support sunnypilot longitudinal control.
This is particularly useful for vehicles where sunnypilot cannot directly control the gas and brakes — ICBM gives you many of the same benefits by intelligently managing the cruise buttons.
## When to Use
ICBM is designed specifically for vehicles where sunnypilot cannot directly control the throttle and brakes (i.e., no native longitudinal control). On these vehicles, the stock cruise control system still handles all actual acceleration and deceleration. ICBM bridges the gap by intelligently managing cruise button commands so you can still benefit from sunnypilot's speed planning features.
## How It Works
1. You press the cruise speed button on your steering wheel
2. ICBM intercepts the button press
3. sunnypilot applies its logic (speed limits, map curves, etc.) to determine the appropriate speed change
4. ICBM simulates the corresponding cruise button presses over the CAN bus, sending the adjusted command to the vehicle's stock cruise control system
This happens transparently — from your perspective, the buttons work normally but with smarter behavior. Under the hood, ICBM is communicating with the vehicle's cruise control module by simulating physical button presses on the CAN bus, which is why it works even on vehicles without direct throttle/brake control.
### State Machine
ICBM operates through a 5-state machine:
| State | Description |
|-------|-------------|
| **Inactive** | ICBM is idle — no button simulation is in progress |
| **Pre-Active** | A speed change has been requested; ICBM is preparing to simulate button presses |
| **Increasing** | ICBM is sending "speed up" button presses to reach the target speed |
| **Decreasing** | ICBM is sending "speed down" button presses to reach the target speed |
| **Holding** | Target speed has been reached; ICBM is holding the current setting |
!!! tip "Safety"
ICBM preserves all of your vehicle's stock safety systems. Forward Collision Avoidance (FCA), Automatic Emergency Braking (AEB), and other factory safety features remain fully active and unaffected, since the vehicle's own cruise control system is still performing the actual speed control. ICBM operates purely at the CAN bus button simulation level and does not interact with FCA or AEB message pathways.
## Supported Vehicles
ICBM support varies by vehicle brand. The feature toggle only appears in settings if your vehicle is supported.
| Brand | Notes |
|-------|-------|
| **Hyundai / Kia / Genesis** | Supported on most models with stock cruise control |
| **Honda / Acura** | Supported on compatible models |
| **Chrysler / Dodge / Jeep / RAM** | Supported on compatible models |
| **Mazda** | Supported on compatible models |
!!! info "Not Listed?"
If your brand or model is not listed above and the ICBM toggle does not appear in your settings, your vehicle is not currently supported. Support depends on the vehicle's CAN bus protocol and button command structure.
## Requirements
!!! info "Requirements"
- Your vehicle must support ICBM — not all vehicles are compatible
- If the ICBM toggle does not appear in settings, your vehicle is not supported
- **Mutually exclusive with [Alpha Longitudinal](alpha-longitudinal.md)** — only one can be active at a time
## How to Enable
**Settings****Cruise****Intelligent Cruise Button Management**
## Features Unlocked by ICBM
When ICBM is enabled, the following features become available even on vehicles without native longitudinal control:
- **[Smart Cruise Control — Vision](scc-v.md)** — Vision-based adaptive speed adjustments
- **[Smart Cruise Control — Map](scc-m.md)** — Map-aware speed adjustments
- **[Custom ACC Increments](custom-acc-increments.md)** — Custom button press speed steps
- **[Speed Limit Assist](speed-limit.md)** — Automatic speed limit matching
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for all available options.
-15
View File
@@ -1,15 +0,0 @@
---
title: Cruise Control
---
# Cruise Control
Enhancements to adaptive cruise control that give you finer control over speed management, turn handling, and speed limit compliance.
- [Intelligent Cruise Button Management](icbm.md) - intercepts steering wheel button presses for smarter speed adjustments
- [Smart Cruise Control - Vision](scc-v.md) - uses vision predictions to slow for curves
- [Smart Cruise Control - Map](scc-m.md) - uses map data to anticipate speed changes
- [Custom ACC Increments](custom-acc-increments.md) - set custom speed change amounts for short and long button presses
- [Dynamic Experimental Control](dynamic-experimental-control.md) - automatically switches between driving modes based on conditions
- [Speed Limit Assist](speed-limit.md) - adjusts cruise speed to match posted limits
- [Alpha Longitudinal](alpha-longitudinal.md) - experimental longitudinal control for select vehicles
-30
View File
@@ -1,30 +0,0 @@
---
title: Smart Cruise Control - Map
---
# Smart Cruise Control — Map (SCC-M)
## What It Does
SCC-M uses downloaded OpenStreetMap data to anticipate road changes — curves, speed limits, and intersections — and adjusts cruise speed proactively through [ICBM](icbm.md).
## How It Works
1. OSM map data provides information about upcoming road geometry
2. SCC-M calculates appropriate speeds for curves, speed zones, and intersections
3. Speed commands are sent through ICBM to adjust cruise before reaching these road features
## Requirements
!!! info "Requirements"
- [ICBM](icbm.md) must be enabled
- Vehicle must support ICBM
- [OSM Maps](../connected/osm-maps.md) must be configured and downloaded
## How to Enable
**Settings****Cruise****Smart Cruise Control — Map**
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for configuration details.
-28
View File
@@ -1,28 +0,0 @@
---
title: Smart Cruise Control - Vision
---
# Smart Cruise Control — Vision (SCC-V)
## What It Does
SCC-V uses the device's camera to detect lead vehicles and make smarter cruise control decisions. It provides vision-based adaptive speed adjustments for vehicles that rely on ICBM for cruise management.
## How It Works
The camera continuously monitors the road ahead. When a lead vehicle is detected, SCC-V adjusts cruise speed commands through [ICBM](icbm.md) to maintain safe following distances and react to speed changes of the vehicle ahead.
## Requirements
!!! info "Requirements"
- [ICBM](icbm.md) must be enabled
- Vehicle must support ICBM
- Camera must have a clear view of the road ahead
## How to Enable
**Settings****Cruise****Smart Cruise Control — Vision**
## Settings Reference
See [Cruise Control Settings](../../settings/cruise/index.md) for configuration details.
-90
View File
@@ -1,90 +0,0 @@
---
title: Speed Limit Assist
---
# Speed Limit Assist
## What It Does
Speed Limit Assist detects the current speed limit and can automatically adjust your cruise speed to match. It offers four operating modes ranging from passive information display to active speed management.
## How It Works
1. sunnypilot reads speed limit data from two sources (see below)
2. A configurable **Speed Limit Policy** determines how the sources are combined when both are available
3. Based on your chosen mode, the system displays, warns, or actively adjusts your set speed
4. An optional offset (fixed or percentage) lets you cruise slightly above or below the limit
## Speed Limit Sources
Speed Limit Assist pulls speed limit data from **two sources**:
| Source | Description |
|--------|-------------|
| **Car State** | Speed limit information provided by the vehicle's built-in sensors (e.g., Traffic Sign Recognition cameras). Availability depends on the vehicle. |
| **Map Data** | Speed limits from downloaded OpenStreetMap data. Requires [OSM Maps](../connected/osm-maps.md) to be configured and downloaded. |
### Speed Limit Policy
When both sources are available and report different values, the **Speed Limit Policy** setting determines which source is used:
| Policy | Behavior |
|--------|----------|
| **Car State Only** | Uses only the vehicle's built-in speed limit data; ignores map data |
| **Map Data Only** | Uses only OSM map speed limit data; ignores car state |
| **Car State Priority** | Uses car state data when available; falls back to map data |
| **Map Data Priority** | Uses map data when available; falls back to car state |
| **Combined** | Uses the highest-confidence value from either source |
## Operating Modes
| Mode | Behavior |
|------|----------|
| **Off** | Speed limit data is not used |
| **Information** | Shows the current speed limit on the driving display |
| **Warning** | Shows the speed limit and alerts you when you're exceeding it |
| **Assist** | Automatically adjusts cruise speed to match the speed limit |
## Speed Offset
You can set an offset so your cruise speed differs from the exact limit:
- **Fixed offset:** Add or subtract a set number of km/h or mph (range: -30 to +30)
- **Percentage offset:** Apply a percentage above or below the limit
## Confirmation Modes
When the detected speed limit changes, you can choose how the system responds:
| Mode | Behavior |
|------|----------|
| **Auto** | The cruise set speed adjusts automatically when a new speed limit is detected — no driver input required |
| **User Confirm** | The system displays the new speed limit and waits for the driver to confirm before adjusting the set speed |
## Driver Notifications
Speed Limit Assist provides visual indicators on the driving HUD:
- The currently detected speed limit is shown on the display
- When a speed limit change is detected, a notification appears showing the new limit
- In Warning and Assist modes, alerts notify you when you are exceeding the posted limit
## Requirements
!!! info "Requirements"
- Longitudinal control must be available, **or** [ICBM](icbm.md) must be enabled
- For map-based limits: [OSM Maps](../connected/osm-maps.md) must be configured and downloaded
## How to Enable
**Settings****Cruise****Speed Limit Assist**
## Vehicle Restrictions
!!! warning "Vehicle Restrictions"
- **Tesla:** Assist mode is disabled on release branches (Information and Warning still work)
- **Rivian:** Assist mode is always disabled
## Settings Reference
See [Speed Limit Settings](../../settings/cruise/speed-limit/index.md) for all configuration options.
-34
View File
@@ -1,34 +0,0 @@
---
title: HUD & Visuals
---
# HUD & Visuals
## What It Does
Customize the heads-up display (HUD) elements and visual overlays shown on the driving screen. Toggle individual elements on or off to create your preferred driving view.
## Available HUD Elements
| Element | Description |
|---------|-------------|
| **Blind Spot Indicator** | Visual warning when a vehicle is in your blind spot |
| **Torque Bar** | Shows current steering torque |
| **Standstill Timer** | Shows how long you've been stopped |
| **Road Name** | Displays the current road name |
| **Green Light Alert** | Alerts when a traffic light turns green |
| **Lead Depart Alert** | Alerts when the car ahead starts moving |
| **True Vehicle Speed** | CAN bus speed (may differ from GPS) |
| **Turn Signals** | Shows turn signal status on the HUD |
| **Rocket Fuel** | Real-time acceleration/deceleration bar on the left side of the screen |
| **Rainbow Mode** | Animated rainbow-gradient overlay on the model driving path |
| **Chevron Info** | Distance, speed, or time gap to lead vehicle |
| **Developer UI** | Debug information for diagnostics |
## How to Configure
**Settings****Visuals**
## Settings Reference
See [Visuals Settings](../../settings/visuals.md) for all toggle options and multi-button selectors.
-10
View File
@@ -1,10 +0,0 @@
---
title: Display & Visuals
---
# Display & Visuals
Customizations for the onroad driving screen, HUD overlays, and visual indicators.
- [Onroad Display](onroad-display.md) - screen brightness, timeout, and layout controls
- [HUD & Visuals](hud-visuals.md) - toggles for visual indicators like blind spot warnings, road names, and traffic light alerts
@@ -1,23 +0,0 @@
---
title: Onroad Display
---
# Onroad Display
## What It Does
Control the screen brightness, timeout behavior, and touch interactivity while driving. These settings help reduce distraction and manage power consumption.
## Key Features
- **Screen brightness control** — Choose from Auto, Auto Dark, Screen Off, or a fixed percentage (5%100%)
- **Brightness delay** — Set how long the screen stays bright before dimming
- **Interactivity timeout** — Make the screen non-interactive after a set period to prevent accidental touches
## How to Configure
**Settings****Display**
## Settings Reference
See [Display Settings](../../settings/display.md) for all configuration options.
-27
View File
@@ -1,27 +0,0 @@
---
title: Features
---
# Features
sunnypilot extends openpilot with a comprehensive set of driving assist features organized into the following categories.
## Cruise Control
Adaptive cruise control enhancements including intelligent button management, vision and map-based smart cruise, custom ACC increments, dynamic experimental control, speed limit assist, and alpha longitudinal control.
## Steering
Lateral control features including the Modular Assistive Driving System (MADS), neural network lateral control (NNLC), automatic lane changes, torque-based steering control, and blinker pause lateral for temporarily pausing steering during turn signal activation.
## Display & Visuals
Onroad display customizations and HUD visual enhancements for real-time driving information.
## Models & AI
Driving model selection and AI-related configuration options.
## Connected Services
Cloud and map integrations including sunnylink (settings backup/restore, sponsor tiers, GitHub account pairing, remote device management) and OpenStreetMap (speed limit data and map-based features).
-30
View File
@@ -1,30 +0,0 @@
---
title: Models & AI
---
# Models & AI
## What It Does
Select and configure the driving model used by sunnypilot. Different models offer different driving characteristics — some may be smoother, others more responsive. Advanced parameters let you fine-tune model behavior.
## Key Features
- **Model Selection** — Choose from available driving models (offroad only)
- **Lane Turn Desire** — Enhance lane positioning during turns
- **LAGD (Live Lateral Delay Compensation)** — Dynamically measures and compensates for steering actuator delay using real-time signal correlation
## Advanced Parameters
Advanced parameters are only visible when **Show Advanced Controls** is enabled in [Developer Settings](../settings/developer.md):
- **Lane Turn Value** — Intensity of lane turn desire (5002000)
- **LAGD Delay** — Fixed steering delay offset in milliseconds when LAGD is disabled (550)
## How to Configure
**Settings****Models**
## Settings Reference
See [Models Settings](../settings/models.md) for all configuration options.
@@ -1,59 +0,0 @@
---
title: Auto Lane Change
---
# Auto Lane Change
## What It Does
Automatically executes lane changes when you activate the turn signal. You can choose between nudge-based confirmation, nudgeless (immediate), or timed delays before the lane change begins.
## How It Works
1. Activate your turn signal in the desired direction
2. The system verifies that clear lane markings are detected by the vision system in the target lane — a lane change will not execute without visible lane lines
3. The driver monitoring system checks that the driver is attentive before proceeding
4. Depending on your setting:
- **Nudge:** Give a light steering nudge to confirm the lane change
- **Nudgeless:** The lane change begins immediately
- **Timed (0.5s3s):** The lane change begins after the configured delay
5. If BSM Delay is enabled and a vehicle is detected in your blind spot, the lane change is delayed by an additional 1 second beyond the configured timer
## Requirements
!!! info "Requirements"
- Lateral control must be active (sunnypilot must be engaged)
- Vehicle must be traveling above a minimum speed threshold
- Clear lane markings must be visible to the vision system
- Driver must be attentive (monitored by the driver monitoring system)
## How to Enable
**Settings****Steering****Customize Lane Change**
## Modes
| Mode | Value | Behavior |
|------|-------|----------|
| **Off** | -1 | Auto lane change is disabled |
| **Nudge** | 0 | Requires a light steering nudge to confirm the lane change |
| **Nudgeless** | 1 | Lane change begins as soon as you signal |
| **0.5 second** | 2 | Lane change begins after 0.5s delay |
| **1 second** | 3 | Lane change begins after 1s delay |
| **2 seconds** | 4 | Lane change begins after 2s delay |
| **3 seconds** | 5 | Lane change begins after 3s delay |
## Blind Spot Monitoring Integration
If your vehicle supports BSM and the BSM Delay option is enabled, the system checks for vehicles in your blind spot before executing the lane change. When a vehicle is detected in the blind spot, the lane change is delayed by an additional **1 second** on top of the configured timer until the adjacent lane is clear.
!!! info "BSM Requirements"
- Vehicle must support Blind Spot Monitoring
- Auto Lane Change Timer must be set beyond Nudge mode
## Settings Reference
See [Lane Change Settings](../../settings/steering/lane-change.md) for all options.
!!! warning "Safety"
Always check your mirrors and blind spots before initiating a lane change. The system assists but does not replace driver awareness.
@@ -1,36 +0,0 @@
---
title: Blinker Pause Lateral Control
---
# Blinker Pause Lateral Control
## What It Does
Temporarily pauses lateral (steering) control when you activate a turn signal. This gives you full manual steering control during the blinker activation, useful for situations where you want to make a manual lane adjustment or turn without the system fighting your steering input.
## How It Works
1. You activate a turn signal (left or right blinker)
2. If your speed is **below** the configured speed threshold, sunnypilot pauses lateral control
3. Lateral control stays paused while the blinker is active
4. After the blinker is deactivated, lateral control re-engages after the configured delay
## Configuration Options
### Speed Threshold
The maximum speed at which Blinker Pause activates. Above this speed, lateral control remains active even with the blinker on (this allows Auto Lane Change to work at highway speeds).
### Re-Engage Delay
How long after the blinker is deactivated before lateral control re-engages. A short delay prevents abrupt steering corrections immediately after turning off the signal.
## How to Configure
**Settings****Steering**
Look for the Blinker Pause Lateral Control toggle and its sub-settings.
## Settings Reference
See [Steering Settings](../../settings/steering/index.md) for all configuration options.
-13
View File
@@ -1,13 +0,0 @@
---
title: Steering
---
# Steering
Lateral control features that govern how sunnypilot handles steering assistance, lane changes, and manual override behavior.
- [Modular Assistive Driving System (MADS)](mads.md) - decouples steering from cruise control for independent lateral assist
- [Neural Network Lateral Control (NNLC)](nnlc.md) - uses a neural network for smoother steering
- [Auto Lane Change](auto-lane-change.md) - automated lane changes triggered by the turn signal
- [Torque Control](torque-control.md) - torque-based steering with tunable parameters
- [Blinker Pause Lateral](blinker-pause.md) - temporarily pauses steering assist when the turn signal is active
-86
View File
@@ -1,86 +0,0 @@
---
title: Modular Assistive Driving System
---
# Modular Assistive Driving System (MADS)
## What It Does
MADS decouples lateral (steering) and longitudinal (speed) controls. In standard openpilot, engaging cruise control activates both steering and speed control together, and disengaging turns both off. With MADS, steering assistance can remain active independently — even when cruise control is off.
This means you can have lane-keeping assistance while controlling the gas and brakes yourself.
## How It Works
With MADS enabled, Automatic Lane Centering (ALC) and Adaptive Cruise Control (ACC) can be engaged and disengaged independently. This is the core difference from standard openpilot, where both are always linked together.
- **Steering stays active** even when you cancel cruise control — ALC continues to provide lane centering while you control speed manually
- **Independent engagement** — you can activate ALC without ACC, or both together, giving you flexible control over which assists are active
- You choose what happens to steering when cruise disengages (remain active, pause, or fully disengage)
- You can configure whether the main cruise button also activates steering
### Engagement States
MADS has five internal states:
| State | Description |
|-------|-------------|
| **Disabled** | MADS is off — no steering assistance is provided |
| **Enabled** | Steering assistance is fully engaged and actively providing lane centering |
| **Paused** | Steering assistance is temporarily paused (e.g., due to braking, depending on your Steering Mode on Brake setting) but can resume without re-engaging |
| **Soft Disabling** | The system is transitioning from enabled to disabled due to a safety condition (e.g., driver inattention alert escalation) |
| **Overriding** | The driver is actively steering, temporarily overriding the system's lateral input. Steering assistance resumes when the driver releases the wheel |
### Steering Mode on Brake
This setting controls what happens to steering assistance when the brake pedal is pressed:
| Option | Value | Behavior |
|--------|-------|----------|
| **Remain Active** | 0 | Steering stays fully active while braking |
| **Pause** | 1 | Steering pauses while braking, resumes on release |
| **Disengage** | 2 | Steering fully disengages on brake — must re-engage manually |
## Requirements
!!! info "Requirements"
- Supported on most vehicles with sunnypilot lateral control
## How to Enable
**Settings****Steering** → enable **MADS**
Then configure the sub-settings in **MADS Settings**.
## Key Settings
| Setting | What It Controls |
|---------|-----------------|
| **Main Cruise Allowed** | Whether the cruise on/off button can activate MADS |
| **Unified Engagement Mode** | Whether engaging cruise also engages MADS automatically |
| **Steering Mode on Brake** | What happens to steering when the brake is pressed (Remain Active / Pause / Disengage) |
| **Steering Mode on Disengage** | What happens to steering when cruise disengages |
## Vehicle-Specific Behavior
Some vehicles operate in **limited MADS mode** where certain settings are locked due to platform constraints (e.g., no vehicle bus access):
=== "Tesla (without vehicle bus)"
- Main Cruise Allowed: forced OFF
- Unified Engagement Mode: forced ON
- Steering Mode on Brake: forced to **Disengage**
=== "Rivian"
- Main Cruise Allowed: forced OFF
- Unified Engagement Mode: forced ON
- Steering Mode on Brake: forced to **Disengage**
!!! note "Why these restrictions?"
Vehicles without a full vehicle bus connection (like Tesla without the vehicle bus harness and Rivian) cannot reliably detect certain driver inputs. To maintain safety, MADS defaults to the most conservative behavior on these platforms.
## Settings Reference
See [MADS Settings](../../settings/steering/mads.md) for all configuration options.
!!! warning "Safety"
Always be ready to take full manual control. MADS allows more flexible use of driver assistance, but you remain responsible for safe driving at all times.
-58
View File
@@ -1,58 +0,0 @@
---
title: Neural Network Lateral Control
---
# Neural Network Lateral Control (NNLC)
## What It Does
NNLC replaces the traditional PID or torque-based steering controller with a neural network trained on real driving data. This can provide smoother, more natural-feeling lane keeping that adapts to your vehicle's steering characteristics.
## How It Works
Instead of using fixed mathematical formulas (PID controller), NNLC uses a machine learning model to calculate steering commands. The neural network has been trained on real-world driving data and can handle a wider variety of driving scenarios with smoother output.
!!! note "Evolution from NNFF"
NNLC evolved from **Neural Network FeedForward (NNFF)**, an earlier approach that used a neural network as a feedforward component alongside traditional controllers. NNLC builds on this foundation by giving the neural network full lateral control authority, resulting in improved steering smoothness and adaptability.
!!! info "Vehicle-Specific Training Data"
The neural network models are trained on real driving data collected from specific vehicles. Because each vehicle has unique steering characteristics, a dedicated model must be trained for each supported make/model. Over **70 vehicle models** currently have trained NNLC models available. If no model exists for your vehicle, the NNLC toggle will not appear in settings.
### Model Matching
When NNLC is enabled, the system matches your vehicle to the best available model using a 3-tier fallback:
| Tier | Match Criteria | Confidence | Description |
|------|---------------|------------|-------------|
| **1. Exact** | Fingerprint + firmware version | ≥ 0.99 | Best match — a model trained on your exact vehicle and firmware combination |
| **2. Valid** | Fingerprint only | ≥ 0.9 | Good match — a model trained on your vehicle platform, regardless of firmware version |
| **3. Substitute** | Substitute table lookup | Fallback | A model from a similar vehicle platform is used as a substitute (configured in `substitute.toml`) |
## Requirements
!!! info "Requirements"
- Vehicle must not use angle-based steering (`steerControlType` must not be `angle`)
- A trained NNLC model must be available for your specific vehicle
- Mutually exclusive with [Torque Control](torque-control.md) — only one can be active at a time
- Device must be offroad to enable/disable
## How to Enable
**Settings****Steering****Neural Network Lateral Control**
!!! tip
Not all vehicles have NNLC models available. If the toggle does not appear, your vehicle may use angle-based steering which is not compatible with NNLC, or a trained model may not yet exist for your vehicle.
## NNLC vs. Torque Control
| Feature | NNLC | Torque Control |
|---------|------|---------------|
| **Approach** | Neural network (learned) | Mathematical formula (tuned) |
| **Customization** | Automatic | Manual tuning available |
| **Best for** | Smooth, adaptive steering | Precise, configurable steering |
These two features are mutually exclusive — enabling one automatically disables the other.
## Settings Reference
See [Steering Settings](../../settings/steering/index.md) for configuration details.
@@ -1,48 +0,0 @@
---
title: Torque Control
---
# Torque Control
## What It Does
Torque Control lets you fine-tune how aggressively or gently sunnypilot steers your vehicle. It provides advanced parameters for lateral acceleration, friction compensation, and self-tuning options.
## How It Works
Torque-based lateral control applies steering commands as torque (rotational force) to the steering motor. The key parameters are:
- **Lateral Acceleration Factor** — How strongly the system turns the wheel (higher = more aggressive)
- **Friction** — How much the system compensates for steering resistance
- **Self-Tune** — Automatically adjusts these values based on your driving
## Requirements
!!! info "Requirements"
- Vehicle must not use angle-based steering
- **Enforce Torque Control** must be enabled in [Steering Settings](../../settings/steering/index.md)
- Mutually exclusive with [NNLC](nnlc.md) — only one can be active at a time
- Device must be offroad to change settings
## How to Enable
1. Go to **Settings****Steering**
2. Enable **Enforce Torque Control**
3. Open the **Torque Settings** sub-panel to fine-tune
## Tuning Options
| Option | Description |
|--------|-------------|
| **Self-Tune** | Automatic real-time parameter adjustment |
| **Relaxed Self-Tune** | Less aggressive auto-tuning for smoother feel |
| **Custom Tune** | Manual parameter override |
| **Lat Accel Factor** | 0.015.00 (steering aggressiveness) |
| **Friction** | 0.011.00 (friction compensation) |
!!! tip
Start with Self-Tune enabled. Only switch to Custom Tune if you want precise control over steering feel and are willing to experiment.
## Settings Reference
See [Torque Settings](../../settings/steering/torque.md) for all tuning parameters.
-10
View File
@@ -1,10 +0,0 @@
---
title: Getting Started
---
# Getting Started
New to sunnypilot? Start here to understand what sunnypilot is and whether it works with your vehicle.
- **[What is sunnypilot?](what-is-sunnypilot.md)** - Overview of the system, supported vehicles, and key capabilities
- **[Use sunnypilot in a car](use-sunnypilot-in-a-car.md)** - Requirements and what to expect on your first drive
@@ -1,42 +0,0 @@
---
title: Use sunnypilot in a car
---
# Use sunnypilot in a car
## What You Need
1. **A supported vehicle** — Check the compatibility list for your car's make, model, and year
2. **A comma device** — comma 3X or compatible hardware
3. **A vehicle harness** — Connects the device to your car's systems
4. **An internet connection** — For initial setup and software updates
## Getting Started
1. Mount the device on your windshield
2. Connect the harness to your car
3. Install sunnypilot using one of the setup methods:
- [URL Method](../setup/url-method.md) — Easiest, recommended for most users
- [SSH Method](../setup/ssh-method.md) — For advanced users
## First Drive
After installation:
1. Power on the device
2. Wait for the system to calibrate (drive straight for a few minutes)
3. Enable cruise control as you normally would
4. The system will begin assisting with steering and speed control
!!! tip
Give the system time to calibrate. Steering assistance improves after the first few minutes of straight driving.
## Configuring Settings
sunnypilot offers many configurable options. Access settings through the on-device interface:
- **Cruise Control** — Speed management, gap settings, and cruise behavior
- **Steering** — Lane keeping, MADS, and steering tuning
- **Display & Visuals** — Customize the on-screen display
See the [Settings Reference](../settings/cruise/index.md) for a complete guide to all options.
@@ -1,31 +0,0 @@
---
title: What is sunnypilot?
---
# What is sunnypilot?
sunnypilot is an open-source driver assistance system that enhances your car's existing features. It provides adaptive cruise control, lane centering, and many additional driving assists — all configurable to your preferences.
## Key Features
- **Adaptive Cruise Control** — Automatically adjusts speed to maintain distance from the car ahead
- **Lane Centering** — Keeps your car centered in the lane on highways and well-marked roads
- **Modular Assistive Driving System (MADS)** — Decouple lateral and longitudinal controls for flexible driving
- **Speed Limit Assist** — Automatically adjust speed based on map and sign data
- **Neural Network Lateral Control** — AI-based steering for smoother lane keeping
## How It Works
sunnypilot runs on a compatible device mounted in your car. It connects to your vehicle through a supported harness and uses cameras, radar, and other sensors to assist with driving.
!!! warning "Safety First"
sunnypilot is a **driver assistance** system, not a self-driving system. You must keep your hands on the wheel and eyes on the road at all times. See [Safety Information](../safety/safety.md) for details.
## Supported Vehicles
sunnypilot supports a wide range of vehicles. Check the [openpilot vehicle compatibility list](https://github.com/commaai/openpilot/blob/master/docs/CARS.md) for base compatibility, plus additional sunnypilot-specific enhancements for select brands.
## Next Steps
- [Use sunnypilot in a car](use-sunnypilot-in-a-car.md) — Overview of what you need
- [Read before installing](../setup/read-before-installing.md) — Important pre-installation info
-10
View File
@@ -1,10 +0,0 @@
---
title: How-To Guides
---
# How-To Guides
Step-by-step guides for common tasks.
- **[Share a Route](share-a-route.md)** - How to share driving routes with others for debugging or review
- **[Preserve Local File Changes](preserve-local-changes.md)** - Keep your local modifications across software updates
-49
View File
@@ -1,49 +0,0 @@
---
title: Preserve Local Changes
---
# Preserve Local File Changes on Your comma Device
## Overview
By default, the comma device automatically updates sunnypilot, which overwrites any local file modifications you have made. To keep your local changes across reboots, you must disable automatic updates **before** making modifications.
!!! warning "Complete These Steps First"
Local modifications applied **before** completing the steps below will **not** be retained. The automatic update process will overwrite them on the next reboot. Complete all steps first, then make your changes.
## Steps
### 1. Enable Advanced Controls
Navigate to **Settings****Developer****Show Advanced Controls** and toggle it **ON**.
This reveals additional settings options that are hidden by default, including the update toggle.
### 2. Disable Updates
Navigate to **Settings****Software****Disable Updates** and toggle it **ON**.
This prevents the device from automatically pulling and applying updates from the remote branch.
!!! note "Offroad Only"
The Disable Updates toggle can only be changed while the device is **offroad** (not actively driving). If you are in a drive, complete the drive first and return to the home screen before changing this setting.
### 3. Reboot the Device
Navigate to **Settings****Device****Reboot** to restart the device.
The reboot applies the settings change and ensures the update service is fully stopped. A confirmation dialog will appear before the reboot proceeds.
### 4. Verify
After the device restarts:
1. Confirm that your settings from steps 1 and 2 are still active
2. Make your desired local file changes (via SSH or other methods)
3. Reboot again to confirm your changes persist
!!! info "Automatic Updates Are Paused"
With updates disabled, your device will **not** receive new sunnypilot releases automatically. You will need to re-enable updates manually when you want to update to a newer version. To re-enable, reverse step 2: **Settings****Software****Disable Updates****OFF**.
!!! tip "When to Use This"
This is useful for testing custom parameter values, experimental configurations, or developer modifications that you want to persist across device reboots without being overwritten by the update system.
-58
View File
@@ -1,58 +0,0 @@
---
title: How to Share a Route
---
# How to Share a Route
## Overview
Sharing driving routes is essential for debugging issues, getting support, and helping developers improve sunnypilot. Routes are shared through [comma Connect](https://connect.comma.ai), comma's web-based route management tool.
## Step 1: Prepare the Route
Before sharing, ensure the route data is fully uploaded and preserved.
### Upload Raw Logs
1. Go to [connect.comma.ai](https://connect.comma.ai)
2. Select the route you want to share
3. Open the **Files** tab
4. Upload the raw logs for the route
!!! warning "Upload Before Sharing"
Raw logs must be **fully uploaded** before they can be reviewed by others. If the logs are not uploaded, reviewers will not have access to the detailed data needed for debugging.
### Preserve the Route
Routes are automatically deleted after a retention period. To prevent this:
1. Select the route in comma Connect
2. Click **More info**
3. Toggle **Preserved** to **ON**
This ensures the route remains available for as long as you need it.
## Step 2: Choose Sharing Method
### Option A: Public Route (Recommended)
The simplest way to share a single route for support or debugging.
1. Select the route in comma Connect
2. Toggle **Public access** to **ON**
3. Copy the **Route ID** from the route details
4. Share the Route ID in the support channel or forum thread
!!! info "Privacy"
Making a route public means **anyone with the Route ID can access it**. Route data includes GPS coordinates and video footage. For privacy, start and end your recorded drives at public places such as parking lots or gas stations. Avoid starting or ending at your home, workplace, or other private locations.
### Option B: Device Sharing
Grants another user access to **all routes** on your device. Use this when ongoing collaboration is needed.
1. Rename your device with your vehicle's **Year/Make/Model** and your **username** (e.g., "2023 Hyundai Ioniq 6 - jasonwen")
2. Go to device settings in comma Connect
3. Share the device via the other user's email address
!!! tip "When to Use Device Sharing"
Device sharing is best for long-term collaboration with a developer or when multiple routes need to be reviewed. For one-off support requests, prefer Option A (Public Route) to limit access to only the relevant route.
-37
View File
@@ -1,37 +0,0 @@
---
title: Home
---
# sunnypilot Documentation
Welcome to the official sunnypilot documentation. Find everything you need to get started, configure your system, and get the most out of your driving experience.
## Quick Links
<div class="grid cards" markdown>
- :material-rocket-launch: **[Getting Started](getting-started/index.md)**
Learn what sunnypilot is and how to get set up
- :material-download: **[Installation](setup/index.md)**
Install sunnypilot on your comma device
- :material-car: **[Features](features/index.md)**
Explore all features and how they work
- :material-cog: **[Settings](settings/index.md)**
Complete guide to every configurable option
- :material-shield: **[Safety](safety/index.md)**
Important safety information for all users
- :material-account-group: **[Community](community/index.md)**
Get involved and connect with other users
</div>
-76
View File
@@ -1,76 +0,0 @@
---
title: Branch Definitions
---
# Branch Definitions
Understanding sunnypilot's branching strategy and device compatibility.
!!! tip "Calling All Testers"
Testers, even without software development experience, are encouraged to run **staging** or **dev** branches and report issues. Your feedback is invaluable for improving sunnypilot before each release.
---
## Release Branches
### release-tizi (C3X)
- **Stability:** :material-check-circle: Highly stable
- **Target devices:** Comma 3X (TIZI)
- **Description:** The recommended branch for most Comma 3X users. This branch contains thoroughly tested features and fixes that have passed through staging and dev. Use this for daily driving.
### release-tici (C3)
- **Stability:** Not yet available
- **Target devices:** Comma Three (TICI)
- **Description:** A dedicated release branch for Comma Three is not yet available. C3 users should use `staging-tici` in the meantime.
---
## Pre-Release Branches
### staging (C4 / C3X)
- **Stability:** :material-alert-circle: Generally stable
- **Target devices:** Comma Four (MICI), Comma 3X (TIZI)
- **Description:** Pre-release testing branch. Features here are being validated before promotion to a release branch. Suitable for users who want early access to upcoming features and are willing to report issues.
### staging-tici (C3)
- **Stability:** :material-alert-circle: Generally stable
- **Target devices:** Comma Three (TICI)
- **Description:** Pre-release testing branch for Comma Three. Provides the most stable experience currently available for C3 devices.
---
## Development Branches
### dev (C4 / C3X)
- **Stability:** :material-close-circle: Least stable
- **Target devices:** Comma Four (MICI), Comma 3X (TIZI)
- **Description:** Active development branch with the latest features and fixes. Intended for testers and developers who want to try the newest changes and provide feedback. Expect occasional issues.
### master (C4 / C3X)
- **Stability:** :material-close-circle: Unstable
- **Target devices:** Comma Four (MICI), Comma 3X (TIZI)
- **Description:** The primary development branch where pull requests are merged. Not recommended for daily driving. Use this branch if you are contributing code to sunnypilot.
### master-dev (C4 / C3X)
- **Stability:** :material-close-circle: Unstable
- **Target devices:** Comma Four (MICI), Comma 3X (TIZI)
- **Description:** CI branch used to build prebuilt artifacts for the `dev` branch. Not intended for direct installation.
---
## Which Branch Should I Use?
| Use Case | Recommended Branch |
|----------|--------------------|
| Daily driving (C3X) | `release-tizi` |
| Daily driving (C3) | `staging-tici` |
| Early access to features (C4/C3X) | `staging` |
| Testing and feedback (C4/C3X) | `dev` |
| Contributing code | `master` |
@@ -1,46 +0,0 @@
---
title: Recommended Branches
---
# Recommended Branches
!!! warning
Please only install the branches listed below. All other branches are experimental development branches and are not intended for general use.
See [Branch Definitions](branch-definitions.md) for detailed descriptions of each branch type.
---
## Comma Four (C4 / MICI)
| Branch | Install URL | Stability |
|--------|------------|-----------|
| staging | `staging.sunnypilot.ai` | Generally stable, pre-release testing |
| dev | `dev.sunnypilot.ai` | Least stable, for testers and developers |
---
## Comma 3X (C3X / TIZI)
| Branch | Install URL | Stability |
|--------|------------|-----------|
| release-tizi | `release.sunnypilot.ai` | Highly stable, recommended for most users |
| staging | `staging.sunnypilot.ai` | Generally stable, pre-release testing |
| dev | `dev.sunnypilot.ai` | Least stable, for testers and developers |
---
## Comma Three (C3 / TICI)
| Branch | Install URL | Stability |
|--------|------------|-----------|
| staging-tici | `staging.sunnypilot.ai` | Pre-release testing for C3 |
!!! note
A dedicated release branch for Comma Three (`release-tici`) is not yet available. Use `staging-tici` for the most stable C3 experience.
---
## Changelogs
For detailed changelogs of each release, see the [sunnypilot GitHub Releases](https://github.com/sunnypilot/sunnypilot/releases) page.
-56
View File
@@ -1,56 +0,0 @@
---
title: Driver Responsibility & Level 2 ADAS
---
# Driver Responsibility & Level 2 ADAS
!!! danger "You Are Always Responsible"
sunnypilot is **NOT** a self-driving system. You are legally and morally responsible for the vehicle at all times. No feature in sunnypilot removes or reduces your obligation to drive safely.
## What is Level 2 ADAS
sunnypilot is classified as a **Level 2 Advanced Driver Assistance System (ADAS)** per the SAE J3016 standard for driving automation. The SAE levels define increasing degrees of automation:
| SAE Level | Name | Driver Role |
|-----------|------|-------------|
| 0 | No Automation | Driver performs all tasks |
| 1 | Driver Assistance | System controls steering OR speed, not both |
| **2** | **Partial Automation** | **System controls steering AND speed; driver must supervise** |
| 3 | Conditional Automation | System handles driving in limited scenarios; driver must be ready |
| 45 | High/Full Automation | System handles all driving tasks in defined conditions |
sunnypilot operates at **Level 2** only. It can control steering and speed simultaneously, but the human driver must remain fully engaged at all times.
## What This Means
At Level 2, the system provides assistance — not autonomy. Specifically:
- The system **can** control steering, acceleration, and braking simultaneously
- The system **cannot** handle unexpected situations, edge cases, or complex scenarios reliably
- The **driver** is the fallback for every situation the system cannot handle
- The **driver** bears full legal responsibility for the vehicle's operation
## Driver Obligations
As the operator of a Level 2 ADAS vehicle, you must:
- **Keep your hands on the steering wheel** at all times
- **Keep your eyes on the road** and maintain situational awareness
- **Be ready to intervene immediately** — the system can disengage or behave unexpectedly without warning
- **Follow all traffic laws** — the system does not replace your judgment or legal obligations
- **Never rely on the system** as a substitute for attentive driving
## NHTSA Guidance
The National Highway Traffic Safety Administration (NHTSA) classifies Level 2 systems as requiring **full driver engagement**. NHTSA's position is clear:
- Level 2 systems are **driver support features**, not automated driving systems
- The driver must be able to perform the complete driving task at all times
- Manufacturers and operators share responsibility for safe use of these systems
For more information, see [NHTSA's guidance on automated vehicles](https://www.nhtsa.gov/technology-innovation/automated-vehicles-safety).
## Related Pages
- [Safety Information](safety.md) — General safety guidelines and system limitations
- [Prohibited Modifications](prohibited-modifications.md) — Modifications and uses that are not allowed
-11
View File
@@ -1,11 +0,0 @@
---
title: Safety
---
# Safety
Read these pages before using sunnypilot. Understanding the safety model and your responsibilities as a driver is essential.
- **[Safety Information](safety.md)** - Core safety principles and system limitations
- **[Driver Responsibility & L2 ADAS](driver-responsibility.md)** - What Level 2 driving assistance means for you
- **[Prohibited Modifications](prohibited-modifications.md)** - Modifications that compromise safety and are not supported
@@ -1,61 +0,0 @@
---
title: Prohibited Modifications
---
# Prohibited Modifications
Certain modifications to sunnypilot are prohibited for safety reasons.
!!! danger "Zero Tolerance Policy"
All official sunnypilot branches strictly adhere to [comma.ai's safety policy](https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md). Any changes against this policy will result in your fork and your device being **banned from both comma.ai and sunnypilot channels**.
## Panda Safety Violations
The following modifications to panda safety logic are strictly prohibited:
- **Preventing longitudinal disengagement on brake** — The system must disengage longitudinal control when the brake pedal is pressed. Overriding this behavior is prohibited.
- **Automatic re-engagement after braking** — Automatically re-engaging longitudinal control upon brake release without explicit driver input is prohibited.
- **Operating with cruise main off** — The system must disengage when cruise control main is in the off state. Bypassing this check is prohibited.
- **Removing steering torque limits** — Modifying or removing the safety-enforced steering torque limits is prohibited.
- **Bypassing vehicle safety interlocks** — Disabling or circumventing any vehicle-level safety interlock is prohibited.
### Panda Safety Limits (Example: Hyundai/Kia/Genesis)
The panda enforces hard acceleration limits that cannot be overridden by software:
| Parameter | Limit |
|-----------|-------|
| **Maximum acceleration** | +2.0 m/s² |
| **Maximum deceleration** | -3.5 m/s² |
These limits are enforced at the hardware level by the panda safety firmware. Any attempt to exceed these limits is blocked regardless of what the software commands.
## Driver Monitoring Violations
- **Reducing or weakening driver monitoring parameters** — Any modification that lowers the sensitivity, delays the response, or otherwise weakens the driver monitoring system is prohibited. This includes increasing allowed distraction time, reducing alert thresholds, or disabling monitoring entirely.
### Driver Monitoring Escalation Timeline
The driver monitoring system follows a strict escalation timeline:
| Phase | Timeout | Description |
|-------|---------|-------------|
| **Active monitoring** | 11 seconds | Time before the first distraction alert when the driver is not looking at the road |
| **Passive monitoring** | 30 seconds | Time before an alert when the driver's face is not detected (e.g., face covered or camera obstructed) |
| **Terminal alerts** | 3 strikes | After 3 terminal-level alerts (driver unresponsive), the system locks out and requires a full restart |
Modifying any of these thresholds to be more permissive is strictly prohibited.
## General Prohibitions
- Disabling or bypassing driver monitoring
- Modifying braking safety thresholds
- Any modification that reduces the driver's ability to take manual control
## Why These Restrictions Exist
These restrictions protect you, your passengers, and other road users. Safety-critical systems have been carefully tuned and tested. Unauthorized modifications can have unpredictable and dangerous consequences.
!!! info "References"
- [comma.ai Safety Policy](https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md)
- [Official sunnypilot Branches](../references/recommended-branches.md)
-38
View File
@@ -1,38 +0,0 @@
---
title: Safety Information
---
# Safety Information
!!! danger "Important"
sunnypilot is a **driver assistance** system. It is **NOT** a self-driving system. The driver must maintain attention at all times.
## Driver Responsibilities
- **Keep your hands on the wheel** at all times
- **Keep your eyes on the road** — do not rely on the system to detect all hazards
- **Be ready to take over** immediately at any time
- **Follow all traffic laws** — the system does not replace your judgment
## System Limitations
sunnypilot may not perform well in:
- Heavy rain, snow, or fog
- Construction zones
- Unmarked or poorly marked roads
- Unusual traffic situations
- Night driving with poor lighting
## When to Disengage
Immediately take manual control if:
- The system behaves unexpectedly
- Road conditions change suddenly
- You enter an unfamiliar or complex driving situation
- Emergency vehicles are present
## Prohibited Use
See [Prohibited Modifications](prohibited-modifications.md) for modifications and uses that are not allowed.
-87
View File
@@ -1,87 +0,0 @@
---
title: Cruise Control Settings
---
# Cruise Control Settings
Configure adaptive cruise control behavior, including intelligent button management, smart cruise features, and custom speed increments.
**Location**: `Settings -> Cruise`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Intelligent Cruise Button Management (ICBM) (Alpha)
Allows sunnypilot to dynamically manage cruise speed by intercepting button presses on the steering wheel. When enabled, speed adjustments are handled intelligently to support features like Speed Limit Assist.
!!! note "Vehicle Compatibility"
This toggle only appears if your vehicle supports ICBM. If you do not see it, your vehicle does not support this feature.
---
## Smart Cruise Control - Vision
Uses vision-based path predictions to estimate the appropriate speed to drive through turns ahead. The system monitors predicted lateral acceleration and smoothly decelerates when entering curves, then accelerates back to your set speed when exiting.
!!! note "Availability"
Requires longitudinal control, or ICBM must be enabled.
---
## Smart Cruise Control - Map
Uses map data to estimate the appropriate speed to drive through turns ahead. The system calculates deceleration distance based on your current speed and upcoming waypoint target velocities.
!!! note "Availability"
Requires longitudinal control, or ICBM must be enabled.
---
## Custom ACC Speed Increments
Enables customization of how much the set speed changes with short and long button presses on the steering wheel.
!!! note "Availability"
Requires longitudinal control (or ICBM enabled), and PCM Cruise must not be active.
### Short Press Increment
Once the toggle is enabled, a selector appears below it. Use the **-** and **+** buttons to set the speed change (in km/h or mph) for a short press of the cruise speed button. The range is 1 to 10.
### Long Press Increment
A second selector lets you choose the speed change for a long press:
| Selection | Speed change |
|-----------|-------------|
| **1** | 1 km/h (or mph) |
| **2** | 5 km/h (or mph) |
| **3** | 10 km/h (or mph) |
---
## Enable Dynamic Experimental Control
Automatically switches between standard and experimental driving mode based on driving conditions. When enabled, the system uses real-time signals (speed, turn detection, stop signs, traffic lights) to determine the most appropriate mode.
!!! note "Availability"
Requires longitudinal control. The device must be offroad (parked, ignition off) to change this setting.
---
## Speed Limit
A button that opens the [Speed Limit sub-panel](speed-limit/index.md) where you can configure speed limit mode, offset, and data source.
---
## Related Features
- [Intelligent Cruise Button Management](../../features/cruise/icbm.md)
- [Smart Cruise Control - Vision](../../features/cruise/scc-v.md)
- [Smart Cruise Control - Map](../../features/cruise/scc-m.md)
- [Custom ACC Increments](../../features/cruise/custom-acc-increments.md)
- [Dynamic Experimental Control](../../features/cruise/dynamic-experimental-control.md)
@@ -1,66 +0,0 @@
---
title: Speed Limit Settings
---
# Speed Limit Settings
Configure how sunnypilot responds to detected speed limits from maps, signs, and navigation data.
**Location**: `Settings -> Cruise -> Speed Limit`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Speed Limit
A row of four buttons that controls how sunnypilot uses speed limit information:
| Mode | What it does |
|------|-------------|
| **Off** | Speed limit data is not used |
| **Info** | Displays the current speed limit on the HUD |
| **Warning** | Displays speed limit and alerts you when exceeding it |
| **Assist** | Automatically adjusts cruise speed to match the speed limit (with optional offset) |
!!! note "Availability"
Requires longitudinal control, or ICBM must be enabled.
!!! warning "Vehicle Restrictions"
- **Tesla**: Speed Limit Assist mode is disabled on release branches
- **Rivian**: Speed Limit Assist mode is always disabled
---
## Customize Source
A button that opens the [Speed Limit Source sub-panel](source.md) where you choose which data source provides speed limit information (car, map, or a combination).
---
## Speed Limit Offset
A row of three buttons that controls how the speed offset is calculated:
| Type | What it does |
|------|-------------|
| **None** | No offset - cruise matches the exact speed limit |
| **Fixed** | A fixed value (in km/h or mph) is added to or subtracted from the limit |
| **%** | A percentage is applied to the speed limit |
---
## Speed Limit Value Offset
A slider that sets the offset value applied to the detected speed limit. Use the **-** and **+** buttons to adjust from -30 to +30. This slider only appears when Speed Limit Offset is set to Fixed or %.
- **Positive values**: Cruise faster than the limit (e.g., +5 means 5 over)
- **Negative values**: Cruise slower than the limit (e.g., -5 means 5 under)
---
## Related Features
- [Speed Limit Assist](../../../features/cruise/speed-limit.md)
- [OSM Maps](../../../features/connected/osm-maps.md)
@@ -1,37 +0,0 @@
---
title: Speed Limit Source
---
# Speed Limit Source
**Location**: `Settings -> Cruise -> Speed Limit -> Customize Source`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
Configure which data source sunnypilot uses to determine the current speed limit, and how multiple sources are prioritized.
---
## Speed Limit Source
A row of five buttons lets you choose the source policy:
| Option | What it does |
|--------|-------------|
| **Car Only** | Uses only the speed limit data provided by your vehicle's built-in systems (e.g., traffic sign recognition from the car's cameras) |
| **Map Only** | Uses only OpenStreetMap data for speed limits. Requires a downloaded map database from the [OSM panel](../../osm.md) |
| **Car First** | Checks the car's speed limit data first. Falls back to map data if the car does not report a limit |
| **Map First** | Checks map data first. Falls back to the car's reported limit if no map data is available |
| **Combined** | Uses the higher of the two available values from car and map sources |
!!! tip
**Car First** is a good default for vehicles with traffic sign recognition. If your vehicle does not have sign recognition, use **Map Only** or **Map First** and make sure you have downloaded the map for your region in the [OSM panel](../../osm.md).
---
## Related
- [Speed Limit Settings](index.md) - mode, offset type, and offset value
- [OSM Panel](../../osm.md) - download map data for your region
- [Speed Limit Assist (Feature)](../../../features/cruise/speed-limit.md) - how Speed Limit Assist works
-136
View File
@@ -1,136 +0,0 @@
---
title: Developer Settings
---
# Developer Settings
Advanced settings for developers and power users, including debug tools, connectivity options, and alpha features.
**Location**: `Settings -> Developer`
!!! info "Toggle & Device Availability"
Available and configurable on all devices (comma 3X/3, comma four, sunnylink).
---
## Show Advanced Controls
Reveals additional advanced settings throughout the sunnypilot interface. Enabling this does not change any driving behavior - it only makes hidden controls visible.
Settings gated behind this toggle include:
- [Models](models.md): Adjust Lane Turn Speed, Adjust Software Delay
- [Software](software.md): Disable Updates
- Developer: GitHub Runner Service, copyparty Service, Quickboot Mode
---
## Enable ADB
Enables ADB (Android Debug Bridge) for connecting to the device over USB or network for debugging.
!!! note "Availability"
Can only be changed while the device is offroad.
---
## Enable SSH
Enables SSH access to the device for remote terminal sessions.
---
## SSH Keys
A button that fetches SSH public keys from a GitHub username and installs them on the device. This allows SSH login using your GitHub-associated key pair.
!!! warning
Only add SSH keys from users you trust. Anyone with an installed key has full access to the device.
---
## Joystick Debug Mode
Enables joystick-controlled driving for testing and development purposes.
!!! note "Availability"
Hidden on release branches. Can only be changed while the device is offroad.
---
## Longitudinal Maneuver Mode
Enables a longitudinal debug mode for testing acceleration and braking maneuvers.
!!! note "Availability"
Hidden on release branches. Requires longitudinal control and the device must be offroad.
---
## sunnypilot Longitudinal Control (Alpha)
Enables alpha-quality longitudinal control for vehicles that do not yet have full upstream support. This replaces the car's stock adaptive cruise control with sunnypilot's own gas and brake management.
!!! warning
Enabling this disables AEB (Automatic Emergency Braking). A confirmation dialog appears before activation.
!!! note "Availability"
Hidden on release branches. Only appears if your vehicle supports alpha longitudinal control.
---
## UI Debug Mode
Shows touch indicators, FPS counter, and mouse coordinates on screen. Useful for UI development and troubleshooting display issues.
---
## GitHub Runner Service
Enables the GitHub Actions self-hosted runner service on the device. This allows the device to execute CI/CD jobs from your repository.
!!! note "Availability"
Only appears when **Show Advanced Controls** is enabled. Hidden on release branches.
---
## copyparty Service
Enables a file server on the device for downloading driving routes and logs from a web browser via the device's local IP address.
!!! note "Availability"
Only appears when **Show Advanced Controls** is enabled.
---
## Quickboot Mode
Creates a prebuilt file for accelerated boot, reducing startup time. Requires software updates to be disabled first.
!!! note "Availability"
Only appears when **Show Advanced Controls** is enabled, the device is not on a release or development branch, and **Disable Updates** is enabled in [Software Settings](software.md).
---
## Error Log
A **VIEW** button that opens the sunnypilot crash error log in a viewer. On close, you are offered the option to delete the log.
!!! note "Availability"
Hidden on release branches.
---
## Platform Differences
On **comma four**, the Developer panel includes:
- ADB (circle icon toggle)
- SSH (circle icon toggle)
- SSH Keys
- Joystick Debug Mode
- Longitudinal Maneuver Mode
- Alpha Longitudinal
- UI Debug Mode
The comma four panel does not include: Show Advanced Controls, GitHub Runner Service, copyparty Service, Quickboot Mode, or Error Log.
-137
View File
@@ -1,137 +0,0 @@
---
title: Device Settings
---
# Device Settings
View device information, manage calibration, configure power behavior, and access system utilities.
**Location**: `Settings -> Device`
!!! info "Toggle & Device Availability"
Available and configurable on all devices (comma 3X/3, comma four, sunnylink).
---
## Device Information
The top of the panel displays your device's **Dongle ID** and **Serial** number. These identifiers are used for pairing and support.
---
## Pair Device
Pairs your comma device with your comma connect account. Once paired, you can view driving routes, manage the device remotely, and access dashcam footage through the comma connect app.
---
## Reset Calibration
Resets the device's calibration data. After reset, the system will re-learn the camera's mounting position during your next drive. The current calibration status is shown in the description text.
---
## Change Language
Opens a language selection dialog where you can choose the display language for the interface.
---
## Enable Always Offroad / Exit Always Offroad
Toggles "Always Offroad" mode. When enabled, the device stays in its offroad (parked) state even when the vehicle is running. This is useful for configuring settings or downloading updates without driving. The button text changes based on the current state.
---
## Wake Up Behavior
A row of two buttons that controls what the device does when it wakes up:
| Option | What it does |
|--------|-------------|
| **Default** | Device boots normally and enters the driving screen |
| **Offroad** | Device boots directly into offroad (settings) mode |
---
## Max Time Offroad
A selector that sets how long the device stays powered on after the engine is turned off before automatically shutting down. Values range from 5 minutes to 30 hours, or **Always On** to prevent auto-shutdown.
---
## Quiet Mode
Toggles quiet mode on or off. When enabled, the device suppresses non-critical sounds. Safety-critical alerts are never silenced.
---
## Driver Camera Preview
Opens a live preview of the driver-facing camera so you can verify its position and angle.
!!! note "Availability"
Disabled while the vehicle is onroad.
---
## Onroad Uploads
Toggles data uploads while driving. When enabled, the device uploads driving segments over a cellular or Wi-Fi connection during your drive instead of waiting until parked.
---
## Training Guide
Opens the sunnypilot training guide, which walks through the system's rules, features, and limitations.
!!! note "Availability"
Disabled while the vehicle is onroad.
---
## Regulatory
Displays FCC regulatory information for the device.
!!! note "Availability"
Disabled while the vehicle is onroad.
---
## Reset Settings
Resets all sunnypilot settings to their defaults. This is a two-step confirmation to prevent accidental resets. After confirmation, the device reboots.
!!! warning
This action cannot be undone. All custom settings will be lost.
!!! note "Availability"
Disabled while the vehicle is onroad.
---
## Reboot / Power Off
**Reboot** restarts the device. **Power Off** shuts the device down completely.
Power Off is hidden while the vehicle is onroad to prevent accidental shutdown during driving.
---
## Platform Differences
On **comma four**, the Device panel has a simplified layout with these items:
- Device ID and Serial (info display)
- Update sunnypilot
- Pair
- Review Training Guide
- Driver Camera Preview
- Terms & Conditions
- Regulatory Info
- Reset Calibration
- Uninstall sunnypilot
- Reboot / Power Off (circle buttons)
The comma four panel does not include: Always Offroad, Wake Up Behavior, Max Time Offroad, Quiet Mode, Onroad Uploads, Reset Settings, or Change Language.
-52
View File
@@ -1,52 +0,0 @@
---
title: Display Settings
---
# Display Settings
Control screen brightness, timing, and UI behavior for the onroad display.
**Location**: `Settings -> Display`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Onroad Brightness
A selector that controls the screen brightness while driving. Use the **-** and **+** buttons to cycle through the options:
| Option | What it does |
|--------|-------------|
| **Auto (Default)** | Adjusts brightness automatically based on ambient light |
| **Auto (Dark)** | Adjusts automatically but biased toward a darker screen |
| **Screen Off** | Turns the screen off completely after the delay period |
| **0% - 100%** | Fixed brightness level in 5% increments |
---
## Onroad Brightness Delay
A selector that sets how long the screen stays at full brightness before the selected brightness mode takes effect. Available delay values range from seconds to minutes.
!!! note "Availability"
This selector is disabled when Onroad Brightness is set to Auto (Default) or Auto (Dark), since those modes manage brightness continuously.
---
## Interactivity Timeout
A selector that controls how long the settings interface stays open before automatically closing and returning to the driving screen. Use the **-** and **+** buttons to choose a timeout:
| Option | Timeout |
|--------|---------|
| **Default** | Standard system timeout |
| **10s - 120s** | Custom timeout in 10-second increments |
| **1m / 2m** | One or two minute timeout |
---
## Related Features
- [Onroad Display](../features/display/onroad-display.md)
-51
View File
@@ -1,51 +0,0 @@
---
title: Firehose Settings
---
# Firehose Settings
Firehose Mode uploads training data from your drives to comma's servers, helping improve autonomous driving models.
**Location**: `Settings -> Firehose`
!!! info "Toggle & Device Availability"
Available and configurable on all devices (comma 3X/3, comma four, sunnylink).
!!! info "First Fork with Official Support"
sunnypilot is the first and currently only major fork to receive official Firehose Mode support.
---
## How It Works
When Firehose Mode is active, the system randomly samples a portion of your drives rather than uploading everything. It queues approximately 10 segments at a time for transmission, whether sunnypilot is actively engaged or not. Both engaged and disengaged driving data contributes to simulator training.
No special driving behavior is needed. Normal driving patterns work fine.
---
## Status Display
The panel shows whether Firehose Mode is currently active or inactive:
- **Active** (green): The device is connected to an unmetered network and uploading data.
- **Inactive** (red): Connect to an unmetered Wi-Fi network to begin uploading.
If available, the panel also displays the number of segments you have contributed to the training dataset.
---
## Requirements
- **Compatible branch**: You must be running one of the following branches:
- `staging`, `dev`, or `master`
- `staging-tici`, `master-tici`
- `release-tizi` or `release-tici`
- **Weekly connectivity**: Connect to Wi-Fi with a reliable USB-C power adapter at minimum once per week.
- **Supported vehicle**: Only vehicles officially supported in upstream openpilot qualify for model training data collection.
---
## Optional: Mobile Upload
Devices with hotspot access or unlimited data plans can upload data while driving, removing the need for weekly Wi-Fi sessions.
-28
View File
@@ -1,28 +0,0 @@
---
title: Settings
---
# Settings
Complete reference for every configurable option in sunnypilot. The panels below are listed in the same order they appear on your device's settings sidebar.
!!! info "Not all settings appear on every device"
comma four users see a simplified settings screen. Most features still work on comma four - you just configure the hidden ones through sunnylink. A few onroad visual features are not available on comma four at all. See [Platform Differences](platform-differences.md) for the full breakdown.
| Panel | Description |
|-------|-------------|
| [Device](device.md) | Device information, calibration, power, and system controls |
| [Network](network.md) | Wi-Fi connection management |
| [sunnylink](sunnylink.md) | Cloud integration, backup/restore, sponsor status |
| [Toggles](toggles.md) | Core driving toggles (enable sunnypilot, experimental mode, lane departure, etc.) |
| [Software](software.md) | Update management and branch selection |
| [Models](models.md) | Driving model selection, download, and tuning |
| [Steering](steering/index.md) | Lateral control: MADS, lane change, blinker pause, and torque tuning |
| [Cruise](cruise/index.md) | Cruise behavior: ICBM, smart cruise, custom increments, speed limit assist |
| [Visuals](visuals.md) | HUD overlays, indicators, and visual customization |
| [Display](display.md) | Screen brightness, timeout, and interactivity settings |
| [OSM](osm.md) | OpenStreetMap database and map downloads |
| [Trips](trips.md) | Drive statistics and trip history |
| [Vehicle](vehicle/index.md) | Vehicle-specific settings by brand |
| [Firehose](firehose.md) | Training data upload for comma's driving models |
| [Developer](developer.md) | Developer and debug options |
-83
View File
@@ -1,83 +0,0 @@
---
title: Models Settings
---
# Models Settings
Select and manage driving models, and configure model-related parameters.
**Location**: `Settings -> Models`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Current Model
A button labeled **SELECT** that opens a model selection dialog. The currently active model name is displayed. Choose from available driving models, each with different driving characteristics and capabilities.
!!! warning "Offroad Only"
Model selection can only be changed while the vehicle is offroad (parked with ignition off), unless Always Offroad mode is active.
---
## Model Download Progress
When a model is being downloaded, progress bars appear for each component:
- **Driving Model** - the main supercombo neural network
- **Vision Model** - the vision processing model
- **Policy Model** - the decision-making policy model
Each shows a progress bar with download percentage.
---
## Refresh Model List
A button that forces a refresh of the available model list from the server. Use this if you expect a new model to be available but do not see it in the selection dialog.
---
## Clear Model Cache
A button that deletes all downloaded models except the currently active one. The current cache size in MB is displayed. Useful for freeing storage space.
---
## Cancel Download
A button that appears only while a model download is in progress. Cancels the current download.
---
## Use Lane Turn Desires
When enabled, at speeds of 20 mph (32 km/h) or below with the turn signal on, the model plans a turn in the blinker direction at the nearest drivable path. This helps the model make smoother turns at low speeds.
---
## Adjust Lane Turn Speed
A selector that sets the maximum speed at which lane turn desires are active. Default is 19 mph. Use the **-** and **+** buttons to adjust.
!!! note "Availability"
Only appears when **Use Lane Turn Desires** is enabled and **Show Advanced Controls** is enabled in [Developer Settings](developer.md).
---
## Live Learning Steer Delay
Enables real-time learning and adaptive steering response time. The system continuously measures the actual steering delay and adjusts compensation accordingly. When disabled, a fixed response time is used instead.
The description text shows the current live delay value or a breakdown of delay components.
---
## Adjust Software Delay
A selector that sets the fixed software delay value used when Live Learning Steer Delay is disabled. Default is 0.2 seconds. Use the **-** and **+** buttons to adjust.
!!! note "Availability"
Only appears when **Live Learning Steer Delay** is disabled and **Show Advanced Controls** is enabled in [Developer Settings](developer.md).
-22
View File
@@ -1,22 +0,0 @@
---
title: Network Settings
---
# Network Settings
Manage Wi-Fi connections on your comma device.
**Location**: `Settings -> Network`
!!! info "Toggle & Device Availability"
Available and configurable on all devices (comma 3X/3, comma four, sunnylink).
---
## Wi-Fi
The Network panel displays a list of available Wi-Fi networks. Tap a network name to connect, or use the **Scan** button to refresh the list.
- A stable Wi-Fi connection is required for software updates and route uploads.
- For Firehose Mode, connect to Wi-Fi with a reliable USB-C power adapter at least once per week.
- Hotspot and tethered connections also work for data uploads while driving if your data plan supports it.
-68
View File
@@ -1,68 +0,0 @@
---
title: OSM Settings
---
# OSM Settings
Download and manage OpenStreetMap (OSM) data used for speed limit lookups, curve detection, and road name display.
**Location**: `Settings -> OSM`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Mapd Version
Displays the version of the map processing daemon currently running on the device.
---
## Downloaded Maps
Shows the current size of downloaded map data. A **DELETE** button removes all downloaded map files to free storage space.
!!! note "Availability"
The delete button is disabled while a map download is in progress.
---
## Downloading Map
A progress indicator that appears only while a map download or database check is active. Shows the download percentage and the file being downloaded.
---
## Database Update
A **CHECK** button that checks for updates to your selected region's OSM database. After checking, it downloads any available updates. The description shows the last check time or current download progress.
!!! note "Availability"
Only appears when a country has been selected. Disabled while a download is in progress.
---
## Country
A **SELECT** button that opens a country selection dialog. Choose the country for which you want to download map data. The currently selected country is displayed.
!!! note "Availability"
Disabled while a download is in progress.
---
## State
A **SELECT** button that opens a US state selection dialog. Narrows the download to a specific state, reducing download size and improving performance.
!!! note "Availability"
Only appears when the selected country is the United States. Disabled while a download is in progress.
---
## Related Features
- [OSM Maps](../features/connected/osm-maps.md)
- [Speed Limit Assist](../features/cruise/speed-limit.md)
- [Smart Cruise Control - Map](../features/cruise/scc-m.md)
-79
View File
@@ -1,79 +0,0 @@
---
title: Platform Differences
---
# Platform Differences
sunnypilot runs on different hardware platforms, each with its own settings interface. This page explains the differences so you know what to expect.
## Platforms
### comma 3X / comma 3 (TIZI/TICI)
The full-featured interface with a sidebar-based settings panel. All settings and onroad visual features documented in this manual are available on these devices.
### comma four (MICI)
A simplified, touch-friendly interface designed for the comma four's compact form factor. Only a subset of settings are exposed through the on-device screen. Most features still work on comma four - you configure the hidden ones through sunnylink.
However, some onroad visual features require UI rendering code that does not exist on comma four. These features cannot be activated on comma four even through sunnylink. Each setting page notes which category it falls into.
### sunnylink (Web / App)
The sunnylink web interface provides access to all configurable settings regardless of which device you use. If a setting is not shown on your comma four's screen, you can configure it through sunnylink - provided the feature is supported on your device.
## Three Levels of Device Availability
Throughout this manual, each setting includes a "Toggle & Device Availability" note using one of these three patterns:
| Level | Badge Text | What It Means |
|-------|-----------|---------------|
| **Full** | "Available and configurable on all devices (comma 3X/3, comma four, sunnylink)." | The setting appears on every device's screen and in sunnylink. |
| **Config-Hidden** | "Supported on all devices. comma four users must use sunnylink to change this setting." | The feature works on comma four, but the toggle is hidden from the device screen. Use sunnylink to configure it. |
| **Unsupported** | "Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink." | The feature requires onroad UI rendering code that does not exist on comma four. Forcing the param via sunnylink will not make it work. |
## On-Screen Settings Availability
The table below shows which settings panels have on-screen controls on each platform. A :material-close: means the panel is not shown on that device's screen.
| Panel | comma 3X/3 | comma four | sunnylink |
|-------|:----------:|:----------:|:---------:|
| [Device](device.md) | :material-check: | :material-check: (simplified) | :material-check: |
| [Network](network.md) | :material-check: | :material-check: | :material-check: |
| [sunnylink](sunnylink.md) | :material-check: | :material-close: | :material-check: |
| [Toggles](toggles.md) | :material-check: | :material-check: (fewer items) | :material-check: |
| [Software](software.md) | :material-check: | :material-close: | :material-check: |
| [Models](models.md) | :material-check: | :material-close: | :material-check: |
| [Steering](steering/index.md) | :material-check: | :material-close: | :material-check: |
| [Cruise](cruise/index.md) | :material-check: | :material-close: | :material-check: |
| [Visuals](visuals.md) | :material-check: | :material-close: | :material-check: |
| [Display](display.md) | :material-check: | :material-close: | :material-check: |
| [OSM](osm.md) | :material-check: | :material-close: | :material-check: |
| [Trips](trips.md) | :material-check: | :material-close: | :material-check: |
| [Vehicle](vehicle/index.md) | :material-check: | :material-close: | :material-check: |
| [Firehose](firehose.md) | :material-check: | :material-check: (condensed) | :material-check: |
| [Developer](developer.md) | :material-check: | :material-check: | :material-check: |
## Onroad Visual Features Not Available on comma four
The following features from the [Visuals](visuals.md) panel rely on onroad UI rendering code that only exists on comma 3X/3. These cannot be enabled on comma four:
- Enable Standstill Timer
- Display Road Name
- Green Traffic Light Alert (Beta)
- Lead Departure Alert (Beta)
- Speedometer: Always Display True Speed
- Speedometer: Hide from Onroad Screen
- Display Turn Signals (always-on display; lane change alert icons still appear)
- Real-time Acceleration Bar
- Display Metrics Below Chevron
- Developer UI (onroad overlay)
## What This Means for You
If you use a **comma four**, your on-device screen shows a simplified set of controls. Most sunnypilot features still run on your device - you configure the hidden ones through **sunnylink**. The exception is the onroad visual features listed above, which require rendering code that does not exist on comma four.
If you use a **comma 3X or comma 3**, all settings and onroad visual features are directly accessible from the device sidebar.
!!! tip
Throughout this manual, each setting includes a "Toggle & Device Availability" note. Look for these callouts to quickly check whether a feature works on your device and where to configure it.
-60
View File
@@ -1,60 +0,0 @@
---
title: Software Settings
---
# Software Settings
Manage software updates, view release notes, and switch branches.
**Location**: `Settings -> Software`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Current Version
Displays the currently installed version of sunnypilot. The description text shows release notes for the current version.
---
## Download
A button that checks for available updates. If an update is found, the button changes to **DOWNLOAD** to begin downloading. Progress is shown during the download.
!!! note "Availability"
Only available while the device is offroad.
---
## Install Update
A button that appears after an update has been downloaded. Tapping it reboots the device to install the update.
!!! note "Availability"
Only appears when an update has been downloaded and the device is offroad.
---
## Target Branch
A button labeled **SELECT** that opens a branch selection dialog. Choose which sunnypilot branch to track for updates. The currently selected branch is displayed.
!!! tip
For daily driving, stay on the latest **release** branch. Switch to staging or dev branches only if you want to test new features.
---
## Uninstall
A button that uninstalls sunnypilot from the device. Requires confirmation before proceeding.
---
## Disable Updates
Prevents the device from checking for or applying software updates. The device remains on its current version indefinitely. A reboot prompt appears when toggling this setting.
!!! note "Availability"
Only appears when **Show Advanced Controls** is enabled in [Developer Settings](developer.md). Can only be changed while the device is offroad.
-89
View File
@@ -1,89 +0,0 @@
---
title: Steering Settings
---
# Steering Settings
Configure lateral (steering) control behavior including MADS, lane changes, blinker pause, and torque tuning.
**Location**: `Settings -> Steering`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Modular Assistive Driving System (MADS)
A toggle that enables MADS, which decouples lateral (steering) control from longitudinal (speed) control. With MADS on, steering assistance can remain active even when cruise control is not engaged.
Turn this toggle **on** to enable MADS, or **off** to revert to standard engagement behavior.
When enabled, a **Customize MADS** button appears below the toggle. Tap it to open the [MADS sub-panel](mads.md) where you can configure engagement modes and brake pedal behavior.
!!! note "Platform-specific behavior"
Some vehicles (Rivian, certain Tesla configurations) show limited MADS settings. The system displays a note indicating which options are restricted for your vehicle.
---
## Customize Lane Change
A button that opens the [Lane Change sub-panel](lane-change.md) where you can set the auto lane change timer and blind spot monitoring delay.
---
## Pause Lateral Control with Blinker
When you activate your turn signal, this feature temporarily pauses automatic steering so you can take manual control of the wheel. Useful during merges, parking, or any situation where you want to steer by hand while keeping the system otherwise active.
Turn this toggle **on** to enable it.
### Minimum Speed to Pause Lateral Control
Once the blinker pause toggle is enabled, a speed selector appears directly below it. Use the **-** and **+** buttons to set the speed threshold. Lateral control only pauses when your current speed is below this value while the blinker is on. The speed displays in your preferred unit (km/h or mph).
### Post-Blinker Delay
A second selector lets you choose how many seconds the system waits after the blinker turns off before resuming automatic steering. The delay ranges from 0 to 10 seconds.
!!! tip
Set the delay to at least 1-2 seconds to avoid the system resuming steering while you are still mid-maneuver.
---
## Enforce Torque Lateral Control
Forces torque-based lateral control on your vehicle, even if it does not use torque control by default.
When enabled, a **Customize Torque Params** button appears below the toggle. Tap it to open the [Torque sub-panel](torque.md) for advanced tuning.
!!! note "Availability"
This toggle is hidden on vehicles with angle-based steering. Enabling this disables Neural Network Lateral Control (NNLC), and vice versa. The device must be offroad (parked, ignition off) to change this setting.
---
## Neural Network Lateral Control (NNLC)
Enables a neural network model to handle lateral control instead of the traditional controller. NNLC can provide smoother steering in some situations.
!!! note "Availability"
This toggle is hidden on vehicles with angle-based steering. Enabling this disables Enforce Torque Lateral Control, and vice versa. The device must be offroad to change this setting.
---
## Sub-Panels
The Steering section contains these additional configuration pages:
- **[MADS Settings](mads.md)** - configure engagement modes and brake pedal behavior
- **[Lane Change Settings](lane-change.md)** - configure auto lane change timing and blind spot monitoring
- **[Torque Settings](torque.md)** - fine-tune torque lateral control parameters
---
## Related Features
- [Modular Assistive Driving System](../../features/steering/mads.md)
- [Neural Network Lateral Control](../../features/steering/nnlc.md)
- [Auto Lane Change](../../features/steering/auto-lane-change.md)
- [Torque Control](../../features/steering/torque-control.md)
-43
View File
@@ -1,43 +0,0 @@
---
title: Lane Change Settings
---
# Lane Change Settings
Configure automatic lane change behavior and blind spot monitoring integration.
**Location**: `Settings -> Steering -> Customize Lane Change`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Auto Lane Change by Blinker
A selector that controls how lane changes are initiated when you activate the turn signal. Use the **-** and **+** buttons to cycle through the options:
| Option | What happens |
|--------|-------------|
| **Off** | Auto lane change is disabled |
| **Nudge** | Requires a light steering nudge in the desired direction to start the lane change (default) |
| **Nudgeless** | Lane change begins immediately when the turn signal is activated - no nudge needed |
| **0.5 s** | Lane change begins 0.5 seconds after the turn signal is activated |
| **1 s** | Lane change begins 1 second after activation |
| **2 s** | Lane change begins 2 seconds after activation |
| **3 s** | Lane change begins 3 seconds after activation |
---
## Auto Lane Change: Delay with Blind Spot
When enabled, the system waits for the blind spot to clear before executing a lane change. If a vehicle is detected in the blind spot, the lane change is delayed until the path is clear.
!!! note "Availability"
This toggle only appears if your vehicle supports Blind Spot Monitoring (BSM) and Auto Lane Change by Blinker is set to a mode other than Off or Nudge.
---
## Related Features
- [Auto Lane Change](../../features/steering/auto-lane-change.md)
-62
View File
@@ -1,62 +0,0 @@
---
title: MADS Settings
---
# MADS Settings
Fine-tune how the Modular Assistive Driving System (MADS) engages and disengages steering assistance.
**Location**: `Settings -> Steering -> Customize MADS`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
!!! info "Prerequisite"
The main **Modular Assistive Driving System (MADS)** toggle must be enabled in [Steering Settings](index.md) to access this sub-panel.
---
## Toggle with Main Cruise
When enabled, pressing the main cruise button (the on/off button on the steering wheel) can activate MADS steering assistance.
!!! warning "Vehicle Restrictions"
- **Rivian**: Always forced OFF (limited settings mode)
- **Tesla (without vehicle bus)**: Always forced OFF (limited settings mode)
!!! note
For vehicles without a dedicated LFA/LKAS button, disabling this will prevent lateral control engagement.
---
## Unified Engagement Mode (UEM)
When enabled, engaging cruise control also automatically engages MADS lateral control in a single action, rather than requiring separate activation.
Once lateral control is engaged via UEM, it remains engaged until you manually disable it using the MADS button or turn off the car.
!!! warning "Vehicle Restrictions"
- **Rivian**: Always forced ON (limited settings mode)
- **Tesla (without vehicle bus)**: Always forced ON (limited settings mode)
---
## Steering Mode on Brake Pedal
A row of three buttons controls what happens to MADS steering assistance when you press the brake pedal:
| Mode | What happens |
|------|-------------|
| **Remain Active** | Steering assistance continues even after you press the brake |
| **Pause** | Steering assistance pauses but can be quickly resumed |
| **Disengage** | Steering assistance fully disengages when you brake |
!!! warning "Vehicle Restrictions"
- **Rivian**: Always forced to Disengage (limited settings mode)
- **Tesla (without vehicle bus)**: Always forced to Disengage (limited settings mode)
---
## Related Features
- [Modular Assistive Driving System](../../features/steering/mads.md)
-82
View File
@@ -1,82 +0,0 @@
---
title: Torque Settings
---
# Torque Settings
Advanced tuning parameters for torque-based lateral (steering) control. These settings give you fine-grained control over how the steering motor responds.
**Location**: `Settings -> Steering -> Customize Torque Params`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
!!! info "Prerequisite"
**Enforce Torque Lateral Control** must be enabled in [Steering Settings](index.md) to access this sub-panel. Not available on vehicles with angle-based steering.
!!! warning "Offroad Only"
All torque settings can only be changed while the vehicle is offroad (parked with ignition off).
---
## Torque Control Tune Version
A button that opens a version selector. Choose which version of the torque control tuning algorithm to use. Newer versions may offer improved performance but can behave differently than what you are accustomed to.
---
## Self-Tune
Enables real-time self-tuning of torque parameters based on your driving behavior. The system continuously adjusts lateral acceleration factor and friction values for optimal steering feel.
---
## Less Restrict Settings for Self-Tune (Beta)
Uses a more relaxed self-tuning profile. The torque controller is more forgiving when learning values, which may provide a smoother but less responsive steering feel.
!!! note "Availability"
This toggle only appears when **Self-Tune** is enabled.
---
## Enable Custom Tuning
Enables manual override of torque control parameters. When enabled, you can set specific values for lateral acceleration and friction instead of relying on self-tuning. The values you set here override the offline values from the vehicle's tuning data files.
---
## Manual Real-Time Tuning
Forces the torque controller to use your fixed custom values instead of the learned values from Self-Tune. Enabling this overrides Self-Tune values in real time.
!!! note "Availability"
This toggle only appears when **Enable Custom Tuning** is enabled.
---
## Lateral Acceleration Factor
A slider that controls the lateral acceleration gain. Use the **-** and **+** buttons to adjust. The value displays as a decimal (e.g., 1.50 means 1.50x lateral acceleration factor).
Higher values produce more aggressive steering response. Lower values produce softer response.
!!! note "Availability"
This slider only appears when **Enable Custom Tuning** is enabled.
---
## Friction
A slider that controls the friction compensation factor. Use the **-** and **+** buttons to adjust. The value displays as a decimal (e.g., 0.75).
Adjusts how much the system compensates for steering friction in your vehicle.
!!! note "Availability"
This slider only appears when **Enable Custom Tuning** is enabled.
---
## Related Features
- [Torque Control](../../features/steering/torque-control.md)
-68
View File
@@ -1,68 +0,0 @@
---
title: sunnylink Settings
---
# sunnylink Settings
Configure the sunnylink cloud integration for secure backup, restore, sponsorship, and remote configuration.
**Location**: `Settings -> sunnylink`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Enable sunnylink
Master toggle for all sunnylink features. When disabled, no sunnylink requests are made. Your Dongle ID is displayed next to the toggle.
Enabling sunnylink for the first time triggers a consent prompt that must be completed before the feature activates.
!!! note "Availability"
Can only be changed while the device is offroad.
---
## Sponsor Status
A button that opens the sponsor status dialog. Displays your current sponsor tier name and color. Becoming a sponsor grants early access to sunnylink features.
!!! note "Availability"
Disabled when sunnylink is not enabled.
---
## Pair GitHub Account
A button that opens the GitHub pairing dialog. Links your GitHub account to the device for sponsor verification and API access. Displays **Paired** or **Not Paired** as the current status.
!!! note "Availability"
Disabled when sunnylink is not enabled.
---
## Enable sunnylink uploader (infrastructure test)
Uploads driving data to sunnypilot servers. This feature is currently available to highest-tier sponsors only and is used for testing data volume and upload infrastructure.
!!! note "Availability"
Disabled when sunnylink is not enabled.
---
## Backup Settings / Restore Settings
Two side-by-side buttons for managing settings backups through sunnylink:
- **Backup Settings**: Encrypts and uploads all current sunnypilot settings to the cloud. A progress indicator shows the upload status.
- **Restore Settings**: Downloads and applies the most recently backed-up settings. A progress indicator shows the download status.
!!! note "Availability"
Both buttons are disabled while the device is onroad or when sunnylink is not enabled.
---
## Related Features
- [sunnylink](../features/connected/sunnylink.md)
-104
View File
@@ -1,104 +0,0 @@
---
title: Toggles
---
# Toggles
Core driving assist toggles that control fundamental sunnypilot behavior, driving personality, driver monitoring, and data recording.
**Location**: `Settings -> Toggles`
!!! info "Toggle & Device Availability"
Available and configurable on all devices (comma 3X/3, comma four, sunnylink).
---
## Enable sunnypilot
Enables the sunnypilot driving assist system for adaptive cruise control and lane keeping. Your attention is required at all times while the system is active.
!!! warning "Restart Required"
Changing this toggle requires the device to be offroad (parked, ignition off). A restart is needed for the change to take effect.
---
## Experimental Mode
Activates end-to-end longitudinal control with a new driving visualization. This alpha feature uses the neural network to handle gas and braking on all road types, including city streets with stop signs and traffic lights.
!!! note "Availability"
Requires longitudinal control. Not available on vehicles using stock adaptive cruise control.
---
## Disengage on Accelerator Pedal
When enabled, pressing the gas pedal will immediately disengage sunnypilot. When disabled, pressing the gas pedal overrides sunnypilot's speed control without disengaging the system.
---
## Driving Personality
A row of three buttons that controls how closely sunnypilot follows the vehicle ahead and how aggressively it accelerates and brakes:
| Personality | Behavior |
|-------------|----------|
| **Aggressive** | Shorter following distance, quicker acceleration |
| **Standard** | Moderate following distance and response |
| **Relaxed** | Longer following distance, gentler acceleration |
!!! note "Availability"
Requires longitudinal control.
---
## Enable Lane Departure Warnings
Alerts you to steer back into your lane when the vehicle drifts over a detected lane line without the turn signal active. Warnings activate above 31 mph (50 km/h).
---
## Always-On Driver Monitoring
Keeps the driver monitoring camera active even when sunnypilot is not engaged. The system will still watch for distracted or drowsy driving whenever the vehicle is on.
---
## Record and Upload Driver Camera
Uploads footage from the driver-facing camera to help improve the driver monitoring algorithm. When enabled, driver camera data is included in uploaded driving segments.
!!! warning "Restart Required"
Changing this toggle requires the device to be offroad.
---
## Record and Upload Microphone Audio
Records microphone audio while driving. The audio is stored locally and included in dashcam video available through comma connect.
!!! warning "Restart Required"
Changing this toggle requires the device to be offroad.
---
## Use Metric System
Switches the display from miles per hour (mph) to kilometers per hour (km/h) throughout the interface.
---
## Platform Differences
On **comma four**, this panel contains the same toggles with slightly different labels:
| comma 3X/3 Label | comma four Label |
|-------------------|-----------------|
| Enable sunnypilot | enable sunnypilot |
| Driving Personality | driving personality |
| Experimental Mode | experimental mode |
| Use Metric System | use metric units |
| Enable Lane Departure Warnings | lane departure warnings |
| Always-On Driver Monitoring | always-on driver monitor |
| Record and Upload Driver Camera | record & upload driver camera |
| Record and Upload Microphone Audio | record & upload mic audio |
-35
View File
@@ -1,35 +0,0 @@
---
title: Trips Settings
---
# Trips Settings
View your cumulative and recent driving statistics.
**Location**: `Settings -> Trips`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## All Time
A stat card showing your lifetime driving totals:
- **Drives** - total number of driving routes recorded
- **Distance** - total distance driven (km or miles, based on your unit preference)
- **Hours** - total hours of driving time
---
## Past Week
A stat card showing your driving activity from the last 7 days:
- **Drives** - number of routes recorded this week
- **Distance** - distance driven this week
- **Hours** - hours driven this week
!!! note
This panel is display-only. There are no interactive controls.
-27
View File
@@ -1,27 +0,0 @@
---
title: Hyundai / Kia / Genesis Settings
---
# Hyundai / Kia / Genesis Vehicle Settings
Settings specific to Hyundai, Kia, and Genesis vehicles. These appear in the Vehicle panel when a supported vehicle is connected or selected.
**Location**: `Settings -> Vehicle`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Custom Longitudinal Tuning
A row of three buttons that selects a longitudinal (speed) control tuning profile:
| Option | Behavior |
|--------|----------|
| **Off** | Default tuning with standard acceleration and braking |
| **Dynamic** | More responsive acceleration and braking for a sportier feel |
| **Predictive** | Smoother, anticipatory speed changes that prioritize comfort |
!!! note "Availability"
Requires sunnypilot Longitudinal Control (Alpha) to be enabled. Can only be changed while the device is offroad. Hidden on vehicles that do not support alpha longitudinal control.
-42
View File
@@ -1,42 +0,0 @@
---
title: Vehicle Settings
---
# Vehicle Settings
View and manage vehicle-specific settings. The content of this panel changes based on your connected or manually selected vehicle.
**Location**: `Settings -> Vehicle`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Vehicle Selection
At the top of the panel, the currently detected or selected vehicle is displayed. The vehicle name is color-coded:
| Color | Meaning |
|-------|---------|
| **Green** | Vehicle was automatically fingerprinted (detected) |
| **Blue** | Vehicle was manually selected |
| **Yellow** | Vehicle could not be fingerprinted |
- **SELECT** button: Opens a vehicle selection dialog where you can manually choose your vehicle make and model.
- **REMOVE** button: Clears the manual selection and returns to automatic fingerprinting.
A legend below the vehicle name explains the color codes.
---
## Brand-Specific Settings
After a vehicle is detected or selected, brand-specific settings appear below the vehicle selector. Only brands with configurable settings show additional items:
- [Toyota / Lexus](toyota.md) - Enforce Factory Longitudinal Control, Stop and Go Hack
- [Hyundai / Kia / Genesis](hyundai.md) - Custom Longitudinal Tuning
- [Subaru](subaru.md) - Stop and Go, Stop and Go for Manual Parking Brake
- [Tesla](tesla.md) - Cooperative Steering
The following brands are supported for vehicle selection but have no brand-specific settings: Honda, GM, Ford, Volkswagen, Nissan, Mazda, Chrysler, PSA, Rivian.
-33
View File
@@ -1,33 +0,0 @@
---
title: Subaru Settings
---
# Subaru Vehicle Settings
Settings specific to Subaru vehicles. These appear in the Vehicle panel when a Subaru vehicle is connected or selected.
**Location**: `Settings -> Vehicle`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Stop and Go (Beta)
Enables automatic resume during stop-and-go traffic for supported Subaru platforms. Without this, you must manually resume after a full stop.
!!! note "Availability"
Can only be changed while the device is offroad. Not available on Global Gen2 or Hybrid platforms.
---
## Stop and Go for Manual Parking Brake (Beta)
Enables stop-and-go for Subaru Global models equipped with a manual handbrake (lever-type parking brake).
!!! warning
Models with an **electric parking brake** should keep this disabled. This setting is designed specifically for vehicles with a manual/lever parking brake.
!!! note "Availability"
Can only be changed while the device is offroad. Not available on Global Gen2 or Hybrid platforms.
-46
View File
@@ -1,46 +0,0 @@
---
title: Tesla Settings
---
# Tesla Vehicle Settings
Settings specific to Tesla vehicles. These appear in the Vehicle panel when a Tesla vehicle is connected or selected.
**Location**: `Settings -> Vehicle`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Cooperative Steering (Beta)
Allows the driver to provide limited steering input while sunnypilot is engaged, rather than requiring a full override or disengage to steer manually. Only works above 23 km/h (14 mph).
!!! warning
May cause steering oscillations below 48 km/h (30 mph) during turns. Disable this feature if you experience oscillations.
!!! note "Availability"
Can only be changed while the device is offroad. Use "Always Offroad" in [Device Settings](../device.md) to change this while the vehicle is running.
---
## MADS Limitations
Tesla vehicles **without a vehicle bus connection** operate in limited MADS mode:
| Setting | Forced Value |
|---------|-------------|
| Toggle with Main Cruise | Off (locked) |
| Unified Engagement Mode | On (locked) |
| Steering Mode on Brake Pedal | Disengage (locked) |
See [MADS Settings](../steering/mads.md) for details.
---
## Speed Limit Assist Restrictions
On **release branches**, Speed Limit Assist mode is disabled for Tesla vehicles. Info and Warning modes remain available.
See [Speed Limit Settings](../cruise/speed-limit/index.md) for details.
-35
View File
@@ -1,35 +0,0 @@
---
title: Toyota / Lexus Settings
---
# Toyota / Lexus Vehicle Settings
Settings specific to Toyota and Lexus vehicles. These appear in the Vehicle panel when a Toyota or Lexus vehicle is connected or selected.
**Location**: `Settings -> Vehicle`
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Enforce Factory Longitudinal Control
When enabled, sunnypilot does not control gas or brakes. The factory Toyota/Lexus adaptive cruise control system handles all speed control. sunnypilot still provides steering assistance.
Enabling this will disable sunnypilot longitudinal control, disable Alpha Longitudinal if it was enabled, and force Stop and Go Hack off. A confirmation dialog appears before activation.
!!! note "Availability"
Cannot be changed while the system is engaged (actively driving).
---
## Stop and Go Hack (Alpha)
Allows some Toyota and Lexus vehicles to automatically resume from a full stop during stop-and-go traffic. Without this, you must press the resume button or tap the gas to resume.
!!! warning "Alpha Feature"
This is an alpha-quality feature. Use at your own risk.
!!! note "Availability"
Requires sunnypilot longitudinal control to be available and enabled. **Enforce Factory Longitudinal Control** must be off. Cannot be changed while engaged.
-153
View File
@@ -1,153 +0,0 @@
---
title: Visuals Settings
---
# Visuals Settings
Configure what information and visual elements appear on the driving screen.
**Location**: `Settings -> Visuals`
!!! info "Toggle & Device Availability"
This panel contains a mix of features. Some work on all devices, while others require onroad UI elements that only exist on comma 3X/3. Each item below includes its own availability note.
---
## Show Blind Spot Warnings
Displays visual warnings on the driving screen when a vehicle is detected in your blind spot. Only available on vehicles equipped with Blind Spot Monitoring (BSM) hardware.
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Steering Arc
Shows the steering arc overlay on the driving screen when lateral (steering) control is active. This arc illustrates the path sunnypilot is steering toward.
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting. Note: On comma four, the steering arc is always displayed and cannot be toggled off.
---
## Enable Tesla Rainbow Mode
Applies a rainbow color effect to the model's planned driving path displayed on screen. This is a cosmetic change only and does not affect driving behavior.
!!! info "Toggle & Device Availability"
Supported on all devices. comma four users must use sunnylink to change this setting.
---
## Enable Standstill Timer
Displays a timer on the HUD when the vehicle is stopped. The timer shows how long you have been at a standstill.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Display Road Name
Shows the name of the road you are currently driving on. Requires the OSM map database to be downloaded through the [OSM panel](osm.md).
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Green Traffic Light Alert (Beta)
Plays a chime and shows an on-screen alert when the traffic light ahead turns green while you are stopped with no lead vehicle in front. Helps you notice the light change.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Lead Departure Alert (Beta)
Plays a chime and shows an on-screen alert when you are stopped and the vehicle ahead begins moving. Useful for noticing when traffic starts flowing again.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Speedometer: Always Display True Speed
Forces the speedometer to always show the true vehicle speed from wheel speed sensors, rather than the GPS-based speed. Applicable to vehicles where wheel speed and GPS speed differ.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Speedometer: Hide from Onroad Screen
Hides the speedometer from the driving screen entirely. When enabled, no speed is displayed while driving.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Display Turn Signals
Draws visual turn signal indicators on the HUD when the turn signals are active.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink. Note: On comma four, turn signal icons appear during lane change alerts only, but the always-on display does not exist.
---
## Real-time Acceleration Bar
Shows a vertical bar on the left side of the driving screen that indicates real-time acceleration and deceleration. The bar moves up during acceleration and down during braking.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Display Metrics Below Chevron
A row of five buttons that controls what information appears below the lead vehicle chevron on the driving screen:
| Option | What it shows |
|--------|--------------|
| **Off** | Nothing displayed below the chevron |
| **Distance** | Distance to the lead vehicle |
| **Speed** | Speed of the lead vehicle |
| **Time** | Time gap to the lead vehicle |
| **All** | Distance, speed, and time together |
!!! note "Availability"
Requires sunnypilot longitudinal control.
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Developer UI
A row of four buttons that controls the display of real-time developer metrics on the driving screen:
| Option | What it shows |
|--------|--------------|
| **Off** | No developer information displayed |
| **Bottom** | Metrics displayed at the bottom of the screen |
| **Right** | Metrics displayed on the right side |
| **Right & Bottom** | Metrics displayed on both the right side and bottom |
!!! info "Toggle & Device Availability"
Supported on: comma 3X/3 only. This feature is currently not available on comma four and cannot be forced via sunnylink.
---
## Related Features
- [HUD & Visuals](../features/display/hud-visuals.md)
-11
View File
@@ -1,11 +0,0 @@
---
title: Installation
---
# Installation
Follow these guides to install sunnypilot on your comma device.
- **[Read Before Installing](read-before-installing.md)** - Prerequisites, warnings, and preparation steps
- **[URL Method](url-method.md)** - Install via the built-in URL installer (recommended)
- **[SSH Method](ssh-method.md)** - Install via SSH for advanced users
-42
View File
@@ -1,42 +0,0 @@
---
title: Read Before Installing
---
# Read Before Installing
Before installing sunnypilot, please review the following important information.
## Prerequisites
- A supported comma device (comma 3X or compatible)
- A compatible vehicle harness for your car
- A stable internet connection for the initial setup
- Your vehicle must be in the supported list
## Important Notes
!!! warning
- sunnypilot is a **driver assistance** system — always pay attention to the road
- Ensure your device firmware is up to date before installing
- Installation will replace any existing openpilot installation on your device
## Choosing an Installation Method
| Method | Difficulty | Best For |
|--------|-----------|----------|
| [URL Method](url-method.md) | Easy | Most users |
| [SSH Method](ssh-method.md) | Advanced | Developers and power users |
## After Installation
1. The device will download and install the software
2. A reboot may be required
3. Follow the on-screen setup wizard
4. Take a test drive to calibrate the system
## Getting Help
If you run into issues:
- Visit the [sunnypilot community forum](https://community.sunnypilot.ai)
- Check [Reporting a Bug](../community/reporting-a-bug.md) for how to submit issues
-35
View File
@@ -1,35 +0,0 @@
---
title: SSH Method
---
# SSH Method
The SSH method provides more control over the installation process. Recommended for advanced users.
## Prerequisites
- SSH access to your comma device
- Basic familiarity with the command line
## Steps
1. Connect to your device via SSH
2. Clone the sunnypilot repository:
```bash
cd /data
git clone https://github.com/sunnypilot/sunnypilot.git openpilot
```
3. Check out the desired branch:
```bash
cd openpilot
git checkout <branch-name>
```
4. Reboot the device
See [Branch Definitions](../references/branch-definitions.md) for available branches.
## Troubleshooting
- **SSH connection refused**: Ensure SSH is enabled in device settings
- **Git clone fails**: Check internet connectivity
- **Branch not found**: Verify the branch name in [Recommended Branches](../references/recommended-branches.md)
-28
View File
@@ -1,28 +0,0 @@
---
title: URL Method
---
# URL Method
The URL method is the easiest way to install sunnypilot on your comma device.
## Steps
1. On your comma device, navigate to **Settings** > **Software**
2. Tap **Uninstall** if you have an existing installation
3. Enter the sunnypilot installation URL when prompted
4. Wait for the download and installation to complete
5. The device will reboot automatically
## Recommended Branches
See [Recommended Branches](../references/recommended-branches.md) for which branch to install based on your needs.
!!! tip
Most users should install the latest stable branch for the best experience.
## Troubleshooting
- **Download stalls**: Check your internet connection and try again
- **Device doesn't reboot**: Manually reboot by holding the power button
- **Installation fails**: Try the [SSH Method](ssh-method.md) as an alternative

Some files were not shown because too many files have changed in this diff Show More