Compare commits

...

920 Commits

Author SHA1 Message Date
DevTekVE 5d754169a6 Updating ESCC guide to use relay box 2024-07-29 12:31:45 +02:00
DevTekVE 0bbe217642 images didn't push 2024-03-21 19:13:03 +01:00
DevTekVE a36dc616ac Very very very first iteration, with very first ever made board 2024-03-21 19:11:31 +01:00
Jason Wen 5b5938dc3a Update CHANGELOGS.md 2024-03-07 15:51:43 -05:00
mike8643 c39c54a0d8 otisserv: set_destination and locations endpoints for non-prime users (#243)
ios shortcut support
2024-03-07 13:57:41 -05:00
Jason Wen 71ac15bf4e Update README.md 2024-02-28 12:41:10 -05:00
Jason Wen 8750b25a0f Bump to 0.9.7.0 2024-02-28 11:34:29 -05:00
Jason Wen 5d6f22d062 Sync: commaai/openpilot:master into sunnypilot/sunnypilot:master (#293) 2024-02-27 21:10:58 -05:00
Jason Wen 4397a687bc Bump submodules 2024-02-27 21:09:47 -05:00
Jason Wen 4d8c13ba42 Merge branch 'upstream/openpilot/master' into sync-20240224
# Conflicts:
#	cereal
#	common/params.cc
#	selfdrive/car/chrysler/interface.py
2024-02-27 21:01:40 -05:00
Shane Smiskol 56e343b3f1 Honda Accord: label non-essential ECUs (#31624)
* note non-essential ecus

* do accordh
2024-02-27 17:41:52 -08:00
Justin Newberry 262b328ad7 ban pytest.main (#31623)
ban it!
2024-02-27 14:17:01 -08:00
Justin Newberry 19db56b1f6 tici tests: remove pytest.main (#31622)
pytest.main is bad!
2024-02-27 14:06:18 -08:00
Harald Schäfer c05b37979d Wheeled body (#31614)
* Wheeled body

* 100hz only for balance

* No carparams in locationd no more

* Update ref
2024-02-27 13:23:04 -08:00
Justin Newberry f293f7bad4 scons: move cereal library exports to cereal submodule (#31617)
* cleanup-cereal

* bump
2024-02-27 13:17:56 -08:00
Adeeb Shihadeh 47013fd0a4 Revert "auto PR comments (#30675)"
This reverts commit 402ac424d9.
2024-02-27 12:06:53 -08:00
Justin Newberry dc37281340 typo (#31618)
dataset
2024-02-27 11:55:19 -08:00
Adeeb Shihadeh 402ac424d9 auto PR comments (#30675)
* auto PR comments

* little more

* test

* update action

* cleanup
2024-02-27 11:09:48 -08:00
Cameron Clough 0e41bf3474 Ford: fix As-Built request identifier (#31609)
Should be 0xDE00 not 0xDE
2024-02-27 10:59:27 -08:00
Justin Newberry d457ed9d50 chrysler: freeze dataclass + remove more from interface (#31613)
* fix

* fix
2024-02-27 10:23:13 -08:00
Justin Newberry 666c41d969 Chrylser: move to platform config (#31600)
* do chrysler

* chrysler specs

* cleanup

Co-authored-by: Shane Smiskol <shane@smiskol.com>

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-27 10:16:22 -08:00
Justin Newberry d3f0f76a7e Nissan: move to platform config (#31599)
* do nissan

* cleanup + fix
2024-02-27 10:16:06 -08:00
Jason Wen cdd93855f2 Update CHANGELOGS.md 2024-02-27 10:30:59 -05:00
Shane Smiskol 3978e7e98c [bot] Fingerprints: add missing FW versions from new users (#31572)
* Export fingerprints

* get these FP in
2024-02-27 04:40:46 -08:00
Cameron Clough c724d1c86c Ford: log interesting module configuration data (#31569)
* Ford: log interesting module configuration data

Ford ECUs have what is called "As-Built Data" which is configured at the
factory/workshop to set what packages/features are enabled on the car.
But they also contain vehicle specific information (VIN, make, model,
weight, wheel base...), DTC information and driver preferences.

I dumped the CAN traffic for the FORScan diagnostic tool to see how it
requests this information from the ECUs.

<details>
<summary>FORScan communication with IPMA (camera)</summary>
<pre>
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': '0200'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'TESTER_PRESENT', 'hex': '00'}
{'addr': 1806, 'type': 'positive_response', 'service': 'TESTER_PRESENT', 'hex': '00'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f190'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00020799dbaa10296516a440000000000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f113'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x13JX7T-19H406-CH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1134a5837542d3139483430362d434800000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f188'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x88JX7T-14F397-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1884a5837542d3134463339372d414800000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f120'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1 JX7T-14F397-BF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1204a5837542d3134463339372d424600000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f121'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f124'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1$JX7T-14F398-AG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1244a5837542d3134463339382d414700000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f125'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1%JX7T-14F398-BF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1254a5837542d3134463339382d424600000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f126'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f10a'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f111'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x11JX7T-14F403-CA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1114a5837542d3134463430332d434100000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f18c'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x8c182762191\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f18c31383237363231393100000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f162'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f110'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x10DS-JX7T-19H406-AD\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f11044532d4a5837542d3139483430362d414400000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': '0202'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd100'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd10001'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd700'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd70001010101'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd701'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'd70101020000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'dd01'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'dd010102f8'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'f113'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'data': b'\xf1\x13JX7T-19H406-CH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'hex': 'f1134a5837542d3139483430362d434800000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'fd08'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'fd0800000500500100300000000000000000000000300000000000000000200100400300100200001200f00300500000000000000300c00b00400200000000000000000000000000000000200f01201e01501400a00200200400700d02501d01700700e06405005e05503401100a000000002002002001000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'fd09'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'fd09ffec0001fef60002'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00020799dbaa10296516a440000000000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DTC_INFORMATION', 'hex': '028f'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DTC_INFORMATION', 'hex': '02ff50019768c253002cc401862cc418862c'}
... skip DTC requests ...
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de00020799dbaa10296516a440000000000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de01'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de01fd5616db5fffff557fe1f842080000000800000008000000080000000819bfe00f7c00000000000000000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de02'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de02800000008000000080000000800000008337fc00800000008000000080000000800000008337fc0000000000000000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de03'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de03fffc26c3800000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de04'}
{'addr': 1806, 'type': 'positive_response', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de04546a8c0000000000'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de05'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de06'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de07'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de08'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de09'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de0a'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de0b'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de0c'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de0d'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
{'addr': 1798, 'type': 'request', 'service': 'READ_DATA_BY_IDENTIFIER', 'hex': 'de0e'}
{'addr': 1806, 'type': 'negative_response', 'hex': '2231'}
</pre>
</details>

Using UDS service `READ_DATA_BY_IDENTIFIER`, we can read the As-Built
blocks from `0xDExx` with no diagnostic session/security access necessary.

I used [Online As-Built databases](https://cyanlabs.net/asbuilt-db/) and
various coding spreadsheets shared online to find values we might be
interested in using for fingerprinting (both vehicle parameters and
identifying the platform).

ABS:
- Payload tier (Base, Mid Payload Upgrade, Heavy Duty Payload
  Upgrade...)
- Wheelbase
- Steering ratio
- Cruise Control Mode (Normal, Adaptive)
- Enable Stop and Go

PSCM:
- Enable Lane Keeping Aid
- Enable Traffic Jam Assist
- Enable Lane Centering Assist

IPMA (Q4):
- Steering ratio
- Wheelbase

APIM (Sync 3 and Sync 4):
- Steering ratio
- Vehicle weight
- Wheelbase

There are more potentially useful signals which I haven't included
although they might not be necessary:
- Vehicle (Ford platform code, like "C344" or "C519" - although the
  source of the mapping from index to code is FORScan and not Ford
themselves unless we can find a better source).
- Fuel type
- Vehicle length/height/front track/rear track
- Tire circumference (could be useful for converting wheel speed rad/s
  to m/s)
- Steering angle source (Pinion, Wheel)
- Country code (letters, e.g. US, CA or UK)
- Transmission type
- CAN network architecture
- More feature flags (the APIM also stores settings for ACC, LCA, BLIS)

The full list of settings I have found is
[here](https://github.com/incognitojam/op-notebooks/blob/main/ford/settings.py).

* FwQueryConfig: add data_requests

* add car_data to CarInterface get_params

* Revert "add car_data to CarInterface get_params"

This reverts commit aa161a6b82082705db97bea2c4317e1888a74845.

* test_ford: add APIM ecu address

* Revert "FwQueryConfig: add data_requests"

This reverts commit dc5484a9b80be5bc61a7fdf55560b8813bc43ef7.

* fix block numbers and add extra queries

* bump test_fw_query_timing

* add missing query whitelists

* simplify asbuilt requests

* use forscan block ids

* formatting

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-27 04:22:10 -08:00
Justin Newberry 9ecff49118 platformconfig: freeze all dataclasses (#31605)
* frozen

* frozen
2024-02-26 21:16:05 -08:00
Justin Newberry 6d0027342a remove cast for platformconfig (#31604)
* this isnt required

* Cleaner
2024-02-26 21:01:41 -08:00
Comma Device 14ea615ae4 no amp config 2024-02-26 20:39:41 -08:00
Adeeb Shihadeh 3c4e82f14a get name from kernel (#31602)
* get name from kernel

* revert that

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-26 20:21:44 -08:00
Justin Newberry edd26acdc3 can_replay: add type hint (#31601)
type hint
2024-02-26 16:26:01 -08:00
Jason Wen 4124c4593f Merge remote-tracking branch 'commaai/openpilot/master' into sync-20240224
# Conflicts:
#	cereal
#	opendbc
#	panda
2024-02-26 16:39:04 -05:00
Justin Newberry 9d1cafd0fc move with_http_server to selfdrive/test/helpers (#31597)
* move

* fix
2024-02-26 12:53:17 -08:00
Justin Newberry 86090a1e15 add common/mock to release (#31596)
* add mock

* fix

* fix2
2024-02-26 11:20:51 -08:00
Adeeb Shihadeh 5c0bbc7dda [bot] Bump submodules (#31594)
* bump submodules

* bump opendbc

---------

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-26 11:20:42 -08:00
Adeeb Shihadeh a1fefabbca [bot] Update Python packages and pre-commit hooks (#31595)
Update Python packages and pre-commit hooks

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-02-26 09:08:24 -08:00
Cameron Clough 8e03cdfc2a Ford: move to PlatformConfig (#31554)
* Ford: move to PlatformConfig

* Align Aviator model years with Explorer

* Add CarSpecs to PlatformConfig

---------

Co-authored-by: justin <justin@comma.ai>
2024-02-25 17:55:42 -08:00
Eric Brown 5012e15aa6 GM: move to platform config (#31553)
* subaru platform config

* forester wrong dbc

* spacing

* subaru car specs

* someday!

* more red diff

* Move GM to platform config

* Implement CarSpecs

* Simplify centerToFront

* Accidentally had subaru DBC

* Fix typo in DBC name

* done above

* two spaces

* that is moved up

* fix hardcoded fingerprints

* whitespace

* values

* better?

* fix

* bump

* fix

* fix

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-25 17:53:26 -08:00
Jason Young da540eac13 VW: Move car specs to PlatformConfig (#31567)
* subaru platform config

* forester wrong dbc

* spacing

* subaru car specs

* someday!

* more red diff

* all brands can be done like this

* but this should be done first and thats subaru specific

* that seems very low but we shouldn't change it here

* as long as it subclasses str its fine

* well that sucked

* cleanup and follow refactor

* diff reduction

* oops

* fix

* force fingerprint

* Revert "force fingerprint"

This reverts commit 600fbcd7d559703601a06c8876a640de417e5b6c.

* space

* Fix specs

* this one too

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-25 17:38:17 -08:00
Cameron Clough 80da3aee14 mypy: use implicit-optional (#31590)
* mypy: set implicit-optional = true

* find and replace '| None = None' -> '= None' in function args
2024-02-25 13:29:18 -08:00
Cameron Clough 3520d47955 vscode: add ruff extension (#31589) 2024-02-25 11:41:27 -08:00
Robbe Derks 854e78eaff linux-aarch64 also works for plotjuggler 2024-02-25 18:18:43 +00:00
Cameron Clough 30afe2c231 scripts: install and run pyupgrade (#31587) 2024-02-25 09:26:11 -08:00
Cameron Clough be8e503a7d cars: update platforms typing syntax (#31586) 2024-02-25 11:24:33 -05:00
Justin Newberry cdd4d418aa Subaru: fix forester weight (#31585)
fix weight
2024-02-24 23:15:16 -08:00
Justin Newberry e6009d80e9 cars: introduce "Platform" union type for all car enums (#31558)
* Hmm

* release

* hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

* unrelated

* forgot

* cleaner

* Platform

* new syntax

* Fix

* clean

* Fix
2024-02-24 22:18:13 -08:00
Adeeb Shihadeh 96ce470b73 VSCode settings (#31582)
* base config

* add launch.json

* little more

* cleanup

* fix

---------

Co-authored-by: Justin Newberry <jnewberry0502@gmail.com>
2024-02-24 20:54:04 -08:00
Jason Wen 9aca2536aa Merge branch 'upstream/openpilot/master' into sync-20240224
# Conflicts:
#	selfdrive/car/subaru/values.py
2024-02-24 20:46:45 -05:00
Jason Wen 0b0ddd8d9e Update CHANGELOGS.md 2024-02-24 20:41:38 -05:00
Cameron Clough 995250ae49 use pyupgrade to update to new typing syntax (#31580)
* add pyupgrade hook

* run pyupgrade (pre-commit run -a)

* ruff --fix

* Revert "add pyupgrade hook"

This reverts commit 56ec18bb6b8602a0b612f3803d96cdad14b52066.

* revert changes to third_party/

* manual type fixes

* explicit Optional wrapping capnp objects
2024-02-24 16:41:23 -08:00
Cameron Clough 6ed72b3626 Ford: add hybrid variants to docs (#31575)
* Ford: add hybrid variants to docs

Following up on https://github.com/commaai/openpilot/pull/31568

| CarInfoPlatform              | ElectrificationLevel   | ModelYear              | Series                                                                                            | Trim                                                                |
|:-----------------------------|:-----------------------|:-----------------------|:--------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------|
| FORD BRONCO SPORT 1ST GEN    | ICE                    | 2021, 2022             | BADLANDS, BASE, BIG BEND, FIRST EDITION, OUTER BANKS                                              |                                                                     |
| FORD ESCAPE 4TH GEN          | FHEV                   | 2020, 2021, 2022       | SE, SEL, Titanium                                                                                 |                                                                     |
| FORD ESCAPE 4TH GEN          | ICE                    | 2020, 2021, 2022       | S, SE, SEL, Titanium                                                                              |                                                                     |
| FORD ESCAPE 4TH GEN          | PHEV                   | 2020, 2021, 2022       | SE, SEL, Titanium                                                                                 |                                                                     |
| FORD EXPLORER 6TH GEN        | HEV                    | 2020, 2021, 2022, 2023 | Limited, Platinum                                                                                 |                                                                     |
| FORD EXPLORER 6TH GEN        | ICE                    | 2020, 2021, 2022, 2023 | Base, Black Label, King Ranch, Limited, Platinum, Reserve, ST, ST-Line, Standard, Timberline, XLT |                                                                     |
| FORD EXPLORER 6TH GEN        | PHEV                   | 2020, 2021             | Black Label Grand Touring, Blk Label Grand Touring, Grand Touring                                 |                                                                     |
| FORD F-150 14TH GEN          | HEV                    | 2021, 2022, 2023       | , F-Series                                                                                        | SuperCrew                                                           |
| FORD F-150 14TH GEN          | ICE                    | 2021, 2022, 2023       | , F-Series                                                                                        | , Regular Cab, SuperCab, SuperCrew, SuperCrew-Raptor, SuperCrew-SSV |
| FORD F-150 LIGHTNING 1ST GEN | BEV                    | 2022, 2023             |                                                                                                   | SuperCrew                                                           |
| FORD MAVERICK 1ST GEN        | HEV                    | 2022, 2023             | SUPERCREW, XL XLT Lariat                                                                          | , SUPERCREW                                                         |
| FORD MAVERICK 1ST GEN        | ICE                    | 2022, 2023             | SUPERCREW, XL XLT Lariat, XLT Lariat                                                              | , SUPERCREW                                                         |
| FORD MUSTANG MACH-E 1ST GEN  | BEV                    | 2021, 2022, 2023       | California Route 1, GT, Premium, Select                                                           |                                                                     |

Data from NHTSA database and https://www.ford.co.uk/cars.

* revert F-150 model year change
2024-02-24 10:01:02 -08:00
Jason Wen 73ff33005d Merge branch 'upstream/openpilot/master' into sync-20240224
# Conflicts:
#	panda
#	selfdrive/car/subaru/values.py
2024-02-24 09:51:14 -05:00
Jason Wen b049836943 Update CHANGELOGS.md 2024-02-24 09:48:18 -05:00
Jason Wen b8773a10d4 Sync: commaai/openpilot:master into sunnypilot/sunnypilot:master (#290) 2024-02-24 09:21:16 -05:00
Jason Wen 8945fffab0 Merge branch 'upstream/openpilot/master' into sync-20240220
# Conflicts:
#	cereal
#	common/version.h
#	selfdrive/controls/controlsd.py
#	selfdrive/thermald/power_monitoring.py
2024-02-24 09:14:42 -05:00
Shane Smiskol 378ba114f9 Ford: support hybrid Q3 platforms (#31568)
* bump

* ford: remove dynamic dashcam lockout for hybrids

* releases?

* Revert "releases?"

This reverts commit 88d950043d79b8c00535f48ed84b854bc2ab2557.

* bump

* Reapply "releases?"

This reverts commit db5079dc3f1a6bce70bd04430be45704d8604e76.

* 097
2024-02-23 21:22:34 -08:00
Justin Newberry adb7e2e229 CI: Retry multiarch build (#31570)
hardware
2024-02-23 20:54:48 -08:00
Adeeb Shihadeh 92475d653b agnos 9.7 (#31564)
* agnos 9.7

* update
2024-02-23 17:41:03 -08:00
Jason Young b75a6cea34 VW PQ: Consolidate and cleanup tuning (#31566)
consolidate and cleanup PQ configs
2024-02-23 17:35:21 -08:00
Justin Newberry 1161d33c18 Subaru: move carspecs to PlatformConfig (#31550)
* subaru platform config

* forester wrong dbc

* spacing

* subaru car specs

* someday!

* more red diff

* all brands can be done like this

* but this should be done first and thats subaru specific

* that seems very low but we shouldn't change it here

* as long as it subclasses str its fine

* fix
2024-02-23 13:23:40 -08:00
Justin Newberry 556f973896 segment range docs update (#31560)
* the format

* cleaner
2024-02-23 11:50:33 -08:00
Shane Smiskol 72a7f008ab Volkswagen: log FW on non-OBD buses (#31556)
* log lots

* update refs

* cmt
2024-02-23 04:00:28 -08:00
Justin Newberry c9c2ab9cc8 pre-commit: run ruff first (#31548)
move ruff up
2024-02-22 18:34:42 -08:00
Justin Newberry 73a497ded8 cleanup PlatformConfig (#31551)
cleanup
2024-02-22 17:49:27 -08:00
Justin Newberry 015eed5d61 Subaru: move to PlatformConfig (#31547)
* subaru platform config

* forester wrong dbc

* spacing
2024-02-22 17:17:00 -08:00
Adeeb Shihadeh db57a21c88 pandad: wait until USB is up before panda recovery (#31549) 2024-02-22 17:15:53 -08:00
Adeeb Shihadeh 968eaf1cb2 bump to 0.9.7 2024-02-22 16:12:28 -08:00
Justin Newberry 1ee8c9aa33 cars: introduce "platformconfig" to be a configuration for all relevant car information (#31542)
* this is decent

* make sure the docs don't change for now

* hackery

* these can live here
2024-02-22 15:58:37 -08:00
Greg Hogan 43f64ec500 URLFile: default value test (#31544)
* URLFile: default value test

* cleanup

* fix env

* improvements

* fix GET response

* only delete cache dir if it exists

* env pop

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-02-22 13:17:02 -08:00
Shane Smiskol a2bda8724d Ford: add back OBD queries for logging (#31543)
* Revert "Reapply "Ford: don't fingerprint on engine (#31195)" part 2 (#31320)"

This reverts commit dd6065c33b.

* fix refs

* mark logging
2024-02-22 01:34:15 -08:00
Shane Smiskol 3009a51c06 athenad: check end_event while uploading files (#31541)
* check end_event while uploading, throw abort exception if we need to shut down/restart

* fix

* draft test

stash

* Revert - there's no easy way to know if it breaks early in upload loop
or not yet

This reverts commit ad893687e196ebb31d276a114c19e9af963ed02a.

* todo for now
2024-02-22 00:31:24 -08:00
Shane Smiskol c0e172e0c0 athenad: fix test timeouts and comments (#31540)
* these pass in 0.5s since server sends ping on connect

* comments

* unused

* fix

* fix these too

* check end_event while uploading, throw abort exception if we need to shut down/restart

* Revert "check end_event while uploading, throw abort exception if we need to shut down/restart"

This reverts commit f0b822fca98cd8e2b3d4d6d5ede6b512d3ed3ec0.

* more tol for lte connection
2024-02-21 22:08:10 -08:00
Shane Smiskol 9dde727974 Fix athenad reconnect test (#31538)
* debugging

* this also works

* so does this

* more similar to existing method

* clean up

* more

* more
2024-02-21 19:40:35 -08:00
Adeeb Shihadeh d8ce15a869 controlsd: increase initializing timeout (#31535) 2024-02-21 16:23:43 -08:00
Justin Newberry 00315325a3 controlsd: move carParams management to card (#31534)
* card-manage

* fix

* init params

* reversed that

* can be in the init
2024-02-21 16:11:00 -08:00
Adeeb Shihadeh 0b4d08fab8 remove deviceState.ambientTempC (#31533) 2024-02-21 13:57:49 -08:00
Adeeb Shihadeh 34138d0be9 qcomgpsd: use AT helper with retry for all AT commands (#31532) 2024-02-21 13:57:29 -08:00
Justin Newberry 837b811f9c Split out can control into new "card" class (#31529)
* card v1

* fix car events

* fix proc replay

* lets keep that the same

* no extra space here

* move can recv timeouts to card

* organize imports

* organize imports

* slightly bump cpu

* not a card!
2024-02-21 13:18:43 -08:00
Justin Newberry 0eba392cf2 controlsd: sort imports (#31531)
sort imports
2024-02-21 11:58:04 -08:00
Adeeb Shihadeh 7a29617108 tici: ensure DSP permissions are setup on boot (#31530)
Co-authored-by: Comma Device <device@comma.ai>
2024-02-21 11:48:17 -08:00
Justin Newberry 3f104f3fbd fix static analysis 2024-02-21 11:26:49 -08:00
Adeeb Shihadeh e7695c3f32 add power cycling to can_replay 2024-02-21 11:12:56 -08:00
Shane Smiskol c3e3103830 torqued: log raw params if calculable (#31521)
* log params when calculable

* better

* Update ref_commit

* this is redundant

* this is only used in one place, confusing which to use so remove

* better
2024-02-20 22:30:51 -08:00
Shane Smiskol 4abda1b6bc thermald: remove instant low voltage check (#31522)
remove instant lv check for old bug
2024-02-20 21:02:38 -08:00
Adeeb Shihadeh 3e6ac26569 thermald: make CPU usage list a constant size (#31526) 2024-02-20 20:15:46 -08:00
Adeeb Shihadeh 27c56722cc fix spinner asset paths (#31524) 2024-02-20 18:01:28 -08:00
Adeeb Shihadeh 1c794b710c uploader: sleep more when no files in queue (#31523)
* uploader: sleep more when no files in queue

* fix test
2024-02-20 17:25:12 -08:00
Adeeb Shihadeh c645feb1aa pj: gpu usage isn't real 2024-02-20 16:55:46 -08:00
İdris AKBIYIK 272019f73d Add fingerprints.py for Skoda Octavia MK3 2017 (#30846)
* Update fingerprints.py for Skoda Octavia MK2 2017

-Fingerprint values added

* Update fingerprints.py Passat Alltrack 4x4

* another PR

* format

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-20 15:57:40 -08:00
Justin Newberry 51e3daf244 Subaru: add 2024 forester (#31520)
* also angle based

* 24 forester
2024-02-20 15:02:56 -08:00
Adeeb Shihadeh 2cf831a304 debug: improve count_events.py output 2024-02-20 14:20:53 -08:00
Justin Newberry a51ef41cf8 Simulator: simulate the obd enabled/changed dance (#31519)
obd dance
2024-02-20 12:11:42 -08:00
Shane Smiskol 2184da9deb [bot] Fingerprints: add missing FW versions from new users (#31518)
Export fingerprints
2024-02-20 08:07:43 -08:00
Jason Wen bbbca41296 Merge branch 'upstream/openpilot/master' into sync-20240220
# Conflicts:
#	cereal
#	opendbc
#	panda
#	selfdrive/car/honda/carstate.py
2024-02-20 11:05:51 -05:00
Jason Wen 4ab41dd619 Update CHANGELOGS.md 2024-02-20 11:02:03 -05:00
Adeeb Shihadeh 5d4dc1dc2f Make ui independent of launch path (#31517)
* Make ui independent of launch path

* comment
2024-02-19 22:34:24 -08:00
Adeeb Shihadeh 675eeb9d16 modeld: add extra log for startup time debugging 2024-02-19 22:33:30 -08:00
Adeeb Shihadeh 528e555892 debug: print log messages in relative time 2024-02-19 22:33:08 -08:00
goodchoom 8b5c9e84d2 Alerts: fix inconsistent capitalization (#31514)
fix capitalization
2024-02-19 18:18:20 -08:00
Harald Schäfer 26481d082f Certified Herbalist Model (#31425)
* ab9921cb-6e0a-4816-bec5-ebb55d37a7f1/700

* 93532291-a562-4ab8-82d2-34d6e9fdcfbb/700

* Update ref
2024-02-19 17:26:10 -08:00
Harald Schäfer d371fb042c Modeld: cleanup unused variables (#31516)
Modeld: cleanup used variables
2024-02-19 17:07:15 -08:00
Adeeb Shihadeh 1145122b3f More startup checks (#31511)
* no lag!

* kill first

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-19 13:58:36 -08:00
Milan Medić 69fb3c2ed5 add Cython static analysis (#31491)
* Adding pre-commit hook for cython static analysis

* Adding changes to cython files to pass static analysis

* Revert "Adding changes to cython files to pass static analysis"

This reverts commit 9a0eb733199abd9eef1eac3d024ef2760348d67c.

* Adding ignore rule for indentation of 4 spaces (E111)

* Fixes for cython-lint static analysis

* Revert "Fixes for cython-lint static analysis"

This reverts commit 972741735b2bdc73460d65a4d7ea167dfc0f4644.

* Adding two new rules into ignore list (2 new lines after difinition of class)

* Adding fixes for cython static analysis
2024-02-19 12:11:56 -08:00
Adeeb Shihadeh 37206a83fe [bot] Bump submodules (#31507)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-02-19 10:54:06 -08:00
Adeeb Shihadeh 86184b76d5 more modeld logging (#31510) 2024-02-19 10:46:04 -08:00
Adeeb Shihadeh be4bbca9a3 [bot] Update Python packages and pre-commit hooks (#31508)
* Update Python packages and pre-commit hooks

* remove that

---------

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-19 10:45:10 -08:00
Adeeb Shihadeh 4ded4c53af thneed: printf -> cloudlog (#31506)
* thneed: printf -> cloudlog

* LOGI

* Revert "LOGI"

This reverts commit e6ab7e45fb7f3678727595f67c1f6c8e2cda734b.
2024-02-18 23:04:24 -08:00
Adeeb Shihadeh c6eae405a5 ensure startup is clean (#31504)
* strict

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-18 17:03:33 -08:00
Adeeb Shihadeh b28daef34a controlsd: allow mismatch while boardd reads back mode (#31505)
* controlsd: allow mismatch while boardd reads back mode

* self
2024-02-18 14:43:42 -08:00
Shane Smiskol 49dd8b476c [bot] Fingerprints: add missing FW versions from CAN fingerprinting cars (#31502)
Export fingerprints
2024-02-18 11:01:01 -08:00
Jason Wen 5e5b67a33f README: New Discord URL (#286) 2024-02-17 21:18:05 -05:00
Adeeb Shihadeh 79fa3954b7 bump panda 2024-02-17 14:29:46 -08:00
Shane Smiskol 07adbd347f Honda Accord: remove unknown ECU
Could be the radio/heater controller
2024-02-17 04:40:57 -08:00
Shane Smiskol 2e8c62358c Honda Bosch: detect alternate brake signal (#31500)
* Do Accord

* add comment

* good test

* this catches the accord/accordh issue!

* as expected, only if both radar&camera have in common FW does the test fail

* cmt

* clean up

* better

* Use HondaFlags

* detect alt brake

* for test

* hypothesis isn't installed

* test failure

* works

* Revert " works"

This reverts commit bfc0d808abe548630e6507431f13b01e8a1316cb.

* Revert "test failure"

This reverts commit 10ab6eb63ccd411740751b742f31fd610397fe8e.

* Revert "hypothesis isn't installed"

This reverts commit d474cc3f0ed7e84fe8bd24f452b3315fd2b8d47c.

* Revert "for test"

This reverts commit 98e039f4fc0189ccb57c1dae6b344209ef15eb1c.

* this is important too

* clean up

* more clean up

* Update ref_commit
2024-02-17 04:03:12 -08:00
Adeeb Shihadeh 62f4eecf16 bump panda (#31498) 2024-02-16 23:18:51 -08:00
Shane Smiskol c5f1f4c676 test_fw_query_on_routes: get first qlog (#31496)
* fast

* this isn't internal

* see
2024-02-16 17:55:15 -08:00
Harald Schäfer 900300a928 Calibration Transform: border pad (#31495) 2024-02-16 15:18:26 -08:00
Mitchell Goff 86410a0ef0 Bumped model replay ref for new map tiles (#31493) 2024-02-16 22:32:43 +00:00
Adeeb Shihadeh b218abcaa3 controlsd: increase initializing timeout 2024-02-16 13:35:45 -08:00
Adeeb Shihadeh 0723c2bc5f log git commit date (#31490)
* log git commit date

* unix ts

* fix

* bump cereal

* cleanup
2024-02-16 13:19:10 -08:00
Jason Wen 89c8382417 Sync: commaai/openpilot:master into sunnypilot/sunnypilot:master (#283) 2024-02-16 08:41:32 -05:00
Jason Wen 658f0f6249 bump submodules 2024-02-16 08:40:54 -05:00
Jason Wen fd11bc1d7d Merge branch 'upstream/openpilot/master' into sync-20240216
# Conflicts:
#	cereal
#	opendbc
#	panda
#	selfdrive/car/hyundai/interface.py
#	selfdrive/controls/controlsd.py
#	selfdrive/monitoring/dmonitoringd.py
2024-02-16 08:27:39 -05:00
Adeeb Shihadeh 5a441ec0c4 modeld: fix and cleanup getting carParams (#31488) 2024-02-15 22:20:00 -08:00
Shane Smiskol 0a5e994947 [bot] Fingerprints: add missing FW versions from new users (#31489)
Export fingerprints
2024-02-15 21:44:02 -08:00
Justin Newberry 0cb206cb95 conftest: cleanup environment cleaner (#31486)
* clean env

* no self
2024-02-15 13:38:42 -08:00
Adeeb Shihadeh 663f7017f2 fix linter 2024-02-15 13:35:49 -08:00
Adeeb Shihadeh eb5a847dc8 Update RELEASES.md 2024-02-15 13:18:19 -08:00
Adeeb Shihadeh 64851baea8 debug/count_events.py improvements 2024-02-15 13:13:11 -08:00
Justin Newberry c2b9f7163a test_qcomgpsd: subtest the gps_runtime scenarios (#31485)
* subtest this

* runtime

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-15 13:12:11 -08:00
Justin Newberry 16d1339553 test_logreader: test internal scenarios (#31484)
* test source scenario

* test source scenario

* fix
2024-02-15 12:10:56 -08:00
Adeeb Shihadeh d31269f663 fix no GPS alert when driving slowly in a tunnel (#31483) 2024-02-15 11:52:57 -08:00
Justin Newberry 8aee0d2af2 test_logreader: test interactive mode + fix typo in AUTO_INTERACTIVE (#31481)
* fix spelling

* test interactive

* remove that

* test taht

* move that
2024-02-15 11:24:27 -08:00
Shane Smiskol baa77ced19 TestFwFingerprint: test to prevent mismatches when utilizing non-essential ECUs (#31478)
* test

* same speed
2024-02-15 00:35:21 -08:00
Shane Smiskol 62c51e2d0c HKG CAN FD: fix bus 0 VIN addr
Added camera addr instead of cluster on accident here: https://github.com/commaai/openpilot/pull/31348
2024-02-14 23:35:59 -08:00
Shane Smiskol b1f452d42b Toyota TSS2: radar disable support (#29094)
* try to disable radar

* fix bug and bump panda

* prep

* always attempt longitudinal for testers

* fix rav4

* send ACC_HUD

* bump panda

* revert

* check for failure to disable

* fix arg

* allow

* this has no effect

* bump

* update docs

* bug fix

* fix

* check relay malfunc for acc control

* remove route where SDSU caused a relay malfunction

* missing rav4

* bump

* use chr route

* bump

* add back

* relay malfunction

* bump to master

* add to releases
2024-02-14 23:27:07 -08:00
Shane Smiskol 622d099d00 Toyota: check ACC_CONTROL for relay malfunction (#31475)
toyota: check acc control for relay malfunction
2024-02-14 21:55:33 -08:00
Shane Smiskol 55ba64568d test_models: add RAV4 route without relay malfunction (#31474)
add it back
2024-02-14 21:41:01 -08:00
Shane Smiskol 0e94567a18 Toyota: only read gas interceptor if we're using it (#31473)
* we shouldn't be reading from interceptor and not writing/sending gas command

* better

* add a test!

* comment is clear
2024-02-14 21:32:44 -08:00
Shane Smiskol 68fcc955ac bump panda (#31472)
* bump

* fix renames
2024-02-14 20:47:30 -08:00
Shane Smiskol c65dfaac68 Leaf: get VIN (#31398)
* Add Leaf VIN query

* add lots of requests

* add exception for nissan

* no more logging

* update refs

* lower worst case

* Update selfdrive/car/car_helpers.py

* update refs

* it's the vcm!
2024-02-14 20:06:14 -08:00
Shane Smiskol 9acc55861c VIN: lower retries (#31471)
* lower retries

* comment
2024-02-14 17:08:12 -08:00
Adeeb Shihadeh 20db82641f Update RELEASES.md 2024-02-14 15:36:54 -08:00
Adeeb Shihadeh 2f15c878d0 bump cereal (#31469)
* bump cereal

* bump cereal
2024-02-14 15:01:02 -08:00
Greg Hogan e59fe0014a URLFile: add typing and internalize pool manager (#31466)
* URLFile: add typing and internalize pool manager

* cleanup
2024-02-14 14:09:01 -08:00
Adeeb Shihadeh 3cd0e5d43c Reapply "radard: enable avg input service frequency checks (#31404)" (#31468)
This reverts commit 7f7f1fd21b.
2024-02-14 13:53:33 -08:00
Adeeb Shihadeh 6f905ed979 radard: remove sleep for cars without radar (#31467)
* radard: remove sleep for cars without radar

* fix

* update refs
2024-02-14 13:12:54 -08:00
Adeeb Shihadeh 194bd85905 log all startups 2024-02-14 11:44:19 -08:00
Justin Newberry 33cf6bda9e LogReader: add typing hints (#31464)
logreader typing
2024-02-14 10:34:17 -08:00
Justin Newberry 1436f576df LogReader: retain old behavior for direct parsing of files (#31419)
* maintain exception

* test that head is not called

* annoying mock

* test with cache
2024-02-14 10:05:25 -08:00
Jason Young 991d02ba27 fix pre-commit install process (#31445)
* fix pre-commit install process

* only install pre-commit from a git repo
2024-02-14 08:19:20 -08:00
JJeonbear beab6e8658 Ioniq 5 2022 AWD FWD camera update (#31322)
* Update fingerprints.py

Update IONIQ5 fwdCamera

* Update fingerprints.py

* Update fingerprints.py
2024-02-14 05:26:25 -08:00
Shane Smiskol 796671fe1a SegmentRange: more explicit slice matching (#31451)
* more explicit

* fix it

* use non capturing group

* only needed for regex101

* make test_logreader.py executable

* fix

* stash

* passes test

* none

* type anotate

* test

* fix

* nice for syntax highlighting
2024-02-14 04:36:58 -08:00
Shane Smiskol 8fe9bc7a69 SegmentRange: simplify slice (#31455)
* simplify slicing

* rm
2024-02-14 04:17:03 -08:00
Shane Smiskol c4f7991bb6 SegmentRange: test API call (#31456)
* test

* better

* better
2024-02-14 03:29:08 -08:00
Shane Smiskol 8276371009 SegmentRange: type annotations (#31453)
* type annotate SegmentRange

* proper formatting

* oops

* numpy?

format test too

* draft

* fixed

* clean up

* rm

* more

* clean up

* clean up

* rm

* not here

* revert
2024-02-14 02:05:55 -08:00
Shane Smiskol 0846175f44 tools/lib: format code (#31454)
easier to read. pylint used to catch all this stuff, but it's mostly missing in ruff :'(
2024-02-14 01:56:17 -08:00
Shane Smiskol 9479686fa3 test models: more examples in CI (#31444)
* more examples

* how is it so fast?!

* 500

* is there a hypothesis cache?

all

* Revert "is there a hypothesis cache?"

This reverts commit e628ba73d5b639e36f95df0ab9049697b34a58b8.

* same as jenkins
2024-02-13 23:00:44 -08:00
Shane Smiskol 884bd5c7f6 SegmentRange: define __repr__ 2024-02-13 22:58:44 -08:00
Shane Smiskol b163c1f255 Mazda: fix potential standstill panda mismatch (#31449)
* repro mazda standstill mismatch

* fix mazda standstill mismatch

* clean up
2024-02-13 22:02:04 -08:00
Shane Smiskol 136dc0313a Toyota: fix high driver torque LKAS fault regression (#31448)
one latactive
2024-02-13 21:49:18 -08:00
Shane Smiskol cff1ad9dd3 Revert "Hyundai CAN-FD: Panda safety config assignments cleanup (#29733)" (#31443)
This reverts commit 8009b11516.
2024-02-13 21:11:22 -08:00
Justin Newberry 659cdec3d0 Revert "test_qcomgpsd: parametize tests" (#31441)
Revert "test_qcomgpsd: parametize tests (#31430)"

This reverts commit 6f4d388348.
2024-02-13 15:27:36 -08:00
Adeeb Shihadeh 3cf845d952 tici: log SOM ID (#31440)
* tici: log SOM ID

* no cat
2024-02-13 15:01:32 -08:00
Adeeb Shihadeh c5739651a2 timed: publish clocks periodically (#31434)
* timed: publish clocks periodically

* simplify

* Apply suggestions from code review
2024-02-13 14:22:46 -08:00
Justin Newberry d6762c3035 live_logreader to its own file (#31436)
own file
2024-02-13 13:29:52 -08:00
Adeeb Shihadeh 7f7f1fd21b Revert "radard: enable avg input service frequency checks (#31404)"
This reverts commit 4b004d59f3.
2024-02-13 13:23:27 -08:00
Adeeb Shihadeh e9071f1198 dongle id is only hex (#31426)
* dongle id is only hex

* so is the count
2024-02-13 13:01:25 -08:00
Justin Newberry b4a11a7229 CI: reduce car tests timeout (#31433)
* reduce cars timeout

* 10
2024-02-13 11:57:08 -08:00
Justin Newberry 6f4d388348 test_qcomgpsd: parametize tests (#31430)
* parameterize qcomgpsd

* one line
2024-02-13 11:16:24 -08:00
Justin Newberry cccf28b9ca jenkins: reduce connection timeouts (#31431)
reduce jenkins timeouts
2024-02-13 11:02:21 -08:00
Eric Brown 416e8253ec GM: Remove Equinox from dashcam mode (#31257)
* Remove Equinox from dashcam mode

* Add fingerprint

* Set moving backward only if not moving forward

* Bump opendbc

* Update moving backward definition

* Update docs

* Bump opendbc

* REVERTME: Add assert statement at Shane's request

* REVERTME: check unsupported and fault status

* Revert "REVERTME: check unsupported and fault status"

This reverts commit 5a0ebad66c4dcd33ee4eb5d0c5d3f036244653e2.

* Revert "REVERTME: Add assert statement at Shane's request"

This reverts commit b4b885eb11ad3079a84033f20f670cc905113bb9.

* Use or

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Add comment

* Add test route

* Use newer fingerprint

* Emtpy commit to rerun CI

* Empty commit to rerun CI

* Update selfdrive/car/gm/fingerprints.py

* little more

* remove from non-tested

* update

* add to releases

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-12 21:35:44 -08:00
Shane Smiskol 04ada8e436 Toyota: log engine RPM (#31423)
* Update carstate.py

* 42 is safe

* mirai

* we hit this after 30 mins: Exceeded message traversal limit.  See capnp::ReaderOptions.

* too easy to write this bug, no need to be generic yet

* Update ref_commit
2024-02-12 21:28:16 -08:00
Justin Newberry 78e4508e3b FCA: car port for Dodge Durango 2021 (#31015)
* dodge durango

* add dodge

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* add comment

* more exact

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-12 21:04:53 -08:00
Shane Smiskol cabde52ac6 Ford: log traction control status (#31424)
* not sure which to use

* cluster changes a bit earlier andis already used for nonAdaptive
2024-02-12 19:20:49 -08:00
Justin Newberry 7010aae0a9 jenkins: kill subprocesses on exit (#31422)
* kill-on-exit

* kill all
2024-02-12 15:41:04 -08:00
Adeeb Shihadeh 4b004d59f3 radard: enable avg input service frequency checks (#31404)
* radard: enable avg frequency checks

* freq

* update cpu

* fix diff
2024-02-12 15:00:01 -08:00
Justin Newberry 0a92c5bf96 LogReader: live_logreader helpers (#31416)
live helper
2024-02-12 12:58:25 -08:00
Adeeb Shihadeh 279d2c3b23 SubMaster: improve service aliveness checks (#31391)
* bump cereal

* fix

* fixes

* single poll

* bump

* bump

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-12 10:11:37 -08:00
Shane Smiskol 22c966d8fd [bot] Fingerprints: add missing FW versions from new users (#31414)
Export fingerprints
2024-02-12 09:38:41 -08:00
Adeeb Shihadeh 5f087010a9 [bot] Update Python packages and pre-commit hooks (#31413)
Update Python packages and pre-commit hooks

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-02-12 09:34:15 -08:00
Shane Smiskol 3cf7b05a30 [bot] Fingerprints: add missing FW versions from new users (#31403)
Export fingerprints
2024-02-11 09:56:34 -08:00
Justin Newberry 33e6158d9b Subaru: add message for angle LKAS (#31402)
add angle
2024-02-10 17:47:06 -08:00
Justin Newberry c9951e9d6c camerad: assert isp started successfully (#31385)
* isp assert

* disable this for testing

* Revert "disable this for testing"

This reverts commit e65cf6d4b457babcc1a980d40079a2d6aa6540b8.

* move below
2024-02-10 14:49:45 -08:00
Nelson Chen 299dbb564d Only run repo-maintenance.yaml on 'commaai/openpilot' (#31401)
This otherwise fails and causes a periodic annoying email for users who have forked the repo.
2024-02-10 08:26:39 -08:00
Greg Hogan 667693b8c2 logreader: skip internal source if not available (#31400)
* logreader: skip internal source if not available

* raise exception

* but only when appropriate
2024-02-10 00:20:43 -08:00
Shane Smiskol 743c418a6c [bot] Fingerprints: add missing FW versions from CAN fingerprinting cars (#31396)
Export fingerprints
2024-02-09 22:24:49 -08:00
Adeeb Shihadeh daceb171bd bump cereal (#31392)
* bump cereal

* update those

* update refs

* bump cereal

* bump

* bump cereal

* bump

* fix

* bump

* typo:
2024-02-09 21:44:23 -08:00
Shane Smiskol 8416331c15 [bot] Fingerprints: add missing FW versions from new users (#31395)
Export fingerprints
2024-02-09 20:29:40 -08:00
Justin Newberry 664a3c86ba test_caching: use with_http_server (#31393)
use http server
2024-02-09 20:06:11 -08:00
Adeeb Shihadeh ac95838657 radard: cleanup init 2024-02-09 17:54:40 -08:00
Shane Smiskol e02ec88b1c Honda Civic & CR-V Bosch: allow fingerprinting without comma power (#31259)
* Honda Civic Bosch: remove OBD-reliant ECUs from fingerprinting

* eligible to fingerprint with these responses now

* same for CRV bosch

* add back all FW to test fingerprinting diff on data

* set these ECUs as non essential instead

* comment

* compare old fingerprinting with non essential fingerprinting

* clean up

* cmt
2024-02-09 17:23:47 -08:00
Justin Newberry f873224235 LogReader: test auto mode fallback (#31390)
* test auto mode

* better

* slow

* better
2024-02-09 15:22:43 -08:00
Shane Smiskol 68899136dd Honda: add missing FW for CR-V 2018 (#31388)
export
2024-02-09 14:09:01 -08:00
Adeeb Shihadeh 714e02d0bd bring this back 2024-02-09 12:46:06 -08:00
Shane Smiskol cf97c69067 [bot] Fingerprints: add missing FW versions from new users (#31387)
Export fingerprints
2024-02-09 10:54:41 -08:00
Adeeb Shihadeh 013d4bd4ce controlsd: log initializing timeouts 2024-02-08 21:26:07 -08:00
Justin Newberry 1a1f30c4b6 fix bootlog params copying from other prefix (#31381)
* fix

* also in prefix

* no d

* get it from the path
2024-02-08 16:45:55 -08:00
Adeeb Shihadeh 135deb4324 sensord: fix IRQ affinity (#31384) 2024-02-08 16:40:43 -08:00
YassineYousfi f0e491e3fa Revert "update model replay ref" (#31383)
Revert "update model replay ref (#31310)"

This reverts commit 7eb9b9a277.
2024-02-08 15:31:29 -08:00
YassineYousfi c84e5e2402 Revert "Certified Herbalist Model" (#31382)
Revert "Certified Herbalist Model (#31294)"

This reverts commit 06bdc69a02.
2024-02-08 15:31:21 -08:00
Justin Newberry 32f049c280 Revert "make vipc and msgq prefix paths easier to cleanup" (#31380)
Revert "make vipc and msgq  prefix paths easier to cleanup (#31378)"

This reverts commit e87135727d.
2024-02-08 13:38:41 -08:00
Justin Newberry e87135727d make vipc and msgq prefix paths easier to cleanup (#31378)
* ensure order

* cleanup cleaner

* cleaner

* this needs prefix

* rm vipc

* bump

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-08 13:36:14 -08:00
Justin Newberry 88d0231095 pytest: fix tici setup fixture (#31379)
cleanup

Co-authored-by: Comma Device <device@comma.ai>
2024-02-08 13:32:40 -08:00
Justin Newberry e593ffc28c bump notebooks timeout (#31377)
bump
2024-02-08 11:49:33 -08:00
Justin Newberry 1c201295c7 test_navd: parameterize random test (#31376)
* parameterized

* import

* dumb
2024-02-08 11:41:56 -08:00
Justin Newberry 70288d1742 test_power_draw: combine mapsd and navmodeld (#31375)
* combine

* combine

* combine

* simpler

* nounion
2024-02-08 11:31:55 -08:00
Shane Smiskol d61b8c90b6 [bot] Fingerprints: add missing FW versions from new users (#31372)
Export fingerprints
2024-02-08 10:43:06 -08:00
Greg Hogan ec9f3dcef3 simplify URLFile (#31365)
* simplify URLFile

* more space
2024-02-08 10:24:45 -08:00
Justin Newberry e3028cbdca jenkins: no changeset (#31374)
no changeset

Co-authored-by: Comma Device <device@comma.ai>
2024-02-08 09:59:47 -08:00
Justin Newberry 85fe673ee8 bump uploader cpu (#31373) 2024-02-08 09:36:33 -08:00
Jason Wen fa9a11c4d6 Sync: commaai/openpilot:master into sunnypilot/sunnypilot:master (#277) 2024-02-08 11:55:30 -05:00
Jason Wen 35a47f6bf3 bump submodules 2024-02-08 11:53:44 -05:00
Jason Wen b657f0f01e bump cereal 2024-02-08 10:56:36 -05:00
Jason Wen fabb739dbe HKG: Add missing FW versions for Kia Forte 2023 (#30761)
* HKG: Add FW versions for Kia Forte 2023

* more fw

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-07 23:45:08 -08:00
Shane Smiskol 595406be67 ruff: fix deprecated top level linter settings (#31367)
fix deprecation
2024-02-07 22:54:40 -08:00
Shane Smiskol 74ec33f7c7 IsoTpParallelQuery: type hinting (#31370)
* start typing

* fixes

* we only plan on using this for lists

* sort

* this is the correct way to type it

* it knows this!

* it's getting smarter
2024-02-07 22:53:55 -08:00
Shane Smiskol b6d195f010 VIN: fix rx addr (#31369)
fix rx vin addr
2024-02-07 21:43:52 -08:00
Justin Newberry c79d1e0192 test_manager: ensure test independence (#31364)
* ensure independent

* still run 10- times

* need index

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-07 20:52:21 -08:00
Shane Smiskol 0355ceaeac fix static analysis 2024-02-07 19:57:33 -08:00
Shane Smiskol 1b0a4746eb test_fw_fingerprint: remove timeout
it's fast now
2024-02-07 19:47:20 -08:00
James d265f5a6ab Re-use existing params declaration in onboarding (#31363)
Re-use existing params declarations in onboarding
2024-02-07 17:44:57 -08:00
James 75b72c2c4b Fix whitespace (#31361) 2024-02-07 17:27:16 -08:00
Justin Newberry e6f42fa6b3 test_time_to_onroad: log events after engagability/timeout (#31362)
log engagability

Co-authored-by: Comma Device <device@comma.ai>
2024-02-07 17:25:17 -08:00
Justin Newberry 2e7ed5bd88 add loop_until_fail helper (#31360)
* helper

* remove count
2024-02-07 17:07:01 -08:00
Justin Newberry 4fea2a343a test_time_to_onroad: log events after onroad/timeout (#31359)
* log events

* only on fail
2024-02-07 17:05:43 -08:00
Shane Smiskol 768fee7e44 [bot] Fingerprints: add missing FW versions from new users (#31358)
Export fingerprints
2024-02-07 16:45:03 -08:00
Adeeb Shihadeh 4228b6420b agnos 9.6 (#31357)
* agnos 9.6

* manifest
2024-02-07 16:15:09 -08:00
Shane Smiskol 08c3107163 [bot] Fingerprints: add missing FW versions from new users (#31352)
Export fingerprints
2024-02-07 15:46:58 -08:00
Justin Newberry 6a463503a7 add cd for jenkins replacement scripts (#31355)
fix dirs
2024-02-07 15:40:36 -08:00
Shane Smiskol 92025ecbbd Add Lexus LC 2024 to release notes 2024-02-07 15:07:21 -08:00
Justin Newberry caa9dff610 test_power_draw: wait for power instead of fixed warmup time (#31318)
* wait for valid

* reuuse that

* assert warmup

* Wip

* fix that

* reset

* none

* timeout

* maxlen

* consecutive

* proc

* fix

* local

* same as before

* mean

* fixes

* SA

* this is the real warmup time

* this is the real warmup time

* Cleanup

* Cleanup

* monotonic + len

* reduce duplication

* fix

* fix

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-07 13:54:46 -08:00
Adeeb Shihadeh ff1dd1f4dd agnos 9.5 (#31313)
* agnos 9.4

* agnos 9.5
2024-02-07 13:23:58 -08:00
Nelson Chen b234f5abef Update Lexus LC Convertible Steer Ratio to 13 (#31354)
https://media.lexus.co.uk/wp-content/uploads/sites/3/2021/06/1612190405210201MLCConvertibleTechSpec.pdf

Minor follow-up to port
2024-02-07 12:34:45 -08:00
Nelson Chen 879e2521ac Lexus LC 2024 (#31199)
* Initial pass

* Add physical measurements for LEXUS_LC_2024

* Add new test route for TOYOTA.LEXUS_LC_TSS2

* Add new public-OK test route for TOYOTA.LEXUS_LC_TSS2

* update docs

* | not /

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-07 11:45:12 -08:00
Justin Newberry 8f67d3cab9 jenkins: remove pc / car tests (#31353)
* move to scripts

* clean first

* cant have test_*?

* move
2024-02-07 11:33:52 -08:00
Justin Newberry 6933d0560a Pytest: reenable gc in pytest fixture + re-combine jenkins car tests (#31351)
* Revert "jenkins: spilt car tests in two steps (#31346)"

This reverts commit 8a00b30029.

* enable gc

* codespell

* useless comment
2024-02-07 08:35:32 -08:00
Shane Smiskol 8f5dcb3019 HKG CAN FD: potentially get VIN without OBD port on some platforms (#31348)
* add cluster

* think this works

* update refs

not 1

* only add the new address

* bb

* comment
2024-02-07 00:23:16 -08:00
Shane Smiskol fabec99645 Hyundai: log camera manufacture date (#31345)
* log manufac date

* oof

* should be safe

* update refs
2024-02-07 00:07:01 -08:00
Justin Newberry 8a00b30029 jenkins: spilt car tests in two steps (#31346)
fix
2024-02-07 00:04:27 -08:00
Adeeb Shihadeh 28276a4485 bump panda 2024-02-06 22:32:37 -08:00
Shane Smiskol bcd29a2b8a Hyundai: add PT queries for all ECUs (#31334)
* We never had any bus 0 logging queries for CAN!

* should be logging

* try all, and try on can fd as well

* update refs

* oof forgot about hda2 can fd where pt is bus 1

* sheesh

* fix the timing

* fix ref
2024-02-06 20:37:26 -08:00
Shane Smiskol 4ec0ed311c FW query timing test: fix total reference time (#31344)
* We never had any bus 0 logging queries for CAN!

* should be logging

* try all, and try on can fd as well

* update refs

* oof forgot about hda2 can fd where pt is bus 1

* sheesh

* fix the timing

* not here

* revert

* this just simply measured the total time of all the brands with aux queries (1.25s)

* clean up
2024-02-06 20:10:06 -08:00
Shane Smiskol a07259d765 HKG: mark queries as logging (#31343)
* should be logging

* fix cmt
2024-02-06 19:37:15 -08:00
Justin Newberry 530902dfad bump metadrive (#31342)
bump
2024-02-06 19:23:37 -08:00
Justin Newberry aa43252dc5 bump opendbc (#31340)
bumpitup
2024-02-06 19:16:41 -08:00
Justin Newberry ceecf39c54 Docker: merge opencl and base images (#31338)
* mergeem

* don't change workdir
2024-02-06 17:11:00 -08:00
Justin Newberry 66dc7030de test_models: cleanup by using new logreader (#31267)
* cleanup

* only check error

* this segment only

* fix

* fix

* keep this

* fix internal
2024-02-06 16:50:30 -08:00
gaanthony 30dd1087ea Update fingerprints.py - for 2023 Kia Sorento X-Line SX Prestige (#31286)
* Update fingerprints.py - for 2023 Kia Sorento X-Line SX Prestige

* Update fingerprints.py - fix file for unit tests

* Update fingerprints.py

trailing

---------

Co-authored-by: Justin Newberry <jnewberry0502@gmail.com>
2024-02-06 16:00:24 -08:00
Tico Fortes 1185645271 Add fingerprint Hyundai Tucson Hibrid 2022 Europe (#31291) 2024-02-06 15:55:01 -08:00
Justin Newberry 03c183cb05 jenkins: limit cpu and memory (#31329)
* limit that

* we can use 32g

* addopts

* half
2024-02-06 13:51:55 -08:00
Justin Newberry 052519570d jenkins: lock device resource first before making container (#31330)
lock first
2024-02-06 13:35:08 -08:00
dzid26 0af62eb3b0 camerastream instructions (#31326)
* camerastream instructions

* Update README.md

* Update tools/README.md

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-02-06 13:19:01 -08:00
Justin Newberry 88b635c4e1 jenkins: cleanup stage names for analysis (#31327)
fix names
2024-02-06 12:50:44 -08:00
Adeeb Shihadeh 7fe375f158 [bot] Bump submodules (#31299)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-02-06 11:11:58 -08:00
Shane Smiskol d5821c6812 [bot] Fingerprints: add missing FW versions from new users (#31277)
Export fingerprints
2024-02-06 01:47:51 -08:00
dblacknc 75ea3f3e3a Add fingerprint and car info for 2021 Kia Niro PHEV (#31275)
* Add 2021 Kia Niro Plug-in Hybrid

* Added CAR.KIA_NIRO_PHEV_2021

* Added CAR.KIA_NIRO_PHEV_2021

Created new block and moved 2022 model to it as well, with correct mass and steerRatio values.

* Added 2021 Kia Niro PHEV

* Added 2021 Kia Niro PHEV

For now, using 2020 Niro EV torque data

* Update values.py

Add '21 Kia Niro PHEV to HYBRID_CAR for gas signal and DBC info

* Test route for 2021 Kia Niro PHEV

* Add public test route for 2021 Kia Niro PHEV

* Fixed typo in test route for 2021 Kia Niro PHEV

* Move '21 Kia Niro PHEV car info under '22

...and remove other mention of '21 as distinct car

* Added '21 Kia Niro PHEV fingerprint under '22

...and removed separate car definition

* Removed '21 Kia Niro PHEV as separate car, now under '22

* Removed '21 Kia Niro PHEV, now under '22 fingerprint

* Removed test route for '21 Kia Niro PHEV

* Update values.py

Missed removing one more reference to '21 Kiro Niro PHEV, consolidating under '22.

* Update selfdrive/car/hyundai/interface.py

* Update selfdrive/car/hyundai/fingerprints.py

* Apply suggestions from code review

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-06 01:10:10 -08:00
neverbread 769c044269 Hyundai: add FW for 2018 Elantra GT Sport (#30732)
* Update values.py

* we really gotta get fuzzy FP for these date codes

* format

* rc

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-02-06 00:56:02 -08:00
Maddog1929 90dbe61c7d Add fingerprint for 2018 Genesis G90 (#31271)
* Update fingerprints.py

* Update fingerprints.py

* Update fingerprints.py

* Update fingerprints.py

* Update fingerprints.py

* Update fingerprints.py

* Update fingerprints.py

* Update values.py

* Update values.py

* Update fingerprints.py

* Update values.py

* Update values.py

* Update fingerprints.py

changed formatting of FW value to match existing convention and removed extra FW value no longer being shown in carParam logs
2024-02-06 00:43:41 -08:00
Jason Young e6bace867e VW MQB: Add FW for 2024 Volkswagen Jetta (#30979)
* VW MQB: Add FW for 2024 Volkswagen Jetta

* update docs

* fix sorting
2024-02-06 00:42:28 -08:00
Shane Smiskol ee16eefc1a Ford: Add missing FW for Escape 2022 (#31321)
Add missing FW for a25d5d0b645d8bc3
2024-02-06 00:05:08 -08:00
Shane Smiskol dd6065c33b Reapply "Ford: don't fingerprint on engine (#31195)" part 2 (#31320)
* Reapply "Ford: don't fingerprint on engine (#31195) part 2"

This reverts commit 7694712cd6.

* add comment

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>

---------

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
2024-02-05 23:57:46 -08:00
Adeeb Shihadeh cbd46802b0 fix bootlog count (#31319) 2024-02-05 23:00:45 -08:00
Justin Newberry b94aba6281 CI: Move repo maintenance bots to 6am (#31316)
later
2024-02-05 21:52:16 -08:00
Shane Smiskol 618366be06 get_vin: respond to full 11-bit diagnostic address range (#31317)
* fix

* not 7df

* cleaner

* whop
2024-02-05 21:52:06 -08:00
Shane Smiskol 55cc3989d8 Ford: add ABS address to get VIN without OBD port (#31308)
* consider ford abs

* cmts

* fix

* who

* Revert "who"

This reverts commit eef45b147fab715a9f35b9712e8b9d7ebb1b2fdf.

* this doesn't work correctly

* add cmt

* fix

* Revert "fix"

This reverts commit 60dfe09c426e74293711df9e2f3b2f75cf3a1da9.
2024-02-05 21:48:57 -08:00
Justin Newberry 7eb9b9a277 update model replay ref (#31310)
update ref
2024-02-05 21:06:30 -08:00
Shane Smiskol cd153e6376 log vin request to qlog (#31314) 2024-02-05 20:30:33 -08:00
Kacper Rączy 35d848ad52 webrtcd: lazy import of aiortc (#31304)
* Lazy imports in webrtcd

* Lazy imports in web.py

* Type hints

* Remove FrameReaderVideoStreamTrack

* leave the aiohttp.web import

* Leave the client session

* main leftover
2024-02-05 19:04:59 -08:00
Justin Newberry b17f24d68e test_logreader: test run_across_segments (#31305)
* more logreader tests

* not in ci for now

* enable cache
2024-02-05 18:35:12 -08:00
Greg Hogan a8aa04e6bd make URLFile safe after fork() (#31309)
* make URLFile safe after fork()

* cache the pool manager in each instance

* type hints
2024-02-05 18:07:48 -08:00
Harald Schäfer 06bdc69a02 Certified Herbalist Model (#31294)
ab9921cb-6e0a-4816-bec5-ebb55d37a7f1/700
2024-02-06 08:39:44 +08:00
Shane Smiskol 50a552ab8d Reapply "Ford: don't fingerprint on engine (#31195)" (#31303)
* Reapply "Ford: don't fingerprint on engine (#31195)"

This reverts commit 7694712cd6.

* don't change the queries

* revert refs
2024-02-05 14:46:34 -08:00
Justin Newberry fd07fc3ba4 updated: close lock file on exit (#31285)
* with open

* those too

* just 1 file

* move this to another pr
2024-02-05 13:01:23 -08:00
Adeeb Shihadeh f0b591e345 [bot] Update Python packages and pre-commit hooks (#31300)
Update Python packages and pre-commit hooks

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-02-05 10:06:18 -08:00
Jason Wen daae551ea8 Merge remote-tracking branch 'commaai/openpilot/master' into sync-20240201 2024-02-05 11:41:19 -05:00
Shane Smiskol 7694712cd6 Revert "Ford: don't fingerprint on engine (#31195)"
This reverts commit 1d1c9936cf.
2024-02-05 01:35:39 -08:00
Adeeb Shihadeh 43f151eea9 compressed_vipc supports all frame sizes 2024-02-04 15:29:43 -08:00
Adeeb Shihadeh 3972073fd4 tools: fix up can_replay 2024-02-04 14:48:06 -08:00
Adeeb Shihadeh a094179b4d add cavli modem config (#31297)
* add cavli modem config

* fix linter

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-04 14:26:03 -08:00
Shane Smiskol 81f52f2e53 car_helpers: don't log fingerprints as a dict (#31289)
Update car_helpers.py
2024-02-02 23:45:28 -08:00
Shane Smiskol 0110540300 Test car interfaces: init controllers (#31282)
* not pytest?

* copy what build release does

* test controls step with CI and lat/long controllers, car controller.update, etc

* clean up

* not needed

* not here

* here

* better cmt

* fix test_fuzzy

* see what's failing

* need conftest for OPENPILOT_PREFIX to work!

* up

* clean up

* test

* fix

* params put is slow

* stash

* Revert "stash"

This reverts commit 22cc9f814c0699f7046970763663205907f2890b.

* stash

bad

* just freaking merge

* sort

* rm
2024-02-02 23:43:30 -08:00
Greg Hogan d0a1fa636a logging: make swaglog context match in python and c (#31288)
* logging: make swaglog context match in python and c

* add git context to athenad
2024-02-02 23:10:04 -08:00
Greg Hogan 7affba06d8 simplify git remote is comma check (#31284)
* simplify git remote is comma check

* cast to str

* eliminate default and always return string

* add type annotation for cache decorator

* fix up default handling
2024-02-02 21:23:32 -08:00
Shane Smiskol 52be3805b0 use pytest for release tests (#31280)
* not pytest?

* copy what build release does

* Update .github/workflows/release.yaml
2024-02-02 19:25:34 -08:00
Adeeb Shihadeh 2193458da9 bump panda (#31287) 2024-02-02 19:20:28 -08:00
Greg Hogan 9ab374f3b0 athenad: return normalized origin in getVersion() (#31283) 2024-02-02 16:29:45 -08:00
Justin Newberry 28a15dbfe9 CI: enable logical cpus for all selfdrive tests (#31281)
logical
2024-02-02 15:45:59 -08:00
Justin Newberry 0277fc5548 Pytest: consistent hardware state for tici tests (#31279)
* consistent hardware

* consistent hardware

* moved

* this too

* ruff

* s

* duplicated

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-02-02 14:18:01 -08:00
Adeeb Shihadeh a5766e2796 encoderd: get frame size over vipc (#31276)
* encoderd: get frame size over vipc

* bump cereal

* fix ffmpeg

* no print
2024-02-02 12:53:12 -08:00
Hoang Bui 71236204bb Fix self.started value pass in metadrive test (#31153)
* fix value pass

* fix test

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-02-02 12:06:05 -08:00
Adeeb Shihadeh 83fc734b8f add neural ff weights to release 2024-02-02 11:28:42 -08:00
Jason Wen 66df10faaf MSPA: Lat plan deprecation prerequisites (#276)
* MSPA: Lat plan deprecation prerequisites

* bump cereal
2024-02-02 01:14:13 -05:00
Jason Wen dd49490dae mapd: Remove more legacy implementation (#275)
* mapd: Remove more legacy implementation

* bump cereal
2024-02-02 00:08:53 -05:00
Shane Smiskol c9bd4e4c0d FW_QUERY_CONFIGS: type annotate (#31265)
* annotate

* fix

* clean up

* test

* clean up

* space

* fix
2024-02-01 21:01:31 -08:00
Adeeb Shihadeh 4962ffa14c camerad: flip OS04C10 image 2024-02-01 20:24:00 -08:00
Jason Wen fbabd5700f MSPA: lateralPlanSP legacy support (#274)
* MSPA: `lateralPlanSP` legacy support

* bump cereal
2024-02-01 23:02:03 -05:00
Jason Wen 8f0b4c49cc gpxd: Remove support (#273) 2024-02-01 21:03:17 -05:00
Jason Wen 72dba20a60 Enhanced Speed Control: Remove legacy implementation (#271)
Remove outdated Enhanced Speed Control
2024-02-01 20:59:27 -05:00
Justin Newberry 08d9681cf6 Jenkins: select devices randomly (#31274)
radnomly select devices
2024-02-01 17:24:28 -08:00
Shane Smiskol 33c93cc583 Mazda: add missing FW versions for CX9 2022 (#30725) (#31273)
* Adding CX9 engine ECU FW

* Adding cx92023 fingerprints for transmission

* add fingerprints

---------

Co-authored-by: Elshan <8066214+ekodikara@users.noreply.github.com>
Co-authored-by: Elshan <elshan.kodikara@stepglobal.com>
2024-02-01 15:22:26 -08:00
Shane Smiskol 341f8420db fw_versions: type annotate test_brand_ecu_matches (#31272)
* test this

* we
2024-02-01 15:11:10 -08:00
Adeeb Shihadeh 98564961cd manager: remove RTC time pull (#31270) 2024-02-01 14:00:18 -08:00
Hoang Bui 08037594e2 map: Transfer to MapLibre (#31185)
* change codebase

* compile

* add mapboxprovider

* works with map_renderer in c

* remove maplibre temp

* maplibre works

* cleanup build.sh

* x86 stuff

* add lib

* update release files

* don't need that

* tici build

* tici build

* add tici lib

* update refs

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-02-01 13:37:22 -08:00
Vivek Aithal 619625625c CHEVROLET BOLT EUV 2022: Add a simple neural feed forward (#31266)
* add simple neural feed forward

* update refs

* do not sample during inference in op

* update refs
2024-02-01 12:30:43 -08:00
Moritz Wörmann 628c829d19 GH Actions PR review bot: Check only for substrings in checkbox text when validating PR template (#31262)
check only for substrings in checkbox text
2024-02-01 10:31:10 -08:00
Vivek Aithal 056b330e8b LatControlTorque: Add more inputs (#31252)
* add history and state to the ff inputs

* add history

* resolve comments

* remove history, simplify

* don't compute lateral accel, roll comp always
2024-02-01 04:12:48 -08:00
Shane Smiskol f0b6f48948 Mazda: use bus 0 to fingerprint (#31261)
* for testing

* switch OBD port to logging

* revert

* cmt

* cmt

* remove OBD query

* Update selfdrive/car/mazda/values.py
2024-02-01 00:28:00 -08:00
Justin Newberry 086c509fde Create message mocking tools (#31249)
* add mocking tools

* fix map renderer

* use for power draw

* fix those

* whitespace

* rename to services

* fix the rate

* remove
2024-01-31 18:47:49 -08:00
Justin Newberry be33b00499 Jenkins: better timeout when disconnected from devices (#31256)
* timeout better

* timeoutes
2024-01-31 18:46:40 -08:00
Eric Brown 1ab3745400 GM: Fix wheel direction signals (#31258)
* Fix wheel direction signals

* Update name

* Add comment

* Remove signal value table

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* bump

* add 3

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-31 18:45:10 -08:00
Justin Newberry 5c85925e9b test_athenad: create with_upload_handler decorator (#31250)
cleaner
2024-01-31 18:44:04 -08:00
Shane Smiskol 7222eb3665 Nissan: use bus 0 to fingerprint (#31243)
* Nissan: use bus 0 to fingerprint

* update refs

* switch OBD query to be logging instead, might want OBD logging for one more release
2024-01-31 18:20:33 -08:00
Justin Newberry 6010a39bf8 LogReader: skip file_exists check for comma_api (#31251)
* valid file

* missed this one
2024-01-31 16:43:58 -08:00
Shane Smiskol 5195f0a624 [bot] Fingerprints: add missing FW versions from new users (#31245) 2024-01-31 09:52:44 -08:00
Elshan 883f9458eb Mazda: add missing FW versions for CX9 2022 (#30725)
* Adding CX9 engine ECU FW

* Adding cx92023 fingerprints for transmission

* add fingerprints

---------

Co-authored-by: Elshan <elshan.kodikara@stepglobal.com>
Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-31 03:20:58 -08:00
Shane Smiskol e4e161f8de Hyundai CAN FD: enable enhanced fuzzy fingerprinting for Sorento & Sorento Hybrid (#31242)
* allow fuzzy fingerprinting

* rm todo

* better cmt
2024-01-31 00:52:49 -08:00
Shane Smiskol b4f958c13f HKG CAN FD: Merge Sorento Plug-in Hybrid and Hybrid (#31241)
* merge sorento plug-in hybrid and hybrid

* format

* allow fuzzy fingerprinting

* rm todo

* Revert "rm todo"

This reverts commit f2457eb58f88f780b25625942dbd9c74202acbb8.

* Revert "allow fuzzy fingerprinting"

This reverts commit 91f143f3115e31107752a5e84d3f587e6917933f.
2024-01-31 00:41:57 -08:00
Shane Smiskol 2f4cadc6bf Hyundai CAN FD: merge Sportage platforms (#31235)
* merge Tucson 4th gen!

* format fingerprints

* fix torque params

* fix

* detect CANFD hybrid with ACCELERATOR_ALT

* passes

* add test

* pass test

* cmt

* Revert "pass test"

This reverts commit 5f48ab1f6e6569def1cbbc92c9c0dd4ea5eebbe2.

* combine sportage hybrid

* merge sportage

* format
2024-01-31 00:19:15 -08:00
Shane Smiskol e92e856f7a Hyundai CAN FD: merge Tucson and Tucson Hybrid (#31238)
* combine tucson and tucson hybrid can fd

* format fingerprints
2024-01-30 23:06:24 -08:00
Shane Smiskol e5a8ddc3d0 Hyundai CAN FD: detect hybrid (#31237)
* detect can fd hybrid

* remove from set

* prevent EV & hybrid somehow
2024-01-30 22:43:56 -08:00
Shane Smiskol b40660692b Hyundai: use hybrid & ev flags (#31236)
* hyundai: use hybrid & ev flags

* Update ref_commit

* todo

* match order
2024-01-30 21:57:29 -08:00
Shane Smiskol 9c48e85c78 Revert "docs: fix car docs video icon" (#31234) 2024-01-30 19:04:43 -08:00
Shane Smiskol 97aa08d8de docs: fix car docs video icon (#31218)
* fix yt icon on docs.comma.ai

* bigger
2024-01-30 18:46:46 -08:00
Shane Smiskol bd1678e71f Toyota: fix rare panda standstill mismatch (#31232)
* fix

* clean up

* just use 2x lower threshold so we're not on edge again
2024-01-30 16:06:28 -08:00
Adeeb Shihadeh bc5fdf24ae update min valid time 2024-01-30 15:00:41 -08:00
Shane Smiskol 0176c870ea Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler, Mazda, Ford [bot] (#31231) 2024-01-30 13:57:52 -08:00
Harald Schäfer feaf52dd4c Ford long control improvements (#31123)
* Ford updates

* back to normal

* Small fixes

* Try max

* Does pred matter

* ref commit

* Update ref
2024-01-30 11:40:52 -08:00
Shane Smiskol c2ee072907 format fingerprints: fix empty FW versions (#31230)
fix
2024-01-30 03:07:00 -08:00
Cameron Clough 1d1c9936cf Ford: don't fingerprint on engine (#31195)
* Ford: do not fingerprint engine

* add notebook

* Ford: add missing Explorer FW

* revert

* revert

* Revert "revert"

This reverts commit ad32feaa689f2b497c8bcc9fedc73cae6c87f697.

* TestFwFingerprintTiming: try these

* TestFwFingerprintTiming: update total ref time

* remove notebook

* fix ref

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-30 02:42:33 -08:00
Shane Smiskol 06f0e50964 GM: FPv2 logging (#31221)
* bump

* from https://github.com/commaai/openpilot/pull/27929

* get VIN on bolt!

* might as well try on other gms

* remove vin

* ugh gm is going to be slow

* fix

* should really fix this

* revert

* happy?1

* fix unit test

* bump

* functional addressing must be an OBD gateway feature, this does nothing

* fix vin response

* fix addr!

* finally fix fw_versions bugs since boardd IsOnroad refactor

* for

* only bus 0

* clean up

* Update selfdrive/car/gm/values.py

* ChatGPT re-write

* filter out did

* todo

* oof

* preview: what multiple DIDs per ECU would look like in the future

* Revert "preview: what multiple DIDs per ECU would look like in the future"

This reverts commit 88f0d8611e638de644adc5feabade848c03d59e4.

* function to get all ecus

* we can remove this!

* can also do this!

* and this one too :o

* consistency

* yay

* clean up
2024-01-30 02:19:12 -08:00
Shane Smiskol 2c0f7b8727 FPv2: support FwQueryConfig with no FW versions (#31227)
* bump

* from https://github.com/commaai/openpilot/pull/27929

* get VIN on bolt!

* might as well try on other gms

* remove vin

* ugh gm is going to be slow

* fix

* should really fix this

* revert

* happy?1

* fix unit test

* bump

* functional addressing must be an OBD gateway feature, this does nothing

* fix vin response

* fix addr!

* finally fix fw_versions bugs since boardd IsOnroad refactor

* for

* only bus 0

* clean up

* Update selfdrive/car/gm/values.py

* ChatGPT re-write

* filter out did

* todo

* oof

* preview: what multiple DIDs per ECU would look like in the future

* Revert "preview: what multiple DIDs per ECU would look like in the future"

This reverts commit 88f0d8611e638de644adc5feabade848c03d59e4.

* function to get all ecus

* we can remove this!

* can also do this!

* and this one too :o

* consistency

* yay

* add tests

* revert GM stuff

* another PR

* reads better

* revert rest of gm

* use that

* interesting

* these are exactly the same (with ordering differences)

* Revert "these are exactly the same (with ordering differences)"

This reverts commit a9e918dc351d24f1b7c8a05c7ec402e057a0e09a.

* flip
2024-01-30 02:08:08 -08:00
Shane Smiskol c3fcf75737 GM camera ACC: get VIN from camera (#31224)
* bump

* gm vin

* that's not right

* only check relevant buses

* instead try queries for each bus first

* clean up

* use default retry in function

* all
2024-01-29 23:24:21 -08:00
Shane Smiskol 5a8686b439 fw_versions: fix params.remove 2024-01-29 22:36:29 -08:00
Shane Smiskol a4cf7745e8 fix manually running fw_versions.py (#31226) 2024-01-29 21:44:00 -08:00
Shane Smiskol 3a0033e81e vin: fix retry logging (#31225)
* retry should really be outside inner query loop

* just req

* nls

* bump

* rmnl

* useful to have

* is it though
2024-01-29 21:28:29 -08:00
Adeeb Shihadeh 4243e9322a update release notes 2024-01-29 17:49:37 -08:00
Adeeb Shihadeh 6caf89bca5 agnos 9.3 (#31163)
* agnos 9.2

* agnos 9.3
2024-01-29 17:44:14 -08:00
Justin Newberry c782fbc34e LogReader: add ``.filter`` (#31222)
add filter
2024-01-29 17:33:47 -08:00
ZwX1616 ba7f840a06 DM: Quarter Pounder Deluxe model (#31170)
* 1

* pg

This reverts commit 71409ec84a3e04e5e7ec960271d4e278a2472462.

* ee new

* 60ab

* update replay
2024-01-29 16:52:30 -08:00
Justin Newberry 54fe19206e Subaru: eps is non-essential for gen2 cars (#31220)
* eps non essential

* comment

* suggestions
2024-01-29 16:48:03 -08:00
Andrei Tanas e86aafc723 Add 2022 Subaru Outback IDs to subaru/fingerprints.py (#31016) 2024-01-29 16:07:56 -08:00
Shane Smiskol 50cb6f819d selfdrive/debug: view iso-tp communication from logs (#31217)
* add

* some clean up

* more clean up

* add

* ltl

* add todo

* rm

* use default_mode

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-29 15:05:09 -08:00
Justin Newberry 7835f9cce0 LogReader: add tqdm back to run_across_segments (#31216)
tqdm
2024-01-29 13:18:49 -08:00
Adeeb Shihadeh ed7cfc2343 [bot] Bump submodules (#31207)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-29 12:37:35 -08:00
Justin Newberry 0b2442314d CI: increase notebook cache build timeout (#31212)
allow more time
2024-01-29 10:22:59 -08:00
Justin Newberry e49eb4c54f Simulator: prepare to make bridge a PythonProcess (#31201)
* sim services

* clean
2024-01-29 10:11:02 -08:00
Justin Newberry 75d3e5fb4e Webcam: prepare to make camerad a PythonProcess (#31202)
* webcam

* support /dev/* syntax

* support strings
2024-01-29 10:10:55 -08:00
Justin Newberry bbeeea04a7 CI: fix bot location (#31211)
g
2024-01-29 10:02:11 -08:00
Adeeb Shihadeh 5f3a425015 Update Python packages and pre-commit hooks (#31208)
Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-29 09:43:18 -08:00
Shane Smiskol fd0b9cd930 Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31210) 2024-01-29 09:38:06 -08:00
Shane Smiskol 80db6f0e28 Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31205)
Export fingerprints
2024-01-29 01:11:28 -08:00
Shane Smiskol 36d6bb3bda Car docs: update model years from users for Toyota, Honda, Chrysler [bot] (#31203)
Update car docs
2024-01-28 19:23:53 -08:00
taggahertz 27c624550f Updated Lexus ES hybrid MY (#31181)
* Updated Lexus ES hybrid MY

Car
2024 Lexus ES 300h

Segment
c52c524e1b873247|2024-01-19--12-11-57--0

Route
https://connect.comma.ai/c52c524e1b873247/1705695117754/1705695298920

* Update CARS.md

fixed url link
2024-01-28 17:52:29 -08:00
Shane Smiskol 2a006f59a5 Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31196)
Export fingerprints
2024-01-28 15:53:55 -08:00
Shane Smiskol a3eb61b7a3 update refs 2024-01-27 23:25:14 -08:00
garrettpall 58ef40eb22 GM: Add BSM from Powertrain Bus (#30861)
* Add GM BSM

* Move BSM check to fwdCam only

* Detect if BSM message if present

* Remove hardcoding

* Apply Commit Suggestion

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* Cleanup Suggestions

* bump opendbc

* test out bsm

* BCMBlindSpotMonitors -> BCMBlindSpotMonitor

* Revert "test out bsm"

This reverts commit 0e166530e60165269c1be200f48ead9918d5fe96.

* up here

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-27 20:56:10 -08:00
Shane Smiskol be4107dc8a Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31193)
Export fingerprints
2024-01-27 18:31:50 -08:00
Justin Newberry aff3d5ae09 Subaru: move non-obd requests out of logging (#31174)
enable
2024-01-27 09:07:14 -08:00
Justin Newberry 824ddffec8 CommaCarSegments: BIG Database! (#31169)
* sanetized selector

* god damn

* add to re

* slog branch

* slog

* source

* big

* not slog

* cleanup

* no space

* works!

* trigger

* main!
2024-01-27 01:07:29 -08:00
Adeeb Shihadeh 2504341070 bootlog: remove timestamp from filename (#31187)
* bootlog: remove timestamp from filename

* revert route

* test

* revert that

* fix loggerd test
2024-01-26 19:17:38 -08:00
Adeeb Shihadeh 52c7514452 tools: add LOG_ID regex pattern (#31186) 2024-01-26 16:44:12 -08:00
Adeeb Shihadeh eada51ec8e pin pyopencl to fix aarch64 build (#31184)
* revert pyopencl

* revert that
2024-01-26 16:00:33 -08:00
Adeeb Shihadeh 6fbd844216 mark as flaky for now 2024-01-26 14:37:22 -08:00
Adeeb Shihadeh 1001becfa5 unpin sentry-sdk (#31183)
* unpin sentry-sdk

* update
2024-01-26 14:33:59 -08:00
Alexandre Nobuharu Sato 97488c190e Fingerprint vw taos eduardo (#31113)
* add instructions to my fork

* add braziliam TAOS fingerprint

* Revert "add instructions to my fork"

This reverts commit 46fbee3ebe7ecbb211d855e63b2d4c8919c31b63.
2024-01-26 13:20:35 -08:00
Justin Newberry 9518b66c9e commaCarSegments cleanup (#31182)
* cleanup

* no space
2024-01-26 13:20:25 -08:00
ugtthis 14e83ac9cc UI/sidebar_layout: Removed redundant piece of margin code (#31106) 2024-01-26 13:16:54 -08:00
Shane Smiskol 52d7cfa689 Honda: add logging request for radarless Civic 2022+ camera (#31176)
* try tester present

* radar

* rm whitelist

* refs
2024-01-25 23:58:27 -08:00
Shane Smiskol d1a8ec0cad Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31173)
Export fingerprints
2024-01-25 23:13:17 -08:00
Shane Smiskol c99cd3251b vin: reduce retries (#31175)
reduce retries
2024-01-25 22:40:39 -08:00
Shane Smiskol ca2ed59a64 add comment about sendcan 2024-01-25 22:27:18 -08:00
Justin Newberry 6262de4419 CI: use auto-cache for test_models (#31171)
use auto cache
2024-01-25 20:37:25 -08:00
Shane Smiskol 1612ec6d93 vin: try bus 0 first 2024-01-25 19:09:53 -08:00
Shane Smiskol 289868297e VIN: query on bus 0 to log data (#31165)
* query on bus 0

* fix

* log vin_rx_bus

* fix!
2024-01-25 18:01:49 -08:00
Adeeb Shihadeh fe4abaa6f6 add flaky package 2024-01-25 17:38:09 -08:00
Comma Device 076810d5bd allow a couple retries 2024-01-25 17:13:35 -08:00
Justin Newberry 979dba33cd Revert "test_loggerd: make rotation test more robust" (#31168) 2024-01-25 17:11:03 -08:00
Justin Newberry faf99ba711 CI: generate test_ui report (#31151)
* add test

* simpler

* simpler

* false

* move these here

* faster

* map takes logner to render
2024-01-25 16:49:38 -08:00
Shane Smiskol f5732f9c5b Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31166) 2024-01-25 16:44:25 -08:00
Alexandre Nobuharu Sato f21ccfbf79 Multilang: Update pt-BR translations (#31167)
* add instructions to my fork

* add paypall.png to gitignore

* Revert "add instructions to my fork"

This reverts commit a6a6f93533add212e321e8472a78a8a69bf932f4.

* translate

* revert this

* why?

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-25 15:55:58 -08:00
Shane Smiskol 9ae8830a43 Fingerprints: add missing FW versions from users for Toyota, Honda, Chrysler [bot] (#31156)
Export fingerprints
2024-01-25 15:28:02 -08:00
Adeeb Shihadeh 4ecaa6da45 update translations 2024-01-25 13:44:26 -08:00
Adeeb Shihadeh 80ea4db7bb update factory reset 2024-01-25 13:34:09 -08:00
Greg Hogan 6901aada14 filereader should use connection pool for file_exists (#31158)
* filereader should use connection pool for file_exists

* remove debug var
2024-01-25 13:26:12 -08:00
Justin Newberry 410db2cd9f Simulator: add comment about mapbox tokens (#31162)
* add to readme
2024-01-25 12:45:43 -08:00
Justin Newberry 3b618c4dfd Simulator: pin metadrive + use pip version (#31161)
* pin metadrive

* pin

* not on git
2024-01-25 12:44:01 -08:00
Justin Newberry 35374f4d57 test_loggerd: make rotation test more robust (#31160)
* no randomness

* lots

* Revert "lots"

This reverts commit 2052fd6f7b8dc4c53fbb7c726026070918d5de00.
2024-01-25 12:13:43 -08:00
Justin Newberry 6f2f966a2f CI: add bot labels to repo_maintenance (#31159)
* add bot lables

* prefix
2024-01-25 11:28:09 -08:00
Justin Newberry edd2428b60 LogReader: fail-fast on invalid segments (#31152)
* don't check all

* is
2024-01-25 11:09:09 -08:00
Shane Smiskol be15b31696 Toyota: use radar in place of abs for platform code ECUs (#31043)
* use radar instead of abs

* str the strenum

* Lexus ES: non-TSS2 probably don't have stop and go without DSU-pull and/or pedal

* remove from NO_STOP_TIMER_CAR. this set is so confusing

* Combine ES & ESH (preferring ESH's DSU msgs)

* ES: forgot substitute

* comment

* Highlander: combine, preferring the hybrid for DSU msg mismatches (0x365 and 0x366)

* remove duplicates and sort

* update docs

* toyota non_essential ECU test

* Lexus RX: combine, preferring hybrid's msgs (they all exist on ICE)

* sort and remove dups

* parameterize so we can test with notebook

* this too

* clean up

* clean up

* tuple makes more sense

* update comments

* update

* update

* update
2024-01-25 02:02:00 -08:00
Ruben Medina 8472ae5317 add size to system alt image manifest entry (#31154) 2024-01-24 23:35:39 -08:00
Shane Smiskol 951d7e9cd0 Chrysler: add FW from CAN fingerprinting cars last 90 days on 0.9.5-release (#31142)
* print

* name

* add missing

* -----

* add list so can fingerprint

* transmission doesn't exist on these

* fix abs addr!

* apparantly abs isn't on these cars

* 2018 too

* clean up

* rm abs

* add missing versions!

* Revert "add missing versions!"

This reverts commit 45d36a49363a9c540841e6618c1a73cd3948c754.

* need this to fingerprint!

* Add FW from CAN fingerprinting cars last 90 days on 0.9.5-release

* need this temporarily

* Add rest of dongles

* update docs

* remove FINGERPRINTS

* Apply suggestions from code review

* Update selfdrive/car/fw_versions.py
2024-01-24 21:29:18 -08:00
Justin Newberry 3676ae4da3 test_ui: add onroad state (#31148)
add onroad
2024-01-24 16:51:06 -08:00
kovat74 ae25a13594 Added firmware fingerprint IONIQ 2020 EV (#31049) 2024-01-24 16:15:20 -08:00
Cameron Clough 1a202a55c1 Ford: add missing Mach-E fw (#31145)
From the route 83a4e056c7072678/2023-11-13--16-51-33 (which is already
in selfdrive/car/tests/routes.py, added in #30691).
2024-01-24 15:37:32 -08:00
Harald Schäfer f55e6a3b81 Los Angeles Model 2 (#31135)
* 7045fb53-6739-4338-8426-20cbd4ad7832/600

* Update constants

* Update parse

* Typos

* Update ref

* 26057144-130f-48e1-8a98-00fae53ae7db/700

* Update ref
2024-01-24 15:26:22 -08:00
Justin Newberry e2ec5be6ee test_ui: create test ui screenshots and html report (#31147)
* test ui

* report + common

* in ci

* fix

* dont enable in ci yet
2024-01-24 13:54:31 -08:00
Adeeb Shihadeh 7f35d0a909 disable TestManager.test_clean_exit for now 2024-01-24 11:53:03 -08:00
Justin Newberry 1bade14fda car porting examples: subaru fuzzy fingerprinting (#31139)
initial commit
2024-01-24 10:23:59 -08:00
Justin Newberry dd0c474e6c LogReader: replace get_first_message with LogReader.first (#31146)
* first

* str
2024-01-24 10:21:57 -08:00
Shane Smiskol e5fe1d2885 Chrysler: add Pacifica 2023 FW versions (#30934) (#31144)
* Revert "Revert "Chrysler: add Pacifica 2023 FW versions (#30934)""

* ICE
2024-01-24 01:56:33 -08:00
Shane Smiskol ee716a6d9d Revert "Chrysler: add Pacifica 2023 FW versions (#30934)" (#31143)
Revert "Add Pacifica 2023 fingerprint"
2024-01-24 01:29:05 -08:00
Kenny K 1b82e77ed9 Chrysler: add Pacifica 2023 FW versions (#30934)
* Add Pacifica 2023 fingerprint

* add FW

* remove can

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-24 01:01:15 -08:00
Justin Newberry 88dcaa51c4 LogReader: no redownloading on multiple iterations (#31141)
* no redownload

* sort
2024-01-23 23:54:11 -08:00
Shane Smiskol b9ad854451 Nissan: log FW responses on bus 0 (#31138)
* nissan: log FW responses on bus 0

* update refs
2024-01-23 23:12:48 -08:00
Justin Newberry ac71c30ad5 auto_source: add commaCarSegments source (#31137)
add source
2024-01-23 21:40:04 -08:00
Justin Newberry abf2801122 use get_first_message for auto_fingerprint 2024-01-23 20:59:32 -08:00
Justin Newberry 3d9b483e10 comma_api_source: fix qlogs (#31136)
fix qlogs
2024-01-23 20:51:15 -08:00
Justin Newberry 998eb8cde2 test_fw_query_on_routes: use new LogReader (#31134)
a
2024-01-23 17:41:43 -08:00
Shane Smiskol 780f1222ad fw_versions: add extra_fw_versions param (#31132)
* add param

* fix

* fix
2024-01-23 17:21:48 -08:00
Justin Newberry f22b6681d6 CI: test the car_porting example notebooks (#31131)
* dont use route

* fix and cleanup

* test the example notebooks
2024-01-23 14:57:31 -08:00
Justin Newberry d574013d7b LogReader: don't use route for max_segment (#31129)
* dont use route

* fix and cleanup
2024-01-23 14:51:45 -08:00
Shane Smiskol a2028cbfd5 New MY! 2024-01-23 14:29:31 -08:00
Shane Smiskol ebc916e25c Export fingerprints 2024-01-23 14:23:11 -08:00
Justin Newberry 0234cadec3 LogReader: remove redirect message for internal data (#31088)
fix logging
2024-01-23 12:55:50 -08:00
Justin Newberry 65490bb3c5 plotjuggler: auto fallback to qlogs with prompt (#31110)
* qlog fallback

* show a warning for that

* qlog fallback

* fix

* wording
2024-01-23 12:53:19 -08:00
Justin Newberry 35e1e8ecd2 SegmentRange: __str__ get preferred format (#31126)
get canonical
2024-01-23 11:40:22 -08:00
Shane Smiskol ea57336005 Fingerprints: automatically add missing FW versions from users [bot] (#31116)
Export fingerprints
2024-01-23 02:19:32 -08:00
Hoang Bui 403610eed9 CI: enable virtual audio sink for soundd (#31120)
* enable virtual sound

* mv install to dockerfile

* cleaner

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-22 23:10:17 -08:00
Adeeb Shihadeh 88757c12b3 Revert "Switch from json11 to nlohmann/json (#31093)"
This reverts commit ee036482b8.
2024-01-22 22:41:59 -08:00
mtribiere ee036482b8 Switch from json11 to nlohmann/json (#31093)
* Initial commit

* fix release/file_common

* Update common/swaglog.cc

* Swtiched serialize cc

* move to lfs

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-22 22:35:47 -08:00
Adeeb Shihadeh 827aa2e4fa timed: always pull time and timezone from GPS (#31112)
* timed

* rm timezoned

* just gps

* ok

* little more

* fix

* datetime

* sleep a little

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-22 18:35:11 -08:00
Justin Newberry 389b8ca30d add example of using the comma car segments database (#31117)
* add vin fingerprinting example

* perhaps!

* remove segment

* easier
2024-01-22 18:23:07 -08:00
Justin Newberry caa9153974 CommaCarSegments: public database of segments for each platform (#31114)
* comma car segments

* comma car segments for test_models

* oneliner

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* better name

* not used here

* sort

* remove print

* better comment

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-22 17:33:03 -08:00
Adeeb Shihadeh 694fc378dd loggerd: speedup unit tests (#31115)
* first speed it up

* pytestify

* no sleep
2024-01-22 17:24:42 -08:00
Justin Newberry 3846130d8e pytest: add marker for sharing the download cache (#31082)
* fix cache

* with a marker
2024-01-22 16:30:59 -08:00
Harald Schäfer 7c9530f743 Code for running legacy models (#31111)
* Code for running legacy models

* Optional outputs
2024-01-22 14:44:48 -08:00
Brad Slavin 95d33164fd Hyundai: add missing Ioniq 5 2024 RWD Limited FW (#30864)
Update fingerprints.py

Added 2024 RWD Limited
2024-01-22 12:09:17 -08:00
Adeeb Shihadeh 77d051f5ec Bump submodules (#31107)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-22 09:15:58 -08:00
Adeeb Shihadeh eb04935b95 Update Python packages and pre-commit hooks (#31108)
Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-22 09:15:22 -08:00
Harald Schäfer 0067cf3eb1 Los Angeles Model (#31037)
* 1c888f5b-c213-4c1c-9eba-c587afd047fc/700

* Move to action

* Updates

* Add steer delay

* Update curvature grep

* clip speed

* No car params for now

* Add delay back

* Update

* fix lint

* fix lint

* update model regf
2024-01-22 00:58:06 -08:00
Justin Newberry 81516216b1 Simulator: fix metadrive (#31104)
fix metadrive
2024-01-21 17:34:26 -08:00
Bruce Wayne 3b01733900 Revert "Refactor modeld (#31099)"
This reverts commit 599325718e.
2024-01-21 17:29:32 -08:00
Harald Schäfer 7ebd841a0b Deprecate lat planner (#31097)
* Deprecate lat planner

* Bump cereal
2024-01-21 17:10:49 -08:00
Harald Schäfer 599325718e Refactor modeld (#31099)
* First commit

* Allow

* Just camerastream helper
2024-01-21 17:10:40 -08:00
Adeeb Shihadeh 139b0ae3b6 fix test_startup (#31103)
* fix test_startup

* real fix
2024-01-21 16:55:47 -08:00
Adeeb Shihadeh 74a2e3178f pre-commit: only check translations on update (#31102) 2024-01-21 16:40:12 -08:00
Adeeb Shihadeh b1f457bdc8 pytest: cleanup manager procs on teardown (#31101) 2024-01-21 16:39:52 -08:00
Adeeb Shihadeh 78e20cff39 cleanup tests that are now useless (#31098)
* disable that onoe

* e2e tests catch this

* rm more useless checks
2024-01-21 14:49:57 -08:00
Bruce Wayne ec72cdca00 Bump cereal 2024-01-21 12:10:55 -08:00
Harald Schäfer e6c97c3846 Delete lat planner (#31089)
* Initial commit

* Fixup

* typo

* ignore lateral plan

* Update cereal

* Remove lateralPlan

* Fix release build

* Fix release build

* give car params

* Add carParams to include_all_types

* Write car param in powerdraw test

* add demo mode

* Update model regf

* proc replay ref commit

* Try

* Move enum definition

* Update cereal

* typo

* Write car param for modeld test

* Update ref

* Update model ref again

---------

Co-authored-by: Kacper Rączy <gfw.kra@gmail.com>
2024-01-21 12:09:48 -08:00
Justin Newberry 2c86c023fe sanitizer: sanitize vin number (#31090) 2024-01-21 12:22:32 -05:00
Adeeb Shihadeh e0d0896dcf test_power_draw: check msgs expect first for cleaner error 2024-01-20 17:20:21 -08:00
Adeeb Shihadeh 332a21965d jenkins: cleanup /dev/shm (#31095) 2024-01-20 15:24:34 -08:00
Justin Newberry dc9ffd2f10 car tests on namespace (#31080)
cars
2024-01-19 14:53:52 -08:00
Justin Newberry 5c2b7882bf speedup replay test (#31086)
* speedup replay test

* better name

* comment not required
2024-01-19 14:39:08 -08:00
Adeeb Shihadeh 7cd9568423 remove dashcam branch (#31081)
* remove dashcam branch

* fix

* more cleanup

* remove param

* one more
2024-01-19 14:05:03 -08:00
Justin Newberry 18467c8383 fix cache permissions (#31084)
* fix cache permissions

* chown
2024-01-19 13:57:10 -08:00
Comma Device 574fd03208 fix tici build 2024-01-19 13:45:06 -08:00
Andrei Radulescu 28028aef17 Support for newer versions of Qt (#31072)
* Dynamic QtGui version

* Fixed use of undeclared identifier 'va_start'

* Fix for Qt deprecations

* Fix for dynamic QtGui version

* Update selfdrive/ui/SConscript

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-19 13:28:29 -08:00
Justin Newberry c907dd9e70 CI: fix post run cache (#31078)
* post cache only

* fix

* newline

* really github???
2024-01-19 13:25:41 -08:00
Adeeb Shihadeh 8a26b4383f bump that up 2024-01-19 13:19:41 -08:00
Hoang Bui f0f7e86dcc Enable cache for pre-commit (#31071)
* enable cache

* test cache

* commai cache

* remove id

* only save on master

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-19 13:06:02 -08:00
Justin Newberry bbbe94bc3e CI: auto-cache add option to save cache (#31076)
* save cache option

* inputs
2024-01-19 12:43:47 -08:00
Adeeb Shihadeh 16cd20f4eb don't block startup on time (#31074)
* don't block startup on time

* cleanup

* unused
2024-01-19 11:51:58 -08:00
Adeeb Shihadeh f3689ef561 remove old ref to manager_prepare 2024-01-19 10:44:46 -08:00
ugtthis a6695e4489 UI/close_btn: Removed unused border code (#31073) 2024-01-19 10:38:11 -08:00
Justin Newberry dfb56abf91 silence xvfb (#31069)
silence
2024-01-18 22:40:28 -08:00
Justin Newberry 35ed8a0886 CI: use namespace.io (#31064)
* namespace

* mkdir

* fix

* restore only

* restore

* v3

* disable provenance
2024-01-18 22:13:19 -08:00
Adeeb Shihadeh b4ebba384b cleanup startup params (#31068) 2024-01-18 22:09:55 -08:00
Adeeb Shihadeh 7a6463b2b4 remove early RTC time pull (#31066) 2024-01-18 21:05:57 -08:00
Adeeb Shihadeh e3b17d10f3 speedup prebuilt check (#31065)
* speedup prebuilt check

* one place
2024-01-18 21:02:18 -08:00
Adeeb Shihadeh ce947ffe9a manager: merge prepare and init 2024-01-18 20:45:41 -08:00
Comma Device e2df83089f fix param path 2024-01-18 20:12:04 -08:00
Adeeb Shihadeh c4362bd958 bootlog doesn't block startup (#31061)
* bootlog doesn't block startup

* keep params

* fix

* cleanup
2024-01-18 20:04:08 -08:00
Shane Smiskol 29536324c1 Toyota: combine more hybrid platforms (#31057)
* Combine

* migrate test models segs

* fix highlander engine

* no change
2024-01-18 18:51:24 -08:00
Justin Newberry 23cbfe9eb3 Revert "CI: use namespace.so" (#31060) 2024-01-18 17:35:24 -08:00
Justin Newberry 9ee0a8a2b1 CI: use namespace.so (#31056)
* namespace

* mkdir

* fix

* restore only

* restore

* v3
2024-01-18 17:17:53 -08:00
Adeeb Shihadeh 00b5424407 time to remove this 2024-01-18 16:38:46 -08:00
Justin Newberry d98b33adc8 replace pytest-timeouts with pytest-timeout (#31053)
* one timeout

* timeout

* higher timeout for now

* bump
2024-01-18 16:19:49 -08:00
Adeeb Shihadeh 1c09ae99eb Bump submodules (#31054)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-18 15:06:02 -08:00
Adeeb Shihadeh 292f2ea288 Update BOUNTIES.md 2024-01-18 11:51:39 -08:00
Adeeb Shihadeh 5791afda15 update bolt bounty 2024-01-18 11:50:17 -08:00
Adeeb Shihadeh 2280ac50b7 uploader: restrict qcam upload on metered connctions (#31047)
* uploader: restrict qcam upload on metered connctions

* route requesting

* rename

* str

* cleanup

* strip dongle

* upload bookmarked segments

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-17 21:41:58 -08:00
Shane Smiskol f96aa247cc FW query timing test: mock inconsistent, timing-based functions (#31048)
* Revert "Revert "FW query timing test: mock get_data function for timeout" (#30696)"

This reverts commit b1ecfd55ce.

* no thread

* clean up a bit

* no thread!

* combine functions

* re-enable total time check

* back to 5

* minimal diff

* minimal diff
2024-01-17 19:05:31 -08:00
Adeeb Shihadeh 005a6e4f17 thermald: match metered param to packet 2024-01-17 17:45:22 -08:00
Adeeb Shihadeh 19630c5af9 uploader: delay uploading crash and boot logs on metered connections (#31045)
* uploader: delay uploading some files on metered connections

* just crash and boot for now
2024-01-17 17:43:41 -08:00
Adeeb Shihadeh 4c2bb9f380 updated: only fetch on metered connection when necessary (#31041)
* updated: only fetch on metered connection when necessary

* button always fetches
2024-01-17 16:30:08 -08:00
Harald Schäfer d36103791c No curv rate for lateral control (#31042)
* No more Curvature rate for lat control

* Update cereal

* Update

* Fix lat control test
2024-01-17 16:00:50 -08:00
Justin Newberry 840db1f1b7 prevent typing issue in azure_container (#31044)
prvent that issue
2024-01-17 15:34:24 -08:00
Adeeb Shihadeh 5f1e7649e3 update param in loggerd unit test 2024-01-17 15:08:36 -08:00
Adeeb Shihadeh 7ce29ef08e cleanup old params (#31039)
* cleanup old params

* one more
2024-01-17 14:42:07 -08:00
Shane Smiskol 8c544d9139 Fix f-string in test_fw_query_on_routes.py 2024-01-17 14:39:31 -08:00
Adeeb Shihadeh 0b5fd7287e uploader cleanup (#31035)
* Reapply "uploader cleanup" (#31033)

This reverts commit 5e4df41b2f.

* always sleep

* more cleanup

* little more

* fix linter

* little more
2024-01-17 14:24:09 -08:00
Justin Newberry 3f0b56b364 cleanup azure handling (#31034)
* wip cleanup

* Wip

* fixes

* fix

* cleanup

* keep this for now

* dest
2024-01-17 14:21:47 -08:00
Justin Newberry 5e4df41b2f Revert "uploader cleanup" (#31033) 2024-01-17 11:07:38 -08:00
Justin Newberry f6cd009c77 Update PR templates + autogenerate (#31032)
* update templates

* same as before

* no tuning

* same as before

* move up
2024-01-17 10:36:47 -08:00
YassineYousfi 86ac700805 update onnxruntime to 1.16.3 (#31024) 2024-01-16 20:22:05 -08:00
Adeeb Shihadeh c6c6a441eb uploader cleanup (#31029)
* cleanup

* startup cleanup

* step

* Update test_uploader.py
2024-01-16 19:54:07 -08:00
Shane Smiskol 60a4102892 Fingerprints: automatically add missing FW versions from users [bot] (#31027)
Export fingerprints
2024-01-16 19:32:21 -08:00
Adeeb Shihadeh baa4e801fe athena: remove MockParams from tests 2024-01-16 19:11:59 -08:00
Justin Newberry 49586fc30e CI: auto_pr_review fix error when label doesn't exist (#31030)
* bot template

* catch error
2024-01-16 18:23:33 -08:00
Justin Newberry 1bf8e04f54 CI: only apply bot-review label when it doesn't pass (#31028)
bot template
2024-01-16 18:02:26 -08:00
Justin Newberry b933825231 fix typo 2024-01-16 17:30:11 -08:00
Justin Newberry 2967cada71 auto_source: optimize api calls and use head to determine if file exists (#31025)
* fast

* catch all

* source

* fix file_exists

* remove duplicate reset

* test multiple loops

* iterations

* cleanup imports
2024-01-16 17:24:37 -08:00
Justin Newberry 5c24527683 test_models: sanitize segment before running test (#31026)
to ensure sanetized routes will work
2024-01-16 15:08:44 -08:00
Moritz Wörmann 8a05d212ec CI: Add GH Actions workflow Bot to check for a PR template (#30999)
* Add GH Actions workflow to check for a PR template

* switch to headings and checkboxes for template detection

* check for bold text in template too

* move template check over to auto_pr_review action and remove label only if check succeeded

* only run template check on external PRs

* wording

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-16 13:40:38 -08:00
Justin Newberry 61fe705160 LogReader: fix plotjuggler not reading properly (#31023)
* fix plotjuggler

* simpler

* fix juggler

* fix that
2024-01-16 12:40:49 -08:00
Justin Newberry 7d400112df LogReader: move opci to tools/lib (#31021)
move opci
2024-01-16 10:58:51 -08:00
Justin Newberry 0739d5d7b2 LogReader: support lists of identifiers (#31020)
* support lists of logs

* mark as slow instead
2024-01-16 10:40:00 -08:00
Justin Newberry 4da8d16514 LogReader: support only_union_types (#31019)
support only-union-types
2024-01-16 10:03:55 -08:00
Shane Smiskol 8e9be48b7b Revert "docs: include dashcam" (#31017) 2024-01-15 23:49:07 -08:00
Justin Newberry e1a05deadd test_athena: make test more independent (#31012)
get port auto
2024-01-15 16:57:12 -08:00
Justin Newberry 94cd4c9046 Subaru: ensure consistent firmware version size (#31001)
* fix copying mistakes

* fix SA

* remove print

* ensure size is same

* fix SA

* not in database
2024-01-15 12:52:15 -08:00
Adeeb Shihadeh a8afaf39d4 Update Python packages and pre-commit hooks (#31003)
* Update Python packages and pre-commit hooks

* fix

---------

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-15 10:34:25 -08:00
Adeeb Shihadeh a4fac38cf9 Bump submodules (#31002)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-15 10:34:08 -08:00
Shane Smiskol f256225f29 docs: include dashcam (#31004)
include dashcam
2024-01-15 04:58:43 -08:00
Justin Newberry 4c6f7da404 Subaru: remove incorrect fingerprints from other brands queries (#30984)
s
2024-01-14 19:55:15 -08:00
Adeeb Shihadeh fe6aff0131 more unit test speedup (#30997)
* that's super slow

* fix startup test

* fix
2024-01-13 22:21:43 -08:00
Adeeb Shihadeh e17e66180c CI: speedup unit test job (#30995)
* start

* mv to buildjet

* fix
2024-01-13 21:16:35 -08:00
Adeeb Shihadeh 3e601b5e8f camerad: move ae test to pytest/catch2 (#30994)
* mv ae gray test

* cleanup
2024-01-13 15:40:25 -08:00
Adeeb Shihadeh 66ddfece82 speedup devcontainer ci job (#30993) 2024-01-13 15:01:35 -08:00
Korben 2f744f5df4 Update French language (#30992)
Update main_fr.ts

validation of new elements
2024-01-13 13:03:23 -08:00
Justin Newberry 884de6e457 test_proclog: fix conflict with pytest (#30989) 2024-01-13 00:30:55 -05:00
Shane Smiskol dafde02da3 Fingerprints: automatically add missing FW versions from users [bot] (#30988)
Export fingerprints
2024-01-12 20:58:13 -08:00
Lee Jong Mun f55d04c172 kor translation update (#30990) 2024-01-12 20:44:03 -08:00
Alexandre Nobuharu Sato 4178f7c1e1 Multilang: Update pt-BR translation (#30987)
* add instructions to my fork

* Revert "add instructions to my fork"

This reverts commit 46fbee3ebe7ecbb211d855e63b2d4c8919c31b63.

* test llm

* Revert "test llm"

This reverts commit fc531f0a1ba81b3444a34a1be8d02a51a060ec7a.

* update pt-BR translation
2024-01-12 18:25:41 -08:00
Justin Newberry d39b31aed1 remove get_url instances (#30986)
rm
2024-01-12 17:36:38 -08:00
Justin Newberry 28e5d1bb49 Metadrive: fix map config on main (#30983)
* Fix map api too

* dont render
2024-01-12 14:42:40 -08:00
Justin Newberry 3d73512c07 rename segmentrangereader to logreader (#30981)
* Replace multilogiterator

* replace logreader

* update readme

* fix from_Bytes

* new section

* reset before iter

* selector

* fix internal

* whitespace
2024-01-12 12:53:50 -08:00
Justin Newberry 9f1b72ac79 Replace multilogiterator (#30980) 2024-01-12 11:43:32 -08:00
Jason Young ba792d576a VW MQB: Add FW for 2018 Volkswagen Tiguan (#30951) 2024-01-11 23:16:04 -08:00
Adeeb Shihadeh 5da573ff39 navd: handle errors in parsing api response (#30977) 2024-01-11 23:15:29 -08:00
Adeeb Shihadeh ef73ee7b37 simple navd test (#30976)
* simple test

* can't check that

* cleanup
2024-01-11 22:55:58 -08:00
royjr 96c91c486e networking: add hidden network option (#30808)
* init

* once

* match

* fix

* maybe

* maybe

* Revert "maybe"

This reverts commit 8386a0a381d5cfe94d7bbf0187d5e311d4b4e9c3.

* Revert "maybe"

This reverts commit 3abf7b19836e5f353fbb94c9bee52b185bd3fc17.

* Revert "fix"

This reverts commit 09e0146f4deeac07b9c26e916a75b70c7dcff1f1.

* Revert "match"

This reverts commit 39a90c6cf88f310623d5e9058152d025ee7213ea.

* fix not at bottom

* padding

* match

* Update networking.cc

* min chars

* translations

* shouldn't need

* need!

* just in case

* Revert "just in case"

This reverts commit a3c1e090682e30400ba9c20b04407b9e5677ad7a.

* finish translations

* not secret

* optional

* allow open networks

* fix

* try

* working

* add divider

* update translations

* fix

* better name

* translate hidden network

* auto

* v2

* remove v1

* fix

* fix translations
2024-01-11 19:42:20 -08:00
Justin Newberry f2c73039d7 fix metadrive after bump (#30967)
* fix clip

* wip

* oop

* 1.22

* ... ugly

* fix tuning
2024-01-11 18:09:39 -08:00
Justin Newberry e7657d896f Subaru: fix disable eyesight enum (#30974)
value
2024-01-11 17:15:37 -08:00
Justin Newberry d7e7659852 move plotjuggler to segment range reader (#30969)
* pj

* limit test to 2 segs

* remove

* fix test
2024-01-11 17:02:47 -08:00
Justin Newberry eb09294fc2 segmentrangereader: support direct parsing (#30973)
* use correct source

* revert

* cleanup imports

* clean

* direct parsing

* rename

* move up

* fixes

* fix that

* better error message
2024-01-11 16:56:48 -08:00
Shane Smiskol 68bcb6b8da Fingerprints: add missing FW versions from users (#30972)
Export fingerprints
2024-01-11 15:57:04 -08:00
Justin Newberry 8d9e431f43 car porting examples: add example of plotting the response of brake_pressure vs acceleration (#30958)
* another example

* add comment

* fix that

* oop

* fix link
2024-01-11 13:35:50 -08:00
Justin Newberry 042ccb9244 move can replay to segmentrangereader (#30971)
can replay
2024-01-11 13:11:59 -08:00
Justin Newberry fb994ae782 segmentrangereader: support more sources (#30970)
* support more sources

* remove this
2024-01-11 12:55:19 -08:00
Justin Newberry 7e9843b5e6 replace more tools with SegmentRangeReader (#30968)
* replace lrfros

* and those ones too
2024-01-11 11:46:31 -08:00
Hoang Bui f820b7cd94 FIx violations and enable --warn=all (#30854)
* --warn=all

* setoption default warn=all

* to old test yaml

* cleanup

* advanced cscanner

* SCons conditional scanner

* not time  yet

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-11 11:16:09 -08:00
Adeeb Shihadeh ed153141fc rm old debug script 2024-01-11 10:56:46 -08:00
Justin Newberry 0320fb385a fix static analysis 2024-01-11 10:54:53 -08:00
Justin Newberry be814ed447 SegmentRangeReader: log type selector (#30960)
* log type selector

* test this too

* and this

* invalid selector

* use strenum

* don't hardcode size

* oneline
2024-01-11 10:25:24 -08:00
Justin Newberry 32dfb3f8f2 More migration to segmentrangereader (#30959)
* filter log message

* ffr

* gtfs

* gtfs
2024-01-11 10:14:10 -08:00
Shane Smiskol 3c74a61c97 Honda: remove hud ECU from CR-V Hybrid (#30965)
remove almost absent ECU
2024-01-11 00:39:26 -08:00
Shane Smiskol bef6d7f0bb pre-commit: speed up translation step (#30966)
* formatting

fix

* fix missing class attr warning

* add translation_files option, remove pluralonly, type hint

* updates

* update
2024-01-11 00:39:15 -08:00
Adeeb Shihadeh b92e71a2b6 updated: persist more state between runs for UI (#30963)
* persist branches and more

* fix target

* typo

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-10 23:23:13 -08:00
Adeeb Shihadeh e9e8f4df38 update count_events.py to SegmentRangeReader 2024-01-10 23:19:16 -08:00
Adeeb Shihadeh 3918039e29 manager: clean exit on ctrl-c 2024-01-10 19:37:10 -08:00
Hoang Bui 1da08460cb Enable variable pass between test and metadrive processes (#30961)
pass started between processes
2024-01-10 18:13:21 -08:00
Justin Newberry af1b7e5c59 Revert "buildjet: pin location to de" (#30956)
Revert "buildjet: pin location to de (#30955)"

This reverts commit 576cba217d.
2024-01-10 15:11:20 -08:00
Justin Newberry 576cba217d buildjet: pin location to de (#30955)
* pin location

* stringify

* Fix

* fromjson

* flip the parens

* and those
2024-01-10 13:48:35 -08:00
Justin Newberry cfb23eb2d1 segmentrangereader: support sort_by_time (#30954)
support sort-by-time
2024-01-10 13:36:55 -08:00
Justin Newberry 926793b17f migrate can_print_changes to segmentrangereader (#30953)
more tools
2024-01-10 13:02:39 -08:00
Justin Newberry 0d126e1e9e SegmentRangeReader: new format for reading multiple segments (#30940)
* segment range reader

* rename that

* revert that

* cleanup

* revert this for now

* revert this for now

* Fix + test

* rm that

* rm that

* use for auto_fingerprint

* simpler

* for notebook too

* match numpy indexing

* just use numpy directly

* remove that

* spacing

* spacing

* use qlog for auto fingerprint

* add 'read mode'

* pass in read mode

* add test for modes

* numpy indexing

* fix that case

* more examples

* fix the notebook

* cleanup the notebook

* cleaner

* fix those
2024-01-10 11:55:19 -08:00
ugtthis db3ef3e1d8 UI/MapETA: Increased contrast of widget texts for better readability (#30952) 2024-01-09 20:32:23 -08:00
Jason Young 61ebb5b668 VW MQB: EA driver inactivity workaround (#24711)
* VW MQB: Emergency Assist mitigation

* elide superfluous newline

* update refs

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-09 19:24:46 -08:00
Nelson Chen 4eba5fe68d Add permissions to build_masterci in release workflow so it can push master-ci (#30949) 2024-01-09 16:46:09 -08:00
Adeeb Shihadeh cd1d7eb4d2 OS04C10 support (#30658)
* getting frames

* ok

* support both output

* cleanup

* fix unused

* undo

* fix release files

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-09 14:19:10 -08:00
Nelson Chen 221f81bbd3 Add more permissions for pushing in prebuilt workflow (#30948)
Continuing on from https://github.com/commaai/openpilot/pull/30947
2024-01-09 11:35:14 -08:00
Nelson Chen 2a074eefac Fix badges workflow blocking release/prebuilt workflows from permission and Git-LFS complications (#30947) 2024-01-09 10:40:45 -08:00
Shane Smiskol ca57d329e2 Toyota: add 2024 RAV4 (#30909)
* add 2024 RAV4 ICE FP

* docs

* also try vin bus 0 toyota

* it works!
2024-01-09 00:48:48 -08:00
Adeeb Shihadeh af137bac58 GM: remove GMLAN dash msg (#30547)
* remove GMLAN

* update refs
2024-01-08 19:49:22 -08:00
Shane Smiskol 1d370a0880 Fingerprints: add missing FW versions from users (#30945)
Export FW versions
2024-01-08 19:46:27 -08:00
YassineYousfi d6cece756c longplanner: expose dt (#30941) 2024-01-08 19:46:13 -08:00
Jason Young 88e445ef15 VW MQB: Improved longitudinal starting and stopping (#30874)
* VW MQB: Improved stopping and starting

* get longcontrol to take off sooner

* oops

* use the carParam instead of the constant

* update refs

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-08 19:40:41 -08:00
Hoang Bui 7fdd5c4a7d Python camerad for webcam (#30930)
* webcamd

* remove destroy windows

* block

* shebang execute

* executaleeeee

* executableeeeeee

* she bang for camerad.py

* listener

* no signal?

* good

* ruff fix

* delete listener

* recover sim

* remove assert

* refactor

* fix shell

* fix namedtuple

* little change

* to tuple

* cleanup

* update readme

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-08 19:22:21 -08:00
Adeeb Shihadeh 90010754d6 unpin metadrive package (#30944)
* unpin metadrive package

* lock
2024-01-08 17:16:15 -08:00
Adeeb Shihadeh c8df0bd1d0 Bump submodules (#30938)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-08 17:02:40 -08:00
Shane Smiskol d689a4e653 Fix string indentation (#30943)
* fix bad spacing

* more

* these aren't important
2024-01-08 15:36:43 -08:00
Adeeb Shihadeh 5f191321fd tici: check that peripherals are fully booted (#30942)
* tici: check that peripherals are fully booted

* default

* typo

* fix

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-08 15:09:38 -08:00
Adeeb Shihadeh 6743487d78 Update Python packages and pre-commit hooks (#30939)
Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-08 13:54:09 -08:00
Adeeb Shihadeh 91c5c5eca7 camerad: log request id (#30935)
* camerad: log request id

* bump cereal

* bump cereal
2024-01-08 09:16:50 -08:00
Nelson Chen 2a49f94872 Add necessary permissions/tokens for "lewagon/wait-on-check-action" so it can run nightly (#30923) 2024-01-07 15:02:25 -08:00
Adeeb Shihadeh 073fc89ad4 Revert "UI: single-threaded CameraView (#30397)"
This reverts commit 17ac1d3c7b.
2024-01-07 14:54:39 -08:00
Adeeb Shihadeh e867aa40db ignore "car port" for stale pr detection 2024-01-07 14:34:04 -08:00
Adeeb Shihadeh 7997fccdfa update mapsd cpu 2024-01-06 17:46:44 -08:00
Adeeb Shihadeh f0ccb84ae3 remove common.profiler (#30927)
* remove common.profiler

* cleanup
2024-01-06 16:20:28 -08:00
Shane Smiskol 084871ed5b Auto translate: fix prompt & formatting (#30922)
fixes
2024-01-05 23:44:54 -08:00
Meir 2378f311d2 Auto translate with OpenAI (#30899)
* auto translate with OpenAI

* change model

* fix mypy typing errors

* update

* fix lint errors

* check api key after args parser

* fix input args

* use languages.json

* just print

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-05 22:28:56 -08:00
Justin Newberry 03d6233743 move profiling tools to tools/profiling (#30917)
move profiling
2024-01-05 16:22:45 -08:00
Justin Newberry 4cc48b75e8 add sanitizer function (#30919)
* sanetizer function

* spelling

* better

* move to helpers
2024-01-05 16:20:37 -08:00
Adeeb Shihadeh 46f3fdc090 Update Python packages and pre-commit hooks (#30597)
* Update Python packages and pre-commit hooks

* fix

---------

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-05 15:17:49 -08:00
Justin Newberry 239b228ca6 add the notebook example to car port docs (#30920)
* add the notebook example

* fix link

* add image

* no lfs

* no lfs
2024-01-05 13:57:02 -08:00
Justin Newberry e86d74b347 move car porting tools to tools/car_porting (#30916)
just this for now
2024-01-05 11:53:03 -08:00
Justin Newberry 15e0a906ad tools: add car porting example notebook (#30918)
* add car porting example notebooks

* not required
2024-01-05 11:52:24 -08:00
Shane Smiskol 002ab5637b Car docs: utilize post init (#30912)
move these to earlier post_init
2024-01-04 22:16:39 -08:00
Shane Smiskol 397c1e373c selfdrive/test: fix indentation
no ruff rule for this
2024-01-04 19:53:23 -08:00
Justin Newberry 1148c65d23 add read_seglist helper (#30908)
add helper
2024-01-04 17:52:07 -08:00
Shane Smiskol 63f0d775bc Fingerprints: add missing FW versions from users (#30906)
Export fingerprints from Fingerprint stage
2024-01-04 15:54:50 -08:00
Shane Smiskol 43b0b0f022 Revert "Fingerprints: add missing FW versions from users"
This reverts commit e85e401d07.

Meant for another branch.
2024-01-04 00:51:38 -08:00
Shane Smiskol e85e401d07 Fingerprints: add missing FW versions from users 2024-01-04 00:50:30 -08:00
Adeeb Shihadeh 3c4150c542 timezoned: set only from gps (#30904)
* timezoned: set only from gps

* unused
2024-01-03 20:18:29 -08:00
Adeeb Shihadeh fe40905849 Revert "Fingerprint for '21 Explorer ST (#30877)"
This reverts commit ff0fed07ed.
2024-01-03 20:07:58 -08:00
duetschlandftw ff0fed07ed Fingerprint for '21 Explorer ST (#30877)
* carparams gave me a new firmware entry for "shiftByWire" from 'ford', so i added it here, as well as a new fw value under ecs.engine

* Update selfdrive/car/ford/fingerprints.py

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-03 19:43:59 -08:00
DevTekVE 28cf3155e2 [HKG-CAN] Consider FCW alerts from SCC (#30885)
* FCW is triggered differently when SCC is active

* Update selfdrive/car/hyundai/carstate.py

* Update selfdrive/car/hyundai/carstate.py

* cmt

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-03 19:34:13 -08:00
Adeeb Shihadeh 115047d858 timezoned: run while onroad (#30903) 2024-01-03 17:53:40 -08:00
Justin Newberry 4430944b29 jenkins: lock "pc" label to limit concurrent workers (#30902)
* lock pc label

* remove that
2024-01-03 16:55:16 -08:00
Shane Smiskol 318d1204e5 CI: bump other lewagon/wait-on-check-action 2024-01-03 14:11:11 -08:00
Dean Lee 17ac1d3c7b UI: single-threaded CameraView (#30397)
* single-threaded CameraView

* updateFrame

* inherit from CameraWidget

* clear frame on offroadTransition

* check frame_id

* optional

* unique_ptr

* CameraView

* cleanup

* cleanup

* log skipping frame

* fix driverview

* disconnectVipc

* debug inconsistent frame

* skip frame if uiPlan is outdate

* cleanup

* set connected = false

* support camerad reboot&seeking in replay

* cleanup

* qDebug

* use deque

* cleanup

---------

Co-authored-by: Comma Device <device@comma.ai>
2024-01-03 13:14:29 -08:00
Shane Smiskol 7f398e1cf9 test_models: fallback to public route when route isn't uploaded to CI bucket (#30893)
* not sure why this is a test

* Revert "not sure why this is a test"

This reverts commit c13e16311eb882df65d216bbd59acb5702e985e6.

* no ruff for this pattern :(

* this is always caught

* should fail

* simpler

* Revert "should fail"

This reverts commit 21bd15275c46cd42fd19b058245334bae83cce77.

* fix

* cleanup this

* better comment

* better

* this can be more localized

* better names

* better names

* should fail

* Revert "should fail"

This reverts commit c58495e8b3417ce351df8048752ec60177827cb3.

---------

Co-authored-by: Justin Newberry <justin@comma.ai>
2024-01-03 11:54:22 -08:00
Adeeb Shihadeh 8fbe382fa7 make scons parallel by default (#30901) 2024-01-03 11:16:54 -08:00
Shane Smiskol 633fef5a96 Fingerprints: add missing FW versions from users (#30837)
Export Toyota fingerprints from last 2 weeks, 0.9.5-release
2024-01-02 21:48:31 -08:00
Shane Smiskol 8c4930d2d3 Revert "test_models: fallback to public route when route isn't uploaded to CI bucket (#30794)" (#30896)
* fails if no skip function

* Revert "fails if no skip function"

This reverts commit ff3d697d38dce56057c83f06033a689f2301a29d.

* Revert "test_models: fallback to public route when route isn't uploaded to CI bucket (#30794)"

This reverts commit 05dc0b51e6.
2024-01-02 17:22:06 -08:00
Shane Smiskol de4bc31ba6 Toyota: add 2024 RAV4 Hybrid (Canada-built) (#30887)
* add 2024 RAV4

* bump reeleases

* fix star link in PR comments

* ?

* consistent
2024-01-02 17:14:51 -08:00
Shane Smiskol 543cd4460a HKG: fix 2021 Niro Hybrid harness (#30895)
* originally was Hyundai F in the database, but one user on Discord (US) and one in support (SK) both needed hyundai D

* bump
2024-01-02 17:10:23 -08:00
Shane Smiskol 205a78f02d PR comments: fix image links 2024-01-02 14:18:52 -08:00
Justin Newberry 9b25bfc618 CI: set CI=1 in docker image (#30889)
* ci=1

* wrong spot
2024-01-02 13:48:16 -08:00
Adeeb Shihadeh 9cf57cc4e4 CI: bump lewagon/wait-on-check-action 2024-01-02 13:34:35 -08:00
Mitchell Goff 7e71fd7bae new delhi model (#30822)
* 027a1efa-10fb-4291-ad58-90cf0ff150b5/700

* debug

* rm for now

* bump refs

* revert that

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-02 13:27:15 -08:00
Justin Newberry 86bd337952 CI: set CI=1 globally (#30888)
ci=1
2024-01-02 13:17:19 -08:00
Justin Newberry fba521ecc6 url_file: fix non-200 files being cached (#30886)
* fix + test

* fix unclosed

* easier to read

Co-authored-by: Shane Smiskol <shane@smiskol.com>

* fix that

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2024-01-02 12:42:08 -08:00
royjr 9d7f618bc5 multilang: parameterize unit tests (#30842)
* init

* fix indents

* remove import

* safer

* TemporaryDirectory

* much cleaner

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-01 14:54:16 -08:00
stevenworks 0f72467558 Typo fixes / Grammar corrections (#30860)
* CONTRIBUTING.md: Misspelling

* BOUNTIES.md: Misspelling

* SAFETY.md: Grammar

* realtime.py: Comment consistency

* revert for now

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2024-01-01 14:39:01 -08:00
Kacper Rączy 65ece2081a metadrive: Change camera position to reflect typical height of a vehicle (#30831) 2024-01-01 14:36:37 -08:00
Sliicy 6ccf2cbfde Fixed joystickd.py incorrect steering control (#30879) 2024-01-01 14:29:01 -08:00
Adeeb Shihadeh d3cdd837fa Bump submodules (#30881)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2024-01-01 14:28:34 -08:00
Robbe Derks eb805e889e [Cabana] Fix segfault in sparkline (#30870) 2023-12-31 13:02:05 -08:00
Justin Newberry 331ea60422 Add link to contributing channel (#30876) 2023-12-31 14:54:37 -05:00
royjr fd88990006 multilang: bad language translation check (#30783)
* compare bad against list

* use web

* Update test_translations.py

* uncomment

* override

* wrap

* AssertionError

* better

* detent

* selfish

* check numerusforms

* already checked

* use name

* not again

* combined

* sets

* assume available

* fix assume

* check regardless of other tests

* assert not print

* raise for status

* better

* done

* useless

* happy ruff

* better set

* quiet

* clean

* obvious

* clearer

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>

* IGNORED_WORDS

* assert match

* direct assert

* show bad word

* fix numerous empty string checks

* fix IGNORED_WORDS

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2023-12-31 10:58:15 -08:00
Justin Newberry a58baf48fe Subaru: longitudinal cleanup and dash status fixes (#30868) 2023-12-29 23:47:55 -05:00
Justin Newberry 9520153b6a bump submodules (#30866) 2023-12-29 19:39:17 -05:00
Justin Newberry d33c5bccc6 CI: update labeler to 5.0.0 release (#30862)
* update labeler

* update labeler

* update labeler

* Update labeler (#63)

* update labeler

* update labeler

* update labeler

* fix that

* Update labeler (#65)

* update labeler

* update labeler

* update labeler

* fix that

* and that

* Update labeler (#66)

* update labeler

* update labeler

* update labeler

* fix that

* and that

* fix that
2023-12-28 10:54:09 -08:00
Adeeb Shihadeh 6810c5b644 script for checking out a pr 2023-12-26 19:22:34 -08:00
royjr 4df85062c5 setup: Enhance URL Handling to Support Partial Inputs (#30681)
* easy urls

* better
2023-12-26 19:08:57 -08:00
Dean Lee a1f53c70e6 uploader.py/listdir_by_creation: list directories only (#30806)
list only directories

Co-authored-by: Comma Device <device@comma.ai>
2023-12-26 16:05:45 -08:00
pencilpusher ee3544d283 replay ui: fix typo in variable name (#30851)
fix typo in variable name
2023-12-26 16:03:59 -08:00
Adeeb Shihadeh 1f9970ba3d stricter file size limits (#30839)
* move all pics to lfs

* wav and rest of so

* more to lfs

* ignore a few

* push that up
2023-12-26 15:22:59 -08:00
Jason Wen c09b651bd7 Update CARS.md 2023-12-26 12:14:34 -05:00
Adeeb Shihadeh 7638572e38 Bump submodules (#30849)
bump submodules

Co-authored-by: jnewb1 <jnewb1@users.noreply.github.com>
2023-12-26 01:58:40 -08:00
Jason Wen ce4235f8ec Update CHANGELOGS.md 2023-12-24 13:29:37 -05:00
Jason Wen a6cf11ef39 lower to 0.9.5.3 2023-12-24 13:16:35 -05:00
Shane Smiskol 5e6290c4a2 Fingerprints: add missing FW versions from users (#30833)
Export fingerprints from Fingerprint stage
2023-12-21 03:55:15 -08:00
Shane Smiskol b38c580c2e format fingerprints: simplify sorting (#30826)
* unique + sort + don't modify FW_VERSIONS

* clean up

* not here

* self expl
2023-12-20 15:51:56 -08:00
Justin Newberry cfc85f016b Pytest: exclude teleoprtc (#30829)
exclude
2023-12-20 15:22:48 -08:00
Justin Newberry a6b17fb1f6 Simulator: fix keyboard ctrl messing with pytest (#30827)
fix
2023-12-20 15:10:11 -08:00
Justin Newberry abe4780fdb Docs: fix old docs still being populated (#30825)
* fix push

* also remove cached files

* fix readme

* add readme

* remove that wip submodule
2023-12-20 13:56:34 -08:00
Justin Newberry 33e7baee40 Docs: fix push and running locally (#30823)
fix push
2023-12-20 13:27:27 -08:00
Justin Newberry 3d8c78d6b3 format_fingerprints: automatically sort fw fingerprints (#30819)
* Auto sort fingerprints

* add comment
2023-12-20 11:54:31 -08:00
Justin Newberry 05dc0b51e6 test_models: fallback to public route when route isn't uploaded to CI bucket (#30794)
* wip

* add public comment

* fix that

* wip

* retrigger
2023-12-20 11:29:19 -08:00
Justin Newberry 3713e4d5ea add script to automatically format fingerprints file (#30792)
* Add script

* fix script

* fix script

* fix for subaddr

* run the script

* old style can fingerprints

* cleanup

* sort imports, make executable, fix path

* newline w/o newline

* match og can formatting

* match og formatting

* generate template once

* standard name

* less nested

* can fingerprints comments

* fix spacing

* no need for PLATFORM_TO_ENUM_NAME!

* prep for PRs

* comments for all, add honda comments

* Auto-generated fingerprint PR from fuzzy fingerprinting cars

* Revert "Auto-generated fingerprint PR from fuzzy fingerprinting cars"

This reverts commit 97bc9e3bdb9d819dcbe684ceba92ea702d40eaf0.

* even closer to original

* readd this comment

* and run script

* add to precommit

* add comments

* add comments

* add to release

* use for auto fingerprint

* disable precommit for now

---------

Co-authored-by: Shane Smiskol <shane@smiskol.com>
2023-12-20 11:18:29 -08:00
Shane Smiskol adb04b5dc5 fingerprints: fix formatting (#30814)
formatting
2023-12-19 23:47:34 -08:00
Shane Smiskol 1a165c6580 interfaces: fix get_interface_attr typing (#30813)
* fix

* Update selfdrive/car/interfaces.py
2023-12-19 23:35:31 -08:00
Shane Smiskol 426072bd87 fix bad CAN fingerprint type (#30809)
fix bad wrong type
2023-12-19 20:30:42 -08:00
Dean Lee 5f04517677 cabana: add csv export (#30800)
export csv
2023-12-19 11:50:16 -08:00
Justin Newberry 8017c25f0b Simulator: only send camera frames at rate that they are generated (#30802)
only send frames at rate that they are generated
2023-12-19 10:45:07 -08:00
Dean Lee 3646ca0a14 refactor swaglog (#30795) 2023-12-19 10:36:35 -08:00
Justin Newberry adca970ca9 cleanup fingerprinting typing (#30801)
* wip

* undo + add can fingerprints

* add can fingerpints

* those should go there
2023-12-19 09:41:09 -08:00
Shane Smiskol 5052b55c44 test_models: fuzz test panda and CarState (#30443)
* pre-hypothesis

* some hypothesis junk

* this kinda works but is really slow due to counter check

* choose addrs from fingerprint

* stash

* honda nidec brake pressed mismatches fixed

* bump panda

* stash

* tesla: use DI_torque2 (panda msg)

* run

* run

* ah this honda mismatch too

* no more multi can msgs

* clean up, remove old file

* add todo

* prob can remove urandom

* stash, huge examples

* fix pq standstill mismatch

* yuge

* yup there's a leak somewhere

* try to find leak

* skip dashcam (pq and tesla)

* PR comments

* bump

* draft stash

* fix alt brake hondas

* bump

* bump

* bump

* some clean up

* minor clean up

* more clean up

* stash

* fix honda bug

* more

* 100 examples

* revert tesla

* no memory leak any more?

* bring back tests with skips

* parameterize max_examples

* skip interceptor

* is jenkins on my branch?

* ooh that's fast

* 50 is not bad for GH CI

* 300 might be better with rest of test_models

* no more detection

* bump

* need CS_prev to catch bugs where openpilot changes and panda doesn't (eg. not setting interceptor safety mode)

* need to simplify all this

* need a warm up first, since some signals are 1 by default (toyota's gas_released!=1)

* changes

* set honda safety param

* set toyota safety param

* bump panda

* clean up honda

* rm interceptor

* thought interleaving addrs might help, but we can fine tune later

* Revert "thought interleaving addrs might help, but we can fine tune later"

This reverts commit 153301384b48c9f33f9e2af3c224241eaeec41c1.

* get size from dict

* what

* add nocapture marker

* clean up

* try to raise logging level

* need to run last as pytest_runtest_call, since it starts capturing

* get capman conditionally

* mark

* type fingerprint

* should use gen_empty_fingerprint

* no longer needed

* draft

* no longer need gc

* clean that up

* test everything!

* more clean up

* more

* no point

* fix that

* fix errors

* bump

* nice even 300 examples for 300 segs

* final bump :fingers_crossed:

* better import order

* remove debugging prints

* warm up kinda works

* Revert "warm up kinda works"

This reverts commit 7fc77b07d592edb13eadca77deb49540954a7d69.

* random seed

* revert

* strat

strat

* add expl comment

* cmt

* check controls allowed

* Revert "check controls allowed"

This reverts commit e82a0e5396810dd4670e6847aa555194a709e10f.

* not unittests

* run tests!

* run tests 2!

* run tests 3!

* seed unused

* revert

* add shrink phase, and remove health check suppression

* hello

* oncemore

* Update selfdrive/car/tests/test_models.py
2023-12-19 03:18:54 -06:00
Justin Newberry 10b3a22897 Add GH project to bounties.md (#30791)
* update bounties

* just replace the link
2023-12-18 17:12:21 -08:00
Adeeb Shihadeh cee84381f3 Update README.md (#30793)
* Update README.md

* Update README.md

* Update README.md
2023-12-18 17:05:24 -08:00
Adeeb Shihadeh b0b4ae9c15 run test_fuzzy.py with pytest 2023-12-18 14:38:57 -08:00
Justin Newberry 28eed156e0 Move all fingerprints to fingerprints.py (#30790)
* move fingerpints

* fix circular imports

* fix circular imports

* fix auto fingerprint

* fix those tests

* and controlsd

* add labeler rule

* no defaultdict
2023-12-18 14:04:27 -08:00
Dean Lee b9080d2362 camerad: zero memory before returning from MemoryManager::alloc (#30781)
* zero memory

* remove redundant memset

---------

Co-authored-by: Comma Device <device@comma.ai>
2023-12-18 13:54:11 -08:00
Dean Lee ab0b26d2b8 camerad: cleanup includes (#30782)
* cleanup includes

* continue

---------

Co-authored-by: Comma Device <device@comma.ai>
2023-12-17 22:42:52 -08:00
Adeeb Shihadeh 846be323d5 packages cleanup, part two 2023-12-17 16:37:33 -08:00
Adeeb Shihadeh 51a93cf9aa fix unused 2023-12-17 16:32:56 -08:00
royjr 70624ffc81 dependency: remove pycurl package (#30771)
* Update qcomgpsd.py

* Update url_file.py

* remove pycurl

* requests -> urllib3

* unused

* redundant

* fix import

* Revert "requests -> urllib3"

This reverts commit 7ca39e618917986f50356519d2795a432e3a5280.

* headless

* fix trail

* use requests.exceptions.RequestException

* use fp.tell

* fix indents

* reorder imports

* change timeout

* fix debug timing

* remove exception

* add timeout

* missing headers

* move to constructor

* move import

* unused import

* fix debug

* try

* no retries
2023-12-17 16:25:25 -08:00
Adeeb Shihadeh 8c1176ca83 more common/ pruning (#30778) 2023-12-17 11:40:46 -08:00
Andrei Radulescu b75cdd1542 wifiManager: fix for lteConnectionPath not set on boot (#30517)
Co-authored-by: Justin Newberry <justin@comma.ai>
2023-12-17 11:07:48 -08:00
Adeeb Shihadeh 2c30421b16 move common.window to xx (#30777) 2023-12-17 10:50:45 -08:00
Adeeb Shihadeh 77bafb0708 Bump submodules (#30776)
bump submodules

Co-authored-by: adeebshihadeh <adeebshihadeh@users.noreply.github.com>
2023-12-17 10:43:14 -08:00
Adeeb Shihadeh 1421551297 Cython KF1D to Python (#30773)
* Cython KF1D to Python

* cleanup

* set x

* less nesting

* fix release

* Revert "fix release"

This reverts commit 97e5d0f80405660efb861c7b9df7fbfd5dda5dd9.
2023-12-16 23:45:28 -08:00
Adeeb Shihadeh 7aeefaad65 jenkins: only do replay when relevant files change 2023-12-16 23:35:43 -08:00
Adeeb Shihadeh a07060b24b common: remove statlog (#30774)
* common: remove statlog

* fix release
2023-12-16 23:33:55 -08:00
Adeeb Shihadeh 4b54c0b3cd better uploader cpu thresholds 2023-12-16 22:37:35 -08:00
Adeeb Shihadeh 2d466e70cd ui: show wifi password by default (#30766)
* ui: show wifi password by default

* update immediately
2023-12-16 22:36:26 -08:00
Adeeb Shihadeh 1346704426 common/file_helpers: remove xx stuff (#30772)
* remove xx stuff

* cleanup
2023-12-16 22:19:50 -08:00
royjr 7f9e41ce2e dependency: remove atomicwrites package (#30769)
* Update file_helpers.py

* remove dependency

* Revert "remove dependency"

This reverts commit e2bd5f4edab7d14b75f65c296631855d886e38d1.

* remove atomicwrites

* allow overwrite

* fix indents

* add type hints

* Update poetry.lock

* optional

* wrap
2023-12-16 21:58:19 -08:00
Adeeb Shihadeh bc54ed794b remove PyYAML package (#30770)
* remove PyYAML package

* remove those

* add comments back

* fix lock

* fix those
2023-12-16 20:48:57 -08:00
Maxime Desroches 6239cf6780 CI: Close PRs not against master (#30768)
* check branch

* Update labeler.yaml

* Update labeler.yaml

* Update labeler.yaml

* rename

---------

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
2023-12-16 19:29:45 -08:00
Adeeb Shihadeh a7828eba3c remove sconscontrib package (#30767)
* remove sconscontrib package

* lock
2023-12-16 19:16:34 -08:00
Adeeb Shihadeh dfa2e9146f cleanup python dependencies (#30764)
* less

* try to remove that

* little more

* update

* ugh still need this
2023-12-16 18:52:15 -08:00
Jason Wen d92246638a bump to 0.9.6.1 2023-12-07 16:22:30 -05:00
Jason Wen 20e6c58611 Update CHANGELOGS.md 2023-12-06 23:23:08 -05:00
Jason Wen 3ad2b60eb8 Update CHANGELOGS.md 2023-12-05 00:18:42 -05:00
Jason Wen e93e51d000 Update HOW-TOS.md 2023-11-26 18:01:55 -05:00
Jason Wen 758f58c5e9 bump to 0.9.5.2 2023-11-18 08:54:19 -05:00
Jason Wen 55979b27a0 Update CHANGELOGS.md 2023-11-17 22:47:43 -05:00
Jason Wen b157b4d1b0 Update CHANGELOGS.md 2023-11-17 22:43:10 -05:00
Jason Wen a534e974e6 Update CHANGELOGS.md 2023-11-14 01:54:32 -05:00
Jason Wen 602bd1090f FCR: sync with upstream supported car platforms 2023-11-12 17:02:08 -05:00
Jason Wen cb28eb44f0 bump cereal 2023-11-12 15:14:59 -05:00
Jason Wen 4a9bd576e5 Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-11-12 00:56:10 -05:00
Jason Wen 9d47fa2fb3 bump panda 2023-11-12 00:55:47 -05:00
Jason Wen 09a4536b8a Merge branch 'upstream/openpilot/master' into sync-20231112
# Conflicts:
#	panda
#	selfdrive/car/subaru/interface.py
2023-11-12 00:49:42 -05:00
Jason Wen 24aa478376 Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-11-08 16:30:11 -05:00
Jason Wen 1a87a204d3 bump submodules 2023-11-08 16:19:11 -05:00
Jason Wen a667364b59 Merge remote-tracking branch 'commaai/openpilot/master' into sync-20231108
# Conflicts:
#	cereal
#	panda
2023-11-08 15:58:35 -05:00
Jason Wen 4cfdd2b119 Hyundai: Car Port for Kona 2019 Non-SCC (#234)
* Hyundai: Car Port for Kona Non-SCC 2019

* add car name
2023-10-25 22:10:11 -04:00
Jason Wen 3ea399f9a6 FCR: sync with upstream supported car platforms 2023-10-25 15:28:04 -04:00
Jason Wen b0dd2a3ddb Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-10-25 15:21:44 -04:00
Jason Wen 08a271b678 Merge remote-tracking branch 'commaai/openpilot/master' into sync-20231025
# Conflicts:
#	README.md
#	selfdrive/car/hyundai/interface.py
2023-10-25 15:18:53 -04:00
Jason Wen 57e135cdf9 Fix upstream conflicts (#232) 2023-10-24 00:22:58 -04:00
Jason Wen 8b01831aa8 FCR: sync with upstream supported car platforms 2023-10-23 11:14:54 -04:00
Jason Wen 512f8b053f Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-10-20 16:56:59 -04:00
Jason Wen 1ee8df2d28 Merge remote-tracking branch 'commaai/openpilot/master' into sync-20231020
# Conflicts:
#	selfdrive/car/chrysler/interface.py
2023-10-20 16:53:09 -04:00
Jason Wen 396fab62a8 Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-10-18 01:20:41 -04:00
Jason Wen 4de4821dfc bump panda 2023-10-18 01:18:44 -04:00
Jason Wen 04e21399f1 Merge remote-tracking branch 'commaai/openpilot/master' into sync-20231018
# Conflicts:
#	panda
2023-10-18 01:08:29 -04:00
Jason Wen fafdf82409 Subaru: Fix brake light signal for Pre-Global platforms (#225) 2023-10-16 11:44:37 -04:00
Jason Wen 0cafd36f15 Sync: commaai/openpilot:master into sunnyhaibin/sunnypilot:master 2023-10-16 11:37:26 -04:00
Jason Wen adc9b2f3bb bump submodules 2023-10-16 11:32:08 -04:00
Jason Wen 0e8a762fdd brakeLights -> brakeLightsDEPRECATED 2023-10-16 11:18:24 -04:00
Jason Wen cfeba34d5d Merge branch 'upstream/openpilot/master-20231016-sync' into master-20231016
# Conflicts:
#	cereal
#	panda
#	selfdrive/car/hyundai/interface.py
#	selfdrive/car/hyundai/values.py
#	selfdrive/car/subaru/values.py
#	selfdrive/controls/controlsd.py
#	selfdrive/controls/plannerd.py
#	selfdrive/monitoring/dmonitoringd.py
2023-10-16 11:03:27 -04:00
Jason Wen 925bc21912 Update CHANGELOGS.md 2023-10-01 11:32:22 -04:00
Jason Wen 61d39a5558 MSPA: Unused service (#218) 2023-10-01 02:10:49 -04:00
Jason Wen c8debe77db MSPA (#217)
* Cereal: Use custom reserved structs

* fix dmonitoring

* sync with upstream

* bump cereal

* bump cereal

* fix

* bump cereal

* fix

* unused

* check sm valid
2023-10-01 02:05:05 -04:00
Jason Wen 44b0b11ff1 HKG: add Kia Seltos 2023-24 Non-SCC platform (#215)
* HKG: add Kia Seltos 2024 Non-SCC platform

* 2023 MY also works

* Update CHANGELOGS.md

* add fw

* fix

* fix list
2023-09-29 08:56:50 -04:00
Jason Wen fb9a990184 FCR: sync with upstream supported car platforms 2023-09-24 00:09:50 -04:00
Jason Wen da58d5114b Fleet Manager: paths cleanup (#216) 2023-09-23 10:33:33 -04:00
Jason Wen 3b776937fa Sync params 2023-09-23 01:31:57 -04:00
Jason Wen eb2a58185d Merge branch 'upstream/openpilot/master'
# Conflicts:
#	.pre-commit-config.yaml
#	README.md
#	cereal
#	opendbc
#	panda
#	selfdrive/car/torque_data/override.yaml
2023-09-22 23:49:13 -04:00
DevTekVE 32e514f421 mapd: Bump scipy to 1.11.1 (#209)
Update scipy version in custom_dep.py

This commit updates the version of scipy in custom_dep.py from 1.7.1 to 1.11.1. This change is done to allow installing from non prebilt branches as the former scipy requested is incompatible with python 3.11.

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-09-19 17:06:51 -04:00
Jason Wen 1f1d09d91b FCR: sync with upstream supported car platforms 2023-09-18 16:13:58 -04:00
Jason Wen 29f32bc331 Fix upstream conflicts 2023-09-10 22:05:10 -04:00
Jason Wen ebfe40b76a Merge remote-tracking branch 'commaai/openpilot/master'
# Conflicts:
#	.github/workflows/selfdrive_tests.yaml
#	.pre-commit-config.yaml
#	cereal
#	opendbc
#	panda
2023-09-06 23:58:35 -04:00
Jason Wen e0cc25c3e2 Migrate otisserv to pub (#205)
Migrate otisserv to pub
2023-09-06 01:06:02 -04:00
Jason Wen 7dbbc001eb Upstream merge fixes 2023-09-06 01:05:01 -04:00
Jason Wen 27c485c621 bump to 0.9.5.1 2023-09-05 12:18:24 -04:00
Jason Wen 94e34f2539 bump panda 2023-09-05 12:17:10 -04:00
Jason Wen 7f8f9e2613 sunnypilot: fix duplicate ordinal 2023-09-05 11:55:45 -04:00
Jason Wen 9bc73b85ff Merge remote-tracking branch 'commaai/openpilot/master'
# Conflicts:
#	.github/workflows/selfdrive_tests.yaml
#	.pre-commit-config.yaml
#	README.md
#	cereal
#	common/version.h
#	opendbc
#	panda
#	selfdrive/car/chrysler/carcontroller.py
#	selfdrive/car/chrysler/carstate.py
#	selfdrive/car/chrysler/interface.py
#	selfdrive/car/gm/carstate.py
#	selfdrive/car/honda/carstate.py
#	selfdrive/car/hyundai/carcontroller.py
#	selfdrive/car/hyundai/carstate.py
#	selfdrive/car/hyundai/hyundaican.py
#	selfdrive/car/hyundai/interface.py
#	selfdrive/car/hyundai/radar_interface.py
#	selfdrive/car/hyundai/values.py
#	selfdrive/car/interfaces.py
#	selfdrive/car/subaru/carcontroller.py
#	selfdrive/car/subaru/carstate.py
#	selfdrive/car/subaru/interface.py
#	selfdrive/car/subaru/subarucan.py
#	selfdrive/car/torque_data/override.yaml
#	selfdrive/car/toyota/carcontroller.py
#	selfdrive/car/toyota/carstate.py
#	selfdrive/car/toyota/interface.py
#	selfdrive/car/toyota/toyotacan.py
#	selfdrive/car/volkswagen/carstate.py
#	selfdrive/controls/lib/desire_helper.py
#	selfdrive/controls/lib/longitudinal_planner.py
#	selfdrive/monitoring/dmonitoringd.py
#	selfdrive/thermald/power_monitoring.py
#	system/loggerd/uploader.py
2023-09-05 11:50:47 -04:00
Jason Wen 57136b3e1a Toyota longitudinal: new TSS2 tuning (#200) 2023-08-16 21:57:31 -04:00
Jason Wen 583bf38e6a bump to 0.9.4.2 2023-08-11 17:51:36 -04:00
Jason Wen 3449d301ae Update CHANGELOGS.md 2023-08-11 09:49:38 -04:00
Jason Wen e57d077fd3 Update CHANGELOGS.md 2023-08-10 22:45:00 -04:00
Jacob Pfeifer fbd4771469 mapd: utilize advisory speed limit in curves (#142)
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-08-10 22:43:39 -04:00
Jason Wen fc59ed06f2 ui: remove Speed Limit Style 2023-08-10 16:07:13 -04:00
Jason Wen 07a81c16bb Update CHANGELOGS.md 2023-08-10 00:20:27 -04:00
Jason Wen aa043a3073 bump cereal 2023-08-07 00:41:07 -04:00
Jason Wen 259203e8b2 Update CHANGELOGS.md 2023-08-04 17:45:56 -04:00
Jason Wen 6a93469290 bump to 0.9.4.1 2023-08-04 17:41:01 -04:00
Jason Wen 1c7e799cc8 bump to 0.9.4.1 2023-08-02 16:38:33 -04:00
Jason Wen 58e106c0d5 sunnypilot: fix upstream conflicts 2023-08-02 15:03:05 -04:00
Jason Wen 35e8d675bc bump submodules 2023-08-01 23:04:11 -04:00
Jason Wen 8498b1a1c3 Merge branch 'upstream/openpilot/master' 2023-08-01 23:03:54 -04:00
Mathew Locoteta ac9315f6a7 Honda: Car Port for Accord 4-Cylinder 9th Generation (#124)
* Add 2016/2017 Accord 2.4L (Serial Steering V3)

* No longer used

* bump opendbc

* bump opendbc

* bump opendbc

* IDE

* unused

* small cleanup

* platform rename

* some more

* add to docs

* shorter name

* add to FCR

* update footnote

* Update CARS.md

* Update CARS.md

* bump opendbc

* Update footnote

* Update CARS.md

* Update CHANGELOGS.md

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-07-12 01:16:26 -04:00
Jason Wen 1dfa7c0039 Update CHANGELOGS.md 2023-07-11 09:29:32 -04:00
Jason Wen 06b1a862d9 bump to 0.9.3.2 2023-07-11 09:10:53 -04:00
Jason Wen 0621af480e car docs: add additional supported cars in sunnypilot (#192)
* car docs: add additional supported cars in sunnypilot

* Update non-SCC models

* Update non-SCC required parts

* sync
2023-07-09 23:51:08 -04:00
Jason Wen 2658378ebe HKG: disable experimental longitudinal for non-SCC platforms (#195)
* HKG: disable experimental longitudinal for non-SCC platforms

* CAN-FD also
2023-07-09 23:47:42 -04:00
Jason Wen 140d5272c8 HKG: specify required parts with no SCC models (#194) 2023-07-09 23:42:14 -04:00
Jason Wen 06960c04fe HKG: specify supported trims with no SCC (#193) 2023-07-09 23:35:16 -04:00
Jason Wen 7ec767f53f Update CHANGELOGS.md 2023-07-09 01:38:20 -04:00
Jason Wen 122efe3a89 Use spFlags for sunnypilot specific features (pub) (#189)
* Use spFlags for sunnypilot specific features (pub)

* add remaining
2023-07-01 05:49:16 -04:00
Jason Wen 32dd76bcb7 ui: Screen Recorder toggle display default on 2023-06-30 15:48:31 -04:00
Jason Wen 133fdcb43a ui: Screen Recorder toggle display prerequisites 2023-06-30 15:38:40 -04:00
Jason Wen c0df986710 Update CHANGELOGS.md 2023-06-30 15:37:40 -04:00
Jason Wen d79689b967 Update CHANGELOGS.md 2023-06-29 17:25:56 -04:00
Jason Wen 39e0a32bcb Update CHANGELOGS.md 2023-06-29 11:55:58 -04:00
Jason Wen 31a7b305ee Update CHANGELOGS.md 2023-06-26 12:09:53 -04:00
Jason Wen 2b506e49f0 Toyota longitudinal: TSS2 custom tuning behind toggle (#186)
* Toyota longitudinal: TSS2 custom tuning behind toggle

* cleanup

* add param

* Update CHANGELOGS.md

* Update CHANGELOGS.md
2023-06-26 12:28:20 -04:00
Jason Wen f7f90fd847 ui: Sidebar Temperature selector prerequisites 2023-06-25 06:30:22 -04:00
Jason Wen 8f192cb975 Update CHANGELOGS.md 2023-06-25 00:29:52 -04:00
Jason Wen 813d591204 Update CHANGELOGS.md 2023-06-22 21:11:46 -04:00
Jason Wen 54c4dbd49b Merge branch 'upstream/openpilot/master'
# Conflicts:
#	cereal
#	common/version.h
#	opendbc
#	panda
#	selfdrive/car/honda/carstate.py
#	selfdrive/car/honda/interface.py
#	selfdrive/car/hyundai/values.py
#	selfdrive/car/subaru/carcontroller.py
#	selfdrive/car/subaru/subarucan.py
#	selfdrive/controls/lib/longitudinal_planner.py
#	selfdrive/manager/manager.py
2023-06-22 14:52:51 -04:00
Jason Wen ac75b20104 Rename DevUIInfo 2023-06-22 11:54:19 -04:00
Jason Wen 6e781d3801 Update CHANGELOGS.md 2023-06-18 22:36:14 -04:00
Jason Wen 97a61463b2 HKG CAN: Smoother Stopping Performance prerequisites 2023-06-18 22:09:17 -04:00
Jason Wen 733cf3c521 Add SP flags 2023-06-18 20:49:05 -04:00
Jason Wen 30e455e367 bump to 0.9.3.1 2023-06-18 20:33:30 -04:00
Jason Wen d4fa3ad160 Update CHANGELOGS.md 2023-06-18 10:03:05 -04:00
Jason Wen 848718e0c1 Update CHANGELOGS.md 2023-06-18 07:14:01 -04:00
Jason Wen e2f7da5cc9 Update CHANGELOGS.md 2023-06-17 12:37:51 -04:00
Jason Wen bac7873513 Update CHANGELOGS.md 2023-06-15 19:37:23 -04:00
Jason Wen d9b652af7c Update CHANGELOGS.md 2023-06-15 18:41:46 -04:00
Jason Wen 7e3f6add58 Update CHANGELOGS.md 2023-06-15 07:09:38 -04:00
Jason Wen 8dbfd8180e Update param 2023-06-15 07:02:53 -04:00
Jason Wen 7e86bdc371 Fleet Manager: toggle PIN requirement prerequisites 2023-06-15 07:02:27 -04:00
Jason Wen 97dce4ab17 Update CHANGELOGS.md 2023-06-15 04:11:59 -04:00
Jason Wen 20d5802010 Update CHANGELOGS.md 2023-06-14 23:51:49 -04:00
Jason Wen 1fbaab0b34 Auto Lane Change: Delay execution with BSM detection prerequisites 2023-06-14 07:28:45 -04:00
Jason Wen d5a7644209 Update CHANGELOGS.md 2023-06-14 07:27:22 -04:00
Jason Wen 728c65a14a Update CHANGELOGS.md 2023-06-13 13:45:25 -04:00
Jason Wen d576dfdf2d Update CHANGELOGS.md 2023-06-13 12:24:23 -04:00
Jason Wen 132762fd17 Update CHANGELOGS.md 2023-06-13 11:06:13 -04:00
Jason Wen e092e7ed19 Driving Screen Off: param updates 2023-06-13 11:05:58 -04:00
Jason Wen d66c7f18c8 bump to 0.9.2.3 2023-06-13 05:07:39 -04:00
Jason Wen 676fdd31c8 Update CHANGELOGS.md 2023-06-13 04:55:01 -04:00
Jason Wen 76896a910f Update CHANGELOGS.md 2023-06-13 00:26:28 -04:00
Jason Wen af6b2979d0 MADS: Toyota: gate LKAS button behind toggle default off 2023-06-12 23:22:44 -04:00
Jason Wen 5cf13b0a72 MADS: Toyota: gate LKAS button behind toggle prerequisites 2023-06-12 22:45:44 -04:00
Jason Wen bd1c833920 Docs: Don't be a ghost @FrogAi 2023-06-12 21:28:13 -04:00
Jason Wen 3aa5a23118 bump to 0.9.2.2 2023-06-11 20:08:00 -04:00
Jason Wen 19e2cf185b bump to 0.9.2.2 2023-06-11 18:44:56 -04:00
Jason Wen d78bdaafec Docs: update comma three branches (#183) 2023-06-11 08:58:06 -04:00
Jason Wen e57cdfe5fe Docs: update Installation section (#182)
* Start the cleanup

* add

* update some urls

* add version

* revert c2 instructions

* revert c2 instructions

* c3 only
2023-06-11 08:50:50 -04:00
Jason Wen 5ec32dcbe2 Updater: persistent superseded branch alert 2023-06-11 08:13:18 -04:00
Jason Wen cd1077e93e Updater: superseded branch alert prerequisites 2023-06-11 08:10:32 -04:00
John P 1a7c469a13 Update README.md | Update Recommended Link (#168)
Update README.md | Update Link

The [1] marker mentions an old link to an old branch, so I fixed that.
2023-06-11 00:45:10 -04:00
Jason Wen 9f60ec8871 Update CHANGELOGS.md 2023-06-10 22:32:16 -04:00
Jason Wen 6cfa7445ac Update CHANGELOGS.md 2023-06-10 22:06:08 -04:00
Jason Wen 27f1df1a9b sunnypilot: bump version to 0.9.2.1 2023-06-10 06:36:19 -04:00
Jason Wen 7d2eaa7d74 Fleet Manager: update instruction screenshot (#181) 2023-06-10 01:48:35 -04:00
Jason Wen a421b78972 Update CHANGELOGS.md 2023-06-09 18:08:52 -04:00
Jason Wen 88821fb8d8 ui: display CPU temperature on sidebar prerequisites 2023-06-09 18:02:53 -04:00
Jason Wen ceb2a6a721 Update CHANGELOGS.md 2023-06-09 09:20:26 -04:00
Jason Wen 73b2e4bb2a Update CHANGELOGS.md 2023-06-08 23:15:34 -04:00
Jason Wen 6d9eeced08 Custom Stock Longitudinal Control: temporary disable for HKG CAN-FD 2023-06-08 22:54:42 -04:00
Jason Wen cdb4bd0a4c FCR: Autogenerate HKG Non-SCC platforms (#180) 2023-06-08 22:37:48 -04:00
Jason Wen a937e82015 FCR: sync with upstream supported car platforms 2023-06-08 22:34:14 -04:00
Jason Wen 1dd4eb6fe0 Fleet Manager: rename process 2023-06-08 20:30:28 -04:00
Jason Wen fd07250d2a Update CHANGELOGS.md 2023-06-08 11:43:50 -04:00
Jason Wen 8949ad0b8f Ram DT: handle lower speed alert (#179) 2023-06-08 10:32:08 -04:00
AlexandreSato 6fd591e4b5 Fleet Manager: Error log access support (#169)
* Update README.md

* add error troubleshooting and delScreenRecords btn

* Revert "Update README.md"

This reverts commit 5d22fe815f.

* complete coment at paths

* add button to delete screen record

* remove button to delete screen record

* index cleanup

* rename

* simpler

* same module

* no need auth on home

* ide

* name

* smaller text

* spacing

* Update README.md

* Update CHANGELOGS.md

* '\n on changelogs.md

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-06-08 10:19:24 -04:00
Jason Wen 0065709a25 Fleet Manager: redirect cleanup (#178) 2023-06-08 09:17:10 -04:00
Jason Wen 3790c6c756 Fleet Manager: One-Time Password cleanup (#177)
* init

* keep previous page from session
2023-06-08 08:48:37 -04:00
Jason Wen d9c348fb48 Ram DT: check EPS firmware explicitly to set minEnableSpeed to 0 (#173) 2023-06-08 06:42:20 -04:00
Jason Wen 462b20ac12 Dashcam Viewer ▶️ Fleet Manager (#174)
* Dashcam Viewer ▶️ Fleet Manager

* missed

* process
2023-06-07 13:56:36 -04:00
Jason Wen a34c596b76 Docs: add Patreon and GitHub Sponsor links 2023-06-07 12:41:23 -04:00
Jason Wen b30b1222d9 Add sunnypilot Patreon 2023-06-07 03:09:06 -04:00
Jason Wen e4aa1dee05 Dashcam Viewer: One-Time Password support (#171)
* skeleton

* Print PIN under Device menu

* wrap in decorator

* login page reformat

* simplify

* cleanup

* add instruction

* formatting
2023-06-07 02:10:43 -04:00
Jason Wen 604761f6a4 Dashcam Viewer: small style change (#172) 2023-06-07 02:08:58 -04:00
Jason Wen bf0411be00 Enhanced Speed Control: accelerator press state handling (#170)
Enhanced Speed Control: accelerator press state handling
2023-06-06 21:00:21 -04:00
Jason Wen 8eafdd7058 Update CHANGELOGS.md 2023-06-06 01:13:05 -04:00
Jason Wen a1b6cb1077 Update CHANGELOGS.md 2023-06-06 01:12:08 -04:00
Jason Wen 9aed6070a9 GAC: init at 3 2023-06-05 22:54:04 -04:00
Jason Wen cb8ba14c53 bump opendbc 2023-06-05 22:31:29 -04:00
Jason Wen 7ff8e02ed5 bump cereal 2023-06-05 12:43:12 -04:00
Jason Wen 2f77c0d9ee Docs: sunnypilot README and relevant docs (#167)
* Docs: sunnypilot README and relevant docs

* Update QR dir

* Add icon

* Add back later

* Dividers
2023-06-03 20:57:51 -04:00
Jason Wen b6cb343a4a Update CHANGELOGS.md 2023-06-03 01:59:47 -04:00
Jason Wen b2fd4ec25a HKG: support steer to 0 with smartMDPS on certain models (#166)
HKG: support steer to 0 with a smartMDPS on certain models
2023-06-03 01:52:44 -04:00
Jason Wen 92281d2bf3 Controls: Custom Stock Longitudinal Control prerequisites (#165) 2023-06-03 01:18:47 -04:00
Jason Wen f03492e2cf Retain hotspot/tethering state across reboots prerequisites 2023-06-03 00:04:08 -04:00
Jason Wen 8ba9748ad9 Parse and display sunnypilot changelogs 2023-06-02 18:20:43 -04:00
AlexandreSato 1846814ac5 Dashcam Viewer: Screen Recordings support and interface refresh (#160)
* init bootstrap 5.3

* bootstrap done

* watch screen records

* formatting

* syntax

* import

* specific path

* pathing

* text

* not needed

* sunnypilot home

* better name

* Revert "syntax"

This reverts commit 45c54a54ef.

* path

* fix miss "/" at end of path and show current screenrecord video

* Created the About page

* Display errors in a more communicative way

* enable <br> at error messages

* display title on top of the page

* link to download screenrecord

* Update README.md

* Update styles

* Navbar on top, don't block content

* Don't center and format

* Update CHANGELOGS.md

* Update About page

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-06-02 18:16:02 -04:00
Vincent Wright a004024ef4 Ram HD: remove from dashcam (#164)
* Added support for Ram steer to 0/7

* Made the suggested changes

Also added in additional FW to support the other trucks.

* Spacing

* Spacing

* Match stock

* Match stock

* Reverted FW changes

* Put back the max steer

* Bring back comment

* Unused

* Remove DashCamOnly for HD

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-06-01 14:20:12 -04:00
Jason Wen c1c4a241e0 MADS toggle with Cruise Main on by default 2023-05-31 13:23:58 -04:00
Jason Wen 2e07780eae RoadEdge param 2023-05-31 13:22:53 -04:00
Jason Wen d0be8af88d No disengage lateral on brake by default 2023-05-30 22:39:53 -04:00
Jason Wen 22b310c556 MADS: add toggle for Cruise Main button engage - prerequisites 2023-05-30 22:38:49 -04:00
Vincent Wright 9cb81a8dac Ram: Steer to 0/7 MPH support (#157)
* Added support for Ram steer to 0/7

* Made the suggested changes

Also added in additional FW to support the other trucks.

* Spacing

* Spacing

* Match stock

* Match stock

* Reverted FW changes

* Put back the max steer

* Bring back comment

* Unused

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-05-30 22:03:18 -04:00
Jason Wen 2673fbecd0 Subaru: add FW for 2019 Impreza with increased torque (#163) 2023-05-30 21:26:30 -04:00
Miles Calloway 1067a18445 Honda: Car Port for Clarity 2018-22 (#154)
* Fork

* Revert "Fork"

This reverts commit a10cb9677b.

* I think this is it, to be tested.

* Correct panda

* update panda

* Revert "update panda"

This reverts commit 09d7cc9330.

* Revert "Correct panda"

This reverts commit aa052a52e7.

* Update sunnypilot_carname.json

* bump panda

* sort

* formatting

* could break OP long cars

* simpler

* separate

* missed

* format

* cleaner

* bump panda

* Clarity is not in HONDA_BOSCH_RADARLESS

* match

* update MY in docs

* format

* format

* Update CHANGELOGS.md

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-05-29 23:57:19 -04:00
Jason Wen 5351d6fe5b Bring back CHANGELOGS.md (#161) 2023-05-29 23:49:22 -04:00
Jason Wen 6e7c2c54c4 FCR: sync with upstream supported car platforms & add Ford support 2023-05-29 22:07:29 -04:00
Curtis Jenkins 13616ab771 Dashcam Viewer support (#155)
* add webserver + dashcam reviewer

* add offroad flag to webserver process

* fix process and rename tag in webpage

* add read me

* formatting & shadow names

* small cleanup

* +

* Force offroad only

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>

* Update function name

change from "hello_world" to "index"

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>

* Change webserver process name

now dashcam_viewer

* change process name to dashcam(_)viewer

* sort

* Update README.md

* Credit

* fix

* shadow

* name

* name

---------

Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
2023-05-29 19:32:12 -04:00
Jason Wen 4fc2e41c47 Subaru legacy: flip driver torque (#158)
* Subaru legacy: flip driver torque

* bump panda
2023-05-29 10:49:22 -04:00
Jason Wen 4796f674da Higher torque limit (3071) for 2018 Crosstrek / 2017 Impreza @ClockeNessMnstr (#146)
* Higher torque limit (3071) for 2018 Crosstrek / 2017 Impreza @ClockeNessMnstr

* bump panda

* set with int flag

* bump panda

* flag

* sync tune

* bump panda

* fix

* fix

* oops

* update FW

* List comprehension

* bump panda
2023-05-28 19:51:22 -04:00
Jason Wen 3894a930b3 bump cereal 2023-05-28 01:38:33 -04:00
Jason Wen a7a3190f6d bump cereal 2023-05-28 00:50:18 -04:00
Jason Wen cb33af841c bump cereal 2023-05-28 00:25:55 -04:00
Jason Wen f965ebee27 Remove unused params 2023-05-27 12:26:25 -04:00
Jason Wen 1aeff99740 E2E Long State: update params (#156)
update params
2023-05-27 12:03:58 -04:00
Jason Wen a0dc58fc5d bump cereal 2023-05-25 12:45:59 -04:00
Jason Wen 6c2a58f2e9 Merge branch 'upstream/openpilot/master'
# Conflicts:
#	cereal
#	common/params.cc
#	panda
#	selfdrive/car/subaru/subarucan.py
#	selfdrive/controls/lib/lateral_planner.py
#	selfdrive/controls/lib/longitudinal_planner.py
2023-05-25 12:17:54 -04:00
Jason Wen 862ad7a438 FCR: sync with upstream supported car platforms 2023-04-25 02:20:49 -04:00
Jason Wen 2654fe9696 fix merge conflicts 2023-04-25 01:45:01 -04:00
Jason Wen 46c80749be cereal: fix duplicate ordinals 2023-04-25 01:20:00 -04:00
Jason Wen 8a61496937 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	.pre-commit-config.yaml
#	cereal
#	opendbc
#	panda
#	selfdrive/car/hyundai/carstate.py
#	selfdrive/car/hyundai/interface.py
#	selfdrive/car/toyota/interface.py
2023-04-25 01:10:56 -04:00
Jason Wen b84972c6d9 DLP: default to off and laneless 2023-04-25 01:02:21 -04:00
Jason Wen a8a853514f ui: show driver monitoring camera while onroad prerequisites 2023-04-01 12:50:58 -04:00
Jason Wen 89e2a6ea9b Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	panda
2023-03-30 23:07:29 -04:00
Jason Wen cb865a7b18 ui: button auto-hide prerequisites 2023-03-29 23:28:11 -04:00
Jacob Pfeifer 26097e778e mapd: consistency adjustments (#117)
mapd consistency adjustments:

* Project gps location onto map route line for determining distance to
  next node.
* Increase distance for determining if we have left a route. Helpful for
  when osm route line is not perfectly centered on road.
* Match max lateral accel against vision turn speed controller max
  lateral accel.
2023-03-29 23:07:16 -04:00
Jason Wen 75fd9b1b22 Long planner: fix upstream merge conflicts (#145)
Fix upstream merge conflicts
2023-03-29 17:53:58 -04:00
Jason Wen eb2f13d6d6 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	panda
2023-03-28 17:16:08 -04:00
Jason Wen 8208cf9a5a pre-commit: skip all checks for now 2023-03-28 17:16:01 -04:00
Jason Wen 0bf00410d4 Hyundai: gate speed limit parsing availability (#144) 2023-03-27 22:05:35 -04:00
Jason Wen 03f8b45a1e gpxd: remove secret (#135)
* gpxd: remove secret

* make it stick

* enforce dongle ID check

* redirect

* static

* small cleanup
2023-03-26 12:01:31 -04:00
Jason Wen 5ae00ea1fc sunnypilot: update brand 2023-03-26 09:20:57 -04:00
Jason Wen d4a039823b HKG: add FW versions for Kia Forte Non-SCC 2019 (#141) 2023-03-25 22:41:51 -04:00
Jason Wen bb76d4f9e9 Block Enhanced Speed Control events on unsupported platforms (#140) 2023-03-25 10:07:52 -04:00
Jason Wen 38068dc916 sunnypilot: HKG: non-SCC platform support prerequisites (#139) 2023-03-25 00:05:03 -04:00
Jason Wen 5243da9487 FCR: sync with upstream supported car platforms 2023-03-24 17:34:28 -04:00
Jason Wen 18a5cf0277 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	opendbc
#	panda
#	selfdrive/ui/ui.cc
2023-03-24 15:05:42 -04:00
Jason Wen b73078dc43 mapd: bring back README (#136) 2023-03-24 13:57:54 -04:00
Jason Wen 9f2a0080c0 gpxd: fix upstream conflict 2023-03-12 17:11:02 -04:00
Jason Wen b475e28087 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	panda
#	selfdrive/car/hyundai/interface.py
#	selfdrive/car/toyota/carcontroller.py
2023-03-12 14:52:12 -04:00
Jason Wen 1635a176b7 Subaru: brake light signal fix 2023-02-27 13:57:07 -05:00
Jason Wen d1f7bb6bb5 Pre-Global Subaru: counter fix and disable dashcamOnly (#119)
Pre-Global Subaru: counter fix and remove dashcam only

* Revert legacy es_lkas counter autogeneration
2023-02-21 23:48:09 -05:00
Jason Wen 038afae028 mapd: use correct path 2023-02-21 22:53:13 -05:00
Jason Wen 6b5ef45bdf mapd: cache downloaded dependencies 2023-02-21 17:30:43 -05:00
Jason Wen f7b0250652 GAC: params init 2023-02-21 01:22:45 -05:00
Jason Wen 0ce258612b move-fast: v-tsc fix 2023-02-20 22:48:51 -05:00
Jason Wen 643fe3b7fa HKG: parse speed limit (#118)
HKG: parse speed limits
2023-02-20 02:58:57 -05:00
Jason Wen f3a44c1e3a HKG: add more int flags 2023-02-20 02:51:46 -05:00
Jason Wen c1c03ff4c3 cereal: fix duplicate ordinals 2023-02-19 00:14:25 -05:00
Jason Wen 4b2ce89412 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	selfdrive/ui/ui.cc
2023-02-18 23:52:21 -05:00
Jason Wen c9d784a0b9 ui: speedometer customization more init 2023-02-18 19:35:54 -05:00
Jason Wen 9881d1a6e4 ui: speedometer customization params init 2023-02-18 19:10:23 -05:00
Jason Wen 7fea5dc842 bump panda 2023-02-17 20:06:31 -05:00
Jason Wen 2830c020f6 Hyundai: Enhanced SCC (ESCC) Radar Interceptor support (#114)
* escc: wip

* finish up

* use new intflag

* bump panda
2023-02-17 18:33:14 -05:00
Jason Wen 32d50a6504 bump panda 2023-02-17 18:31:10 -05:00
Jason Wen be037b31be bump panda 2023-02-17 15:07:17 -05:00
Jason Wen b2465c3494 Merge remote-tracking branch 'upstream/commaai/openpilot/master' 2023-02-17 01:26:38 -05:00
Jason Wen 7934454088 Longitudinal: parse physical distance button (#113)
* Longitudinal: parse distance button from steering wheel

* missing gm signal
2023-02-16 20:57:07 -05:00
Jason Wen 0fd1cfbe56 mapd: Remove preloaded dependencies (#112) 2023-02-15 00:33:06 -05:00
Jason Wen 75a00af955 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	opendbc
#	panda
2023-02-14 20:42:02 -05:00
Jason Wen 2d070dbdb7 mapd: add path 2023-02-13 19:58:53 -05:00
Jason Wen b7a3855ede SLC: adjustable speed limit offset - init 2023-02-13 19:55:00 -05:00
Jason Wen bf659453aa move-fast: mapd, Speed Limit Control, Vision & Map Turn Speed Control (#111)
* move-fast: Hands on wheel monitoring: Implementation according to r079r4e regulation

* move-fast: VisionTurnController Implementation & UI prerequisites

* move-fast: LiveMapData: Implementation & UI prerequisites

* add dependencies

* move-fast: SpeedLimitControl: Implementation & UI prerequisites

* move-fast: TurnSpeedController: Implementation & UI prerequisites

* move-fast: Debug: Tap on Ui to capture snapshot of debug data & UI prerequisites

* Debug UI: Toggle to display debug UI elements & UI prerequisites
2023-02-13 11:38:11 -05:00
Jason Wen 755b5746fb FCR: generate all sunnypilot supported car platforms 2023-02-11 02:34:35 -05:00
Jason Wen 6ad79d3e81 Longitudinal: Reverse ACC Change (#110) 2023-02-11 02:26:50 -05:00
Jason Wen eb591e3015 Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	opendbc
2023-02-11 01:23:43 -05:00
Jason Wen d201a4b08c Merge remote-tracking branch 'upstream/commaai/openpilot/master'
# Conflicts:
#	cereal
#	opendbc
#	panda
2023-02-09 02:07:22 -05:00
Jason Wen a0c9b12341 bump cereal 2023-02-08 20:13:28 -05:00
Jason Wen 25efc5316a bump cereal 2023-02-08 14:23:45 -05:00
Jason Wen 8102fc8572 Merge remote-tracking branch 'upstream/commaai/openpilot/master' 2023-02-06 00:29:11 -05:00
Jason Wen 60c02cf87b Toyota TSS2 longitudinal improvements (#108)
* Toyota TSS2 longitudinal improvements

* IDE doesn't like it
2023-02-05 21:58:19 -05:00
Jason Wen 3188d11efd Braking status prerequisites (#107)
* Braking status prerequisites

* No need for this
2023-02-05 20:54:59 -05:00
Jason Wen 0790e4d9f7 gpxd (#106) 2023-02-05 19:58:26 -05:00
Jason Wen d4f1b12070 Disable Onroad Uploads (#105) 2023-02-05 19:53:21 -05:00
Jason Wen 2a841a7757 Lane Change Timer (#104) 2023-02-05 14:31:09 -05:00
Jason Wen 5e1d9da867 Max Time Offroad 2023-02-05 14:17:32 -05:00
Jason Wen 0208188975 Merge remote-tracking branch 'upstream/commaai/openpilot/master' 2023-02-05 02:21:51 -05:00
Jason Wen 931718e937 bump cereal 2023-02-04 19:47:55 -05:00
Jason Wen 300c33583a bump cereal 2023-02-04 14:28:45 -05:00
Jason Wen 4e03bd488d bump cereal 2023-02-04 12:10:57 -05:00
Jason Wen 054562fc77 import param init 2023-02-04 04:19:39 -05:00
Jason Wen 3f431e4c6d Merge remote-tracking branch 'upstream/commaai/openpilot/master' into dev-pub/master
# Conflicts:
#	cereal
#	opendbc
2023-02-04 00:39:30 -05:00
Jason Wen 215b03118e bump cereal 2023-02-03 23:49:00 -05:00
Jason Wen 428dbb52e2 fix duplicate ordinal 2023-01-31 18:09:43 -05:00
Jason Wen 4d0fb94161 import all params 2023-01-31 01:04:32 -05:00
Jason Wen 93a4090476 MADS: add more event 2023-01-31 00:40:47 -05:00
Jason Wen eb7b3f5489 fix merge conflicts 2023-01-28 21:04:51 -05:00
Jason Wen 4f60a73471 Merge remote-tracking branch 'upstream/commaai/openpilot/master' into dev-pub/master
# Conflicts:
#	cereal
#	panda
2023-01-28 20:46:44 -05:00
Jason Wen da778f69b3 bump cereal 2023-01-18 22:35:39 -05:00
Jason Wen 9168bae8da bump panda 2023-01-15 04:10:46 -05:00
Jason Wen 50f3dfe37a Merge remote-tracking branch 'upstream/commaai/openpilot/master' into dev-pub/master 2023-01-15 04:10:28 -05:00
Jason Wen eb3eb92d5e bump submodules 2023-01-12 19:35:07 -05:00
Jason Wen df79142199 Merge remote-tracking branch 'upstream/commaai/openpilot/master' 2023-01-12 19:32:25 -05:00
Jason Wen fe6bf5e293 Merge remote-tracking branch 'upstream/commaai/openpilot/master' into master-public 2023-01-02 20:05:54 -05:00
Jason Wen 6ad18dae26 update refs 2022-12-20 01:14:23 -05:00
801 changed files with 34852 additions and 15796 deletions
+9 -3
View File
@@ -1,18 +1,24 @@
* text=auto
# to move existing files into LFS:
# git add --renormalize .
*.dlc filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
selfdrive/car/tests/test_models_segs.txt filter=lfs diff=lfs merge=lfs -text
selfdrive/assets/fonts/*.ttf filter=lfs diff=lfs merge=lfs -text
selfdrive/assets/training/*.png filter=lfs diff=lfs merge=lfs -text
system/hardware/tici/updater filter=lfs diff=lfs merge=lfs -text
selfdrive/ui/qt/spinner_larch64 filter=lfs diff=lfs merge=lfs -text
selfdrive/ui/qt/text_larch64 filter=lfs diff=lfs merge=lfs -text
third_party/**/*.a filter=lfs diff=lfs merge=lfs -text
third_party/**/*.so filter=lfs diff=lfs merge=lfs -text
third_party/**/*.so.* filter=lfs diff=lfs merge=lfs -text
third_party/**/*.dylib filter=lfs diff=lfs merge=lfs -text
third_party/acados/*/t_renderer filter=lfs diff=lfs merge=lfs -text
third_party/bootstrap/bootstrap-icons.svg filter=lfs diff=lfs merge=lfs -text
third_party/qt5/larch64/bin/lrelease filter=lfs diff=lfs merge=lfs -text
third_party/qt5/larch64/bin/lupdate filter=lfs diff=lfs merge=lfs -text
third_party/catch2/include/catch2/catch.hpp filter=lfs diff=lfs merge=lfs -text
+12
View File
@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [sunnyhaibin] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: sunnyhaibin # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://paypal.me/sunnyhaibin0850'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+1 -1
View File
@@ -8,7 +8,7 @@ assignees: ''
**Checklist**
- [ ] added to README
- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)
- [ ] route with openpilot:
- [ ] route with stock system:
+4 -2
View File
@@ -6,6 +6,8 @@ labels: 'fingerprint'
assignees: ''
---
Discord username: []
**Car**
Which car (make, model, year) this fingerprint is for
Route: []
**Route**
A route with the fingerprint
+1 -2
View File
@@ -28,5 +28,4 @@ Longitudinal:
Lateral:
* Straight driving at ~25, ~45 and ~65mph
* Turns driving at ~25, ~45 and ~65mph
-->
-->
+30
View File
@@ -0,0 +1,30 @@
import pathlib
GITHUB_FOLDER = pathlib.Path(__file__).parent
PULL_REQUEST_TEMPLATES = (GITHUB_FOLDER / "PULL_REQUEST_TEMPLATE")
order = ["fingerprint", "car_bugfix", "bugfix", "car_port", "refactor"]
def create_pull_request_template():
with open(GITHUB_FOLDER / "pull_request_template.md", "w") as f:
f.write("<!-- Please copy and paste the relevant template -->\n\n")
for t in order:
template = PULL_REQUEST_TEMPLATES / f"{t}.md"
text = template.read_text()
# Remove metadata for GitHub
start = text.find("---")
end = text.find("---", start+1)
text = text[end + 4:]
# Remove comments
text = text.replace("<!-- ", "").replace("-->", "")
f.write(f"<!--- ***** Template: {template.stem.replace('_', ' ').title()} *****\n")
f.write(text)
f.write("\n\n")
f.write("-->\n\n")
create_pull_request_template()
+67 -53
View File
@@ -1,65 +1,79 @@
CI / testing:
- all:
- changed-files: ['.github/**', '**/test_*', 'Jenkinsfile']
- changed-files:
- any-glob-to-all-files: "{.github/**,**/test_*,Jenkinsfile}"
car:
- all:
- changed-files: ['selfdrive/car/**']
car:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/**'
body:
- all:
- changed-files: ['selfdrive/car/body/*']
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/body/*'
chrysler:
- all:
- changed-files: ['selfdrive/car/chrysler/*']
ford:
- all:
- changed-files: ['selfdrive/car/ford/*']
gm:
- all:
- changed-files: ['selfdrive/car/gm/*']
honda:
- all:
- changed-files: ['selfdrive/car/honda/*']
hyundai:
- all:
- changed-files: ['selfdrive/car/hyundai/*']
mazda:
- all:
- changed-files: ['selfdrive/car/mazda/*']
nissan:
- all:
- changed-files: ['selfdrive/car/nissan/*']
subaru:
- all:
- changed-files: ['selfdrive/car/subaru/*']
tesla:
- all:
- changed-files: ['selfdrive/car/tesla/*']
toyota:
- all:
- changed-files: ['selfdrive/car/toyota/*']
volkswagen:
- all:
- changed-files: ['selfdrive/car/volkswagen/*']
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/chrysler/*'
ford:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/ford/*'
gm:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/gm/*'
honda:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/honda/*'
hyundai:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/hyundai/*'
mazda:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/mazda/*'
nissan:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/nissan/*'
subaru:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/subaru/*'
tesla:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/telsa/*'
toyota:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/toyota/*'
volkswagen:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/volkswagen/*'
fingerprint:
- changed-files:
- any-glob-to-all-files: 'selfdrive/car/*/fingerprints.py'
simulation:
- all:
- changed-files: ['tools/sim/**']
- changed-files:
- any-glob-to-all-files: 'tools/sim/**'
ui:
- all:
- changed-files: ['selfdrive/ui/**']
tools:
- all:
- changed-files: ['tools/**']
- changed-files:
- any-glob-to-all-files: 'selfdrive/ui/**'
tools:
- changed-files:
- any-glob-to-all-files: 'tools/**'
multilanguage:
- all:
- changed-files: ['selfdrive/ui/translations/**']
- changed-files:
- any-glob-to-all-files: 'selfdrive/ui/translations/**'
research:
- all:
- changed-files: [
'selfdrive/modeld/models/**',
'selfdrive/test/process_replay/model_replay_ref_commit',
]
- changed-files:
- any-glob-to-all-files: "{selfdrive/modeld/models/**,selfdrive/test/process_replay/model_replay_ref_commit}"
+33 -13
View File
@@ -10,39 +10,59 @@ A route with the fingerprint
-->
<!--- ***** Template: Car bug fix *****
<!--- ***** Template: Car Bugfix *****
**Description** [](A description of the bug and the fix. Also link any relevant issues.)
**Description**
**Verification** [](Explain how you tested this bug fix.)
A description of the bug and the fix. Also link the issue if it exists.
**Verification**
Explain how you tested this bug fix.
**Route**
Route: [a route with the bug fix]
-->
<!--- ***** Template: Bug fix *****
**Description** [](A description of the bug and the fix. Also link any relevant issues.)
**Verification** [](Explain how you tested this bug fix.)
-->
<!--- ***** Template: Car port *****
<!--- ***** Template: Bugfix *****
**Description**
A description of the bug and the fix. Also link the issue if it exists.
**Verification**
Explain how you tested this bug fix.
-->
<!--- ***** Template: Car Port *****
**Checklist**
- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs
- [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py)
- [ ] route with openpilot:
- [ ] route with stock system:
- [ ] car harness used (if comma doesn't sell it, put N/A):
-->
<!--- ***** Template: Refactor *****
**Description** [](A description of the refactor, including the goals it accomplishes.)
**Description**
A description of the refactor, including the goals it accomplishes.
**Verification**
Explain how you tested the refactor for regressions.
**Verification** [](Explain how you tested the refactor for regressions.)
-->
+49
View File
@@ -0,0 +1,49 @@
name: 'automatically cache based on current runner'
inputs:
path:
description: 'path to cache'
required: true
key:
description: 'key'
required: true
restore-keys:
description: 'restore-keys'
required: true
save:
description: 'whether to save the cache'
default: 'false'
required: false
runs:
using: "composite"
steps:
- name: setup namespace cache
if: ${{ contains(runner.name, 'nsc') }}
uses: namespacelabs/nscloud-cache-action@v1
with:
path: ${{ inputs.path }}
- name: setup github cache
if: ${{ !contains(runner.name, 'nsc') && inputs.save != 'false' }}
uses: 'actions/cache@v3'
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}
- name: setup github cache
if: ${{ !contains(runner.name, 'nsc') && inputs.save == 'false' }}
uses: 'actions/cache/restore@v3'
with:
path: ${{ inputs.path }}
key: ${{ inputs.key }}
restore-keys: ${{ inputs.restore-keys }}
# make the directory manually in case we didn't get a hit, so it doesn't fail on future steps
- id: scons-cache-setup
shell: bash
run: |
mkdir -p ${{ inputs.path }}
sudo chmod -R 777 ${{ inputs.path }}
sudo chown -R $USER ${{ inputs.path }}
+207
View File
@@ -0,0 +1,207 @@
name: "PR review"
on:
pull_request_target:
types: [opened, reopened, synchronize, edited, edited]
jobs:
labeler:
name: apply labels
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: false
- uses: actions/labeler@v5.0.0
with:
dot: true
configuration-path: .github/labeler.yaml
pr_branch_check:
name: check branch
runs-on: ubuntu-latest
if: github.repository == 'commaai/openpilot'
steps:
- uses: Vankka/pr-target-branch-action@69ab6dd5c221de3548b3b6c4d102c1f4913d3baa
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
target: /^(?!master$).*/
exclude: /commaai:.*/
change-to: ${{ github.base_ref }}
already-exists-action: close_this
already-exists-comment: "Your PR should be made against the `master` branch"
check-pr-template:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write
pull-requests: write
actions: read
if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot'
steps:
- uses: actions/github-script@v7
with:
script: |
// Comment to add to the PR if no template has been used
const NO_TEMPLATE_MESSAGE =
"It looks like you didn't use one of the Pull Request templates. Please check [the contributing docs](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md). \
Also make sure that you didn't modify any of the checkboxes or headings within the template.";
// body data for future requests
const body_data = {
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
};
// Utility function to extract all headings
const extractHeadings = (markdown) => {
const headingRegex = /^(#{1,6})\s+(.+)$/gm;
const boldTextRegex = /^(?:\*\*|__)(.+?)(?:\*\*|__)\s*$/gm;
const headings = [];
let headingMatch;
while ((headingMatch = headingRegex.exec(markdown))) {
headings.push(headingMatch[2].trim());
}
let boldMatch;
while ((boldMatch = boldTextRegex.exec(markdown))) {
headings.push(boldMatch[1].trim());
}
return headings;
};
// Utility function to extract all check box descriptions
const extractCheckBoxTexts = (markdown) => {
const checkboxRegex = /^\s*-\s*\[( |x)\]\s+(.+)$/gm;
const checkboxes = [];
let match;
while ((match = checkboxRegex.exec(markdown))) {
checkboxes.push(match[2].trim());
}
return checkboxes;
};
// Utility function to check if a list is a subset of another list
isSubset = (subset, superset) => {
return subset.every((item) => superset.includes(item));
};
// Utility function to check if a list of checkboxes is a subset of another list of checkboxes
isCheckboxSubset = (templateCheckBoxTexts, prTextCheckBoxTexts) => {
// Check if each template checkbox text is a substring of at least one PR checkbox text
// (user should be allowed to add additional text)
return templateCheckBoxTexts.every((item) => prTextCheckBoxTexts.some((element) => element.includes(item)))
}
// Get filenames of all currently checked-in PR templates
const template_contents = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: ".github/PULL_REQUEST_TEMPLATE",
});
var template_filenames = [];
for (const content of template_contents.data) {
template_filenames.push(content.path);
}
console.debug("Received template filenames: " + template_filenames);
// Retrieve templates
var templates = [];
for (const template_filename of template_filenames) {
const template_response = await github.rest.repos.getContent({
owner: context.repo.owner,
repo: context.repo.repo,
path: template_filename,
});
// Convert Base64 content back
const decoded_template = atob(template_response.data.content);
const headings = extractHeadings(decoded_template);
const checkboxes = extractCheckBoxTexts(decoded_template);
if (!headings.length && !checkboxes.length) {
console.warn(
"Invalid template! Contains neither headings nor checkboxes, ignoring it: \n" +
decoded_template
);
} else {
templates.push({ headings: headings, checkboxes: checkboxes });
}
}
// Retrieve the PR Body
const pull_request = await github.rest.issues.get({
...body_data,
});
const pull_request_text = pull_request.data.body;
console.debug("Received Pull Request body: \n" + pull_request_text);
/* Check if the PR Body matches one of the templates
A template is defined by all headings and checkboxes it contains
We extract all Headings and Checkboxes from the PR text and check if any of the templates is a subset of that
*/
const pr_headings = extractHeadings(pull_request_text);
const pr_checkboxes = extractCheckBoxTexts(pull_request_text);
console.debug("Found Headings in PR body:\n" + pr_headings);
console.debug("Found Checkboxes in PR body:\n" + pr_checkboxes);
var template_found = false;
// Iterate over each template to check if it applies
for (const template of templates) {
console.log(
"Checking for headings: [" +
template.headings +
"] and checkboxes: [" +
template.checkboxes + "]"
);
if (
isCheckboxSubset(template.checkboxes, pr_checkboxes) &&
isSubset(template.headings, pr_headings)
) {
console.debug("Found matching template!");
template_found = true;
}
}
// List comments from previous runs
var existing_comments = [];
const comments = await github.rest.issues.listComments({
...body_data,
});
for (const comment of comments.data) {
if (comment.body === NO_TEMPLATE_MESSAGE) {
existing_comments.push(comment);
}
}
// Add a comment to the PR that it is not using a the template (but only if this comment does not exist already)
if (!template_found) {
var comment_already_sent = false;
// Add an 'in-bot-review' label since this PR doesn't have the template
github.rest.issues.addLabels({
...body_data,
labels: ["in-bot-review"],
});
if (existing_comments.length < 1) {
github.rest.issues.createComment({
...body_data,
body: NO_TEMPLATE_MESSAGE,
});
}
} else {
// If template has been found, delete any old comment about missing template
for (const existing_comment of existing_comments) {
github.rest.issues.deleteComment({
...body_data,
comment_id: existing_comment.id,
});
}
// Remove the 'in-bot-review' label after the review is done and the PR has passed
github.rest.issues.removeLabel({
...body_data,
name: "in-bot-review",
}).catch((error) => {
console.log("Label 'in-bot-review' not found, ignoring");
});
}
+4
View File
@@ -14,6 +14,8 @@ jobs:
name: create badges
runs-on: ubuntu-20.04
if: github.repository == 'commaai/openpilot'
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
@@ -23,6 +25,8 @@ jobs:
run: |
${{ env.RUN }} "scons -j$(nproc) && python selfdrive/ui/translations/create_badges.py"
rm .gitattributes
git checkout --orphan badges
git rm -rf --cached .
git config user.email "badge-researcher@comma.ai"
@@ -1,11 +1,5 @@
name: 'compile openpilot'
inputs:
cache_key_prefix:
description: 'Prefix for caching key'
required: false
default: 'scons'
runs:
using: "composite"
steps:
@@ -24,4 +18,4 @@ runs:
if: github.ref == 'refs/heads/master'
with:
path: .ci_cache/scons_cache
key: ${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}
key: scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}
+3 -2
View File
@@ -50,9 +50,10 @@ jobs:
cd openpilot-docs
git checkout --orphan tmp
git rm -rf --cached .
git rm -rf .
cp -r ../build/docs/html/ docs/
cp -r ../docs/README.md .
touch docs/.nojekyll
echo -n docs.comma.ai > docs/CNAME
git add -f .
@@ -60,4 +61,4 @@ jobs:
git commit -m "build docs"
# docs live in different repo to not bloat openpilot's full clone size
git push -f origin gh-pages
git push -f origin tmp:gh-pages
-18
View File
@@ -1,18 +0,0 @@
name: "Pull Request Labeler"
on:
pull_request_target:
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: false
- uses: actions/labeler@v5.0.0-alpha.1
with:
dot: true
configuration-path: .github/labeler.yaml
+6 -1
View File
@@ -15,14 +15,19 @@ jobs:
if: github.repository == 'commaai/openpilot'
env:
PUSH_IMAGE: true
permissions:
checks: read
contents: read
packages: write
steps:
- name: Wait for green check mark
if: ${{ github.event_name != 'workflow_dispatch' }}
uses: lewagon/wait-on-check-action@e2558238c09778af25867eb5de5a3ce4bbae3dcd
uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f
with:
ref: master
wait-interval: 30
running-workflow-name: 'build prebuilt'
repo-token: ${{ secrets.GITHUB_TOKEN }}
check-regexp: ^((?!.*(build master-ci).*).)*$
- uses: actions/checkout@v4
with:
+6 -2
View File
@@ -14,6 +14,9 @@ jobs:
image: ghcr.io/commaai/openpilot-base:latest
runs-on: ubuntu-20.04
if: github.repository == 'commaai/openpilot'
permissions:
checks: read
contents: write
steps:
- name: Install wait-on-check-action dependencies
run: |
@@ -21,11 +24,12 @@ jobs:
sudo apt-get install -y libyaml-dev
- name: Wait for green check mark
if: ${{ github.event_name != 'workflow_dispatch' }}
uses: lewagon/wait-on-check-action@e2558238c09778af25867eb5de5a3ce4bbae3dcd
uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f
with:
ref: master
wait-interval: 30
running-workflow-name: 'build master-ci'
repo-token: ${{ secrets.GITHUB_TOKEN }}
check-regexp: ^((?!.*(build prebuilt).*).)*$
- uses: actions/checkout@v4
with:
@@ -43,7 +47,7 @@ jobs:
export PYTHONPATH=$TARGET_DIR
cd $TARGET_DIR
scons -j$(nproc)
selfdrive/car/tests/test_car_interfaces.py
pytest -n logical selfdrive/car/tests/test_car_interfaces.py
- name: Push master-ci
run: |
unset TARGET_DIR
+7 -3
View File
@@ -2,7 +2,7 @@ name: repo maintenance
on:
schedule:
- cron: "0 12 * * 1" # every Monday at 12am UTC (4am PST)
- cron: "0 14 * * 1" # every Monday at 2am UTC (6am PST)
workflow_dispatch:
jobs:
@@ -11,6 +11,7 @@ jobs:
runs-on: ubuntu-20.04
container:
image: ghcr.io/commaai/openpilot-base:latest
if: github.repository == 'commaai/openpilot'
steps:
- uses: actions/checkout@v4
with:
@@ -25,16 +26,18 @@ jobs:
with:
token: ${{ secrets.ACTIONS_CREATE_PR_PAT }}
commit-message: bump submodules
title: 'Bump submodules'
title: '[bot] Bump submodules'
branch: auto-bump-submodules
base: master
delete-branch: true
body: 'Automatic PR from repo-maintenance -> bump_submodules'
labels: bot
package_updates:
name: package_updates
runs-on: ubuntu-20.04
container:
image: ghcr.io/commaai/openpilot-base:latest
if: github.repository == 'commaai/openpilot'
steps:
- uses: actions/checkout@v4
- name: poetry lock
@@ -50,8 +53,9 @@ jobs:
with:
token: ${{ secrets.ACTIONS_CREATE_PR_PAT }}
commit-message: Update Python packages and pre-commit hooks
title: 'Update Python packages and pre-commit hooks'
title: '[bot] Update Python packages and pre-commit hooks'
branch: auto-package-updates
base: master
delete-branch: true
body: 'Automatic PR from repo-maintenance -> package_updates'
labels: bot
+54 -42
View File
@@ -14,19 +14,14 @@ concurrency:
env:
PYTHONWARNINGS: error
BASE_IMAGE: openpilot-base
CL_BASE_IMAGE: openpilot-base-cl
AZURE_TOKEN: ${{ secrets.AZURE_COMMADATACI_OPENPILOTCI_TOKEN }}
DOCKER_LOGIN: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
BUILD: selfdrive/test/docker_build.sh base
RUN: docker run --shm-size 1G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e PYTHONWARNINGS=error -e FILEREADER_CACHE=1 -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/bash -c
RUN: docker run --shm-size 1G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e CI=1 -e PRE_COMMIT_HOME=/tmp/pre-commit -e PYTHONWARNINGS=error -e FILEREADER_CACHE=1 -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/pre-commit:/tmp/pre-commit -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/bash -c
BUILD_CL: selfdrive/test/docker_build.sh cl
RUN_CL: docker run --shm-size 1G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e PYTHONWARNINGS=error -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $CL_BASE_IMAGE /bin/bash -c
PYTEST: pytest --continue-on-collection-errors --cov --cov-report=xml --cov-append --durations=0 --durations-min=5 --hypothesis-seed 0
PYTEST: pytest --continue-on-collection-errors --cov --cov-report=xml --cov-append --durations=0 --durations-min=5 --hypothesis-seed 0 -n logical
jobs:
build_release:
@@ -42,6 +37,7 @@ jobs:
- name: Build devel
timeout-minutes: 1
run: TARGET_DIR=$STRIPPED_DIR release/build_devel.sh
- uses: ./.github/workflows/setup-pre-commit
- uses: ./.github/workflows/setup-with-retry
- name: Check submodules
if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
@@ -51,7 +47,7 @@ jobs:
timeout-minutes: ${{ ((steps.restore-scons-cache.outputs.cache-hit == 'true') && 10 || 30) }} # allow more time when we missed the scons cache
run: |
cd $STRIPPED_DIR
${{ env.RUN }} "CI=1 python selfdrive/manager/build.py"
${{ env.RUN }} "python selfdrive/manager/build.py"
- name: Run tests
timeout-minutes: 3
run: |
@@ -66,7 +62,7 @@ jobs:
cp pyproject.toml $STRIPPED_DIR
cp poetry.lock $STRIPPED_DIR
cd $STRIPPED_DIR
${{ env.RUN }} "unset PYTHONWARNINGS && SKIP=check-added-large-files pre-commit run --all"
${{ env.RUN }} "unset PYTHONWARNINGS && SKIP=check-added-large-files pre-commit run --all && chmod -R 777 /tmp/pre-commit"
build:
strategy:
@@ -75,7 +71,7 @@ jobs:
((github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && '["x86_64", "aarch64"]' || '["x86_64"]' ) }}
runs-on: ${{ (matrix.arch == 'aarch64') && 'buildjet-2vcpu-ubuntu-2204-arm' || 'ubuntu-20.04' }}
runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }}
steps:
- uses: actions/checkout@v4
with:
@@ -83,18 +79,15 @@ jobs:
- uses: ./.github/workflows/setup-with-retry
with:
docker_hub_pat: ${{ secrets.DOCKER_HUB_PAT }}
cache_key_prefix: scons_${{ matrix.arch }}
- uses: ./.github/workflows/compile-openpilot
timeout-minutes: ${{ ((steps.restore-scons-cache.outputs.cache-hit == 'true') && 15 || 30) }} # allow more time when we missed the scons cache
with:
cache_key_prefix: scons_${{ matrix.arch }}
docker_push:
name: docker push
strategy:
matrix:
arch: ${{ fromJson( (github.repository == 'commaai/openpilot') && '["x86_64", "aarch64"]' || '["x86_64"]' ) }}
runs-on: ${{ (matrix.arch == 'aarch64') && 'buildjet-2vcpu-ubuntu-2204-arm' || 'ubuntu-20.04' }}
runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }}
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot'
steps:
- uses: actions/checkout@v4
@@ -108,11 +101,6 @@ jobs:
- uses: ./.github/workflows/setup-with-retry
with:
docker_hub_pat: ${{ secrets.DOCKER_HUB_PAT }}
- name: Build and push CL Docker image
if: matrix.arch == 'x86_64'
run: |
unset TARGET_ARCHITECTURE
eval "$BUILD_CL"
docker_push_multiarch:
name: docker push multiarch tag
@@ -129,19 +117,22 @@ jobs:
- name: Merge x64 and arm64 tags
run: |
export PUSH_IMAGE=true
selfdrive/test/docker_tag_multiarch.sh base x86_64 aarch64
scripts/retry.sh selfdrive/test/docker_tag_multiarch.sh base x86_64 aarch64
static_analysis:
name: static analysis
runs-on: ubuntu-20.04
runs-on: ${{ ((github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-pre-commit
- uses: ./.github/workflows/setup-with-retry
- name: pre-commit
timeout-minutes: 4
run: ${{ env.RUN }} "unset PYTHONWARNINGS && pre-commit run --all"
run: ${{ env.RUN }} "unset PYTHONWARNINGS && pre-commit run --all && chmod -R 777 /tmp/pre-commit"
valgrind:
name: valgrind
@@ -163,12 +154,16 @@ jobs:
unit_tests:
name: unit tests
runs-on: ubuntu-20.04
runs-on: ${{ ((github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
with:
docker_hub_pat: ${{ secrets.DOCKER_HUB_PAT }}
- name: Build openpilot
timeout-minutes: ${{ ((steps.restore-scons-cache.outputs.cache-hit == 'true') && 10 || 30) }} # allow more time when we missed the scons cache
run: ${{ env.RUN }} "scons -j$(nproc)"
@@ -177,12 +172,10 @@ jobs:
run: |
${{ env.RUN }} "source selfdrive/test/setup_xvfb.sh && \
export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && \
$PYTEST --timeout 30 -m 'not slow' && \
$PYTEST --timeout 60 -m 'not slow' && \
./selfdrive/ui/tests/create_test_translations.sh && \
QT_QPA_PLATFORM=offscreen ./selfdrive/ui/tests/test_translations && \
./selfdrive/ui/tests/test_translations.py && \
./system/camerad/test/ae_gray_test && \
./selfdrive/test/process_replay/test_fuzzy.py"
./selfdrive/ui/tests/test_translations.py"
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v3
with:
@@ -194,7 +187,7 @@ jobs:
name: process replay
runs-on: ${{ ((github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'buildjet-8vcpu-ubuntu-2004' || 'ubuntu-20.04' }}
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }}
steps:
- uses: actions/checkout@v4
with:
@@ -214,7 +207,7 @@ jobs:
- name: Run replay
timeout-minutes: 30
run: |
${{ env.RUN }} "CI=1 coverage run selfdrive/test/process_replay/test_processes.py -j$(nproc) && \
${{ env.RUN }} "coverage run selfdrive/test/process_replay/test_processes.py -j$(nproc) && \
chmod -R 777 /tmp/comma_download_cache && \
coverage combine && \
coverage xml"
@@ -231,7 +224,7 @@ jobs:
- name: Upload reference logs
if: ${{ failure() && steps.print-diff.outcome == 'success' && github.repository == 'commaai/openpilot' && env.AZURE_TOKEN != '' }}
run: |
${{ env.RUN }} "unset PYTHONWARNINGS && CI=1 AZURE_TOKEN='$AZURE_TOKEN' python selfdrive/test/process_replay/test_processes.py -j$(nproc) --upload-only"
${{ env.RUN }} "unset PYTHONWARNINGS && AZURE_TOKEN='$AZURE_TOKEN' python selfdrive/test/process_replay/test_processes.py -j$(nproc) --upload-only"
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v3
with:
@@ -255,15 +248,13 @@ jobs:
key: regen-${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/test_regen.py') }}
- name: Build base Docker image
run: eval "$BUILD"
- name: Build Docker image
run: eval "$BUILD_CL"
- name: Build openpilot
run: |
${{ env.RUN }} "scons -j$(nproc)"
- name: Run regen
timeout-minutes: 30
run: |
${{ env.RUN_CL }} "ONNXCPU=1 $PYTEST selfdrive/test/process_replay/test_regen.py && \
${{ env.RUN }} "ONNXCPU=1 $PYTEST selfdrive/test/process_replay/test_regen.py && \
chmod -R 777 /tmp/comma_download_cache"
test_modeld:
@@ -276,9 +267,6 @@ jobs:
- uses: ./.github/workflows/setup-with-retry
- name: Build base Docker image
run: eval "$BUILD"
- name: Build Docker image
# Sim docker is needed to get the OpenCL drivers
run: eval "$BUILD_CL"
- name: Build openpilot
run: |
${{ env.RUN }} "scons -j$(nproc)"
@@ -286,14 +274,14 @@ jobs:
- name: Run model replay with ONNX
timeout-minutes: 4
run: |
${{ env.RUN_CL }} "unset PYTHONWARNINGS && \
ONNXCPU=1 CI=1 NO_NAV=1 coverage run selfdrive/test/process_replay/model_replay.py && \
${{ env.RUN }} "unset PYTHONWARNINGS && \
ONNXCPU=1 NO_NAV=1 coverage run selfdrive/test/process_replay/model_replay.py && \
coverage combine && \
coverage xml"
- name: Run unit tests
timeout-minutes: 4
run: |
${{ env.RUN_CL }} "unset PYTHONWARNINGS && \
${{ env.RUN }} "unset PYTHONWARNINGS && \
$PYTEST selfdrive/modeld"
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v3
@@ -304,7 +292,9 @@ jobs:
test_cars:
name: cars
runs-on: ubuntu-20.04
runs-on: ${{ ((github.repository == 'commaai/openpilot') &&
((github.event_name != 'pull_request') ||
(github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }}
strategy:
fail-fast: false
matrix:
@@ -316,14 +306,14 @@ jobs:
- uses: ./.github/workflows/setup-with-retry
- name: Cache test routes
id: dependency-cache
uses: actions/cache@v3
uses: ./.github/workflows/auto-cache
with:
path: .ci_cache/comma_download_cache
key: car_models-${{ hashFiles('selfdrive/car/tests/test_models.py', 'selfdrive/car/tests/routes.py') }}-${{ matrix.job }}
- name: Build openpilot
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Test car models
timeout-minutes: 25
timeout-minutes: 10
run: |
${{ env.RUN }} "$PYTEST selfdrive/car/tests/test_models.py && \
chmod -R 777 /tmp/comma_download_cache"
@@ -390,3 +380,25 @@ jobs:
repo: context.repo.repo,
comment_id: ${{ steps.fc.outputs.comment-id }}
})
create_ui_report:
name: Create UI Report
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Build openpilot
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Create Test Report
run: >
${{ env.RUN }} "PYTHONWARNINGS=ignore &&
source selfdrive/test/setup_xvfb.sh &&
export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' &&
python selfdrive/ui/tests/test_ui/run.py"
- name: Upload Test Report
uses: actions/upload-artifact@v2
with:
name: report
path: selfdrive/ui/tests/test_ui/report
@@ -0,0 +1,12 @@
name: 'set up pre-commit environment'
runs:
using: "composite"
steps:
- uses: ./.github/workflows/auto-cache
with:
path: .ci_cache/pre-commit
key: pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }}
restore-keys: |
pre-commit-
save: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' }}
@@ -5,10 +5,6 @@ inputs:
description: 'Auth token for Docker Hub, required for BuildJet jobs'
required: false
default: ''
cache_key_prefix:
description: 'Prefix for caching key'
required: false
default: 'scons_x86_64'
sleep_time:
description: 'Time to sleep between retries'
required: false
@@ -22,7 +18,6 @@ runs:
continue-on-error: true
with:
docker_hub_pat: ${{ inputs.docker_hub_pat }}
cache_key_prefix: ${{ inputs.cache_key_prefix }}
is_retried: true
- if: steps.setup1.outcome == 'failure'
shell: bash
@@ -33,7 +28,6 @@ runs:
continue-on-error: true
with:
docker_hub_pat: ${{ inputs.docker_hub_pat }}
cache_key_prefix: ${{ inputs.cache_key_prefix }}
is_retried: true
- if: steps.setup2.outcome == 'failure'
shell: bash
@@ -43,5 +37,4 @@ runs:
uses: ./.github/workflows/setup
with:
docker_hub_pat: ${{ inputs.docker_hub_pat }}
cache_key_prefix: ${{ inputs.cache_key_prefix }}
is_retried: true
+5 -20
View File
@@ -5,10 +5,6 @@ inputs:
description: 'Auth token for Docker Hub, required for BuildJet jobs'
required: true
default: ''
cache_key_prefix:
description: 'Prefix for caching key'
required: true
default: 'scons_x86_64'
is_retried:
description: 'A mock param that asserts that we use the setup-with-retry instead of this action directly'
required: false
@@ -47,19 +43,14 @@ runs:
run: echo "CACHE_COMMIT_DATE=$(git log -1 --pretty='format:%cd' --date=format:'%Y-%m-%d-%H:%M')" >> $GITHUB_ENV
- shell: bash
run: echo "$CACHE_COMMIT_DATE"
- id: restore-scons-cache
uses: actions/cache/restore@v3
- id: scons-cache
uses: ./.github/workflows/auto-cache
with:
path: .ci_cache/scons_cache
key: ${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}
key: scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }}
restore-keys: |
${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}-
${{ inputs.cache_key_prefix }}-
# if we didn't get a cache hit, make the directory manually so it doesn't fail on future steps
- id: scons-cache-setup
shell: bash
if: steps.restore-scons-cache.outputs.cache-hit != 'true'
run: mkdir -p $GITHUB_WORKSPACE/.ci_cache/scons_cache
scons-${{ runner.arch }}-${{ env.CACHE_COMMIT_DATE }}
scons-${{ runner.arch }}
# as suggested here: https://github.com/moby/moby/issues/32816#issuecomment-910030001
- id: normalize-file-permissions
shell: bash
@@ -67,12 +58,6 @@ runs:
run: |
find . -type f -executable -not -perm 755 -exec chmod 755 {} \;
find . -type f -not -executable -not -perm 644 -exec chmod 644 {} \;
- id: setup-buildx-action
if: contains(runner.name, 'buildjet')
name: Set up Docker Buildx on buildjet to ensure a consistent cache
uses: docker/setup-buildx-action@v2
with:
driver: docker-container
# build our docker image
- shell: bash
run: eval ${{ env.BUILD }}
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
stale-pr-message: 'This PR has had no activity for ${{ env.DAYS_BEFORE_PR_STALE }} days. It will be automatically closed in ${{ env.DAYS_BEFORE_PR_CLOSE }} days if there is no activity.'
close-pr-message: 'This PR has been automatically closed due to inactivity. Feel free to re-open once activity resumes.'
delete-branch: ${{ github.event.pull_request.head.repo.full_name == 'commaai/openpilot' }} # only delete branches on the main repo
exempt-pr-labels: "ignore stale,needs testing" # if wip or it needs testing from the community, don't mark as stale
exempt-pr-labels: "ignore stale,needs testing,car port" # if wip or it needs testing from the community, don't mark as stale
days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }}
days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }}
+21 -10
View File
@@ -12,17 +12,12 @@ concurrency:
env:
BASE_IMAGE: openpilot-base
CL_BASE_IMAGE: openpilot-base-cl
DOCKER_LOGIN: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }}
BUILD: selfdrive/test/docker_build.sh base
RUN: docker run --shm-size 1G -v $GITHUB_WORKSPACE:/tmp/openpilot -w /tmp/openpilot -e FILEREADER_CACHE=1 -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $BASE_IMAGE /bin/bash -c
BUILD_CL: selfdrive/test/docker_build.sh cl
RUN_CL: docker run --shm-size 1G -v $GITHUB_WORKSPACE:/tmp/openpilot -w /tmp/openpilot -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v $GITHUB_WORKSPACE/.ci_cache/scons_cache:/tmp/scons_cache -v $GITHUB_WORKSPACE/.ci_cache/comma_download_cache:/tmp/comma_download_cache -v $GITHUB_WORKSPACE/.ci_cache/openpilot_cache:/tmp/openpilot_cache $CL_BASE_IMAGE /bin/bash -c
jobs:
plotjuggler:
@@ -52,8 +47,6 @@ jobs:
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Build base cl image
run: eval "$BUILD_CL"
- name: Setup to push to repo
if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
run: |
@@ -81,11 +74,29 @@ jobs:
- name: Run dev container
run: |
mkdir -p /tmp/devcontainer_scons_cache/
cp -r $GITHUB_WORKSPACE/.ci_cache/scons_cache/* /tmp/devcontainer_scons_cache/
cp -r $GITHUB_WORKSPACE/.ci_cache/scons_cache/. /tmp/devcontainer_scons_cache/
devcontainer up --workspace-folder .
- name: Test environment
run: |
devcontainer exec --workspace-folder . scons -j$(nproc)
devcontainer exec --workspace-folder . scons -j$(nproc) cereal/ common/
devcontainer exec --workspace-folder . pip install pip-install-test
devcontainer exec --workspace-folder . touch /home/batman/.comma/auth.json
devcontainer exec --workspace-folder . sudo touch /root/test.txt
devcontainer exec --workspace-folder . sudo touch /root/test.txt
notebooks:
name: notebooks
runs-on: ubuntu-20.04
if: github.repository == 'commaai/openpilot'
timeout-minutes: 45
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/workflows/setup-with-retry
- name: Build openpilot
timeout-minutes: ${{ ((steps.restore-scons-cache.outputs.cache-hit == 'true') && 10 || 30) }} # allow more time when we missed the scons cache
run: ${{ env.RUN }} "scons -j$(nproc)"
- name: Test notebooks
timeout-minutes: 3
run: |
${{ env.RUN }} "pip install nbmake && pytest --nbmake tools/car_porting/examples/"
-1
View File
@@ -10,7 +10,6 @@ venv/
.overlay_init
.overlay_consistent
.sconsign.dblite
.vscode*
model2.png
a.out
.hypothesis
+3 -3
View File
@@ -1,12 +1,12 @@
[submodule "panda"]
path = panda
url = ../../commaai/panda.git
url = ../../sunnyhaibin/panda.git
[submodule "opendbc"]
path = opendbc
url = ../../commaai/opendbc.git
url = ../../sunnyhaibin/opendbc.git
[submodule "cereal"]
path = cereal
url = ../../commaai/cereal.git
url = ../../sunnyhaibin/cereal.git
[submodule "rednose_repo"]
path = rednose_repo
url = ../../commaai/rednose.git
+22 -10
View File
@@ -10,7 +10,7 @@ repos:
- id: check-ast
exclude: '^(third_party)/'
- id: check-json
exclude: '.devcontainer/devcontainer.json' # this supports JSON with comments
exclude: '.devcontainer/devcontainer.json|.vscode/' # these support JSON with comments
- id: check-toml
- id: check-xml
- id: check-yaml
@@ -19,8 +19,9 @@ repos:
- id: check-executables-have-shebangs
- id: check-shebang-scripts-are-executable
- id: check-added-large-files
exclude: '(docs/CARS.md)|(poetry.lock)|(third_party/acados/include/blasfeo/include/blasfeo_d_kernel.h)'
args:
- --maxkb=500
- --maxkb=120
- --enforce-all
- repo: https://github.com/codespell-project/codespell
rev: v2.2.6
@@ -31,6 +32,11 @@ repos:
# if you've got a short variable name that's getting flagged, add it here
- -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints
- --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.2
hooks:
- id: ruff
exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)'
- repo: local
hooks:
- id: mypy
@@ -38,13 +44,10 @@ repos:
entry: mypy
language: system
types: [python]
args: ['--explicit-package-bases', '--local-partial-types']
args:
- --local-partial-types
- --explicit-package-bases
exclude: '^(third_party/)|(cereal/)|(opendbc/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)|(xx/)'
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
hooks:
- id: ruff
exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)'
- repo: local
hooks:
- id: cppcheck
@@ -71,6 +74,14 @@ repos:
# https://google.github.io/styleguide/cppguide.html
# relevant rules are whitelisted, see all options with: cpplint --filter=
- --filter=-build,-legal,-readability,-runtime,-whitespace,+build/include_subdir,+build/forward_decl,+build/include_what_you_use,+build/deprecated,+whitespace/comma,+whitespace/line_length,+whitespace/empty_if_body,+whitespace/empty_loop_body,+whitespace/empty_conditional_body,+whitespace/forcolon,+whitespace/parens,+whitespace/semicolon,+whitespace/tab,+readability/braces
- repo: https://github.com/MarcoGorelli/cython-lint
rev: v0.16.0
hooks:
- id: cython-lint
exclude: '^(third_party/)|(cereal/)|(body/)|(rednose/)|(rednose_repo/)|(opendbc/)|(panda/)|(generated/)'
args:
- --max-line-length=240
- --ignore=E111, E302, E305
- repo: local
hooks:
- id: test_translations
@@ -78,14 +89,15 @@ repos:
entry: selfdrive/ui/tests/test_translations.py
language: script
pass_filenames: false
files: 'selfdrive/ui/translations/*'
- repo: https://github.com/python-poetry/poetry
rev: '1.7.0'
rev: '1.8.0'
hooks:
- id: poetry-check
name: validate poetry lock
args:
- --lock
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.27.2
rev: 0.28.0
hooks:
- id: check-github-workflows
+8
View File
@@ -0,0 +1,8 @@
{
"recommendations": [
"ms-python.python",
"ms-vscode.cpptools",
"elagil.pre-commit-helper",
"charliermarsh.ruff",
]
}
+47
View File
@@ -0,0 +1,47 @@
{
"version": "0.2.0",
"inputs": [
{
"id": "python_process",
"type": "pickString",
"description": "Select the process to debug",
"options": [
"selfdrive/controls/controlsd.py",
"selfdrive/navd/navd.py",
"system/timed/timed.py",
"tools/sim/run_bridge.py"
]
},
{
"id": "cpp_process",
"type": "pickString",
"description": "Select the process to debug",
"options": [
"selfdrive/ui/ui"
]
},
{
"id": "args",
"description": "Arguments to pass to the process",
"type": "promptString"
}
],
"configurations": [
{
"name": "Python: openpilot Process",
"type": "debugpy",
"request": "launch",
"program": "${input:python_process}",
"console": "integratedTerminal",
"justMyCode": true,
"args": "${input:args}"
},
{
"name": "C++: openpilot Process",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${input:cpp_process}",
"cwd": "${workspaceFolder}",
}
]
}
+16
View File
@@ -0,0 +1,16 @@
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.renderWhitespace": "trailing",
"files.trimTrailingWhitespace": true,
"search.exclude": {
"**/.git": true,
"**/.venv": true,
"**/__pycache__": true
},
"files.exclude": {
"**/.git": true,
"**/.venv": true,
"**/__pycache__": true
}
}
+855
View File
@@ -0,0 +1,855 @@
sunnypilot - 0.9.7.0 (2024-xx-xx)
========================
* New driving model
* Support for many hybrid Ford models
************************
* UPDATED: Synced with commaai's openpilot
* master commit 56e343b (February 27, 2024)
* NEW❗: iOS Siri Shortcuts Navigation support thanks to twilsonco and mike86437!
* iOS and macOS Shortcuts to quickly set navigation destinations from your iOS device
* comma Prime support
* Personal Mapbox/Amap/Google Maps token support
* Instructions on how to set up your iOS Siri Shortcuts: https://routinehub.co/shortcut/17677/
sunnypilot - 0.9.6.1 (2024-02-27)
========================
* New driving model
* Vision model trained on more data
* Improved driving performance
* Directly outputs curvature for lateral control
* New driver monitoring model
* Trained on larger dataset
* AGNOS 9
* comma body streaming and controls over WebRTC
* Improved fuzzy fingerprinting for many makes and models
* Alpha longitudinal support for new Toyota models
* Chevrolet Equinox 2019-22 support thanks to JasonJShuler and nworb-cire!
* Dodge Durango 2020-21 support
* Hyundai Staria 2023 support thanks to sunnyhaibin!
* Kia Niro Plug-in Hybrid 2022 support thanks to sunnyhaibin!
* Lexus LC 2024 support thanks to nelsonjchen!
* Toyota RAV4 2023-24 support
* Toyota RAV4 Hybrid 2023-24 support
************************
* UPDATED: Synced with commaai's openpilot
* master commit db57a21 (February 22, 2024)
* v0.9.6 release (February 27, 2024)
* UPDATED: Dynamic Experimental Control (DEC)
* Synced with dragonpilot-community/dragonpilot:beta3 commit f4ee52f
* NEW❗: Default Driving Model: Certified Herbalist v2 (February 13, 2024)
* UPDATED: Driving Model Selector v3
* NEW❗: Driving Model additions
* Certified Herbalist v2 (February 13, 2024) - CHv2
* Certified Herbalist (February 5, 2024) - CH
* Los Angeles v2 (January 24, 2024) - LAv2
* Los Angeles (January 22, 2024) - LAv1
* NEW❗: Model Caching thanks to DevTekVE!
* Model caching allows the selection of previously downloaded Driving Model
* Users can now access cached versions of selected models, eliminating redundant downloads for previously fetched models
* Legacy Driving Models support
* New Delhi (December 21, 2023) - ND
* Blue Diamond v2 (December 11, 2023) - BDv2
* Blue Diamond (November 18, 2023) - BDv1
* Farmville (November 7, 2023) - FV
* Night Strike (October 3, 2023) - NS
* Certain features are deprecated with newer Driving Models
* Dynamic Lane Profile (DLP)
* Custom Offsets
* UPDATED: Dynamic Lane Profile (DLP)
* Continued support for Legacy Driving Models (e.g., ND, BDv2, BDv1, FV, NS)
* Deprecated support for newer Driving Models (e.g., CHv2, CH, LAv2, LAv1)
* UPDATED: Custom Offsets
* Continued support for Legacy Driving Models (e.g., ND, BDv2, BDv1, FV, NS)
* Deprecated support for newer Driving Models (e.g., CHv2, CH, LAv2, LAv1)
* UPDATED: Hyundai/Kia/Genesis - ESCC Radar Interceptor
* Message parsing improvements with the latest firmware update: https://github.com/sunnypilot/panda/tree/test-escc-smdps
* UI Updates
* NEW❗: Visuals: Display Feature Status toggle
* Display the statuses of certain features on the driving screen
* NEW❗: Visuals: Enable Onroad Settings toggle
* Display the Onroad Settings button on the driving screen to adjust feature options on the driving screen, without navigating into the settings menu
* REMOVED: "Device ambient" temperature option on the sidebar
* FIXED: New comma 3X support
* FIXED: New comma eSIM support
* Bug fixes and performance improvements
sunnypilot - 0.9.5.3 (2023-12-24)
========================
* UPDATED: Dynamic Experimental Control (DEC)
* Synced with dragonpilot-community/dragonpilot:lp-dp-beta2 commit 578d38b
* UPDATED: Driving Model Selector v2
* Driving models sort in descending order based on availability date
* Experimental/unmerged driving models are only available in "dev-c3" branch
* To select and use experimental driving models, navigate to "Software" panel, select the "dev-c3" branch, and check for update
* UPDATED: Vision-based Turn Speed Control (V-TSC) implementation
* Refactored implementation thanks to pfeiferj!
* More accurate and consistent velocity calculation to achieve smoother longitudinal control in curves
* NEW❗: Speed Limit Warning
* Display alert and/or chime to warn the driver when the cruising speed is faster than the speed limit plus the Warning Offset
* Customizable Warning Offset, independent of Speed Limit Control (SLC)'s Limit Offset
* UPDATED: Speed Limit Source Policy
* Selectable speed limit source for Speed Limit Control and Speed Limit Warning
* Applicable to: Speed Limit Control, Speed Limit Warning
* UPDATED: Speed Limit Control (SLC)
* Engage Mode: Removed "Warning Only" mode - this has been replaced by the new Speed Limit Warning sub-menu
* UPDATED: OpenStreetMap (OSM) implementation
* Refactored implementation thanks to pfeiferj!
* Less resource impact
* Significantly smaller sizes with databases
* All regions are available to download
* Weekly map updates thanks to pfeiferj!
* Increased the font size of the road name
* C3X-specific changes
* Altitude (ALT.) display on Developer UI
* Current street name on top of driving screen when "OSM Debug UI" is enabled
* UPDATED: Map-based Turn Speed Control (M-TSC) implementation
* Only available in "staging-c3" and "dev-c3" branches. If you are using "release-c3" branch, navigate to "Software" panel, select the desired target branch, and check for update
* Refactored implementation thanks to pfeiferj!
* Based on the new OpenStreetMap implementation
* Improved predicted curvature calculations from OpenStreetMap data
* UI updates
* RE-ENABLED: Navigation: Full screen support
* Display the map view in full screen
* To switch back to driving view, tap on the border edge
* Hyundai Bayon Non-SCC 2019 support thanks to polein78!
sunnypilot - 0.9.5.2 (2023-12-07)
========================
* NEW❗: MADS: Allow Navigate on openpilot in Chill Mode
* Allow navigation to feed map view into the driving model while using Chill Mode
* Support all platforms, including platforms that do not support openpilot longitudinal control & Experimental Mode
* NEW❗: Neural Network Lateral Controller
* Formerly known as "NNFF", this replaces the lateral "torque" controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy
* Contact @twilsonco in the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported
* NEW❗: Driving Model Selector
* Easily switch between driving models without reinstalling branches. Offering immediate access to the latest models upon release
* An internet connection is required for downloading models. Each model switch currently involves downloading the model again. Future updates may allow for offline switching
* Warning is displayed for metered connections to avoid unexpected data usage if on cellular data
* Change driving models via **Settings -> Software -> Current Driving Model**.
* NEW❗: Hyundai CAN longitudinal:
* NEW❗: Enable radar tracks for certain Santa Fe platforms
* Internal Combustion Engine (ICE) 2021-23
* Hybrid 2022-23
* Plug-in Hybrid 2022-23
* NEW❗: Lane Change: When manually braking with steering engaged, turning on the turn signal will default to Nudge mode
* Volkswagen MQB CC only platforms (radar or no radar) support thanks to jyoung8607!
sunnypilot - 0.9.5.1 (2023-11-17)
========================
* UPDATED: Synced with commaai's master commit e94c3c5
* NEW❗: Farmville driving model
* NEW❗: Onroad Settings Panel
* Onroad buttons (i.e., DLP, GAC) moved to its dedicated panel
* Driving Personality
* Dynamic Lane Profile (DLP)
* Dynamic Experimental Control (DEC)
* Speed Limit Control (SLC)
* NEW❗: Display main feature status on onroad view in real-time
* GAP - Driving Personality
* DLP - Dynamic Lane Profile
* DEC - Dynamic Experimental Control
* SLC - Speed Limit Control
* NEW❗: Dynamic Experimental Control (DEC) thanks to dragonpilot-community!
* Automatically determines and selects between openpilot ACC and openpilot End to End longitudinal based on conditions for a more natural drive
* Dynamic Experimental Control is only active while in Experimental Mode
* When Dynamic Experimental Control is ON, initially setting cruise speed will set to the vehicle's current speed
* NEW❗: Hyundai CAN longitudinal:
* NEW❗: Parse lead info for camera-based SCC platforms
* Improve lead tracking when using openpilot longitudinal
* NEW❗: Parse lead distance to display on car cluster
* Introduced better lead distance calculation to display on the car's cluster, replacing the binary "lead visible" indication on the SCC cluster
* Lead distance is now categorized into different ranges for more detailed and comprehensive information to the driver similar to how stock ACC does it
* NEW❗: Parse speed limit sign recognition from camera for certain supported platforms
* NEW❗: Subaru - Stop and Go auto-resume support thanks to martinl!
* Global (excluding Gen 2 and Hybrid) and Pre-Global support
* NEW❗: Toyota - Stop and Go hack
* Allow some Toyota/Lexus cars to auto resume during stop and go traffic
* Only applicable to certain models and model years
* NEW❗: Toyota: ZSS support thanks to dragonpilot-community and ErichMoraga!
* NEW❗: MSPA (Cereal structs refactor)
* Make sunnypilot Parsable Again - @sshane
* sunnypilot is now parsable with stock openpilot tools
* NEW❗: Display 3D buildings on map thanks to jakethesnake420!
* openpilot Longitudianl Control capable cars only
* UPDATED: Gap Adjust Cruise is now a part of Driving Personality
* [DISTANCE/FOLLOW DISTANCE/GAP DISTANCE] physical button on the steering wheel to select Driving Personality on by default
* Status now viewable in onroad view or Onroad Settings Panel
* REMOVED: Gap Adjust Cruise toggle
* UPDATED: Speed Limit Control (SLC)
* NEW❗: Speed Limit Engage Mode
* Select the desired mode to set the cruising speed to the speed limit
* Warning Only: Warn the driver when the vehicle is driven faster than the speed limit
* Auto: Automatic speed adjustment on motorways based on speed limit data
* User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit
* Supported platforms
* openpilot Longitudinal Control available cars (Excluding certain Toyota/Lexus, Ford, explained below)
* Custom Stock Longitudinal Control available cars
* Unsupported platforms
* Toyota/Lexus and Ford - most platforms do not allow us to control the PCM's set speed, requires testers to verify
* NEW❗: Speed limit source selector
* Select the desired precedence order of sources used to adapt cruise speed to road limits
* UPDATED: Custom Stock Longitudinal Control
* RE-ENABLED: Hyundai/Kia/Genesis CAN-FD platforms
* UPDATED: Custom Offsets reimplementation
* Camera Offset only works in Laneful (Laneful Only or Laneful in Auto mode when using Dynamic Lane Profile)
* Path Offset can be applied to both Laneless and Laneful
* UPDATED: Refactored Torque Lateral Control custom tuning menu
* NEW❗: Less Restrict Settings for Self-Tune (Beta)
* NEW❗: Custom Tuning for setting offline and live values in real-time
* UPDATED: Auto-detect custom Mapbox token if a personal Mapbox token is provided
* REMOVED: "Enable Mapbox Navigation" toggle
* UI updates
* New Settings menu redesign and improved interactions
* FIXED: Retain hotspot/tethering state was not consistently saved
* FIXED: Map stuck in "Map Loading" if comma Prime is active
* FIXED: OpenStreetMap implementation on C3X devices
* M-TSC
* Altitude (ALT.) display on Developer UI
* Current street name on top of driving screen when "OSM Debug UI" is enabled
* Hyundai Kona Non-SCC 2019 support thanks to Quex!
* Kia Seltos Non-SCC 2023-24 support thanks to Moodkiller and jeroid_!
sunnypilot - 0.9.4.1 (2023-08-11)
========================
* UPDATED: Synced with commaai's 0.9.4 release
* NEW❗: Moonrise driving model
* NEW❗: Ford upstream models support
* UPDATED: Dynamic Lane Profile selector in the "SP - Controls" menu
* REMOVED: Dynamic Lane Profile driving screen UI button
* FIXED: Disallow torque lateral control for angle control platforms (e.g. Ford, Nissan, Tesla)
* Torque lateral control cannot be used by angle control platforms, and would cause a "Controls Unresponsive" error if Torque lateral control is enforced in settings
* REMOVED: Speed Limit Style override
* Honda Accord 2016-17 support thanks to mlocoteta!
* Serial Steering hardware required. For more information, see https://github.com/mlocoteta/serialSteeringHardware
* mapd: utilize advisory speed limit in curves (#142) thanks to pfeiferj!
sunnypilot - 0.9.3.1 (2023-07-09)
========================
* UPDATED: Synced with commaai's 0.9.3 release
* NEW❗: Display Temperature on Sidebar toggle
* Display Ambient temperature, memory temperature, CPU core with the highest temperature, GPU temperature, or max of Memory/CPU/GPU on the sidebar
* Replace "Display CPU Temperature on Sidebar" toggle
* NEW❗: Hot Coffee driving model
* NEW❗: HKG CAN: Smoother Stopping Performance (Beta) toggle
* Smoother stopping behind a stopped car or desired stopping event.
* This is only applicable to HKG CAN platforms using openpilot longitudinal control
* NEW❗: Toyota: TSS2 longitudinal: Custom Tuning
* Smoother longitudinal performance for Toyota/Lexus TSS2/LSS2 cars thanks to dragonpilot-community!
* NEW❗: Enable Screen Recorder toggle
* Enable this will display a button on the onroad screen to toggle on or off real-time screen recording with UI elements.
* IMPROVED: Dynamic Lane Profile: when using Laneline planner via Laneline Mode or Auto Mode, enforce Laneless planner while traveling below 10 MPH or 16 km/h
* REMOVED: Display CPU Temperature on Sidebar
sunnypilot - 0.9.2.3 (2023-06-18)
========================
* NEW❗: Auto Lane Change: Delay with Blind Spot
* Toggle to enable a delay timer for seamless lane changes when blind spot monitoring (BSM) detects an obstructing vehicle, ensuring safe maneuvering
* NEW❗: Driving Screen Off: Wake with Non-Critical Events
* When Driving Screen Off Timer is not set to "Always On":
* Enabled: Wake the brightness of the screen to display all events
* Disabled: Wake the brightness of the screen to display critical events
* Currently, all non-nudge modes are default to continue lane change after 1 seconds of blind spot detection
* NEW❗: Fleet Manager PIN Requirement toggle
* User can now enable or disable PIN requirement on the comma device before accessing Fleet Manager
* NEW❗: Reset all sunnypilot settings toggle
* NEW❗: Turn signals display on screen when blinker is used
* Green: Blinker is on
* Red: Blinker is on, car detected in the adjacent blind spot or road edge detected
* IMPROVED: mapd: better exceptions handling when loading dependencies
* UPDATED: Green Traffic Light Chime no longer displays an orange border when executed
* FIXED: mapd: Road name flashing caused by desync with last GPS timestamp
* FIXED: Ram HD (2500/3500): Ignore paramsd sanity check
* Live parameters have trouble with self-tuning on this platform with upstream openpilot 0.9.2
* Hyundai: Longitudinal support for CAN-based Camera SCC cars thanks to Zack1010OP's Patreon sponsor!
sunnypilot - 0.9.2.2 (2023-06-13)
========================
* NEW❗: Toyota: Allow M.A.D.S. toggling with LKAS Button (Beta)
* IMPROVED: Ram: cruise button handling
sunnypilot - 0.9.2.1 (2023-06-10)
========================
* UPDATED: Synced with commaai's 0.9.2 release
* UPDATED: feature revamp with better stability
* UPDATED:
* M.A.D.S.
* Path color becomes LIGHT ORANGE during Driver Steering Override
* Gap Adjust Cruise (now known as Driving Personality in upstream openpilot 0.9.3):
* Updated profiles and jerk changes
* Experimental Mode support
* Three settings: Stock, Aggressive, and Maniac
* Stock is recommended and the default
* In Aggressive/Maniac mode, lead follow distance is shorter and quicker gas/brake response
* Dynamic Lane Profile
* Display blue borders on both sides of the driving path when Laneline mode is being used in the planner
* Auto Mode optimization
* Permanent: Laneless during Auto Lane Change execution
* Mapd
* OpenStreetMap Database: new regions added
* Developer UI (Dev UI)
* REMOVED: 2-column design
* NEW❗: 1-column + 1-row design
* Custom Stock Longitudinal Control
* NEW❗: Chrysler/Jeep/Ram support
* NEW❗: Mazda support
* NEW❗: Volkswagen PQ support
* DISABLED: Hyundai/Kia/Genesis CAN-FD platforms
* NEW❗: Switch between Chill (openpilot ACC) and Experimental (E2E longitudinal) with DISTANCE button on the steering wheel
* To switch between Chill and Experimental Mode: press and hold the DISTANCE button on the steering wheel for over 0.5 second
* All openpilot longitudinal capable cars support
* NEW❗: Nicki Minaj driving model
* NEW❗: Nissan and Mazda upstream models support
* NEW❗: Pre-Global Subaru upstream models support
* NEW❗: Display End-to-end Longitudinal Status (Beta)
* Display an icon that appears when the End-to-end model decides to start or stop
* NEW❗: Green Traffic Light Chime (Beta)
* A chime will play when the traffic light you are waiting for turns green, and you have no vehicle in front of you.
* NEW❗: Lead Vehicle Departure Alert
* Notify when the leading vehicle drives away
* NEW❗: Speedometer: Display True Speed
* Display the true vehicle current speed from wheel speed sensors.
* NEW❗: Speedometer: Hide from Onroad Screen
* NEW❗: Auto-Hide UI Buttons
* Hide UI buttons on driving screen after a 30-second timeout. Tap on the screen at anytime to reveal the UI buttons
* Applicable to Dynamic Lane Profile (DLP) and Gap Adjust Cruise (GAC)
* NEW❗: Display DM Camera in Reverse Gear
* Show Driver Monitoring camera while the car is in reverse gear
* NEW❗: Block Lane Change: Road Edge Detection (Beta)
* Block lane change when road edge is detected on the stalk actuated side
* NEW❗: Display CPU Temperature on Sidebar
* Display the CPU core with the highest temperature on the sidebar
* NEW❗: Display current driving model in Software settings
* NEW❗: HKG: smartMDPS automatic detection (installed with applicable firmware)
* FIXED: Unintended siren/alarm from the comma device if the vehicle is turned off too quickly in PARK gear
* FIXED: mapd: Exception handling for loading dependencies
* Fleet Manager via Browser support thanks to actuallylemoncurd, AlexandreSato, ntegan1, and royjr!
* Access your dashcam footage, screen recordings, and error logs when the car is turned off
* Connect to the device via Wi-Fi, mobile hotspot, or tethering on the comma device, then navigate to http://ipAddress:5050 to access.
* Honda Clarity 2018-22 support thanks to mcallbosco, vanillagorillaa and wirelessnet2!
* Ram: Steer to 0/7 MPH support thanks to vincentw56!
* Retain hotspot/tethering state across reboots thanks to rogerioaguas!
sunnypilot - Version Latest (2023-02-22)
========================
* UPDATED: Synced with commaai's master branch - 2023.02.19-04:52:00:GMT - 0.9.2
* Refactor sunnypilot features to be more stable
sunnypilot - Version Latest (2022-12-16)
========================
* UPDATED: Synced with commaai's master branch - 2022.12.16-06:31:00:GMT - 0.9.1
* NEW❗: GM:
* NEW❗: Gap Adjust Cruise support - Chill, Normal, Aggressive
* NEW❗: Experimental Mode: Hold DISTANCE button on the steering wheel for 0.5 second to switch between Experimental Mode and Chill Mode
* REMOVED❌: Toytoa: SnG Hack
* This method is not recommended and may cause some cars to not behave as expected
* SDSU is strongly recommended to enable SnG for Toyota vehicles without SnG from factory
* commaai: radard: add missing accel data for vision-only leads (commaai/openpilot#26619) - pending PR
* VOACC performance is drastically improved when using Chill Mode
* IMPROVED: M.A.D.S. events handling
* IMPROVED: UI: screen recorder button change
* IMPROVED: OpenStreetMap Offline Database optimization
* FIXED: Toyota: vehicles' LKAS button no longer has a delay with toggling M.A.D.S.
* FIXED: Toyota: brake pedal press at standstill causing Cruise Fault
* FIXED: Volkswagen MQB: reduce Camera Malfunction occurrences (requires testing)
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-12-10)
========================
* IMPROVED: NEW❗ Developer UI design
* Second column metrics is now moved to the bottom of the screen
* ACC. = Acceleration
* L.S. = Lead Speed
* E.T. = EPS Torque
* B.D. = Bearing Degree
* FRI. = Friction
* L.A. = Lateral Acceleration
* ALT. = Altitude
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-12-07)
========================
* NEW❗: Screen Recorder support thanks to neokii and Kumar!
* NEW❗: End-to-end longitudinal start/stop status icon
* Only appears when Experimental Mode is enabled
* NEW❗: End-to-end longitudinal car chime when starting
* Hyundai/Kia/Genesis CAN platform, Honda/Acura Bosch/Nidec, Toyota/Lexus
* i.e. Traffic light turns green, stop sign ready to go, etc.
* Only appears when Experimental Mode is enabled AND longitudinal control is disengaged
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-12-05)
========================
* UPDATED: Synced with commaai's master branch - 2022.12.04-22:46:00:GMT - 0.9.1
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-11-12)
========================
* UPDATED: Synced with commaai's master branch - 2022.11.12-10:02:00:GMT - 0.8.17
* FIXED: CAN Error for CAN HKG cars that do not have navigation from the factory
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-11-11)
========================
* UPDATED: Synced with commaai's master branch - 2022.11.11-21:22:00:GMT - 0.8.17
* commaai: AGNOS 6.2 (commaai/openpilot#26441)
* NEW❗: Speed Limit Control - HKG - add speed limit from car's navigation head unit
* Compatible with certain models, trims, and model years
* DISABLED: FCA: RAM HD - steer down to 0
* FIXED: UI: End-to-end longitudinal button on driving screen synchronization
* FIXED: Honda: Longitudinal status with set cruise speed now displays properly in the car's dashboard
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-11-08)
========================
* ADDED: New Zealand offline OpenStreetMap database
sunnypilot - Version Latest (2022-11-04)
========================
* UPDATED: Synced with commaai's master branch - 2022.11.05-01:44:00:GMT - 0.8.17
* RE-ENABLED: Dynamic Lane Profile - preserves lanelines
* Can be found in "SP - Controls" menu
* NEW❗: DLP: switch to laneless for current/future curves thanks to @twilsonco!
* Can be found in "SP - Controls" menu
* NEW❗: UI: Road Camera Selector
* Enable this will display a button on the driving screen to select the driving camera
* Can be found in "SP - Visuals" menu
* NEW❗: Controls: Camera & Path Custom Offsets
* Only applicable to laneline mode when using Dynamic Lane Profile
* NEW❗: Buttons on driving screen are now sorted based on priority and availability
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-28)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.28-03:53:00:GMT - 0.8.17
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-26)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.26-06:20:00:GMT - 0.8.17
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-25)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.25-23:53:00:GMT - 0.8.17
* Pre-Global Subaru support thanks to @martinl!
* NEW❗: Speed Limit values turn red when current speed is higher than posted speed limit
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-23)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.22-23:15:00:GMT - 0.8.17
* IMPROVED: Custom Stock Longitudinal Control - HKG - only allow engagement on user button press
* IMPROVED: Custom Stock Longitudinal Control - Volkswagen MQB & PQ - more consistent set speed change
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-21)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.21-17:33:00:GMT - 0.8.17
* IMPROVED: Custom Stock Longitudinal Control - Volkswagen MQB & PQ - more predictable button send logic
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-20)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.20-20:25:00:GMT - 0.8.17
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-19)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.19-08:31:00:GMT - 0.8.17
* IMPROVED: Controls: Speed Limit Control - accelerator press only disengage if "Disengage on Accelerator Pedal" is enabled
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-18)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.18-04:44:00:GMT - 0.8.17
* RE-ENABLED: Volkswagen MQB & PQ with Custom Stock Longitudinal Control
* NEW❗: Steering Rate Cost Live Tune
* Enables live tune for Steering Rate Cost. Lower value allows steering wheel to move more freely at low speed
* Can be found in "SP - Controls" menu
* FIXED: MADS: GM - include Regen Paddle logic thanks to @twilsonco!
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-17)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.17-23:54:00:GMT+1 - 0.8.17
* ENABLED: "Custom Stock Longitudinal Control" toggle for CAN-FD cars
* FIXED: HKG CAN-FD: Could not engage when openpilot longitudinal is enabled
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-13)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.13-19:43:00:GMT+1 - 0.8.17
* ADDED: Live Tmux toggle
* Can be found in "SP - General" menu
* IMPROVED: OpenStreetMap Database Update - only check for database update with explicit user decision
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-11)
========================
* ADDED: Hyundai openpilot longitudinal improvements - huge thanks to @aragon7777!
* ADDED: Check for OpenStreetMap Database Update button
* UPDATED: commaai: Low speed lateral control improvements (commaai:openpilot#26022, bbcd448) - pending PR
* FIXED: MUTCD speed limit spacing adjusts dynamically when no subtext is shown (i.e., speed limit offset, distance to next speed limit)
* FIXED: MADS: Intermittent CAN Error when engaging for Toyota Prius TSS-P
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-09)
========================
* ADDED: commaai: Low speed lateral control improvements (commaai:openpilot#26022, bca288bb) - pending PR
* FIXED: MADS: Intermittent CAN Error when engaging for Toyota Prius TSS-P
* IMPROVED: mapd: stop signs and other supported traffic_calming tags are now slowing/stopping as expected
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-08)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.08-12:07:00:GMT+1 - 0.8.17
* FIXED: MADS: Intermittent CAN Error when engaging for Toyota Prius TSS-P
* IMPROVED: mapd: Speed Humps are now set at 20 MPH or 32 km/h
* IMPROVED: OpenStreetMap Offline Database download experience
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-10-07)
========================
* UPDATED: Synced with commaai's master branch - 2022.10.07-08:16:00:GMT - 0.8.17
* NEW❗: OpenStreetMap database can now be downloaded locally for offline use
* Now offering US South, US West, US Northeast, US Florida, Taiwan, and South Africa
* Databases updated - 2022.10.05-03:30:00:GMT
* NEW❗: mapd: Stop Sign, Yield, Speed Bump, Speed Hump, Sharp Curve support - huge thanks to @move-fast and @dragonpilot-community!
* Go to https://openstreetmap.org and start mapping out your area!
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-09-30)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.30-22:43:00:GMT - 0.8.17
* RE-ADDED: Torque Lateral Controller Live Tune Menu
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-09-23)
========================
* ADDED: Developer UI: latAccelFactorFiltered & frictionCoefficientFiltered values displays in green if Torque is using live params
* Bug fixes and performance improvements
sunnypilot - Version Latest (2022-09-22)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.19-22:19:00:GMT - 0.8.17
* NEW❗: Toggle to explicitly enable Custom Stock Longitudinal Control
* Applicable cars only: Honda, Hyundai/Kia/Genesis
* Settings -> Toggles menu
sunnypilot - Version Latest (2022-09-21)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.19-22:19:00:GMT - 0.8.17
* ADDED: Toggle to enable Live Torque (self/auto tune) with Torque lateral controller
* To enable, first enable "Enforce Torque Lateral Controller" toggle
* UPDATED: New metrics in Developer UI (when Live Torque is enabled)
* REMOVED: latAccelFactorRaw & frictionCoefficientRaw from torqued
* ADDED: latAccelFactorFiltered & frictionCoefficientFiltered from torqued
* REMOVED: Temporary remove Torque Lateral Controller Live Tune Menu
sunnypilot - Version Latest (2022-09-20)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.19-22:19:00:GMT - 0.8.17
* ADDED: Toggle to enable Live Torque (self/auto tune) with Torque lateral controller
* To enable, first enable "Enforce Torque Lateral Controller" toggle
* REMOVED: Temporary remove Torque Lateral Controller Live Tune Menu
sunnypilot - Version Latest (2022-09-18)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.17-11:23:00:GMT - 0.8.17
* ADDED: Kia Forte Non-SCC 2019 support for @askalice
* FIXED: Torque Lateral Control Live Tune now syncs with commaai:openpilot#25822
* FIXED: mapd dependencies no longer need to be re-downloaded after unknown reboots
sunnypilot - Version Latest (2022-09-17)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.17-11:23:00:GMT - 0.8.17
* NEW❗: Non SCC HKG support
* Custom Stock Longitudinal Control
* ❗No❗ openpilot longitudinal control
* FIXED: Honda Bosch random low-value set speed changes
sunnypilot - Version Latest (2022-09-16)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.16-20:23:00:GMT - 0.8.17
sunnypilot - Version Latest (2022-09-15)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.16-02:00:00:GMT - 0.8.17
* FIXED: Block additional auto lane change actions if blinker stays on after the first lane change
* REVERTED: Some Toyota with LKAS button no longer requires double press to engage/disengage M.A.D.S.
sunnypilot - Version Latest (2022-09-14)u
========================
* UPDATED: Synced with commaai's master branch - 2022.09.11-02:47:00:GMT - 0.8.17
* NEW❗: GM models supported in Force Car Recognition (FCR)
* Under "SP - Vehicles"
* NEW❗: Prompt to select car in "SP - Vehicles" if car unrecognized on startup
* FIXED: Some Toyota with LKAS button no longer requires double press to engage/disengage M.A.D.S.
* UPDATED: ESCC: Use radar tracks from radar if available
sunnypilot - Version Latest (2022-09-13)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.11-02:47:00:GMT - 0.8.17
* NEW❗: New metric in Developer UI
* Actual Lateral Acceleration (Roll Compensated)
sunnypilot - Version Latest (2022-09-12)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.11-02:47:00:GMT - 0.8.17
* FIXED: Honda Nidec models not gaining speed when longitudinal engaged
sunnypilot - Version Latest (2022-09-11)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.11-02:47:00:GMT - 0.8.17
* NEW❗: Hyundai Enhanced SCC now forwards FCW and AEB signals and commands from radar to car
* RE-ENABLED: MADS Status Icon toggle
sunnypilot - Version Latest (2022-09-10)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.11-02:47:00:GMT - 0.8.17
* NEW❗: RAM improvement implementation thanks to realfast!
* DISABLED: Chrysler/Jeep/Ram with Custom Stock Longitudinal Control
* DISABLED: Volkswagen MQB & PQ with Custom Stock Longitudinal Control
sunnypilot - Version Latest (2022-09-09)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.09-07:35:00:GMT - 0.8.17
* NEW❗: MADS now supporting General Motors (GM)
* ADDED: Custom Stock Longitudinal Control - Volkswagen
* MQB & PQ
* ADDED: Reverse ACC Change
* ACC +/-: Short=5, Long=1
* ADDED: Custom Stock Longitudinal Control
* Hyundai/Kia/Genesis
* Honda Bosch
* ADDED: Hyundai: 2015-16 Genesis resume from standstill fix (commaai:openpilot#25579) - pending PR
* Vision Turn Speed Control re-enabled
* Disable Onroad Uploads toggle re-enabled
sunnypilot - Version Latest (2022-09-08)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.08-04:05:00:GMT - 0.8.17
* NEW❗: Block lane change initiation while brake is pressed
sunnypilot - Version Latest (2022-09-07)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.08-04:05:00:GMT - 0.8.17
* NEW❗: Display End-to-end longitudinal 🌮 on screen
* NEW❗: Hold DISTANCE button on the steering wheel for 1 second to switch between E2E Long and ACC mode
* Enable toggle on the driving screen to switch between modes with End-to-end longitudinal
* Only applicable to cars with openpilot longitudinal control
* NEW❗: Block lane change initiation while brake is pressed
* REMOVED: Dynamic Lane Profile - upstream laneless model is now on by default
* REMOVED: hyundai: consistent start from stop (commaai:openpilot#25672) - pending PR
sunnypilot - Version Latest (2022-09-06)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.06 - 0.8.17
* NEW❗: Display useful metrics above the chevron that tracks the lead car
* Under "SP - Visuals" menu
* Only applicable to cars with openpilot longitudinal control
* ADDED: hyundai: consistent start from stop (commaai:openpilot#25672) - pending PR
* FIXED: Vienna speed limit interface now scales properly with the outer box
* REMOVED: Hyundai long improvements (commaai:openpilot#25604) - closed PR
sunnypilot - Version Latest (2022-09-05)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.03 - 0.8.17
* NEW❗: Speed Limit Control (SLC) interface integrated with upstream
* NEW❗: Speed limit from active navigation is now prioritized for Speed Limit Control
* NEW❗: MUTCD (U.S.) or Vienna (E.U.) speed limit interfaces can now be selected under "SP - Controls"
sunnypilot - Version Latest (2022-09-04)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.03 - 0.8.17
* FIXED: Gap Adjust Cruise status now displays properly on screen
* FIXED: mapd - missing index in list caused mapd to crash
* REMOVED: Temporary removed Vision Turn Speed Control
sunnypilot - Version Latest (2022-09-03)
========================
* UPDATED: Synced with commaai's master branch - 2022.09.03 - 0.8.17
* ADDED: New border colors for different operation engagements
* ADDED: UI: Show barrier when car detected in blind spot
* Only applicable to cars that have BSM detection with openpilot
* FIXED: Cruise Cancel button no longer display prompt if cruise not engaged
* TWEAKED: Update changelogs on startup in Settings -> Software -> Version
* REMOVED: Upload Raw Logs and Full Resolution Videos toggles
sunnypilot - Version Latest (2022-08-31)
========================
* UPDATED: Synced with commaai's master branch - 2022.08.31 - 0.8.17
* ADDED: New border colors for different operation engagements
* ADDED: UI: Show barrier when car detected in blind spot
* Only applicable to cars that have BSM detection with openpilot
* FIXED: Cruise Cancel button no longer display prompt if cruise not engaged
* REMOVED: Upload Raw Logs and Full Resolution Videos toggles
sunnypilot - Version 0.8.16 (2022-07-16)
========================
* Sync with commaai's master branches
* NEW❗: Add toggle to pause lateral actuation below 30 MPH / 50 KM/H
* IMPROVED: Better controls mismatch handling
* IMPROVED: Less frequent Low Memory alert
* IMPROVED: Only allow lateral control when in forward gears
* IMPROVED: Better alerts handling on gear changes
sunnypilot - Version 0.8.14-1.3 (2022-06-29)
========================
* Hyundai/Kia/Genesis
* NEW❗: MADS: Add GAP/Distance button on the steering wheel to engage/disengage
* To engage/disengage MADS: Hold the button for 0.5 second
* NEW❗: Dynamic Lane Profile: Add toggle to enable "Laneless for Curves in Auto Lane"
* HOTFIX🛠: Improve Torque lateral control and reduce ping pong for some Toyota cars
* Torque control: higher low speed gains and better steering angle deadzone logic
* Developer UI: Remove Distance Traveled, replace with Memory Usage %
* This may have a potential to fix the Low Memory alert that may appear
sunnypilot - Version 0.8.14-1 (2022-06-27)
========================
* HOTFIX🛠: Honda, Toyota, Volkswagen now initialized correctly with Torque Lateral Live Tune
sunnypilot - Version 0.8.14-1 (2022-06-27)
========================
* NEW❗: Added toggle to enable updates for sunnypilot
* HOTFIX🛠: Volkswagen car list now displays properly in Force Car Recognition menu
* REVERTED: Honda - temporary removes CRUISE (MAIN) for MADS engagement
* LKAS button continues to be used for MADS engagement/disengagement
sunnypilot - Version 0.8.14-1 (2022-06-26)
========================
Visit https://bit.ly/sunnyreadme for more details
* sunnypilot 0.8.14 release - based on openpilot 0.8.14 devel
* "0.8.14-prod-c3" branch only supports comma three
* If you have a comma two, EON, or other devices than a comma three, visit sunnyhaibin's discord server for more details: https://discord.gg/wRW3meAgtx
* Mono-branch support
* Honda/Acura
* Hyundai/Kia/Genesis
* Toyota/Lexus
* Volkswagen MQB
* Modified Assistive Driving Safety (MADS) Mode
* NEW❗: CRUISE (MAIN) now engages MADS for all supported car makes
* NEW❗: Added toggle to disable disengaging Automatic Lane Centering (ALC) on the brake pedal
* Dynamic Lane Profile (DLP)
* NEW❗: Gap Adjust Cruise (GAC)
* openpilot longitudinal cars can now adjust between the lead car's following distance gap via 3 modes:
* Steering Wheel (SW) | User Interface (UI) | Steering Wheel + User Interface (SW+UI)
* NEW❗: Custom Camera & Path Offsets
* NEW❗: Torque Lateral Control from openpilot 0.8.15 master (as of 2022-06-15)
* NEW❗: Torque Lateral Control Live Tune Menu
* NEW❗: Speed Limit Sign from openpilot 0.8.15 master (as of 2022-06-22)
* NEW❗: Mapbox Speed Limit data will now be utilized in Speed Limit Control (SLC)
* Speed limit data will be utilized in the following availability:
* Mapbox (active navigation) -> OpenStreetMap -> Car Interface (Toyota's TSR)
* Custom Stock Longitudinal Control
* NEW❗: Volkswagen MQB
* Honda
* Hyundai/Kia/Genesis
* NEW❗: Mapbox navigation support for non-Prime users
* Visit sunnyhaibin's discord server for more details: https://discord.gg/wRW3meAgtx
* Hyundai/Kia/Genesis
* NEW❗: Enhanced SCC (ESCC) Support
* Requires hardware modification. Visit sunnyhaibin's discord server for more details: https://discord.gg/wRW3meAgtx
* NEW❗: Smart MDPS (SMDPS) Support - Auto-detection
* Requires hardware modification and custom firmware for the SMDPS. Visit sunnyhaibin's discord server for more details: https://discord.gg/wRW3meAgtx
* Toyota/Lexus
* NEW❗: Added toggle to enforce stock longitudinal control
sunnypilot - Version 0.8.12-4
========================
* NEW❗: Custom Stock Longitudinal Control by setting the target speed via openpilot's "MAX" speed thanks to multikyd!
* Speed Limit Control
* Vision-based Turn Control
* Map-based Turn Control
* NEW❗: HDA status integration with Custom Stock Longitudinal Control on applicable HKG cars only
* NEW❗: Roll Compensation and SteerRatio fix from comma's 0.8.13
* NEW❗: Dev UI to display different metrics on screen
* Click on the "MAX" box on the top left of the openpilot display to toggle different metrics display
* Lead car relative distance; Lead car relative speed; Actual steering degree; Desired steering degree; Engine RPM; Longitudinal acceleration; Lead car actual speed; EPS torque; Current altitude; Compass direction
* NEW❗: Stand Still Timer to display time spent at a stop with M.A.D.S engaged (i.e., stop lights, stop signs, traffic congestions)
* NEW❗: Current car speed text turns red when the car is braking
* NEW❗: Export GPS tracks into GPX files and upload to OSM thanks to eFini!
* NEW❗: Enable ACC and M.A.D.S with a single press of the RES+/SET- button
* NEW❗: ACC +/-: Short=5, Long=1
* Change the ACC +/- buttons behavior with cruise speed change in openpilot
* Disabled (Stock): Short=1, Long=5
* Enabled: Short=5, Long=1
* NEW❗: Speed Limit Value Offset (not %)*
* Set speed limit higher or lower than actual speed limit for a more personalized drive.
* *To use this feature, turn off "Enable Speed Limit % Offset"*
* NEW❗: Dedicated icon to show the status of M.A.D.S.
* NEW❗: No Offroad Fix for non-official devices that cannot shut down after the car is turned off
* NEW❗: Stop N' Go Resume Alternative
* Offer alternative behavior to auto resume when stopped behind a lead car using stock SCC/ACC. This feature removes the repeating prompt chime when stopped and/or allows some cars to use auto resume (i.e., Genesis)
* IMPROVED: Show the lead car icon in the car's dashboard when a lead car is detected by openpilot's camera vision
* FIXED: MADS button unintentionally set MAX when using stock longitudinal control thanks to Spektor56!
sunnypilot - Version 0.8.12-3
========================
* NEW❗: Bypass "System Malfunction" alert toggle
* Prevent openpilot from returning the "System Malfunction" alert that hinders the ability use openpilot
* FIXED: Hyundai/Kia/Genesis Brake Hold Active now outputs the correct events on screen with M.A.D.S. engaged
sunnypilot - Version 0.8.12-2
========================
* NEW❗: Disable M.A.D.S. toggle to disable the beloved M.A.D.S. feature
* Enable Stock openpilot engagement/disengagement
* ADJUST: Initialize Driving Screen Off Brightness at 50%
sunnypilot - Version 0.8.12-1
========================
* sunnypilot 0.8.12 release - based on openpilot 0.8.12 devel
* Dedicated Hyundai/Kia/Genesis branch support
* NEW❗: OpenStreetMap integration thanks to the Move Fast team!
* NEW❗: Vision-based Turn Control
* NEW❗: Map-Data-based Turn Control
* NEW❗: Speed Limit Control w/ optional Speed Limit Offset
* NEW❗: OpenStreetMap integration debug UI
* Only available to openpilot longitudinal enabled cars
* NEW❗: Hands on Wheel Monitoring according to EU r079r4e regulation
* NEW❗: Disable Onroad Uploads for data-limited Wi-Fi hotspots when using OpenStreetMap related features
* NEW❗: Fast Boot (Prebuilt)
* NEW❗: Auto Lane Change Timer
* NEW❗: Screen Brightness Control (Global)
* NEW❗: Driving Screen Off Timer
* NEW❗: Driving Screen Off Brightness (%)
* NEW❗: Max Time Offroad
* Improved user feedback with M.A.D.S. operations thanks to Spektor56!
* Lane Path
* Green🟢 (Laneful), Red🔴 (Laneless): M.A.D.S. engaged
* White⚪: M.A.D.S. suspended or disengaged
* Black⚫: M.A.D.S. engaged, steering is being manually override by user
* Screen border now only illuminates Green when SCC/ACC is engaged
sunnypilot - Version 0.8.10-1 (Unreleased)
========================
* sunnypilot 0.8.10 release - based on openpilot 0.8.10 `devel`
* Add Toyota cars to Force Car Recognition
sunnypilot - Version 0.8.9-4
========================
* Hyundai: Fix Ioniq Hybrid signals
sunnypilot - Version 0.8.9-3
========================
* Update home screen brand and version structure
sunnypilot - Version 0.8.9-2
========================
* Added additional Sonata Hybrid Firmware Versions
* Features
* Modified Assistive Driving Safety (MADS) Mode
* Dynamic Lane Profile (DLP)
* Quiet Drive 🤫
* Force Car Recognition (FCR)
* PID Controller: add kd into the stock PID controller
sunnypilot - Version 0.8.9-1
========================
* First changelog!
* Features
* Modified Assistive Driving Safety (MADS) Mode
* Dynamic Lane Profile (DLP)
* Quiet Drive 🤫
* Force Car Recognition (FCR)
* PID Controller: add kd into the stock PID controller
+39 -1
View File
@@ -4,7 +4,7 @@ ENV PYTHONUNBUFFERED 1
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y --no-install-recommends sudo tzdata locales ssh && \
apt-get install -y --no-install-recommends sudo tzdata locales ssh pulseaudio xvfb x11-xserver-utils gnome-screenshot && \
rm -rf /var/lib/apt/lists/*
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && locale-gen
@@ -22,6 +22,44 @@ RUN cd /tmp && \
rm -rf arm/ && \
rm -rf thumb/nofp thumb/v6* thumb/v8* thumb/v7+fp thumb/v7-r+fp.sp
# Add OpenCL
RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils \
alien \
unzip \
tar \
curl \
xz-utils \
dbus \
gcc-arm-none-eabi \
tmux \
vim \
lsb-core \
libx11-6 \
&& rm -rf /var/lib/apt/lists/*
ARG INTEL_DRIVER=l_opencl_p_18.1.0.015.tgz
ARG INTEL_DRIVER_URL=https://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532
RUN mkdir -p /tmp/opencl-driver-intel
RUN cd /tmp/opencl-driver-intel && \
echo INTEL_DRIVER is $INTEL_DRIVER && \
curl -O $INTEL_DRIVER_URL/$INTEL_DRIVER && \
tar -xzf $INTEL_DRIVER && \
for i in $(basename $INTEL_DRIVER .tgz)/rpm/*.rpm; do alien --to-deb $i; done && \
dpkg -i *.deb && \
rm -rf $INTEL_DRIVER $(basename $INTEL_DRIVER .tgz) *.deb && \
mkdir -p /etc/OpenCL/vendors && \
echo /opt/intel/opencl_compilers_and_libraries_18.1.0.015/linux/compiler/lib/intel64_lin/libintelocl.so > /etc/OpenCL/vendors/intel.icd && \
cd / && \
rm -rf /tmp/opencl-driver-intel
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
ENV QTWEBENGINE_DISABLE_SANDBOX 1
RUN dbus-uuidgen > /etc/machine-id
ARG USER=batman
ARG USER_UID=1000
RUN useradd -m -s /bin/bash -u $USER_UID $USER
-37
View File
@@ -1,37 +0,0 @@
FROM ghcr.io/commaai/openpilot-base:latest
RUN apt-get update && apt-get install -y --no-install-recommends\
apt-utils \
alien \
unzip \
tar \
curl \
xz-utils \
dbus \
gcc-arm-none-eabi \
tmux \
vim \
lsb-core \
libx11-6 \
&& rm -rf /var/lib/apt/lists/*
# Intel OpenCL driver
ARG INTEL_DRIVER=l_opencl_p_18.1.0.015.tgz
ARG INTEL_DRIVER_URL=https://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532
RUN mkdir -p /tmp/opencl-driver-intel
WORKDIR /tmp/opencl-driver-intel
RUN echo INTEL_DRIVER is $INTEL_DRIVER && \
curl -O $INTEL_DRIVER_URL/$INTEL_DRIVER && \
tar -xzf $INTEL_DRIVER && \
for i in $(basename $INTEL_DRIVER .tgz)/rpm/*.rpm; do alien --to-deb $i; done && \
dpkg -i *.deb && \
rm -rf $INTEL_DRIVER $(basename $INTEL_DRIVER .tgz) *.deb && \
mkdir -p /etc/OpenCL/vendors && \
echo /opt/intel/opencl_compilers_and_libraries_18.1.0.015/linux/compiler/lib/intel64_lin/libintelocl.so > /etc/OpenCL/vendors/intel.icd && \
rm -rf /tmp/opencl-driver-intel
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES graphics,utility,compute
ENV QTWEBENGINE_DISABLE_SANDBOX 1
RUN dbus-uuidgen > /etc/machine-id
Vendored
+31 -61
View File
@@ -12,10 +12,12 @@ def retryWithDelay(int maxRetries, int delay, Closure body) {
def device(String ip, String step_label, String cmd) {
withCredentials([file(credentialsId: 'id_rsa', variable: 'key_file')]) {
def ssh_cmd = """
ssh -tt -o StrictHostKeyChecking=no -i ${key_file} 'comma@${ip}' /usr/bin/bash <<'END'
ssh -tt -o ConnectTimeout=5 -o ServerAliveInterval=5 -o ServerAliveCountMax=2 -o BatchMode=yes -o StrictHostKeyChecking=no -i ${key_file} 'comma@${ip}' /usr/bin/bash <<'END'
set -e
shopt -s huponexit # kill all child processes when the shell exits
export CI=1
export PYTHONWARNINGS=error
export LOGPRINT=debug
@@ -35,7 +37,9 @@ source ~/.bash_profile
if [ -f /TICI ]; then
source /etc/profile
rm -rf /tmp/tmp*
rm -rf ~/.commacache
rm -rf /dev/shm/*
if ! systemctl is-active --quiet systemd-resolved; then
echo "restarting resolved"
@@ -76,17 +80,13 @@ def deviceStage(String stageName, String deviceType, List extra_env, def steps)
def extra = extra_env.collect { "export ${it}" }.join('\n');
def branch = env.BRANCH_NAME ?: 'master';
docker.image('ghcr.io/commaai/alpine-ssh').inside('--user=root') {
lock(resource: "", label: deviceType, inversePrecedence: true, variable: 'device_ip', quantity: 1) {
lock(resource: "", label: deviceType, inversePrecedence: true, variable: 'device_ip', quantity: 1, resourceSelectStrategy: 'random') {
docker.image('ghcr.io/commaai/alpine-ssh').inside('--user=root') {
timeout(time: 20, unit: 'MINUTES') {
retry (3) {
device(device_ip, "git checkout", extra + "\n" + readFile("selfdrive/test/setup_device_ci.sh"))
}
steps.each { item ->
if (branch != "master" && item.size() == 3 && !hasDirectoryChanged(item[2])) {
println "Skipped '${item[0]}', no relevant changes were detected."
return;
}
device(device_ip, item[0], item[1])
}
}
@@ -104,24 +104,26 @@ def pcStage(String stageName, Closure body) {
checkout scm
def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE}";
def dockerArgs = "--user=batman -v /tmp/comma_download_cache:/tmp/comma_download_cache -v /tmp/scons_cache:/tmp/scons_cache -e PYTHONPATH=${env.WORKSPACE} --cpus=8 --memory 16g -e PYTEST_ADDOPTS='-n8'";
def openpilot_base = retryWithDelay (3, 15) {
return docker.build("openpilot-base:build-${env.GIT_COMMIT}", "-f Dockerfile.openpilot_base .")
}
openpilot_base.inside(dockerArgs) {
timeout(time: 20, unit: 'MINUTES') {
try {
retryWithDelay (3, 15) {
sh "git config --global --add safe.directory '*'"
sh "git submodule update --init --recursive"
sh "git lfs pull"
}
body()
} finally {
sh "rm -rf ${env.WORKSPACE}/* || true"
sh "rm -rf .* || true"
lock(resource: "", label: 'pc', inversePrecedence: true, quantity: 1) {
openpilot_base.inside(dockerArgs) {
timeout(time: 20, unit: 'MINUTES') {
try {
retryWithDelay (3, 15) {
sh "git config --global --add safe.directory '*'"
sh "git submodule update --init --recursive"
sh "git lfs pull"
}
body()
} finally {
sh "rm -rf ${env.WORKSPACE}/* || true"
sh "rm -rf .* || true"
}
}
}
}
@@ -139,20 +141,6 @@ def setupCredentials() {
}
}
def hasDirectoryChanged(List<String> paths) {
for (change in currentBuild.changeSets) {
for (item in change.items) {
for (affectedPath in item.affectedPaths) {
for (path in paths) {
if (affectedPath.startsWith(path)) {
return true
}
}
}
}
}
return false
}
node {
env.CI = "1"
@@ -165,7 +153,7 @@ node {
env.GIT_COMMIT = checkout(scm).GIT_COMMIT
def excludeBranches = ['master-ci', 'devel', 'devel-staging', 'release3', 'release3-staging',
'dashcam3', 'dashcam3-staging', 'testing-closet*', 'hotfix-*']
'testing-closet*', 'hotfix-*']
def excludeRegex = excludeBranches.join('|').replaceAll('\\*', '.*')
if (env.BRANCH_NAME != 'master') {
@@ -177,7 +165,7 @@ node {
try {
if (env.BRANCH_NAME == 'devel-staging') {
deviceStage("build release3-staging", "tici-needs-can", [], [
["build release3-staging & dashcam3-staging", "RELEASE_BRANCH=release3-staging DASHCAM_BRANCH=dashcam3-staging $SOURCE_DIR/release/build_release.sh"],
["build release3-staging", "RELEASE_BRANCH=release3-staging $SOURCE_DIR/release/build_release.sh"],
])
}
@@ -201,17 +189,17 @@ node {
])
},
'HW + Unit Tests': {
deviceStage("tici", "tici-common", ["UNSAFE=1"], [
deviceStage("tici-hardware", "tici-common", ["UNSAFE=1"], [
["build", "cd selfdrive/manager && ./build.py"],
["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py", ["panda/", "selfdrive/boardd/"]],
["test power draw", "./system/hardware/tici/tests/test_power_draw.py"],
["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"],
["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"],
["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"],
["test pigeond", "pytest system/sensord/tests/test_pigeond.py"],
["test manager", "pytest selfdrive/manager/test/test_manager.py"],
])
},
'loopback': {
deviceStage("tici", "tici-loopback", ["UNSAFE=1"], [
deviceStage("loopback", "tici-loopback", ["UNSAFE=1"], [
["build openpilot", "cd selfdrive/manager && ./build.py"],
["test boardd loopback", "pytest selfdrive/boardd/tests/test_boardd_loopback.py"],
])
@@ -239,7 +227,7 @@ node {
])
},
'replay': {
deviceStage("tici", "tici-replay", ["UNSAFE=1"], [
deviceStage("model-replay", "tici-replay", ["UNSAFE=1"], [
["build", "cd selfdrive/manager && ./build.py"],
["model replay", "selfdrive/test/process_replay/model_replay.py"],
])
@@ -248,31 +236,13 @@ node {
deviceStage("tizi", "tizi", ["UNSAFE=1"], [
["build openpilot", "cd selfdrive/manager && ./build.py"],
["test boardd loopback", "SINGLE_PANDA=1 pytest selfdrive/boardd/tests/test_boardd_loopback.py"],
["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py", ["panda/", "selfdrive/boardd/"]],
["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"],
["test amp", "pytest system/hardware/tici/tests/test_amplifier.py"],
["test hw", "pytest system/hardware/tici/tests/test_hardware.py"],
["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py", ["system/qcomgpsd/"]],
["test qcomgpsd", "pytest system/qcomgpsd/tests/test_qcomgpsd.py"],
])
},
// *** PC tests ***
'PC tests': {
pcStage("PC tests") {
// tests that our build system's dependencies are configured properly,
// needs a machine with lots of cores
sh label: "test multi-threaded build",
script: '''#!/bin/bash
scons --no-cache --random -j$(nproc)'''
}
},
'car tests': {
pcStage("car tests") {
sh label: "build", script: "selfdrive/manager/build.py"
sh label: "run car tests", script: "cd selfdrive/car/tests && MAX_EXAMPLES=100 INTERNAL_SEG_CNT=250 FILEREADER_CACHE=1 \
INTERNAL_SEG_LIST=selfdrive/car/tests/test_models_segs.txt pytest test_models.py test_car_interfaces.py"
}
},
)
}
} catch (Exception e) {
+424 -53
View File
@@ -1,89 +1,460 @@
[![openpilot on the comma 3X](https://github.com/commaai/openpilot/assets/8762862/f09e6d29-db2d-4179-80c2-51e8d92bdb5c)](https://comma.ai/shop/comma-3x)
![](https://user-images.githubusercontent.com/47793918/233812617-beab2e71-57b9-479e-8bff-c3931347ca40.png)
What is openpilot?
Table of Contents
=======================
* [Join our Discord](#-join-our-discord)
* [What is sunnypilot?](#-what-is-sunnypilot)
* [Running in a car](#-running-on-a-dedicated-device-in-a-car)
* [Read Before Installing](#-read-before-installing)
* [Prohibited Safety Modifications](#-prohibited-safety-modifications)
* [Installation](#-installation)
* [Highlight Features](#-highlight-features)
* [Driving Enhancements](#-driving-enhancements)
* [Branch Definitions](#-branch-definitions)
* [Recommended Branches](#-recommended-branches)
* [How-To's](#-How-Tos)
* [Pull Requests](#-Pull-Requests)
* [Special Thanks](#-special-thanks)
* [User Data](#-user-data)
* [Licensing](#licensing)
* [Donate](#-support-sunnypilot)
---
<details><summary><h3>💭 Join our Discord</h3></summary>
---
Join the official sunnypilot Discord server to stay up to date with all the latest features and be a part of shaping the future of sunnypilot!
* https://discord.gg/sunnypilot
![](https://dcbadge.vercel.app/api/server/wRW3meAgtx?style=flat) ![Discord Shield](https://discordapp.com/api/guilds/880416502577266699/widget.png?style=shield)
</details>
<details><summary><h3>🌞 What is sunnypilot?</h3></summary>
---
[sunnypilot](https://github.com/sunnyhaibin/sunnypilot) is a fork of comma.ai's openpilot, an open source driver assistance system. sunnypilot offers the user a unique driving experience for over 250+ supported car makes and models with modified behaviors of driving assist engagements. sunnypilot complies with comma.ai's safety rules as accurately as possible.
</details>
<details><summary><h3>🚘 Running on a dedicated device in a car</h3></summary>
---
To use sunnypilot in a car, you need the following:
* A supported device to run this software
* a [comma three](https://comma.ai/shop/products/three), or
* a comma two (only with older versions below 0.8.13)
* This software
* One of [the 250+ supported cars](https://github.com/commaai/openpilot/blob/master/docs/CARS.md). We support Honda, Toyota, Hyundai, Nissan, Kia, Chrysler, Lexus, Acura, Audi, VW, Ford and more. If your car is not supported but has adaptive cruise control and lane-keeping assist, it's likely able to run sunnypilot.
* A [car harness](https://comma.ai/shop/products/car-harness) to connect to your car
Detailed instructions for [how to mount the device in a car](https://comma.ai/setup).
</details>
<details><summary><h3>🚨 Read Before Installing</h3></summary>
---
It is recommended to read this **entire page** before proceeding. This will ensure that you fully understand each added feature on sunnypilot, and you are selecting the right branch for your car to have the best driving experience.
This is a fork of [comma.ai's openpilot](https://github.com/commaai/openpilot). By installing this software, you accept all responsibility for anything that might occur while you use it. All contributors to sunnypilot are not liable. ❗<ins>**Use at your own risk.**</ins>❗
</details>
<details><summary><h3>⛔ Prohibited Safety Modifications</h3></summary>
---
All [official sunnypilot branches](https://github.com/sunnyhaibin/sunnypilot/branches) strictly adhere to [comma.ai's safety policy](https://github.com/commaai/openpilot/blob/master/docs/SAFETY.md). Any changes that go against this policy will result in your fork and your device being banned from both comma.ai and sunnypilot channels.
The following changes are a **VIOLATION** of this policy and **ARE NOT** included in any sunnypilot branches:
* Driver Monitoring:
* ❌ "Nerfing" or reducing monitoring parameters.
* Panda safety:
* ❌ No preventing disengaging of <ins>**LONGITUDINAL CONTROL**</ins> (acceleration/brake) on brake pedal press.
* ❌ No auto re-engaging of <ins>**LONGITUDINAL CONTROL**</ins> (acceleration/brake) on brake pedal release.
* ❌ No disengaging on ACC MAIN in OFF state.
</details>
<details><summary><h3>⚒ Installation</h3></summary>
---
<details><summary>URL (Easy)</summary>
comma three
------
[openpilot](http://github.com/commaai/openpilot) is an open source driver assistance system. Currently, openpilot performs the functions of Adaptive Cruise Control (ACC), Automated Lane Centering (ALC), Forward Collision Warning (FCW), and Lane Departure Warning (LDW) for a growing variety of [supported car makes, models, and model years](docs/CARS.md). In addition, while openpilot is engaged, a camera-based Driver Monitoring (DM) feature alerts distracted and asleep drivers. See more about [the vehicle integration](docs/INTEGRATION.md) and [limitations](docs/LIMITATIONS.md).
Please refer to [Recommended Branches](#-recommended-branches) to find your preferred/supported branch. This guide will assume you want to install the latest `release-c3` branch.
<table>
<tr>
<td><a href="https://youtu.be/NmBfgOanCyk" title="Video By Greer Viau"><img src="https://github.com/commaai/openpilot/assets/8762862/2f7112ae-f748-4f39-b617-fabd689c3772"></a></td>
<td><a href="https://youtu.be/VHKyqZ7t8Gw" title="Video By Logan LeGrand"><img src="https://github.com/commaai/openpilot/assets/8762862/92351544-2833-40d7-9e0b-7ef7ae37ec4c"></a></td>
<td><a href="https://youtu.be/SUIZYzxtMQs" title="A drive to Taco Bell"><img src="https://github.com/commaai/openpilot/assets/8762862/05ceefc5-2628-439c-a9b2-89ce77dc6f63"></a></td>
</tr>
</table>
* sunnypilot not installed or you installed a version before 0.8.17?
1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed.
2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option.
3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```release-c3.sunnypilot.ai``` [^4] (note: `https://` is not requirement on the comma three)
4. Complete the rest of the installation following the onscreen instructions.
Running on a dedicated device in a car
* sunnypilot already installed and you installed a version after 0.8.17?
1. On the comma three, go to `Settings` ▶️ `Software`.
2. At the `Download` option, press `CHECK`. This will fetch the list of latest branches from sunnypilot.
3. At the `Target Branch` option, press `SELECT` to open the Target Branch selector.
4. Scroll to select the desired branch per [Recommended Branches](#-recommended-branches). Example: `release-c3`
| Branch | Installation URL |
|:------------:|:--------------------------------:|
| `release-c3` | https://release-c3.sunnypilot.ai |
| `staging-c3` | https://staging-c3.sunnypilot.ai |
| `dev-c3` | https://dev-c3.sunnypilot.ai |
Requires further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel.
comma two
------
To use openpilot in a car, you need four things:
1. **Supported Device:** a comma 3/3X, available at [comma.ai/shop](https://comma.ai/shop/comma-3x).
2. **Software:** The setup procedure for the comma 3/3X allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.
3. **Supported Car:** Ensure that you have one of [the 250+ supported cars](docs/CARS.md).
4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma 3/3X to your car.
1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed.
2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option.
3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```https://smiskol.com/fork/sunnyhaibin/0.8.12-4-prod```
4. Complete the rest of the installation following the onscreen instructions.
We have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup).
Requires further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel.
Running on PC
</details>
<details>
<summary>SSH (More Versatile)</summary>
<br>
Prerequisites: [How to SSH](https://github.com/commaai/openpilot/wiki/SSH)
If you are looking to install sunnypilot via SSH, run the following command in an SSH terminal after connecting to your device:
comma three:
------
* [`release-c3`](https://github.com/sunnyhaibin/openpilot/tree/release-c3):
All openpilot services can run as usual on a PC without requiring special hardware or a car. You can also run openpilot on recorded or simulated data to develop or experiment with openpilot.
```
cd /data; rm -rf ./openpilot; git clone -b release-c3 --recurse-submodules https://github.com/sunnyhaibin/sunnypilot.git openpilot; cd openpilot; sudo reboot
```
With openpilot's tools, you can plot logs, replay drives, and watch the full-res camera streams. See [the tools README](tools/README.md) for more information.
You can also run openpilot in simulation [with the MetaDrive simulator](tools/sim/README.md). This allows openpilot to drive around a virtual car on your Ubuntu machine.
A PC running openpilot can also control your vehicle if it is connected to a [webcam](https://github.com/commaai/openpilot/tree/master/tools/webcam), a [black panda](https://comma.ai/shop/products/panda), and a [harness](https://comma.ai/shop/products/car-harness).
Community and Contributing
comma two:
------
* [`0.8.12-prod-personal-hkg`](https://github.com/sunnyhaibin/openpilot/tree/0.8.12-prod-personal-hkg):
openpilot is developed by [comma](https://comma.ai/) and by users like you. We welcome both pull requests and issues on [GitHub](http://github.com/commaai/openpilot).
```
cd /data; rm -rf ./openpilot; git clone -b 0.8.12-prod-personal-hkg --recurse-submodules https://github.com/sunnyhaibin/sunnypilot.git openpilot; cd openpilot; sudo reboot
```
* Join the [community Discord](https://discord.comma.ai)
* Check out [the contributing docs](docs/CONTRIBUTING.md)
* Code documentation lives at https://docs.comma.ai
* Information about running openpilot lives on the [community wiki](https://github.com/commaai/openpilot/wiki)
After running the command to install the desired branch, your comma device should reboot.
</details>
Want to get paid to work on openpilot? [comma is hiring](https://comma.ai/jobs#open-positions) and offers lots of [bounties](docs/BOUNTIES.md).
</details>
Safety and Testing
----
* openpilot observes [ISO26262](https://en.wikipedia.org/wiki/ISO_26262) guidelines, see [SAFETY.md](docs/SAFETY.md) for more details.
* openpilot has software-in-the-loop [tests](.github/workflows/selfdrive_tests.yaml) that run on every commit.
* The code enforcing the safety model lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.
* panda has software-in-the-loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).
* Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.
* panda has additional hardware-in-the-loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).
* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.
<details><summary><h3>🚗 Highlight Features</h3></summary>
User Data and comma Account
------
---
By default, openpilot uploads the driving data to our servers. You can also access your data through [comma connect](https://connect.comma.ai/). We use your data to train better models and improve openpilot for everyone.
### Quality of Life Enhancements
- [**Modified Assistive Driving Safety (MADS)**](#modified-assistive-driving-safety-mads) - Automatic Lane Centering (ALC) / Lane Keep Assist System (LKAS) and Adaptive Cruise Control (ACC) / Smart Cruise Control (SCC) can be engaged independently of each other
- [**Dynamic Lane Profile (DLP)**](#dynamic-lane-profile-dlp) - Dynamically switch lane profile (between Laneful and Laneless) based on lane recognition confidence
- [**Enhanced Speed Control**](#enhanced-speed-control) - Automatically adjust cruise control speed using vision model, OpenStreetMap (OSM) data, and/or Speed Limit control (SLC) without user interaction
* Vision-based Turn Speed Control (V-TSC) - lower speed when going around corners using vision model
* Map-Data-based Turn Speed Control (M-TSC) - lower speed when going around corners using OSM data[^1]
* Speed Limit Control (SLC) - Set speed limit based on map data or car interface (if applicable)
* HKG only: Highway Driving Assist (HDA) status integration - Use cars native speed sign detection to set desired speed (on applicable HKG cars only)
- [**Gap Adjust Cruise (GAC)**](#gap-adjust-cruise) - Allow `GAP`/`INTERVAL`/`DISTANCE` button on the steering wheel or on-screen button to adjust the follow distance from the lead car. See table below for options
- [**Quiet Drive 🤫**](#-quiet-drive) - Toggle to mute all notification sounds (excluding driver safety warnings)
- [**Auto Lane Change Timer**](#Auto-Lane-Change-Timer) - Set a timer to delay the auto lane change operation when the blinker is used. No nudge on the steering wheel is required to auto lane change if a timer is set
- [**Force Car Recognition (FCR)**](#Force-Car-Recognition-) - Use a selector to force your car to be recognized by sunnypilot
- [**Fix sunnypilot No Offroad**](#Fix-sunnypilot-No-Offroad) - Enforce sunnypilot to go offroad and turns off after shutting down the car. This feature fixes non-official devices running sunnypilot without comma power
- [**Enable ACC+MADS with RES+/SET-**](#Enable-ACC+MADS-with-RES+/SET-) - Engage both ACC and MADS with a single press of RES+ or SET- button
- [**Offline OSM Maps**](#Offline-OSM-Maps) - OSM database can now be downloaded locally for offline use[^2]. This enables offline SLC, V-TSC and M-TSC. Currently available for US South, US West, US Northeast, Florida, Taiwan, South Africa and New Zealand
- [**Various Live Tuning**](#Various-Live-Tuning) - Ability to tailor your driving experience on the fly:
* Enforce Torque Lateral Control - Use the newest [torque controller](https://blog.comma.ai/0815release/#torque-controller) for all vehicles.
* Torque Lateral Control Live Tune - Ability to adjust the torque controllers `FRICTION` and `LAT_ACCEL_FACTOR` values to suit your vehicle.
* Torque Lateral Controller Self-Tune - Enable automatic turning for the Torque controller.
openpilot is open source software: the user is free to disable data collection if they wish to do so.
### Visual Enhancements
* **M.A.D.S Status Icon** - Dedicated icon to display M.A.D.S. engagement status
* Green🟢: M.A.D.S. engaged
* White⚪: M.A.D.S. suspended or disengaged
* **Lane Path Color** - Various lane path colors to display real-time Lane Model and M.A.D.S. engagement status
* 0.8.14 and later:
* Blue🔵: Laneful mode & M.A.D.S. engaged
* Green🟢: Laneless mode & M.A.D.S. engaged
* Yellow🟡: Experimental e2e & M.A.D.S. engaged
* Pre 0.8.14:
* Green🟢: Laneful mode & M.A.D.S. engaged
* Red🔴: Laneless mode & M.A.D.S. engaged
* White⚪: M.A.D.S. suspended or disengaged
* Black⚫: M.A.D.S. engaged, steering is being manually overridden by user
* **Developer (Dev) UI** - Display various real-time metrics on screen while driving
* **Stand Still Timer** - Display time spent at a stop with M.A.D.S engaged (i.e., at traffic lights, stop signs, traffic congestions)
* **Braking Status** - Current car speed text turns red when the car is braking by the driver or ACC/SCC
openpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.
### Operational Enhancements
* **Fast Boot** - sunnypilot will fast boot by creating a Prebuilt file
* **Disable Onroad Uploads** - Disable uploads completely when onroad. Necessary to avoid high data usage when connected to Wi-Fi hotspot
* **Brightness Control (Global)** - Manually adjusts the global brightness of the screen
* **Driving Screen Off Timer** - Turns off the device screen or reduces brightness to protect the screen after car starts
* **Driving Screen Off Brightness (%)** - When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio
* **Max Time Offroad** - Device is automatically turned off after a set time when the engine is turned off (off-road) after driving (on-road)
</details>
<details><summary><h3>🚗 Driving Enhancements</h3></summary>
---
### Modified Assistive Driving Safety (MADS)
The goal of Modified Assistive Driving Safety (MADS) is to enhance the user driving experience with modified behaviors of driving assist engagements. This feature complies with comma.ai's safety rules as accurately as possible with the following changes:
* sunnypilot Automatic Lane Centering (ALC) and ACC/SCC can be engaged independently of each other
* Dedicated button to toggle sunnypilot ALC:
* `CRUISE (MAIN)` button: All supported cars on sunnypilot
* `LFA` button: Newer HKG cars with `LFA` button
* `LKAS` button: Honda, Toyota, Global Subaru
* `SET-` button enables ACC/SCC
* `CANCEL` button only disables ACC/SCC
* `CRUISE (MAIN)` must be `ON` to use ACC/SCC
* `CRUISE (MAIN)` button disables sunnypilot completely when `OFF` **(strictly enforced in panda safety code)**
### Disengage Lateral ALC on Brake Press Mode toggle
Dedicated toggle to handle Lateral state on brake pedal press and release:
1. `ON`: `BRAKE pedal` press will pause Automatic Lane Centering; `BRAKE pedal` release will resume Automatic Lane Centering. Note: `BRAKE pedal` release will NOT resume ACC/SCC/Long control without explicit user engagement **(strictly enforced in panda safety code)**
2. `OFF`: `BRAKE pedal` press will NOT pause Automatic Lane Centering; `BRAKE pedal` release will NOT resume ACC/SCC/Long control without explicit user engagement **(strictly enforced in panda safety code)**
### Miscellaneous
* `TURN SIGNALS` (`Left` or `Right`) will pause Automatic Lane Centering if the vehicle speed is below the [threshold](https://github.com/commaai/openpilot/blob/master/selfdrive/controls/lib/desire_helper.py#L8) for Automatic Lane Change
* Event audible alerts are more relaxed to match manufacturer's stock behavior
* Critical events trigger disengagement of Automatic Lane Centering completely. The disengagement is enforced in sunnypilot and panda safety
### Dynamic Lane Profile (DLP)
Dynamic Lane Profile (DLP) aims to provide the best driving experience at staying within a lane confidently. Dynamic Lane Profile allows sunnypilot to dynamically switch between lane profiles based on lane recognition confidence level on road.
There are 3 modes to select on the onroad camera screen:
* **Auto Lane**: sunnypilot dynamically chooses between `Laneline` or `Laneless` model
* **Laneline**: sunnypilot uses Laneline model only.
* **Laneless**: sunnypilot uses Laneless model only.
To use Dynamic Lane Profile, do the following:
```
1. sunnypilot Settings -> `SP - Controls` -> Enable Dynamic Lane Profile -> ON toggle
2. Reboot.
3. Before driving, on the onroad camera screen, toggle between the 3 modes by pressing on the button.
4. Drive.
```
### Enhanced Speed Control
This fork now allows supported cars to dynamically adjust the longitudinal plan based on the fetched map data. Big thanks to the Move Fast team for the amazing implementation!
**Supported cars:**
* sunnypilot Longitudinal Control capable
* Stock Longitudinal Control
* Hyundai/Kia/Genesis (non CAN-FD)
* Honda Bosch
* Volkswagen MQB
Certain features are only available with an active data connection, via:
* [comma Prime](https://comma.ai/prime) - Intuitive service provided directly by comma, or
* Personal Hotspot - From your mobile device, or a dedicated hotspot from a cellular carrier.
**Features:**
* Vision-based Turn Speed Control (VTSC) - Use vision path predictions to estimate the appropriate speed to drive through turns ahead - i.e. slowing down for curves
* Map-Data-based Turn Speed Control (MTSC) - Use curvature information from map data to define speed limits to take turns ahead - i.e. slowing down for curves[^1]
* Speed Limit Control (SLC) - Use speed limit signs information from map data and car interface to automatically adapt cruise speed to road limits
* HKG only: Highway Driving Assist (HDA) status integration - on applicable HKG cars only[^1]
* Speed Limit Offset - When Speed Limit Control is enabled, set speed limit slightly higher than the actual speed limit for a more natural drive[^1]
* Toggle Hands on Wheel Monitoring - Monitors and alerts the driver when their hands have not been on the steering wheel for an extended time
### Custom Stock Longitudinal Control
While using stock Adaptive/Smart Cruise Control, Custom Stock Longitudinal Control in sunnypilot allows sunnypilot to manipulate and take over the set speed on the car's dashboard.
**Supported Cars:**
* Hyundai/Kia/Genesis
* CAN platform
* CAN-FD platform with 0x1CF broadcasted in CAN traffic
* Honda Bosch
* Volkswagen MQB
**Instruction**
**📗 How to use Custom Longitudinal Control on sunnypilot **
When using Speed Limit, Vision, or Map based Turn control, you will be setting the "MAX" ACC speed on the sunnypilot display instead of the one in the dashboard. The car will then set the ACC setting in the dashboard to the targeted speed, but will never exceed the max speed set on the sunnypilot display. A quick press of the RES+ or SET- buttons will change this speed by 5 MPH or KM/H on the sunnypilot display, while a long deliberate press (about a 1/2 second press) changes it by 1 MPH or KM/H. DO NOT hold the RES+ or SET- buttons for longer that a 1 second. Either make quick or long deliberate presses only.
**‼ Where to look when setting ACC speed ‼**
Do not look at the dashboard when setting your ACC max speed. Instead, only look at the one on the sunnypilot display, "MAX". The reason you need to look at the sunnypilot display is because sunnypilot will be changing the one in the dashboard. It will be adjusting it as needed, never raising it above the one set on the sunnypilot display. ONLY look at the MAX speed on the sunnypilot display when setting the ACC speed instead of the dashboard!
(Courtesy instructions from John, author of jvePilot)
### Gap Adjust Cruise
This fork now allows supported openpilot longitudinal cars to adjust the cruise gap between the car and the lead car.
**Supported cars:**
* sunnypilot Longitudinal Control capable
🚨**PROCEED WITH EXTREME CAUTION AND BE READY TO MANUALLY TAKE OVER AT ALL TIMES**
There are 4 modes to select on the steering wheel and/or the onroad camera screen:
* **Stock Gap**: Stock sunnypilot distance - 1.45 second profile
* **Mild Gap**: Semi-aggressive distance - 1.25 second profile
* 🚨**Aggro Gap**🚨: Aggressive distance - 1.0 second profile
**Availability**
| Car Make | Stock Gap | Mild Gap | Aggro Gap |
|:-------------------:|:---------:|:--------:|:---------:|
| Honda/Acura | ✅ | ✅ | ✅ |
| Hyundai/Kia/Genesis | ✅ | ✅ | ✅ |
| Toyota/Lexus | ✅ | ✅ | ✅ |
| Volkswagen MQB/PQ | ✅ | ✅ | ✅ |
</details>
<details><summary><h3>⚒ Branch Definitions</h3></summary>
---
| Tag | Definition | Description |
|:---------:|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `release` | Release branches | Include features that are **verified** by trusted testers and the community. Ready to use. ✅ |
| `staging` | Staging branches | Include new features that are **tested** by trusted testers and the community. Stability may vary. ⚠ |
| `dev` | Development branches | All features are gathered in respective versions. Reviewed and merged features will be committed to `dev`. Stability may vary. ⚠ |
| `master` | Main branch | Syncs with [commaai's openpilot `master`](https://github.com/commaai/openpilot) upstream branch. Accepts all pull requests. Does not include all sunnypilot features. Stability may vary. ⚠ |
Example:
* [`release-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/release-c3): Latest release branch for comma three that are verified by trusted testers and the community. Ready to use.
* [`staging-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/staging-c3): Latest staging branch for comma three that are tested by trusted testers and the community. Verification required.
* [`dev-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/dev-c3): Latest development branch for comma three that include all sunnypilot features. Testing required.
</details>
<details><summary><h3>✅ Recommended Branches</h3></summary>
---
| Branch | Definition | Compatible Device | Changelogs |
|:------------------------------------------------------------------------------------|---------------------------------------------------------|-------------------|--------------------------------------------------------------------------------------------|
| [`release-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/release-c3) | • Latest release/stable branch | comma three | [`CHANGELOGS.md`](https://github.com/sunnyhaibin/sunnypilot/blob/release-c3/CHANGELOGS.md) |
| [`staging-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/staging-c3) | • Latest staging branch | comma three | [`CHANGELOGS.md`](https://github.com/sunnyhaibin/sunnypilot/blob/staging-c3/CHANGELOGS.md) |
| [`dev-c3`](https://github.com/sunnyhaibin/sunnypilot/tree/dev-c3) | • Latest development branch with experimental features | comma three | [`CHANGELOGS.md`](https://github.com/sunnyhaibin/sunnypilot/blob/dev-c3/CHANGELOGS.md) |
</details>
<details><summary><h3>📗 How To's</h3></summary>
---
How-To instructions can be found in [HOW-TOS.md](https://github.com/sunnyhaibin/openpilot/blob/(!)README/HOW-TOS.md).
</details>
<details><summary><h3>🎆 Pull Requests</h3></summary>
---
We welcome both pull requests and issues on GitHub. Bug fixes are encouraged.
Pull requests should be against the most current `master` branch.
</details>
<details><summary><h3>🏆 Special Thanks</h3></summary>
---
* [spektor56](https://github.com/spektor56/openpilot)
* [rav4kumar](https://github.com/rav4kumar/openpilot)
* [mob9221](https://github.com/mob9221/opendbc)
* [briantran33](https://github.com/briantran33/openpilot)
* [Aragon7777](https://github.com/aragon7777/openpilot)
* [sshane](https://github.com/sshane/openpilot-installer-generator)
* [jung](https://github.com/chanhojung/openpilot)
* [dri94](https://github.com/dri94/openpilot)
* [FrogAi](https://github.com/frogAi/FrogPilot/)
* [twilsonco](https://github.com/twilsonco/openpilot)
* [martinl](https://github.com/martinl/openpilot)
* [multikyd](https://github.com/openpilotkr)
* [Move Fast GmbH](https://github.com/move-fast/openpilot)
* [dragonpilot](https://github.com/dragonpilot-community/dragonpilot)
* [neokii](https://github.com/neokii/openpilot)
* [AlexandreSato](https://github.com/AlexandreSato/openpilot)
* [Moodkiller](https://github.com/moodkiller)
</details>
<details><summary><h3>📊 User Data</h3></summary>
---
By default, sunnypilot uploads the driving data to comma servers. You can also access your data through [comma connect](https://connect.comma.ai/).
sunnypilot is open source software. The user is free to disable data collection if they wish to do so.
sunnypilot logs the road-facing camera, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.
The driver-facing camera is only logged if you explicitly opt-in in settings. The microphone is not recorded.
By using openpilot, you agree to [our Privacy Policy](https://comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.
By using this software, you understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.
Licensing
------
</details>
<details><summary><h3>Licensing</h3></summary>
openpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.
Any user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys fees and costs) which arise out of, relate to or result from any use of this software by user.
Any user of this software shall indemnify and hold harmless comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys fees and costs) which arise out of, relate to or result from any use of this software by user.
**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.
YOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.
NO WARRANTY EXPRESSED OR IMPLIED.**
</details>
<h3>💰 Support sunnypilot</h3>
---
<img src="https://d1qb2nb5cznatu.cloudfront.net/startups/i/1061157-bc7e9bf3b246ece7322e6ffe653f6af8-medium_jpg.jpg?buster=1458363130" width="75"></img> <img src="https://cdn-images-1.medium.com/max/1600/1*C87EjxGeMPrkTuVRVWVg4w.png" width="225"></img>
If you find any of the features useful, consider becoming a [patron on Patreon](https://www.patreon.com/sunnyhaibin) or a [sponsor on GitHub](https://github.com/sponsors/sunnyhaibin) to support future feature development and improvements.
![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg)
[![codecov](https://codecov.io/gh/commaai/openpilot/branch/master/graph/badge.svg)](https://codecov.io/gh/commaai/openpilot)
By becoming a patron/sponsor, you will gain access to exclusive content, early access to new features, and the opportunity to directly influence the project's development.
<h3>Patreon</h3>
<a href="https://www.patreon.com/sunnyhaibin">
<img src="https://user-images.githubusercontent.com/47793918/244128051-bc7e913e-a196-4455-926e-23aec9a4bd3b.png" alt="Become a Patron" width="300" style="max-width: 100%; height: auto;">
</a>
<br>
<h3>GitHub Sponsor</h3>
<a href="https://github.com/sponsors/sunnyhaibin">
<img src="https://user-images.githubusercontent.com/47793918/244135584-9800acbd-69fd-4b2b-bec9-e5fa2d85c817.png" alt="Become a Sponsor" width="300" style="max-width: 100%; height: auto;">
</a>
<br>
<h3>PayPal</h3>
<a href="https://paypal.me/sunnyhaibin0850" target="_blank">
<img src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" alt="PayPal this" title="PayPal - The safer, easier way to pay online!" border="0" />
</a>
<br></br>
Your continuous love and support are greatly appreciated! Enjoy 🥰
<span>-</span> Jason, Founder of sunnypilot
[^1]:Requires data connection if not using Offline Maps data
[^2]:At least 50 GB of storage space is required. If you have the 32 GB version of comma three, upgrading with a compatible 250 GB or 1 TB SSD is strongly recommended
[^4]:Shortened URL for convenience. Full URL is ```smiskol.com/fork/sunnyhaibin/release-c3```
+16 -3
View File
@@ -1,14 +1,27 @@
Version 0.9.6 (20XX-XX-XX)
Version 0.9.7 (2024-XX-XX)
========================
* New driving model
* Support for many hybrid Ford models
Version 0.9.6 (2024-02-27)
========================
* New driving model
* Vision model trained on more data
* Improved driving performance
* Directly outputs curvature for lateral control
* New driver monitoring model
* Trained on larger dataset
* AGNOS 9
* comma body streaming and controls over WebRTC
* Improved fuzzy fingerprinting for many makes and models
* Alpha longitudinal support for new Toyota models
* Chevrolet Equinox 2019-22 support thanks to JasonJShuler and nworb-cire!
* Dodge Durango 2020-21 support
* Hyundai Staria 2023 support thanks to sunnyhaibin!
* Kia Niro Plug-in Hybrid 2022 support thanks to sunnyhaibin!
* Toyota RAV4 2023 support
* Toyota RAV4 Hybrid 2023 support
* Lexus LC 2024 support thanks to nelsonjchen!
* Toyota RAV4 2023-24 support
* Toyota RAV4 Hybrid 2023-24 support
Version 0.9.5 (2023-11-17)
========================
+15 -15
View File
@@ -9,11 +9,16 @@ import SCons.Errors
SCons.Warnings.warningAsException(True)
# pending upstream fix - https://github.com/SCons/scons/issues/4461
#SetOption('warn', 'all')
TICI = os.path.isfile('/TICI')
AGNOS = TICI
Decider('MD5-timestamp')
SetOption('num_jobs', int(os.cpu_count()/2))
AddOption('--kaitai',
action='store_true',
help='Regenerate kaitai struct parsers')
@@ -37,7 +42,7 @@ AddOption('--clazy',
AddOption('--compile_db',
action='store_true',
help='build clang compilation database')
AddOption('--ccflags',
action='store',
type='string',
@@ -91,8 +96,6 @@ lenv = {
rpath = lenv["LD_LIBRARY_PATH"].copy()
if arch == "larch64":
lenv["LD_LIBRARY_PATH"] += ['/data/data/com.termux/files/usr/lib']
cpppath = [
"#third_party/opencl/include",
]
@@ -140,7 +143,6 @@ else:
libpath = [
f"#third_party/acados/{arch}/lib",
f"#third_party/libyuv/{arch}/lib",
f"#third_party/mapbox-gl-native-qt/{arch}",
"/usr/lib",
"/usr/local/lib",
]
@@ -203,11 +205,12 @@ env = Environment(
"#third_party/json11",
"#third_party/linux/include",
"#third_party/snpe/include",
"#third_party/mapbox-gl-native-qt/include",
"#third_party/qrcode",
"#third_party",
"#cereal",
"#opendbc/can",
"#third_party/maplibre-native-qt/include",
f"#third_party/maplibre-native-qt/{arch}/include"
],
CC='clang',
@@ -292,8 +295,11 @@ else:
qt_env['QTDIR'] = qt_install_prefix
qt_dirs = [
f"{qt_install_headers}",
f"{qt_install_headers}/QtGui/5.12.8/QtGui",
]
qt_gui_path = os.path.join(qt_install_headers, "QtGui")
qt_gui_dirs = [d for d in os.listdir(qt_gui_path) if os.path.isdir(os.path.join(qt_gui_path, d))]
qt_dirs += [f"{qt_install_headers}/QtGui/{qt_gui_dirs[0]}/QtGui", ] if qt_gui_dirs else []
qt_dirs += [f"{qt_install_headers}/Qt{m}" for m in qt_modules]
qt_libs = [f"Qt5{m}" for m in qt_modules]
@@ -310,7 +316,7 @@ try:
except SCons.Errors.UserError:
qt_env.Tool('qt')
qt_env['CPPPATH'] += qt_dirs + ["#selfdrive/ui/qt/"]
qt_env['CPPPATH'] += qt_dirs# + ["#selfdrive/ui/qt/"]
qt_flags = [
"-D_REENTRANT",
"-DQT_NO_DEBUG",
@@ -323,7 +329,8 @@ qt_flags = [
"-DQT_MESSAGELOGCONTEXT",
]
qt_env['CXXFLAGS'] += qt_flags
qt_env['LIBPATH'] += ['#selfdrive/ui']
qt_env['LIBPATH'] += ['#selfdrive/ui', f"#third_party/maplibre-native-qt/{arch}/lib"]
qt_env['RPATH'] += [Dir(f"#third_party/maplibre-native-qt/{arch}/lib").srcnode().abspath]
qt_env['LIBS'] = qt_libs
if GetOption("clazy"):
@@ -351,13 +358,6 @@ Export('common', 'gpucommon')
# Build cereal and messaging
SConscript(['cereal/SConscript'])
cereal = [File('#cereal/libcereal.a')]
messaging = [File('#cereal/libmessaging.a')]
visionipc = [File('#cereal/libvisionipc.a')]
messaging_python = [File('#cereal/messaging/messaging_pyx.so')]
Export('cereal', 'messaging', 'messaging_python', 'visionipc')
# Build other submodules
SConscript([
'body/board/SConscript',
+1 -1
Submodule body updated: cad7ef43ad...61ace31efa
+1 -1
Submodule cereal updated: 8ae5c51a65...d4c43a0865
+4 -6
View File
@@ -2,7 +2,6 @@ Import('env', 'envCython', 'arch')
common_libs = [
'params.cc',
'statlog.cc',
'swaglog.cc',
'util.cc',
'i2c.cc',
@@ -24,18 +23,17 @@ Export('_common', '_gpucommon')
if GetOption('extras'):
env.Program('tests/test_common',
['tests/test_runner.cc', 'tests/test_params.cc', 'tests/test_util.cc', 'tests/test_swaglog.cc', 'tests/test_ratekeeper.cc'],
['tests/test_runner.cc', 'tests/test_params.cc', 'tests/test_util.cc', 'tests/test_swaglog.cc'],
LIBS=[_common, 'json11', 'zmq', 'pthread'])
# Cython bindings
params_python = envCython.Program('params_pyx.so', 'params_pyx.pyx', LIBS=envCython['LIBS'] + [_common, 'zmq', 'json11'])
SConscript([
'kalman/SConscript',
'transformations/SConscript'
'transformations/SConscript',
])
Import('simple_kalman_python', 'transformations_python')
common_python = [params_python, simple_kalman_python, transformations_python]
Import('transformations_python')
common_python = [params_python, transformations_python]
Export('common_python')
+1 -48
View File
@@ -1,55 +1,8 @@
import os
import sys
import fcntl
import hashlib
import platform
from cffi import FFI
def suffix():
if platform.system() == "Darwin":
return ".dylib"
else:
return ".so"
def ffi_wrap(name, c_code, c_header, tmpdir="/tmp/ccache", cflags="", libraries=None):
if libraries is None:
libraries = []
cache = name + "_" + hashlib.sha1(c_code.encode('utf-8')).hexdigest()
try:
os.mkdir(tmpdir)
except OSError:
pass
fd = os.open(tmpdir, 0)
fcntl.flock(fd, fcntl.LOCK_EX)
try:
sys.path.append(tmpdir)
try:
mod = __import__(cache)
except Exception:
print(f"cache miss {cache}")
compile_code(cache, c_code, c_header, tmpdir, cflags, libraries)
mod = __import__(cache)
finally:
os.close(fd)
return mod.ffi, mod.lib
def compile_code(name, c_code, c_header, directory, cflags="", libraries=None):
if libraries is None:
libraries = []
ffibuilder = FFI()
ffibuilder.set_source(name, c_code, source_extension='.cpp', libraries=libraries)
ffibuilder.cdef(c_header)
os.environ['OPT'] = "-fwrapv -O2 -DNDEBUG -std=c++1z"
os.environ['CFLAGS'] = cflags
ffibuilder.compile(verbose=True, debug=False, tmpdir=directory)
def wrap_compiled(name, directory):
sys.path.append(directory)
mod = __import__(name)
return mod.ffi, mod.lib
+12 -64
View File
@@ -1,50 +1,6 @@
import os
import shutil
import tempfile
from atomicwrites import AtomicWriter
def rm_not_exists_ok(path):
try:
os.remove(path)
except OSError:
if os.path.exists(path):
raise
def rm_tree_or_link(path):
if os.path.islink(path):
os.unlink(path)
elif os.path.isdir(path):
shutil.rmtree(path)
def get_tmpdir_on_same_filesystem(path):
normpath = os.path.normpath(path)
parts = normpath.split("/")
if len(parts) > 1 and parts[1] == "scratch":
return "/scratch/tmp"
elif len(parts) > 2 and parts[2] == "runner":
return f"/{parts[1]}/runner/tmp"
return "/tmp"
class NamedTemporaryDir():
def __init__(self, temp_dir=None):
self._path = tempfile.mkdtemp(dir=temp_dir)
@property
def name(self):
return self._path
def close(self):
shutil.rmtree(self._path)
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
self.close()
import contextlib
class CallbackReader:
@@ -66,24 +22,16 @@ class CallbackReader:
return chunk
def _get_fileobject_func(writer, temp_dir):
def _get_fileobject():
return writer.get_fileobject(dir=temp_dir)
return _get_fileobject
@contextlib.contextmanager
def atomic_write_in_dir(path: str, mode: str = 'w', buffering: int = -1, encoding: str = None, newline: str = None,
overwrite: bool = False):
"""Write to a file atomically using a temporary file in the same directory as the destination file."""
dir_name = os.path.dirname(path)
def atomic_write_on_fs_tmp(path, **kwargs):
"""Creates an atomic writer using a temporary file in a temporary directory
on the same filesystem as path.
"""
# TODO(mgraczyk): This use of AtomicWriter relies on implementation details to set the temp
# directory.
writer = AtomicWriter(path, **kwargs)
return writer._open(_get_fileobject_func(writer, get_tmpdir_on_same_filesystem(path)))
if not overwrite and os.path.exists(path):
raise FileExistsError(f"File '{path}' already exists. To overwrite it, set 'overwrite' to True.")
def atomic_write_in_dir(path, **kwargs):
"""Creates an atomic writer using a temporary file in the same directory
as the destination file.
"""
writer = AtomicWriter(path, **kwargs)
return writer._open(_get_fileobject_func(writer, os.path.dirname(path)))
with tempfile.NamedTemporaryFile(mode=mode, buffering=buffering, encoding=encoding, newline=newline, dir=dir_name, delete=False) as tmp_file:
yield tmp_file
tmp_file_name = tmp_file.name
os.replace(tmp_file_name, path)
+3 -4
View File
@@ -1,6 +1,5 @@
import os
from functools import lru_cache
from typing import Optional, List
def gpio_init(pin: int, output: bool) -> None:
try:
@@ -16,7 +15,7 @@ def gpio_set(pin: int, high: bool) -> None:
except Exception as e:
print(f"Failed to set gpio {pin} value: {e}")
def gpio_read(pin: int) -> Optional[bool]:
def gpio_read(pin: int) -> bool | None:
val = None
try:
with open(f"/sys/class/gpio/gpio{pin}/value", 'rb') as f:
@@ -37,7 +36,7 @@ def gpio_export(pin: int) -> None:
print(f"Failed to export gpio {pin}")
@lru_cache(maxsize=None)
def get_irq_action(irq: int) -> List[str]:
def get_irq_action(irq: int) -> list[str]:
try:
with open(f"/sys/kernel/irq/{irq}/actions") as f:
actions = f.read().strip().split(',')
@@ -45,7 +44,7 @@ def get_irq_action(irq: int) -> List[str]:
except FileNotFoundError:
return []
def get_irqs_for_action(action: str) -> List[str]:
def get_irqs_for_action(action: str) -> list[str]:
ret = []
with open("/proc/interrupts") as f:
for l in f.readlines():
-1
View File
@@ -1 +0,0 @@
simple_kalman_impl.c
-5
View File
@@ -1,5 +0,0 @@
Import('envCython')
simple_kalman_python = envCython.Program('simple_kalman_impl.so', 'simple_kalman_impl.pyx')
Export('simple_kalman_python')
View File
-12
View File
@@ -1,12 +0,0 @@
from openpilot.common.kalman.simple_kalman_impl import KF1D as KF1D
assert KF1D
import numpy as np
def get_kalman_gain(dt, A, C, Q, R, iterations=100):
P = np.zeros_like(Q)
for _ in range(iterations):
P = A.dot(P).dot(A.T) + dt * Q
S = C.dot(P).dot(C.T) + R
K = P.dot(C.T).dot(np.linalg.inv(S))
P = (np.eye(len(P)) - K.dot(C)).dot(P)
return K
-18
View File
@@ -1,18 +0,0 @@
# cython: language_level = 3
cdef class KF1D:
cdef public:
double x0_0
double x1_0
double K0_0
double K1_0
double A0_0
double A0_1
double A1_0
double A1_1
double C0_0
double C0_1
double A_K_0
double A_K_1
double A_K_2
double A_K_3
-37
View File
@@ -1,37 +0,0 @@
# distutils: language = c++
# cython: language_level=3
cdef class KF1D:
def __init__(self, x0, A, C, K):
self.x0_0 = x0[0][0]
self.x1_0 = x0[1][0]
self.A0_0 = A[0][0]
self.A0_1 = A[0][1]
self.A1_0 = A[1][0]
self.A1_1 = A[1][1]
self.C0_0 = C[0]
self.C0_1 = C[1]
self.K0_0 = K[0][0]
self.K1_0 = K[1][0]
self.A_K_0 = self.A0_0 - self.K0_0 * self.C0_0
self.A_K_1 = self.A0_1 - self.K0_0 * self.C0_1
self.A_K_2 = self.A1_0 - self.K1_0 * self.C0_0
self.A_K_3 = self.A1_1 - self.K1_0 * self.C0_1
def update(self, meas):
cdef double x0_0 = self.A_K_0 * self.x0_0 + self.A_K_1 * self.x1_0 + self.K0_0 * meas
cdef double x1_0 = self.A_K_2 * self.x0_0 + self.A_K_3 * self.x1_0 + self.K1_0 * meas
self.x0_0 = x0_0
self.x1_0 = x1_0
return [self.x0_0, self.x1_0]
@property
def x(self):
return [[self.x0_0], [self.x1_0]]
@x.setter
def x(self, x):
self.x0_0 = x[0][0]
self.x1_0 = x[1][0]
-23
View File
@@ -1,23 +0,0 @@
import numpy as np
class KF1D:
# this EKF assumes constant covariance matrix, so calculations are much simpler
# the Kalman gain also needs to be precomputed using the control module
def __init__(self, x0, A, C, K):
self.x = x0
self.A = A
self.C = np.atleast_2d(C)
self.K = K
self.A_K = self.A - np.dot(self.K, self.C)
# K matrix needs to be pre-computed as follow:
# import control
# (x, l, K) = control.dare(np.transpose(self.A), np.transpose(self.C), Q, R)
# self.K = np.transpose(K)
def update(self, meas):
self.x = np.dot(self.A_K, self.x) + np.dot(self.K, meas)
return self.x
View File
-87
View File
@@ -1,87 +0,0 @@
import unittest
import random
import timeit
import numpy as np
from openpilot.common.kalman.simple_kalman import KF1D
from openpilot.common.kalman.simple_kalman_old import KF1D as KF1D_old
class TestSimpleKalman(unittest.TestCase):
def setUp(self):
dt = 0.01
x0_0 = 0.0
x1_0 = 0.0
A0_0 = 1.0
A0_1 = dt
A1_0 = 0.0
A1_1 = 1.0
C0_0 = 1.0
C0_1 = 0.0
K0_0 = 0.12287673
K1_0 = 0.29666309
self.kf_old = KF1D_old(x0=np.array([[x0_0], [x1_0]]),
A=np.array([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.array([C0_0, C0_1]),
K=np.array([[K0_0], [K1_0]]))
self.kf = KF1D(x0=[[x0_0], [x1_0]],
A=[[A0_0, A0_1], [A1_0, A1_1]],
C=[C0_0, C0_1],
K=[[K0_0], [K1_0]])
def test_getter_setter(self):
self.kf.x = [[1.0], [1.0]]
self.assertEqual(self.kf.x, [[1.0], [1.0]])
def update_returns_state(self):
x = self.kf.update(100)
self.assertEqual(x, self.kf.x)
def test_old_equal_new(self):
for _ in range(1000):
v_wheel = random.uniform(0, 200)
x_old = self.kf_old.update(v_wheel)
x = self.kf.update(v_wheel)
# Compare the output x, verify that the error is less than 1e-4
np.testing.assert_almost_equal(x_old[0], x[0])
np.testing.assert_almost_equal(x_old[1], x[1])
def test_new_is_faster(self):
setup = """
import numpy as np
from openpilot.common.kalman.simple_kalman import KF1D
from openpilot.common.kalman.simple_kalman_old import KF1D as KF1D_old
dt = 0.01
x0_0 = 0.0
x1_0 = 0.0
A0_0 = 1.0
A0_1 = dt
A1_0 = 0.0
A1_1 = 1.0
C0_0 = 1.0
C0_1 = 0.0
K0_0 = 0.12287673
K1_0 = 0.29666309
kf_old = KF1D_old(x0=np.array([[x0_0], [x1_0]]),
A=np.array([[A0_0, A0_1], [A1_0, A1_1]]),
C=np.array([C0_0, C0_1]),
K=np.array([[K0_0], [K1_0]]))
kf = KF1D(x0=[[x0_0], [x1_0]],
A=[[A0_0, A0_1], [A1_0, A1_1]],
C=[C0_0, C0_1],
K=[[K0_0], [K1_0]])
"""
kf_speed = timeit.timeit("kf.update(1234)", setup=setup, number=10000)
kf_old_speed = timeit.timeit("kf_old.update(1234)", setup=setup, number=10000)
self.assertTrue(kf_speed < kf_old_speed / 4)
if __name__ == "__main__":
unittest.main()
-12
View File
@@ -1,12 +0,0 @@
class lazy_property():
"""Defines a property whose value will be computed only once and as needed.
This can only be used on instance methods.
"""
def __init__(self, func):
self._func = func
def __get__(self, obj_self, cls):
value = self._func(obj_self)
setattr(obj_self, self._func.__name__, value)
return value
+2 -2
View File
@@ -65,7 +65,7 @@ class SwagFormatter(logging.Formatter):
return record_dict
def format(self, record): # noqa: A003
def format(self, record):
if self.swaglogger is None:
raise Exception("must set swaglogger before calling format()")
return json_robust_dumps(self.format_dict(record))
@@ -95,7 +95,7 @@ class SwagLogFileFormatter(SwagFormatter):
k += "$a"
return k, v
def format(self, record): # noqa: A003
def format(self, record):
if isinstance(record, str):
v = json.loads(record)
else:
+50
View File
@@ -0,0 +1,50 @@
"""
Utilities for generating mock messages for testing.
example in common/tests/test_mock.py
"""
import functools
import threading
from cereal.messaging import PubMaster
from cereal.services import SERVICE_LIST
from openpilot.common.mock.generators import generate_liveLocationKalman
from openpilot.common.realtime import Ratekeeper
MOCK_GENERATOR = {
"liveLocationKalman": generate_liveLocationKalman
}
def generate_messages_loop(services: list[str], done: threading.Event):
pm = PubMaster(services)
rk = Ratekeeper(100)
i = 0
while not done.is_set():
for s in services:
should_send = i % (100/SERVICE_LIST[s].frequency) == 0
if should_send:
message = MOCK_GENERATOR[s]()
pm.send(s, message)
i += 1
rk.keep_time()
def mock_messages(services: list[str] | str):
if isinstance(services, str):
services = [services]
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
done = threading.Event()
t = threading.Thread(target=generate_messages_loop, args=(services, done))
t.start()
try:
return func(*args, **kwargs)
finally:
done.set()
t.join()
return wrapper
return decorator
+20
View File
@@ -0,0 +1,20 @@
from cereal import messaging
LOCATION1 = (32.7174, -117.16277)
LOCATION2 = (32.7558, -117.2037)
LLK_DECIMATION = 10
RENDER_FRAMES = 15
DEFAULT_ITERATIONS = RENDER_FRAMES * LLK_DECIMATION
def generate_liveLocationKalman(location=LOCATION1):
msg = messaging.new_message('liveLocationKalman')
msg.liveLocationKalman.positionGeodetic = {'value': [*location, 0], 'std': [0., 0., 0.], 'valid': True}
msg.liveLocationKalman.positionECEF = {'value': [0., 0., 0.], 'std': [0., 0., 0.], 'valid': True}
msg.liveLocationKalman.calibratedOrientationNED = {'value': [0., 0., 0.], 'std': [0., 0., 0.], 'valid': True}
msg.liveLocationKalman.velocityCalibrated = {'value': [0., 0., 0.], 'std': [0., 0., 0.], 'valid': True}
msg.liveLocationKalman.status = 'valid'
msg.liveLocationKalman.gpsOK = True
return msg
-22
View File
@@ -1,22 +0,0 @@
import numpy as np
def deep_interp_np(x, xp, fp, axis=None):
if axis is not None:
fp = fp.swapaxes(0,axis)
x = np.atleast_1d(x)
xp = np.array(xp)
if len(xp) < 2:
return np.repeat(fp, len(x), axis=0)
if min(np.diff(xp)) < 0:
raise RuntimeError('Bad x array for interpolation')
j = np.searchsorted(xp, x) - 1
j = np.clip(j, 0, len(xp)-2)
d = np.divide(x - xp[j], xp[j + 1] - xp[j], out=np.ones_like(x, dtype=np.float64), where=xp[j + 1] - xp[j] != 0)
vals_interp = (fp[j].T*(1 - d)).T + (fp[j + 1].T*d).T
if axis is not None:
vals_interp = vals_interp.swapaxes(0,axis)
if len(vals_interp) == 1:
return vals_interp[0]
else:
return vals_interp
+100 -9
View File
@@ -94,6 +94,8 @@ std::unordered_map<std::string, uint32_t> keys = {
{"AssistNowToken", PERSISTENT},
{"AthenadPid", PERSISTENT},
{"AthenadUploadQueue", PERSISTENT},
{"AthenadRecentlyViewedRoutes", PERSISTENT},
{"BootCount", PERSISTENT},
{"CalibrationParams", PERSISTENT},
{"CameraDebugExpGain", CLEAR_ON_MANAGER_START},
{"CameraDebugExpTime", CLEAR_ON_MANAGER_START},
@@ -123,6 +125,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"ForcePowerDown", PERSISTENT},
{"GitBranch", PERSISTENT},
{"GitCommit", PERSISTENT},
{"GitCommitDate", PERSISTENT},
{"GitDiff", PERSISTENT},
{"GithubSshKeys", PERSISTENT},
{"GithubUsername", PERSISTENT},
@@ -144,16 +147,13 @@ std::unordered_map<std::string, uint32_t> keys = {
{"IsReleaseBranch", CLEAR_ON_MANAGER_START},
{"IsTakingSnapshot", CLEAR_ON_MANAGER_START},
{"IsTestedBranch", CLEAR_ON_MANAGER_START},
{"IsUpdateAvailable", CLEAR_ON_MANAGER_START},
{"JoystickDebugMode", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"LaikadEphemerisV3", PERSISTENT | DONT_LOG},
{"LanguageSetting", PERSISTENT},
{"LastAthenaPingTime", CLEAR_ON_MANAGER_START},
{"LastGPSPosition", PERSISTENT},
{"LastManagerExitReason", CLEAR_ON_MANAGER_START},
{"LastOffroadStatusPacket", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"LastPowerDropDetected", CLEAR_ON_MANAGER_START},
{"LastSystemShutdown", CLEAR_ON_MANAGER_START},
{"LastUpdateException", CLEAR_ON_MANAGER_START},
{"LastUpdateTime", PERSISTENT},
{"LiveParameters", PERSISTENT},
@@ -164,7 +164,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"NavPastDestinations", PERSISTENT},
{"NavSettingLeftSide", PERSISTENT},
{"NavSettingTime24h", PERSISTENT},
{"NavdRender", PERSISTENT},
{"NetworkMetered", PERSISTENT},
{"ObdMultiplexingChanged", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"ObdMultiplexingEnabled", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"Offroad_BadNvme", CLEAR_ON_MANAGER_START},
@@ -184,22 +184,19 @@ std::unordered_map<std::string, uint32_t> keys = {
{"PandaHeartbeatLost", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"PandaSomResetTriggered", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"PandaSignatures", CLEAR_ON_MANAGER_START},
{"Passive", PERSISTENT},
{"PrimeType", PERSISTENT},
{"RecordFront", PERSISTENT},
{"RecordFrontLock", PERSISTENT}, // for the internal fleet
{"ReplayControlsState", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"ShouldDoUpdate", CLEAR_ON_MANAGER_START},
{"SnoozeUpdate", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION},
{"SshEnabled", PERSISTENT},
{"SubscriberInfo", PERSISTENT},
{"TermsVersion", PERSISTENT},
{"Timezone", PERSISTENT},
{"TrainingVersion", PERSISTENT},
{"UbloxAvailable", PERSISTENT},
{"UpdateAvailable", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION},
{"UpdateFailedCount", CLEAR_ON_MANAGER_START},
{"UpdaterAvailableBranches", CLEAR_ON_MANAGER_START},
{"UpdaterAvailableBranches", PERSISTENT},
{"UpdaterCurrentDescription", CLEAR_ON_MANAGER_START},
{"UpdaterCurrentReleaseNotes", CLEAR_ON_MANAGER_START},
{"UpdaterFetchAvailable", CLEAR_ON_MANAGER_START},
@@ -207,9 +204,103 @@ std::unordered_map<std::string, uint32_t> keys = {
{"UpdaterNewReleaseNotes", CLEAR_ON_MANAGER_START},
{"UpdaterState", CLEAR_ON_MANAGER_START},
{"UpdaterTargetBranch", CLEAR_ON_MANAGER_START},
{"UpdaterLastFetchTime", PERSISTENT},
{"Version", PERSISTENT},
{"VisionRadarToggle", PERSISTENT},
{"WheeledBody", PERSISTENT},
{"AccMadsCombo", PERSISTENT},
{"AmapKey1", PERSISTENT},
{"AmapKey2", PERSISTENT},
{"AutoLaneChangeTimer", PERSISTENT},
{"AutoLaneChangeBsmDelay", PERSISTENT},
{"BelowSpeedPause", PERSISTENT},
{"BrakeLights", PERSISTENT},
{"BrightnessControl", PERSISTENT},
{"ButtonAutoHide", PERSISTENT},
{"CameraControl", PERSISTENT},
{"CameraControlToggle", PERSISTENT},
{"CameraOffset", PERSISTENT},
{"CarModel", PERSISTENT},
{"CarModelText", PERSISTENT},
{"ChevronInfo", PERSISTENT},
{"CustomBootScreen", PERSISTENT},
{"CustomMapboxTokenPk", PERSISTENT},
{"CustomMapboxTokenSk", PERSISTENT},
{"CustomOffsets", PERSISTENT},
{"CustomStockLong", PERSISTENT},
{"CustomTorqueLateral", PERSISTENT},
{"DevUI", PERSISTENT},
{"DevUIInfo", PERSISTENT},
{"DisableOnroadUploads", PERSISTENT},
{"DisengageLateralOnBrake", PERSISTENT},
{"DynamicExperimentalControl", PERSISTENT},
{"DynamicExperimentalControlToggle", PERSISTENT},
{"DynamicLaneProfile", PERSISTENT},
{"DynamicLaneProfileToggle", PERSISTENT},
{"EnableAmap", PERSISTENT},
{"EnableDebugSnapshot", PERSISTENT},
{"EnableGmap", PERSISTENT},
{"EnableMads", PERSISTENT},
{"EndToEndLongAlertLead", PERSISTENT},
{"EndToEndLongAlertLight", PERSISTENT},
{"EndToEndLongAlertUI", PERSISTENT},
{"EndToEndLongToggle", PERSISTENT},
{"EnforceTorqueLateral", PERSISTENT},
{"EnhancedScc", PERSISTENT},
{"FleetManagerPin", PERSISTENT},
{"GapAdjustCruise", PERSISTENT},
{"GapAdjustCruiseMax", PERSISTENT},
{"GapAdjustCruiseMin", PERSISTENT},
{"GapAdjustCruiseMode", PERSISTENT},
{"GapAdjustCruiseTr", PERSISTENT},
{"GmapKey", PERSISTENT},
{"HandsOnWheelMonitoring", PERSISTENT},
{"HideVEgoUi", PERSISTENT},
{"HkgSmoothStop", PERSISTENT},
{"HotspotOnBoot", PERSISTENT},
{"LastCarModel", PERSISTENT},
{"LastSpeedLimitSignTap", PERSISTENT},
{"LiveTorque", PERSISTENT},
{"LkasToggle", PERSISTENT},
{"MadsCruiseMain", PERSISTENT},
{"MadsIconToggle", PERSISTENT},
{"MapboxFullScreen", PERSISTENT},
{"MaxTimeOffroad", PERSISTENT},
{"OnroadScreenOff", PERSISTENT},
{"OnroadScreenOffBrightness", PERSISTENT},
{"OnroadScreenOffEvent", PERSISTENT},
{"OsmDbUpdatesCheck", PERSISTENT},
{"OsmLocal", PERSISTENT},
{"OsmLocalDb", PERSISTENT},
{"OsmLocationName", PERSISTENT},
{"OsmLocationTitle", PERSISTENT},
{"OsmLocationUrl", PERSISTENT},
{"OsmWayTest", PERSISTENT},
{"PathOffset", PERSISTENT},
{"QuietDrive", PERSISTENT},
{"RoadEdge", PERSISTENT},
{"ReverseAccChange", PERSISTENT},
{"ReverseDmCam", PERSISTENT},
{"ScreenRecorder", PERSISTENT},
{"ShowDebugUI", PERSISTENT},
{"SidebarTemperature", PERSISTENT},
{"SidebarTemperatureOptions", PERSISTENT},
{"SpeedLimitControl", PERSISTENT},
{"SpeedLimitPercOffset", PERSISTENT},
{"SpeedLimitValueOffset", PERSISTENT},
{"SpeedLimitOffsetType", PERSISTENT},
{"StandStillTimer", PERSISTENT},
{"StockLongToyota", PERSISTENT},
{"TorqueDeadzoneDeg", PERSISTENT},
{"TorqueFriction", PERSISTENT},
{"TorqueMaxLatAccel", PERSISTENT},
{"ToyotaTSS2Long", PERSISTENT},
{"TrueVEgoUi", PERSISTENT},
{"TurnSpeedControl", PERSISTENT},
{"TurnVisionControl", PERSISTENT},
{"VisionCurveLaneless", PERSISTENT},
{"VwAccType", PERSISTENT},
{"Offroad_SupersededUpdate", PERSISTENT},
};
} // namespace
+1 -1
View File
@@ -29,7 +29,7 @@ cdef extern from "common/params.h":
def ensure_bytes(v):
return v.encode() if isinstance(v, str) else v;
return v.encode() if isinstance(v, str) else v
class UnknownKeyName(Exception):
pass
+8 -3
View File
@@ -2,16 +2,17 @@ import os
import shutil
import uuid
from typing import Optional
from openpilot.common.params import Params
from openpilot.system.hardware.hw import Paths
from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT
class OpenpilotPrefix:
def __init__(self, prefix: Optional[str] = None, clean_dirs_on_exit: bool = True):
def __init__(self, prefix: str = None, clean_dirs_on_exit: bool = True, shared_download_cache: bool = False):
self.prefix = prefix if prefix else str(uuid.uuid4().hex[0:15])
self.msgq_path = os.path.join('/dev/shm', self.prefix)
self.clean_dirs_on_exit = clean_dirs_on_exit
self.shared_download_cache = shared_download_cache
def __enter__(self):
self.original_prefix = os.environ.get('OPENPILOT_PREFIX', None)
@@ -22,6 +23,9 @@ class OpenpilotPrefix:
pass
os.makedirs(Paths.log_root(), exist_ok=True)
if self.shared_download_cache:
os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT
return self
def __exit__(self, exc_type, exc_obj, exc_tb):
@@ -42,5 +46,6 @@ class OpenpilotPrefix:
os.remove(symlink_path)
shutil.rmtree(self.msgq_path, ignore_errors=True)
shutil.rmtree(Paths.log_root(), ignore_errors=True)
shutil.rmtree(Paths.download_cache_root(), ignore_errors=True)
if not os.environ.get("COMMA_CACHE", False):
shutil.rmtree(Paths.download_cache_root(), ignore_errors=True)
shutil.rmtree(Paths.comma_home(), ignore_errors=True)
-45
View File
@@ -1,45 +0,0 @@
import time
class Profiler():
def __init__(self, enabled=False):
self.enabled = enabled
self.cp = {}
self.cp_ignored = []
self.iter = 0
self.start_time = time.time()
self.last_time = self.start_time
self.tot = 0.
def reset(self, enabled=False):
self.enabled = enabled
self.cp = {}
self.cp_ignored = []
self.iter = 0
self.start_time = time.time()
self.last_time = self.start_time
def checkpoint(self, name, ignore=False):
# ignore flag needed when benchmarking threads with ratekeeper
if not self.enabled:
return
tt = time.time()
if name not in self.cp:
self.cp[name] = 0.
if ignore:
self.cp_ignored.append(name)
self.cp[name] += tt - self.last_time
if not ignore:
self.tot += tt - self.last_time
self.last_time = tt
def display(self):
if not self.enabled:
return
self.iter += 1
print("******* Profiling %d *******" % self.iter)
for n, ms in sorted(self.cp.items(), key=lambda x: -x[1]):
if n in self.cp_ignored:
print("%30s: %9.2f avg: %7.2f percent: %3.0f IGNORED" % (n, ms*1000.0, ms*1000.0/self.iter, ms/self.tot*100))
else:
print("%30s: %9.2f avg: %7.2f percent: %3.0f" % (n, ms*1000.0, ms*1000.0/self.iter, ms/self.tot*100))
print(f"Iter clock: {self.tot / self.iter:2.6f} TOTAL: {self.tot:2.2f}")
+4 -5
View File
@@ -3,7 +3,6 @@ import gc
import os
import time
from collections import deque
from typing import Optional, List, Union
from setproctitle import getproctitle
@@ -33,12 +32,12 @@ def set_realtime_priority(level: int) -> None:
os.sched_setscheduler(0, os.SCHED_FIFO, os.sched_param(level))
def set_core_affinity(cores: List[int]) -> None:
def set_core_affinity(cores: list[int]) -> None:
if not PC:
os.sched_setaffinity(0, cores)
def config_realtime_process(cores: Union[int, List[int]], priority: int) -> None:
def config_realtime_process(cores: int | list[int], priority: int) -> None:
gc.disable()
set_realtime_priority(priority)
c = cores if isinstance(cores, list) else [cores, ]
@@ -46,7 +45,7 @@ def config_realtime_process(cores: Union[int, List[int]], priority: int) -> None
class Ratekeeper:
def __init__(self, rate: float, print_delay_threshold: Optional[float] = 0.0) -> None:
def __init__(self, rate: float, print_delay_threshold: float | None = 0.0) -> None:
"""Rate in Hz for ratekeeping. print_delay_threshold must be nonnegative."""
self._interval = 1. / rate
self._next_frame_time = time.monotonic() + self._interval
@@ -78,7 +77,7 @@ class Ratekeeper:
time.sleep(self._remaining)
return lagged
# this only monitor the cumulative lag, but does not enforce a rate
# Monitors the cumulative lag, but does not enforce a rate
def monitor_time(self) -> bool:
prev = self._last_monitor_time
self._last_monitor_time = time.monotonic()
+54
View File
@@ -0,0 +1,54 @@
import numpy as np
def get_kalman_gain(dt, A, C, Q, R, iterations=100):
P = np.zeros_like(Q)
for _ in range(iterations):
P = A.dot(P).dot(A.T) + dt * Q
S = C.dot(P).dot(C.T) + R
K = P.dot(C.T).dot(np.linalg.inv(S))
P = (np.eye(len(P)) - K.dot(C)).dot(P)
return K
class KF1D:
# this EKF assumes constant covariance matrix, so calculations are much simpler
# the Kalman gain also needs to be precomputed using the control module
def __init__(self, x0, A, C, K):
self.x0_0 = x0[0][0]
self.x1_0 = x0[1][0]
self.A0_0 = A[0][0]
self.A0_1 = A[0][1]
self.A1_0 = A[1][0]
self.A1_1 = A[1][1]
self.C0_0 = C[0]
self.C0_1 = C[1]
self.K0_0 = K[0][0]
self.K1_0 = K[1][0]
self.A_K_0 = self.A0_0 - self.K0_0 * self.C0_0
self.A_K_1 = self.A0_1 - self.K0_0 * self.C0_1
self.A_K_2 = self.A1_0 - self.K1_0 * self.C0_0
self.A_K_3 = self.A1_1 - self.K1_0 * self.C0_1
# K matrix needs to be pre-computed as follow:
# import control
# (x, l, K) = control.dare(np.transpose(self.A), np.transpose(self.C), Q, R)
# self.K = np.transpose(K)
def update(self, meas):
#self.x = np.dot(self.A_K, self.x) + np.dot(self.K, meas)
x0_0 = self.A_K_0 * self.x0_0 + self.A_K_1 * self.x1_0 + self.K0_0 * meas
x1_0 = self.A_K_2 * self.x0_0 + self.A_K_3 * self.x1_0 + self.K1_0 * meas
self.x0_0 = x0_0
self.x1_0 = x1_0
return [self.x0_0, self.x1_0]
@property
def x(self):
return [[self.x0_0], [self.x1_0]]
def set_x(self, x):
self.x0_0 = x[0][0]
self.x1_0 = x[1][0]
-47
View File
@@ -1,47 +0,0 @@
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include "common/statlog.h"
#include "common/util.h"
#include <cstdarg>
#include <stdio.h>
#include <mutex>
#include <zmq.h>
class StatlogState : public LogState {
public:
StatlogState() : LogState("ipc:///tmp/stats") {}
};
static StatlogState s = {};
static void log(const char* metric_type, const char* metric, const char* fmt, ...) {
std::lock_guard lk(s.lock);
if (!s.initialized) s.initialize();
char* value_buf = nullptr;
va_list args;
va_start(args, fmt);
int ret = vasprintf(&value_buf, fmt, args);
va_end(args);
if (ret > 0 && value_buf) {
char* line_buf = nullptr;
ret = asprintf(&line_buf, "%s:%s|%s", metric, value_buf, metric_type);
if (ret > 0 && line_buf) {
zmq_send(s.sock, line_buf, ret, ZMQ_NOBLOCK);
free(line_buf);
}
free(value_buf);
}
}
void statlog_log(const char* metric_type, const char* metric, int value) {
log(metric_type, metric, "%d", value);
}
void statlog_log(const char* metric_type, const char* metric, float value) {
log(metric_type, metric, "%f", value);
}
-10
View File
@@ -1,10 +0,0 @@
#pragma once
#define STATLOG_GAUGE "g"
#define STATLOG_SAMPLE "sa"
void statlog_log(const char* metric_type, const char* metric, int value);
void statlog_log(const char* metric_type, const char* metric, float value);
#define statlog_gauge(metric, value) statlog_log(STATLOG_GAUGE, metric, value)
#define statlog_sample(metric, value) statlog_log(STATLOG_SAMPLE, metric, value)
+44 -31
View File
@@ -5,30 +5,29 @@
#include "common/swaglog.h"
#include <cassert>
#include <cstdarg>
#include <cstring>
#include <limits>
#include <mutex>
#include <string>
#include <zmq.h>
#include <stdarg.h>
#include "third_party/json11/json11.hpp"
#include "common/util.h"
#include "common/version.h"
#include "system/hardware/hw.h"
class SwaglogState : public LogState {
public:
SwaglogState() : LogState(Path::swaglog_ipc().c_str()) {}
class SwaglogState {
public:
SwaglogState() {
zctx = zmq_ctx_new();
sock = zmq_socket(zctx, ZMQ_PUSH);
json11::Json::object ctx_j;
// Timeout on shutdown for messages to be received by the logging process
int timeout = 100;
zmq_setsockopt(sock, ZMQ_LINGER, &timeout, sizeof(timeout));
zmq_connect(sock, Path::swaglog_ipc().c_str());
inline void initialize() {
ctx_j = json11::Json::object {};
print_level = CLOUDLOG_WARNING;
const char* print_lvl = getenv("LOGPRINT");
if (print_lvl) {
if (const char* print_lvl = getenv("LOGPRINT")) {
if (strcmp(print_lvl, "debug") == 0) {
print_level = CLOUDLOG_DEBUG;
} else if (strcmp(print_lvl, "info") == 0) {
@@ -38,39 +37,53 @@ class SwaglogState : public LogState {
}
}
// openpilot bindings
char* dongle_id = getenv("DONGLE_ID");
if (dongle_id) {
ctx_j = json11::Json::object{};
if (char* dongle_id = getenv("DONGLE_ID")) {
ctx_j["dongle_id"] = dongle_id;
}
char* daemon_name = getenv("MANAGER_DAEMON");
if (daemon_name) {
if (char* git_origin = getenv("GIT_ORIGIN")) {
ctx_j["origin"] = git_origin;
}
if (char* git_branch = getenv("GIT_BRANCH")) {
ctx_j["branch"] = git_branch;
}
if (char* git_commit = getenv("GIT_COMMIT")) {
ctx_j["commit"] = git_commit;
}
if (char* daemon_name = getenv("MANAGER_DAEMON")) {
ctx_j["daemon"] = daemon_name;
}
ctx_j["version"] = COMMA_VERSION;
ctx_j["dirty"] = !getenv("CLEAN");
// device type
ctx_j["device"] = Hardware::get_name();
LogState::initialize();
}
~SwaglogState() {
zmq_close(sock);
zmq_ctx_destroy(zctx);
}
void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
std::lock_guard lk(lock);
if (levelnum >= print_level) {
printf("%s: %s\n", filename, msg);
}
zmq_send(sock, log_s.data(), log_s.length(), ZMQ_NOBLOCK);
}
std::mutex lock;
void* zctx = nullptr;
void* sock = nullptr;
int print_level;
json11::Json::object ctx_j;
};
static SwaglogState s = {};
bool LOG_TIMESTAMPS = getenv("LOG_TIMESTAMPS");
uint32_t NO_FRAME_ID = std::numeric_limits<uint32_t>::max();
static void log(int levelnum, const char* filename, int lineno, const char* func, const char* msg, const std::string& log_s) {
if (levelnum >= s.print_level) {
printf("%s: %s\n", filename, msg);
}
zmq_send(s.sock, log_s.data(), log_s.length(), ZMQ_NOBLOCK);
}
static void cloudlog_common(int levelnum, const char* filename, int lineno, const char* func,
char* msg_buf, const json11::Json::object &msg_j={}) {
std::lock_guard lk(s.lock);
if (!s.initialized) s.initialize();
static SwaglogState s;
json11::Json::object log_j = json11::Json::object {
{"ctx", s.ctx_j},
@@ -89,7 +102,7 @@ static void cloudlog_common(int levelnum, const char* filename, int lineno, cons
std::string log_s;
log_s += (char)levelnum;
((json11::Json)log_j).dump(log_s);
log(levelnum, filename, lineno, func, msg_buf, log_s);
s.log(levelnum, filename, lineno, func, msg_buf, log_s);
free(msg_buf);
}
+1 -4
View File
@@ -2,7 +2,6 @@ import os
import unittest
from uuid import uuid4
from openpilot.common.file_helpers import atomic_write_on_fs_tmp
from openpilot.common.file_helpers import atomic_write_in_dir
@@ -11,14 +10,12 @@ class TestFileHelpers(unittest.TestCase):
path = f"/tmp/tmp{uuid4()}"
with atomic_write_func(path) as f:
f.write("test")
assert not os.path.exists(path)
with open(path) as f:
self.assertEqual(f.read(), "test")
os.remove(path)
def test_atomic_write_on_fs_tmp(self):
self.run_atomic_write_func(atomic_write_on_fs_tmp)
def test_atomic_write_in_dir(self):
self.run_atomic_write_func(atomic_write_in_dir)
-23
View File
@@ -1,23 +0,0 @@
#include "catch2/catch.hpp"
#include "common/ratekeeper.h"
#include "common/timing.h"
#include "common/util.h"
TEST_CASE("RateKeeper") {
float freq = GENERATE(10, 50, 100);
RateKeeper rk("Test RateKeeper", freq);
int lags = 0;
int bad_keep_times = 0;
for (int i = 0; i < freq; ++i) {
double begin = seconds_since_boot();
util::sleep_for(util::random_int(0, 1000.0 / freq - 1));
bool lagged = rk.keepTime();
lags += lagged;
bad_keep_times += (seconds_since_boot() - begin - (1 / freq)) > 1e-3;
}
// need a tolerance here due to scheduling
REQUIRE(lags < 5);
REQUIRE(bad_keep_times < 5);
}
+35
View File
@@ -0,0 +1,35 @@
import unittest
from openpilot.common.simple_kalman import KF1D
class TestSimpleKalman(unittest.TestCase):
def setUp(self):
dt = 0.01
x0_0 = 0.0
x1_0 = 0.0
A0_0 = 1.0
A0_1 = dt
A1_0 = 0.0
A1_1 = 1.0
C0_0 = 1.0
C0_1 = 0.0
K0_0 = 0.12287673
K1_0 = 0.29666309
self.kf = KF1D(x0=[[x0_0], [x1_0]],
A=[[A0_0, A0_1], [A1_0, A1_1]],
C=[C0_0, C0_1],
K=[[K0_0], [K1_0]])
def test_getter_setter(self):
self.kf.set_x([[1.0], [1.0]])
self.assertEqual(self.kf.x, [[1.0], [1.0]])
def update_returns_state(self):
x = self.kf.update(100)
self.assertEqual(x, self.kf.x)
if __name__ == "__main__":
unittest.main()
+1 -1
View File
@@ -1,6 +1,6 @@
import datetime
MIN_DATE = datetime.datetime(year=2023, month=6, day=1)
MIN_DATE = datetime.datetime(year=2024, month=1, day=28)
def system_time_valid():
return datetime.datetime.now() > MIN_DATE
+1 -1
View File
@@ -1,5 +1,5 @@
import numpy as np
from typing import Callable
from collections.abc import Callable
from openpilot.common.transformations.transformations import (ecef_euler_from_ned_single,
euler2quat_single,
+1 -1
View File
@@ -1,4 +1,4 @@
#cython: language_level=3
# cython: language_level=3
from libcpp cimport bool
cdef extern from "orientation.cc":
+3 -4
View File
@@ -17,7 +17,6 @@ from openpilot.common.transformations.transformations cimport ecef2geodetic as e
from openpilot.common.transformations.transformations cimport LocalCoord_c
import cython
import numpy as np
cimport numpy as np
@@ -34,14 +33,14 @@ cdef Matrix3 numpy2matrix(np.ndarray[double, ndim=2, mode="fortran"] m):
return Matrix3(<double*>m.data)
cdef ECEF list2ecef(ecef):
cdef ECEF e;
cdef ECEF e
e.x = ecef[0]
e.y = ecef[1]
e.z = ecef[2]
return e
cdef NED list2ned(ned):
cdef NED n;
cdef NED n
n.n = ned[0]
n.e = ned[1]
n.d = ned[2]
@@ -61,7 +60,7 @@ def euler2quat_single(euler):
def quat2euler_single(quat):
cdef Quaternion q = Quaternion(quat[0], quat[1], quat[2], quat[3])
cdef Vector3 e = quat2euler_c(q);
cdef Vector3 e = quat2euler_c(q)
return [e(0), e(1), e(2)]
def quat2rot_single(quat):
-34
View File
@@ -3,7 +3,6 @@
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
#include <zmq.h>
#include <algorithm>
#include <atomic>
@@ -180,36 +179,3 @@ void update_max_atomic(std::atomic<T>& max, T const& value) {
T prev = max;
while (prev < value && !max.compare_exchange_weak(prev, value)) {}
}
class LogState {
public:
bool initialized = false;
std::mutex lock;
void *zctx = nullptr;
void *sock = nullptr;
int print_level;
std::string endpoint;
LogState(std::string _endpoint) {
endpoint = _endpoint;
}
inline void initialize() {
zctx = zmq_ctx_new();
sock = zmq_socket(zctx, ZMQ_PUSH);
// Timeout on shutdown for messages to be received by the logging process
int timeout = 100;
zmq_setsockopt(sock, ZMQ_LINGER, &timeout, sizeof(timeout));
zmq_connect(sock, endpoint.c_str());
initialized = true;
}
~LogState() {
if (initialized) {
zmq_close(sock);
zmq_ctx_destroy(zctx);
}
}
};
+1 -1
View File
@@ -1 +1 @@
#define COMMA_VERSION "0.9.6"
#define COMMA_VERSION "0.9.7.0"
-61
View File
@@ -1,61 +0,0 @@
import sys
import pygame
import cv2
class Window:
def __init__(self, w, h, caption="window", double=False, halve=False):
self.w = w
self.h = h
pygame.display.init()
pygame.display.set_caption(caption)
self.double = double
self.halve = halve
if self.double:
self.rw, self.rh = w*2, h*2
elif self.halve:
self.rw, self.rh = w//2, h//2
else:
self.rw, self.rh = w, h
self.screen = pygame.display.set_mode((self.rw, self.rh))
pygame.display.flip()
# hack for xmonad, it shrinks the window by 6 pixels after the display.flip
if self.screen.get_width() != self.rw:
self.screen = pygame.display.set_mode((self.rw+(self.rw-self.screen.get_width()), self.rh+(self.rh-self.screen.get_height())))
pygame.display.flip()
def draw(self, out):
pygame.event.pump()
if self.double:
out2 = cv2.resize(out, (self.w*2, self.h*2))
pygame.surfarray.blit_array(self.screen, out2.swapaxes(0, 1))
elif self.halve:
out2 = cv2.resize(out, (self.w//2, self.h//2))
pygame.surfarray.blit_array(self.screen, out2.swapaxes(0, 1))
else:
pygame.surfarray.blit_array(self.screen, out.swapaxes(0, 1))
pygame.display.flip()
def getkey(self):
while 1:
event = pygame.event.wait()
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
return event.key
def getclick(self):
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
mx, my = pygame.mouse.get_pos()
return mx, my
if __name__ == "__main__":
import numpy as np
win = Window(200, 200, double=True)
img: np.ndarray = np.zeros((200, 200, 3), np.uint8)
while 1:
print("draw")
img += 1
win.draw(img)
+58 -22
View File
@@ -1,9 +1,12 @@
import contextlib
import gc
import os
import pytest
import random
from openpilot.common.prefix import OpenpilotPrefix
from openpilot.system.hardware import TICI
from openpilot.selfdrive.manager import manager
from openpilot.system.hardware import TICI, HARDWARE
def pytest_sessionstart(session):
@@ -12,43 +15,72 @@ def pytest_sessionstart(session):
session.config.option.randomly_reorganize = False
@pytest.fixture(scope="function", autouse=True)
def openpilot_function_fixture():
starting_env = dict(os.environ)
random.seed(0)
# setup a clean environment for each test
with OpenpilotPrefix():
prefix = os.environ["OPENPILOT_PREFIX"]
@pytest.hookimpl(hookwrapper=True, trylast=True)
def pytest_runtest_call(item):
# ensure we run as a hook after capturemanager's
if item.get_closest_marker("nocapture") is not None:
capmanager = item.config.pluginmanager.getplugin("capturemanager")
with capmanager.global_and_fixture_disabled():
yield
else:
yield
# ensure the test doesn't change the prefix
assert "OPENPILOT_PREFIX" in os.environ and prefix == os.environ["OPENPILOT_PREFIX"]
@contextlib.contextmanager
def clean_env():
starting_env = dict(os.environ)
yield
os.environ.clear()
os.environ.update(starting_env)
@pytest.fixture(scope="function", autouse=True)
def openpilot_function_fixture(request):
random.seed(0)
with clean_env():
# setup a clean environment for each test
with OpenpilotPrefix(shared_download_cache=request.node.get_closest_marker("shared_download_cache") is not None) as prefix:
prefix = os.environ["OPENPILOT_PREFIX"]
yield
# ensure the test doesn't change the prefix
assert "OPENPILOT_PREFIX" in os.environ and prefix == os.environ["OPENPILOT_PREFIX"]
# cleanup any started processes
manager.manager_cleanup()
# some processes disable gc for performance, re-enable here
if not gc.isenabled():
gc.enable()
gc.collect()
# If you use setUpClass, the environment variables won't be cleared properly,
# so we need to hook both the function and class pytest fixtures
@pytest.fixture(scope="class", autouse=True)
def openpilot_class_fixture():
starting_env = dict(os.environ)
with clean_env():
yield
yield
os.environ.clear()
os.environ.update(starting_env)
@pytest.fixture(scope="function")
def tici_setup_fixture(openpilot_function_fixture):
"""Ensure a consistent state for tests on-device. Needs the openpilot function fixture to run first."""
HARDWARE.initialize_hardware()
HARDWARE.set_power_save(False)
os.system("pkill -9 -f athena")
@pytest.hookimpl(tryfirst=True)
def pytest_collection_modifyitems(config, items):
skipper = pytest.mark.skip(reason="Skipping tici test on PC")
for item in items:
if not TICI and "tici" in item.keywords:
item.add_marker(skipper)
if "tici" in item.keywords:
if not TICI:
item.add_marker(skipper)
else:
item.fixturenames.append('tici_setup_fixture')
if "xdist_group_class_property" in item.keywords:
class_property_name = item.get_closest_marker('xdist_group_class_property').args[0]
@@ -58,7 +90,11 @@ def pytest_collection_modifyitems(config, items):
@pytest.hookimpl(trylast=True)
def pytest_configure(config):
config_line = (
"xdist_group_class_property: group tests by a property of the class that contains them"
)
config_line = "xdist_group_class_property: group tests by a property of the class that contains them"
config.addinivalue_line("markers", config_line)
config_line = "nocapture: don't capture test output"
config.addinivalue_line("markers", config_line)
config_line = "shared_download_cache: share download cache between tests"
config.addinivalue_line("markers", config_line)
+5 -5
View File
@@ -1,4 +1,4 @@
# Bounties
# [Bounties](https://github.com/orgs/commaai/projects/26/views/1)
Get paid to improve openpilot!
@@ -8,13 +8,13 @@ Get paid to improve openpilot!
* bounty eligibility is solely at our discretion
* once you open a PR, the bounty is locked to you until you stop working on it
* open a ticket at [comma.ai/support](https://comma.ai/support/shop-order) with links to your PRs to claim
* get an extra 20% if you redeem your bounty in [comma shop](https://comma.ai/shop) credit
* get an extra 20% if you redeem your bounty in [comma shop](https://comma.ai/shop) credit (including refunds on previous orders)
New bounties can be proposed in the **#contributing** channel in Discord.
New bounties can be proposed in the [**#contributing**](https://discord.com/channels/469524606043160576/1183173332531687454) channel in Discord.
## Issue bounties
We've tagged bounty eligible issues across openpilot and the rest of our repos; check out all the open ones [here](https://github.com/search?q=org%3Acommaai+is%3Aissue+label%3Abounty++&type=issues&state=open). These bounties roughly work out like this:
We've tagged bounty-eligible issues across openpilot and the rest of our repos; check out all the open ones [here](https://github.com/orgs/commaai/projects/26/views/1). These bounties roughly work out like this:
* **$100** - a few hours of work for an experienced openpilot developer; a good intro for someone new to openpilot
* **$300** - a day of work for an experienced openpilot developer
* **$500** - a few days of work for an experienced openpilot developer
@@ -59,4 +59,4 @@ We're contributing $5k to the [community-organized bounty](https://github.com/co
#### Chevy Bolt with SuperCruise - $2500
The Bolt is already supported on the trim with standard ACC. Get openpilot working on the trim with SuperCruise. It must be a normal install: no extra pandas or other hardware, no ECU reflashes, etc.
The Bolt is already supported on the trim with standard ACC. Get openpilot working on the trim with SuperCruise. It must be a normal install: no extra pandas or other hardware, no ECU reflashes, etc. The full bounty is for a port with lateral and longitudinal control. $1500 of the bounty can be claimed with a lateral-only port.
+33 -18
View File
@@ -4,7 +4,7 @@
A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified.
# 273 Supported Cars
# 288 Supported Cars
|Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|<a href="##"><img width=2000></a>Hardware Needed<br>&nbsp;|Video|
|---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
@@ -23,22 +23,33 @@ A supported vehicle is one that just works when you install a comma device. All
|Cadillac|Escalade ESV 2019[<sup>4</sup>](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 OBD-II connector<br>- 1 comma 3X<br>- 2 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Cadillac&model=Escalade ESV 2019">Buy Here</a></sub></details>||
|Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 GM connector<br>- 1 comma 3X<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Bolt EUV 2022-23">Buy Here</a></sub></details>|<a href="https://youtu.be/xvwzGMUA210" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 GM connector<br>- 1 comma 3X<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Bolt EV 2022-23">Buy Here</a></sub></details>||
|Chevrolet|Equinox 2019-22|Adaptive Cruise Control (ACC)|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 GM connector<br>- 1 comma 3X<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Equinox 2019-22">Buy Here</a></sub></details>||
|Chevrolet|Silverado 1500 2020-21|Safety Package II|openpilot available[<sup>1</sup>](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 GM connector<br>- 1 comma 3X<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Silverado 1500 2020-21">Buy Here</a></sub></details>||
|Chevrolet|Trailblazer 2021-22|Adaptive Cruise Control (ACC)|openpilot available[<sup>1</sup>](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 GM connector<br>- 1 comma 3X<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Trailblazer 2021-22">Buy Here</a></sub></details>||
|Chevrolet|Volt 2017-18[<sup>4</sup>](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 OBD-II connector<br>- 1 comma 3X<br>- 2 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chevrolet&model=Volt 2017-18">Buy Here</a></sub></details>|<a href="https://youtu.be/QeMCN_4TFfQ" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Chrysler|Pacifica 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica 2017-18">Buy Here</a></sub></details>||
|Chrysler|Pacifica 2019-20|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica 2019-20">Buy Here</a></sub></details>||
|Chrysler|Pacifica 2021|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica 2021">Buy Here</a></sub></details>||
|Chrysler|Pacifica Hybrid 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica Hybrid 2017-18">Buy Here</a></sub></details>||
|Chrysler|Pacifica 2021-23|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica 2021-23">Buy Here</a></sub></details>||
|Chrysler|Pacifica Hybrid 2017|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica Hybrid 2017">Buy Here</a></sub></details>||
|Chrysler|Pacifica Hybrid 2018|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica Hybrid 2018">Buy Here</a></sub></details>||
|Chrysler|Pacifica Hybrid 2019-23|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Chrysler&model=Pacifica Hybrid 2019-23">Buy Here</a></sub></details>||
|comma|body|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|None||
|Dodge|Durango 2020-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 FCA connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Dodge&model=Durango 2020-21">Buy Here</a></sub></details>||
|Ford|Bronco Sport 2021-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Bronco Sport 2021-22">Buy Here</a></sub></details>||
|Ford|Escape 2020-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Escape 2020-22">Buy Here</a></sub></details>||
|Ford|Escape Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Escape Hybrid 2020-22">Buy Here</a></sub></details>||
|Ford|Escape Plug-in Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Escape Plug-in Hybrid 2020-22">Buy Here</a></sub></details>||
|Ford|Explorer 2020-23|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Explorer 2020-23">Buy Here</a></sub></details>||
|Ford|Explorer Hybrid 2020-23|Co-Pilot360 Assist+|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Explorer Hybrid 2020-23">Buy Here</a></sub></details>||
|Ford|Focus 2018[<sup>3</sup>](#footnotes)|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Focus 2018">Buy Here</a></sub></details>||
|Ford|Focus Hybrid 2018[<sup>3</sup>](#footnotes)|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Focus Hybrid 2018">Buy Here</a></sub></details>||
|Ford|Kuga 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Kuga 2020-22">Buy Here</a></sub></details>||
|Ford|Kuga Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Kuga Hybrid 2020-22">Buy Here</a></sub></details>||
|Ford|Kuga Plug-in Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Kuga Plug-in Hybrid 2020-22">Buy Here</a></sub></details>||
|Ford|Maverick 2022|LARIAT Luxury|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick 2022">Buy Here</a></sub></details>||
|Ford|Maverick 2023|Co-Pilot360 Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick 2023">Buy Here</a></sub></details>||
|Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick Hybrid 2022">Buy Here</a></sub></details>||
|Ford|Maverick Hybrid 2023|Co-Pilot360 Assist|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ford&model=Maverick Hybrid 2023">Buy Here</a></sub></details>||
|Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G70 2018-19">Buy Here</a></sub></details>||
|Genesis|G70 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G70 2020">Buy Here</a></sub></details>||
|Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai J connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Genesis&model=G80 2017">Buy Here</a></sub></details>||
@@ -60,7 +71,7 @@ A supported vehicle is one that just works when you install a comma device. All
|Honda|Civic Hatchback 2022-23|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Bosch B connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Civic Hatchback 2022-23">Buy Here</a></sub></details>|<a href="https://youtu.be/ytiOT5lcp6Q" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=CR-V 2015-16">Buy Here</a></sub></details>||
|Honda|CR-V 2017-22|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Bosch A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=CR-V 2017-22">Buy Here</a></sub></details>||
|Honda|CR-V Hybrid 2017-19|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Bosch A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=CR-V Hybrid 2017-19">Buy Here</a></sub></details>||
|Honda|CR-V Hybrid 2017-20|Honda Sensing|openpilot available[<sup>1</sup>](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Bosch A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=CR-V Hybrid 2017-20">Buy Here</a></sub></details>||
|Honda|e 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Bosch A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=e 2020">Buy Here</a></sub></details>||
|Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Fit 2018-20">Buy Here</a></sub></details>||
|Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Freed 2020">Buy Here</a></sub></details>||
@@ -71,7 +82,7 @@ A supported vehicle is one that just works when you install a comma device. All
|Honda|Odyssey 2018-20|Honda Sensing|openpilot|25 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Odyssey 2018-20">Buy Here</a></sub></details>||
|Honda|Passport 2019-23|All|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Passport 2019-23">Buy Here</a></sub></details>||
|Honda|Pilot 2016-22|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Pilot 2016-22">Buy Here</a></sub></details>||
|Honda|Ridgeline 2017-23|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Ridgeline 2017-23">Buy Here</a></sub></details>||
|Honda|Ridgeline 2017-24|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Honda Nidec connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Honda&model=Ridgeline 2017-24">Buy Here</a></sub></details>||
|Hyundai|Azera 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai K connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Azera 2022">Buy Here</a></sub></details>||
|Hyundai|Azera Hybrid 2019|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Azera Hybrid 2019">Buy Here</a></sub></details>||
|Hyundai|Azera Hybrid 2020|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai K connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Hyundai&model=Azera Hybrid 2020">Buy Here</a></sub></details>||
@@ -132,10 +143,12 @@ A supported vehicle is one that just works when you install a comma device. All
|Kia|Niro EV 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro EV 2021">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=lT7zcG6ZpGo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Kia|Niro EV 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai H connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro EV 2022">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=lT7zcG6ZpGo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Kia|Niro EV 2023[<sup>6</sup>](#footnotes)|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro EV 2023">Buy Here</a></sub></details>||
|Kia|Niro Hybrid 2021-22|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Hybrid 2021-22">Buy Here</a></sub></details>||
|Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Hybrid 2021">Buy Here</a></sub></details>||
|Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Hybrid 2022">Buy Here</a></sub></details>||
|Kia|Niro Hybrid 2023[<sup>6</sup>](#footnotes)|Smart Cruise Control (SCC)|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Hybrid 2023">Buy Here</a></sub></details>||
|Kia|Niro Plug-in Hybrid 2018-19|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai C connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2018-19">Buy Here</a></sub></details>||
|Kia|Niro Plug-in Hybrid 2020|All|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2020">Buy Here</a></sub></details>||
|Kia|Niro Plug-in Hybrid 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai D connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2021">Buy Here</a></sub></details>||
|Kia|Niro Plug-in Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai F connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Niro Plug-in Hybrid 2022">Buy Here</a></sub></details>||
|Kia|Optima 2017|Advanced Smart Cruise Control|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai B connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Optima 2017">Buy Here</a></sub></details>||
|Kia|Optima 2019-20|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Hyundai G connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Kia&model=Optima 2019-20">Buy Here</a></sub></details>||
@@ -154,11 +167,12 @@ A supported vehicle is one that just works when you install a comma device. All
|Lexus|CT Hybrid 2017-18|Lexus Safety System+|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=CT Hybrid 2017-18">Buy Here</a></sub></details>||
|Lexus|ES 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES 2017-18">Buy Here</a></sub></details>||
|Lexus|ES 2019-24|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES 2019-24">Buy Here</a></sub></details>||
|Lexus|ES Hybrid 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES Hybrid 2017-18">Buy Here</a></sub></details>||
|Lexus|ES Hybrid 2019-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES Hybrid 2019-23">Buy Here</a></sub></details>|<a href="https://youtu.be/BZ29osRVJeg?t=12" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Lexus|ES Hybrid 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES Hybrid 2017-18">Buy Here</a></sub></details>||
|Lexus|ES Hybrid 2019-24|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=ES Hybrid 2019-24">Buy Here</a></sub></details>|<a href="https://youtu.be/BZ29osRVJeg?t=12" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Lexus|GS F 2016|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=GS F 2016">Buy Here</a></sub></details>||
|Lexus|IS 2017-19|All|Stock|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=IS 2017-19">Buy Here</a></sub></details>||
|Lexus|IS 2022-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=IS 2022-23">Buy Here</a></sub></details>||
|Lexus|LC 2024|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=LC 2024">Buy Here</a></sub></details>||
|Lexus|NX 2018-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=NX 2018-19">Buy Here</a></sub></details>||
|Lexus|NX 2020-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=NX 2020-21">Buy Here</a></sub></details>||
|Lexus|NX Hybrid 2018-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=NX Hybrid 2018-19">Buy Here</a></sub></details>||
@@ -171,7 +185,8 @@ A supported vehicle is one that just works when you install a comma device. All
|Lexus|RX Hybrid 2017-19|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=RX Hybrid 2017-19">Buy Here</a></sub></details>||
|Lexus|RX Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=RX Hybrid 2020-22">Buy Here</a></sub></details>||
|Lexus|UX Hybrid 2019-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lexus&model=UX Hybrid 2019-23">Buy Here</a></sub></details>||
|Lincoln|Aviator 2020-21|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator 2020-21">Buy Here</a></sub></details>||
|Lincoln|Aviator 2020-23|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator 2020-23">Buy Here</a></sub></details>||
|Lincoln|Aviator Plug-in Hybrid 2020-23|Co-Pilot360 Plus|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Ford Q3 connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Lincoln&model=Aviator Plug-in Hybrid 2020-23">Buy Here</a></sub></details>||
|MAN|eTGE 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=MAN&model=eTGE 2020-23">Buy Here</a></sub></details>|<a href="https://youtu.be/4100gLeabmo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|MAN|TGE 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=MAN&model=TGE 2017-23">Buy Here</a></sub></details>|<a href="https://youtu.be/4100gLeabmo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Mazda|CX-5 2022-24|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 Mazda connector<br>- 1 RJ45 cable (7 ft)<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Mazda&model=CX-5 2022-24">Buy Here</a></sub></details>||
@@ -180,7 +195,7 @@ A supported vehicle is one that just works when you install a comma device. All
|Nissan|Leaf 2018-23|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Nissan A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Nissan&model=Leaf 2018-23">Buy Here</a></sub></details>|<a href="https://youtu.be/vaMbtAh_0cY" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Nissan A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Nissan&model=Rogue 2018-20">Buy Here</a></sub></details>||
|Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 Nissan A connector<br>- 1 RJ45 cable (7 ft)<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Nissan&model=X-Trail 2017">Buy Here</a></sub></details>||
|Ram|1500 2019-23|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Ram connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ram&model=1500 2019-23">Buy Here</a></sub></details>||
|Ram|1500 2019-24|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Ram connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Ram&model=1500 2019-24">Buy Here</a></sub></details>||
|SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=SEAT&model=Ateca 2018">Buy Here</a></sub></details>||
|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=SEAT&model=Leon 2014-20">Buy Here</a></sub></details>||
|Subaru|Ascent 2019-21|All[<sup>7</sup>](#footnotes)|openpilot available[<sup>1,8</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Subaru A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Subaru&model=Ascent 2019-21">Buy Here</a></sub></details><details><summary>Tools</summary><sub>- 1 Pry Tool<br>- 1 Socket Wrench 8mm or 5/16" (deep)</sub></details>||
@@ -210,9 +225,9 @@ A supported vehicle is one that just works when you install a comma device. All
|Toyota|Avalon Hybrid 2019-21|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon Hybrid 2019-21">Buy Here</a></sub></details>||
|Toyota|Avalon Hybrid 2022|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Avalon Hybrid 2022">Buy Here</a></sub></details>||
|Toyota|C-HR 2017-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR 2017-20">Buy Here</a></sub></details>||
|Toyota|C-HR 2021|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR 2021">Buy Here</a></sub></details>||
|Toyota|C-HR 2021|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR 2021">Buy Here</a></sub></details>||
|Toyota|C-HR Hybrid 2017-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR Hybrid 2017-20">Buy Here</a></sub></details>||
|Toyota|C-HR Hybrid 2021-22|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR Hybrid 2021-22">Buy Here</a></sub></details>||
|Toyota|C-HR Hybrid 2021-22|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=C-HR Hybrid 2021-22">Buy Here</a></sub></details>||
|Toyota|Camry 2018-20|All|Stock|0 mph[<sup>9</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=fkcjviZY9CM" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|Camry 2021-24|All|openpilot|0 mph[<sup>9</sup>](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry 2021-24">Buy Here</a></sub></details>||
|Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Camry Hybrid 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=Q2DYY0AWKgk" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
@@ -238,13 +253,13 @@ A supported vehicle is one that just works when you install a comma device. All
|Toyota|RAV4 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2016">Buy Here</a></sub></details>||
|Toyota|RAV4 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2017-18">Buy Here</a></sub></details>||
|Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2019-21">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=wJxjDd42gGA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|RAV4 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2022">Buy Here</a></sub></details>||
|Toyota|RAV4 2023|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2023">Buy Here</a></sub></details>||
|Toyota|RAV4 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2022">Buy Here</a></sub></details>||
|Toyota|RAV4 2023-24|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 2023-24">Buy Here</a></sub></details>||
|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2016">Buy Here</a></sub></details>|<a href="https://youtu.be/LhT5VzJVfNI?t=26" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[<sup>2</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2017-18">Buy Here</a></sub></details>|<a href="https://youtu.be/LhT5VzJVfNI?t=26" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2019-21">Buy Here</a></sub></details>||
|Toyota|RAV4 Hybrid 2022|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2022">Buy Here</a></sub></details>|<a href="https://youtu.be/U0nH9cnrFB0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|RAV4 Hybrid 2023|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2023">Buy Here</a></sub></details>||
|Toyota|RAV4 Hybrid 2022|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2022">Buy Here</a></sub></details>|<a href="https://youtu.be/U0nH9cnrFB0" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Toyota|RAV4 Hybrid 2023-24|All|openpilot available[<sup>1</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=RAV4 Hybrid 2023-24">Buy Here</a></sub></details>||
|Toyota|Sienna 2018-20|All|openpilot available[<sup>2</sup>](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 RJ45 cable (7 ft)<br>- 1 Toyota A connector<br>- 1 comma 3X<br>- 1 comma power v2<br>- 1 harness box<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Toyota&model=Sienna 2018-20">Buy Here</a></sub></details>|<a href="https://www.youtube.com/watch?v=q1UPOo4Sh68" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Arteon 2018-23">Buy Here</a></sub></details>|<a href="https://youtu.be/FAomFKPFlDA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Arteon eHybrid 2020-23">Buy Here</a></sub></details>|<a href="https://youtu.be/FAomFKPFlDA" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
@@ -265,8 +280,8 @@ A supported vehicle is one that just works when you install a comma device. All
|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Golf R 2015-19">Buy Here</a></sub></details>||
|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Golf SportsVan 2015-20">Buy Here</a></sub></details>||
|Volkswagen|Grand California 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 angled mount (8 degrees)<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Grand California 2019-23">Buy Here</a></sub></details>|<a href="https://youtu.be/4100gLeabmo" target="_blank"><img height="18px" src="assets/icon-youtube.svg"></img></a>|
|Volkswagen|Jetta 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Jetta 2018-22">Buy Here</a></sub></details>||
|Volkswagen|Jetta GLI 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Jetta GLI 2021-22">Buy Here</a></sub></details>||
|Volkswagen|Jetta 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Jetta 2018-24">Buy Here</a></sub></details>||
|Volkswagen|Jetta GLI 2021-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Jetta GLI 2021-24">Buy Here</a></sub></details>||
|Volkswagen|Passat 2015-22[<sup>11</sup>](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Passat 2015-22">Buy Here</a></sub></details>||
|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Passat Alltrack 2015-22">Buy Here</a></sub></details>||
|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[<sup>1,13</sup>](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|<details><summary>Parts</summary><sub>- 1 J533 connector<br>- 1 USB-C coupler<br>- 1 comma 3X<br>- 1 harness box<br>- 1 long OBD-C cable<br>- 1 mount<br>- 1 right angle OBD-C cable (1.5 ft)<br><a href="https://comma.ai/shop/comma-3x.html?make=Volkswagen&model=Passat GTE 2015-22">Buy Here</a></sub></details>||
+2 -2
View File
@@ -11,7 +11,7 @@ Our software is open source so you can solve your own problems without needing h
## What contributions are we looking for?
**openpilot's priorities are [safety](SAFETY.md), stability, quality, and features, in that order.** openpilot is part of comma's mission to *solve self-driving cars while delivering shippable intermediaries*, and **all** developoment is towards that goal.
**openpilot's priorities are [safety](SAFETY.md), stability, quality, and features, in that order.** openpilot is part of comma's mission to *solve self-driving cars while delivering shippable intermediaries*, and **all** development is towards that goal.
### What gets merged?
@@ -62,4 +62,4 @@ A good pull request has all of the following:
* Consider opting into driver camera uploads to improve the driver monitoring model.
* Connect your device to Wi-Fi regularly, so that we can pull data for training better driving models.
* Run the `nightly` branch and report issues. This branch is like `master` but it's built just like a release.
* Annotate images in the [comma10k dateset](https://github.com/commaai/comma10k).
* Annotate images in the [comma10k dataset](https://github.com/commaai/comma10k).
+77
View File
@@ -0,0 +1,77 @@
# How Tos
This page is a repository of useful how-tos as a supplement for additional information.
Table of Contents
=======================
* [Radar Tracks](#Radar-Tracks)
* [Enable Radar Tracks](#-Enable-Radar-Tracks)
* [Enable Mapbox Navigation](#-Enable-Mapbox-Navigation)
---
<details><summary><h3>📡 Radar Tracks</h3></summary>
Radar tracks can now be enabled manually on applicable cars through SSH thanks to [@greghogan](https://github.com/greghogan) and [@pd0wm](https://github.com/pd0wm).
Some Hyundai radars can be reconfigured to output (debug) radar points on bus 1.
Reconfiguration is done over UDS by reading/writing to 0x0142 using the Read/Write Data By Identifier
endpoints (0x22 & 0x2E). This script checks your radar firmware version against a list of known
firmware versions. If you want to try on a new radar, make sure to note the default config value
in case it is different from the other radars and you need to revert the changes.
After changing the config the car should not show any faults when openpilot is not running.
These config changes are persistent across car reboots. You need to run this script again
to go back to the default values.
**USE AT YOUR OWN RISK!** Stock system safety features, like AEB and FCW, might be affected by these changes.
**How radar points can be used along with vision:**
* Current OP long policy is identify with vision first, if vision sees a vehicle match it to a radar point. If vision sees nothing you get a false negative and no lead car detection. (Source: [Hubblesphere#7894 from comma.ai community Discord](https://discord.com/channels/469524606043160576/872899198738104330/872913890793635872))
### 🚨 Enable Radar Tracks
***(EXPERIMENTAL, as of January 1st, 2022)***
***(Only applicable to some Hyundai, Kia, and Genesis cars, as of January 1st, 2022)***
*(Base on version 0.8.12 [`devel`](https://github.com/commaai/openpilot/tree/devel))*
**USE AT YOUR OWN RISK!** Stock system safety features, like AEB and FCW, might be affected by these changes.
1. Ensure the car is at the `OFF` ignition position.
2. Connect your compatible comma device (EON, C2, C3) to the car. comma device power should be ON.
3. Use a laptop or applicable device to connect to your comma device via SSH. (Tips: Instructions to SSH in [HERE](https://github.com/commaai/openpilot/wiki/SSH))
4. In the SSH terminal after successfully connected to your comma device, execute the following commands:
1. `pkill -f openpilot`
2. `python /data/openpilot/selfdrive/debug/hyundai_enable_radar_points.py`
3. Follow the instructions in the script:
* `Power on the vehicle keeping the engine off (press start button twice) then type OK to continue`.
* If successful, the following message should appear: `[DONE]. Restart your vehicle and ensure there are no faults`.
* If the script did not run successfully, reach out to the community in [Sunnyhaibin's Openpilot Discord Server](https://discord.gg/wRW3meAgtx) or `#hyundai-kia-genesis channel` on [commaai community Discord Server](https://discord.comma.ai) for assistance.
4. Reboot your comma device:
1. C3: `sudo reboot`
2. C2 or EON: `reboot`
5. Once your comma device is rebooted, start your car with engine on (with or without comma device connected). Ensure that there are no faults from the car. If there are faults, reach out to the community in [Sunnyhaibin's Openpilot Discord Server](https://discord.gg/wRW3meAgtx) or `#hyundai-kia-genesis channel` on [commaai community Discord Server](https://discord.comma.ai) for assistance.
6. Go for a quick drive and drive behind a lead car with varied follow distance. Then, come back and allow the drive to upload its `rlogs` in [comma Connect](https://connect.comma.ai).
7. With all `rlogs` uploaded, open the drive in Cabana from [comma Connect](https://connect.comma.ai). Load DBC -> `hyundai_kia_mando_front_radar.dbc`, then search `RADAR_TRACK_50x` (`x` could be anything), open any of them, and look at `LONG_DIST`.
8. If the radar tracks data is relevant with the lead car you drove behind, you are done! Your car now have radar tracks enabled.
</details>
<details><summary><h3>🗺 Enable Mapbox Navigation</h3></summary>
1) Create a free mapbox account. Account will ask for a credit card for verification. You will not be charged for the free tier.
2) On the Dashboard, you will see a section called Access Tokens. Click `Create a Token`. Name it whatever you like. Set the scopes to allow everything for both Public and Secret. Copy both of these keys. **YOU WON'T BE ABLE TO ACCESS THE SECRET KEY AFTER THIS WINDOW.**
3) Once rebooted, connect your C3 to a network with internet access and find the C3s IP address.
4) In a browser, navigate to that IP with **port 8082** (i.e 192.168.1.69:8082). You should be greeted with the Comma logo and a public key input field.
5) Paste your Public token (pk.xx), click enter, paste your Secret key (sk.xx), click enter. You can now search for places. This page will be available at your devicess IP address/port 8082 to search for destinations.
6) To set Home and Work addresses, search for a place, select Home/Work from the dropdown and click Navigate. For non-Home/Work destinations, select Recent Places.<br>*At this time, it is not possible to search directly on the C3.*
**TIPS:**
- If your C3 is showing a black screen that says “Map Loading”, performing a reboot via the UI should fix it.
- If your phone can create a Hotspot, you are able to connect the C3 to your phone hotspot and use your phone browser to search for places.
- In the Navigation panel on the C3, you can select Home, Work, and from a list of Recent Places you have navigated to without needing a browser (assuming the C3 is connected to the internet.)
**IMPORTANT NOTE:** Your C3 will require an active internet connection to download map data, generate driving directions, and ETA. Once map data and directions are downloaded, it *is* possible to use it offline, however nothing will update (such as new driving direction after a missed turn, updated ETA, map data further into your drive etc.)
***NAVIGATION NOTE:** At this time, mapbox does not support alphanumeric addresses (i.e W123N1234 Main St). There is currently no known workaround for this.*
</details>
+1 -1
View File
@@ -47,7 +47,7 @@ clean:
../scripts \
../selfdrive/modeld \
../selfdrive/debug \
$(shell find .. -type d -name "*test*")
$(shell find .. -type d -name "*test* -not -path "**.venv**" \")
@echo "Building html files..."
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(DOCSBUILDDIR)" $(SPHINXOPTS) $(O)
+3
View File
@@ -0,0 +1,3 @@
# openpilot-docs
These docs are autogenerated from [this folder](https://github.com/commaai/openpilot/tree/master/docs) in the main openpilot repository.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 129 B

+3 -56
View File
@@ -1,56 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="19.999983"
height="19"
viewBox="0 0 19.999983 19"
version="1.1"
id="svg1425"
sodipodi:docname="icon-star-empty.svg"
style="fill:none"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata1431">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs1429" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1198"
inkscape:window-height="631"
id="namedview1427"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-8.3559301"
inkscape:cy="8.9999925"
inkscape:window-x="0"
inkscape:window-y="1267"
inkscape:window-maximized="0"
inkscape:current-layer="svg1425" />
<path
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
id="path1423"
inkscape:connector-curvature="0"
style="stroke:#b7b7b7" />
</svg>
version https://git-lfs.github.com/spec/v1
oid sha256:3142658fa2782d266028dcab491e02ab329a2cadcf9efb1846a5f9631d64cac1
size 1947

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 129 B

+3 -56
View File
@@ -1,56 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="19.999983"
height="19"
viewBox="0 0 19.999983 19"
version="1.1"
id="svg817"
sodipodi:docname="icon-star-full.svg"
style="fill:none"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata823">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs821" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1198"
inkscape:window-height="1898"
id="namedview819"
showgrid="false"
inkscape:zoom="20.005229"
inkscape:cx="8.4325646"
inkscape:cy="3.9969093"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg817" />
<path
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
id="path815"
inkscape:connector-curvature="0"
style="fill:#f5c543;stroke:#f0a43b" />
</svg>
version https://git-lfs.github.com/spec/v1
oid sha256:5fdcc85f3d8c9d0c2fb76b98ddd9f118c0e4a12c859a4281a04a0870d5de12c8
size 1950

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 129 B

+3 -66
View File
@@ -1,66 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="19.999983"
height="19.000008"
viewBox="0 0 19.999983 19.000008"
version="1.1"
id="svg831"
sodipodi:docname="icon-star-half.svg"
style="fill:none"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
<metadata
id="metadata837">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs835" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1198"
inkscape:window-height="948"
id="namedview833"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-8.3559301"
inkscape:cy="9"
inkscape:window-x="0"
inkscape:window-y="950"
inkscape:window-maximized="0"
inkscape:current-layer="svg831" />
<path
d="M 10.000002,8.1671631e-6 V 15.270008 l -6.1799999,3.73 1.64,-7.03 L 2.0565151e-6,7.2400082 7.1900021,6.6300082 Z"
id="path825"
inkscape:connector-curvature="0"
style="fill:#f5c543" />
<path
d="m 10.258402,14.841908 -0.2584,-0.1559 -0.2583999,0.1559 -5.16547,3.1177 1.3708,-5.876 0.06856,-0.2939 -0.2281,-0.1976 -4.56431,-3.9540698 6.00919,-0.50982 0.30043,-0.02549 0.11766,-0.27761 2.3496399,-5.54381 2.3496,5.54381 0.1177,0.27761 0.3004,0.02549 6.0092,0.50982 -4.5643,3.9540698 -0.2281,0.1976 0.0686,0.2939 1.3708,5.876 z"
id="path827"
inkscape:connector-curvature="0"
style="stroke:#b7b7b7" />
<path
d="m 5.3322621,16.919208 3.66774,-2.2137 0.9999999,-0.6055 v 1.17 l -6.1799999,3.73 1.64,-7.03 L 2.0565151e-6,7.2400082 7.1900021,6.6300082 10.000002,8.1671631e-6 V 2.6000082 l -0.9999999,2.32203 -1.1246,2.65341 -5.42923,0.46066 4.12481,3.5732998 z"
id="path829"
inkscape:connector-curvature="0"
style="fill:#f0a43b" />
</svg>
version https://git-lfs.github.com/spec/v1
oid sha256:cdf5e7ae57626f4cda35973873a4696252babbbe473913fe0aafdd8ba39d7fc3
size 2508

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 129 B

+3 -12
View File
@@ -1,12 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="500.972 178.81 20 14.375" width="20" height="14.375" xmlns="http://www.w3.org/2000/svg" xmlns:bx="https://boxy-svg.com">
<defs>
<clipPath id="clip0_1674_1768">
<rect width="20" height="20" fill="white"/>
</clipPath>
</defs>
<g clip-path="url(#clip0_1674_1768)" transform="matrix(1, 0, 0, 1, 500.971771, 175.81041)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.582 5.2447C19.352 4.3611 18.6743 3.66531 17.8138 3.42916C16.2542 3 10 3 10 3C10 3 3.7458 3 2.18614 3.42916C1.32557 3.66531 0.647841 4.3611 0.417841 5.2447C0 6.84612 0 10.1875 0 10.1875C0 10.1875 0 13.5288 0.417841 15.1303C0.647841 16.0139 1.32557 16.7097 2.18614 16.946C3.7458 17.375 10 17.375 10 17.375C10 17.375 16.2542 17.375 17.8138 16.946C18.6743 16.7097 19.352 16.0139 19.582 15.1303C20 13.5288 20 10.1875 20 10.1875C20 10.1875 20 6.84612 19.582 5.2447ZM8.12509 13.6255V7.37549L13.1251 10.5006L8.12509 13.6255Z" fill="#FF0000"/>
</g>
<path d="M 425.503 122.113 L 428.63 127.117 L 422.376 127.117 L 425.503 122.113 Z" style="stroke: rgb(0, 0, 0); stroke-width: 0px; fill: rgb(255, 255, 255);" transform="matrix(0, 1, -1, 0, 636.212463, -239.192383)" bx:shape="triangle 422.376 122.113 6.254 5.004 0.5 0 1@278e08c4"/>
</svg>
version https://git-lfs.github.com/spec/v1
oid sha256:6cb64f9da10b818c56763a7c48347f6043da20a2a77fb14f6d60d9457c575b6b
size 1278

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 129 B

+121
View File
@@ -0,0 +1,121 @@
# This document is still a WIP and I used ChatGPT to help me put things down in writing as there's a lot to cover. Feel free to help improve it.
## Introduction
Welcome to the ESCC (Enhanced Smart Cruise Control) IONIQ PHEV Guide. This document provides detailed instructions for connecting and configuring the ESCC Interceptor board with your Hyundai IONIQ Plug-in Hybrid Electric Vehicle (PHEV). Our goal is to simplify the wiring process, enhance vehicle functionality, and ensure a seamless integration with aftermarket components like the Panda device.
## Updated info
On july 28th this guide was updated to rework it's setup and now it uses the relay harness box instead of the custom ESCC board previously mentioned. This simplifies the setup significantly, adds a layer of security with the relay, and makes it even more accessible to use.
## Terminology and Abbreviations
- **ESCC**: Enhanced Smart Cruise Control
- **PANDA**: A universal car interface
- **C-CAN**: Chassis Controller Area Network
- **L-CAN**: Local Controller Area Network
- **IGPM**: Ignition Power Module
## Components
### Harness Female Connector
This connector originates from the car's harness and plugs directly into the radar's male connector.
![](attachment/a4ae5e59abc1483c766af0e9377441ce.png)
### Radar's Male Connector
Located on the radar, this is where the car's harness plugs in. The image shows the connector from the front, with securing guides facing upwards.
![](attachment/caab30983673f68f7ae8f702c856ac44.png)
## Wire Configuration from the Radar Connector and Connections
### Viewing the Car's Harness from Different Angles
#### From the Back
![](attachment/967edbc70d3a2481639ec347fc0cf33d.png)
#### Upside Down
![](attachment/c058dd352308ab61cdb1e86ff47c6fe9.png)
#### Tracing Cables and Pins
![](attachment/SCR-20240729-kdhf.jpeg)
### Detailed Connection List
```
IONIQ 2203663 Molex 5018762640 IONIQ 2203663
Car Harness (Female) Car Radar (Male)
+-----+-----+ +-----+-----+ +-----+-----+
| 18 | 9 | | 2 | 1 | | 10 | 1 |
| 17 | 8 | | 4 | 3 | | 11 | 2 |
| 16 | 7 | | 6 | 5 | | 12 | 3 |
| 15 | 6 | | 8 | 7 | | 13 | 4 |
| 14 | 5 | NOTCH | 10 | 9 | | 14 | 5 | NOTCH
| 13 | 4 | | 12 | 11 | | 15 | 6 |
| 12 | 3 | | 14 | 13 | NOTCH | 16 | 7 |
| 11 | 2 | | 16 | 15 | | 17 | 8 |
| 10 | 1 | | 18 | 17 | | 18 | 9 |
+-----+-----+ | 20 | 19 | +-----+-----+
| 22 | 21 |
| 24 | 23 |
| 26 | 25 |
+-----+-----+
Connections:
Molex Pin 3 (120 Ohm) <--> Molex Pin 5 (120 Ohm)
Harness Pin 1 (12V) <--> Molex Pin 12 (12V)
Harness Pin 4 (GND) <--> Molex Pin 1 (GND)
Harness Pin 10 (IGN) <--> Molex Pin 2 (IGN)
Harness Pin 8 (C-CAN H) <--> Molex Pin 4 (C-CAN H)
Harness Pin 7 (C-CAN L) <--> Molex Pin 6 (C-CAN L)
Harness Pin 18 (L-CAN H) <--> Molex Pin 8 (L-CAN H)
Harness Pin 9 (L-CAN L) <--> Molex Pin 10 (L-CAN L)
Molex Pin 20 (L-CAN L) <--> Radar Pin 9 (L-CAN L)
Molex Pin 18 (L-CAN H) <--> Radar Pin 18 (L-CAN H)
Molex Pin 24 (C-CAN L) <--> Radar Pin 7 (C-CAN L)
Molex Pin 22 (C-CAN H) <--> Radar Pin 8 (C-CAN H)
Molex Pin 16 (IGN) <--> Radar Pin 10 (IGN)
Molex Pin 14 (12V) <--> Radar Pin 1 (12V)
Molex Pin 26 (GND) <--> Radar Pin 4 (GND)
```
#### Molex 5018762640 Pinout:
- Pin 1: GND
- Pin 2: IGN
- Pin 3: internal 120 Ohm Resistor, simply bridge to Pin 5
- Pin 4: C-CAN HIGH
- Pin 5: internal 120 Ohm Resistor, simply bridge to Pin 3
- Pin 6: C-CAN LOW
- Pin 8: L-CAN HIGH (***OPTIONAL, IF EQUIPPED***)
- Pin 10: L-CAN LOW (***OPTIONAL, IF EQUIPPED***)
- Pin 12: 12v
- Pin 14: 12v
- Pin 16: IGN
- Pin 18: L-CAN HIGH (***OPTIONAL, IF EQUIPPED***)
- Pin 20: L-CAN LOW (***OPTIONAL, IF EQUIPPED***)
- Pin 22: C-CAN HIGH
- Pin 24: C-CAN LOW
- Pin 26: GND
#### IONIQ 2203663 (Car Harness, Female):
- Pin 1: 12v -> Molex Pin 12
- Pin 4: GND -> Molex Pin 1
- Pin 7: C-CAN LOW -> Molex Pin 6
- Pin 8: C-CAN HIGH -> Molex Pin 4
- Pin 9: L-CAN LOW -> Molex Pin 10
- Pin 10: IGPM (IGN) -> Molex Pin 2
- Pin 18: L-CAN HIGH -> Molex Pin 8
#### IONIQ 2203663 (Car Radar, Male):
- Molex Pin: 14 -> Pin 1: 12v
- Molex Pin: 26 -> Pin 4: GND
- Molex Pin: 24 -> Pin 7: C-CAN LOW
- Molex Pin: 22 -> Pin 8: C-CAN HIGH
- Molex Pin: 20 -> Pin 9: L-CAN LOW
- Molex Pin: 16 -> Pin 10: IGN
- Molex Pin: 18 -> Pin 18: L-CAN HIGH
## Disclaimer
Remember, this guide is for educational purposes, and modifications to your vehicle are performed at your own risk. Always ensure safety and compliance with local automotive regulations.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ae5c756ffbb73dbb776bb3013518f1c2d32acc947d8b03268ac95cd6d7f984da
size 6320758
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e9c4c47c8ee73472d905c52bc550ecd8f84f265d7572382860508e5ced136909
size 6468919
Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c5e4205335277097adb51267e32208d573323ecb29181a4099a234bd2f6b6570
size 6464093
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1d435f54b1660be3c9fe6723c222c2c143ca002eb62836fb1d394a786a8d84e
size 174497
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b8be531950fe99a68535161117f282fa9bca4f7e43a6d4d3b37e2b219cb9b04f
size 7022315
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0213364ddc16ba861cb6edcb871d0bd3b77f3b00afcbacc239c486bbb9e06113
size 4884215

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