Commit Graph

13008 Commits

Author SHA1 Message Date
Jason Wen 746d2b750c ui: Developer UI cleanup 2024-03-25 18:28:22 +00:00
DevTekVE cab71cc388 sunnylink: Remov unicode header during HTTP requests 2024-03-14 16:23:52 +00:00
Jason Wen 1f154928dc Translations: Prepare for sunnypilot custom texts 2024-03-14 04:39:33 +00:00
Jason Wen 5e775a1e66 Hyundai CAN: Fix Navi_HU check for cars that do not have this signal 2024-03-13 22:33:36 +00:00
Jason Wen ded3389721 FCA: Fix upstream merge conflicts 2024-03-13 22:32:22 +00:00
Jason Wen 5b9a397078 sunnylink: Config Backup 2024-03-13 19:50:00 +00:00
DevTekVE 28efb5388b sunnylink: Registration API 2024-03-13 18:29:58 +00:00
Jason Wen e2d6a9ab3e Params: Do not backup Driving Model Selector params 2024-03-13 13:22:23 -04:00
Jason Wen 920d4cdcc3 Remove PNG and WAV from LFS 2024-03-12 21:13:47 -04:00
Jason Wen 7dc9d336b5 ui: Lead car chevron improvements 2024-03-12 14:55:25 +00:00
Jason Wen 0daa1e846b Map: Use latActive and longActive for navigation path color change 2024-03-12 00:06:02 -04:00
Jason Wen ef727550a9 Params: BACKUP ParamKeyType for sunnylink's Settings Backup 2024-03-11 14:28:55 -04:00
Jason Wen 7bfd2b81e1 Toyota: Fix upstream merge conflicts 2024-03-07 15:31:46 -05:00
Jason Wen 95c748b9f9 M-TSC: Re-enable in release 2024-03-04 22:41:31 -05:00
Jason Wen 95b224c155 NNLC: Add HONDA CLARITY 2018 2024-02-29 02:32:55 +00:00
Jason Wen 2d6dbc1275 Event: Add additional GitHub path for startup event check 2024-02-28 17:20:58 -05:00
Jason Wen fe1dc7b8de Merge branch 'master' into dev-priv/master-priv 2024-02-28 11:40:59 -05:00
Jason Wen 540431a06b Models: Update default name 2024-02-28 11:36:56 -05:00
Jason Wen 8750b25a0f Bump to 0.9.7.0 2024-02-28 11:34:29 -05:00
Jason Wen ce4055ced6 FCR: Implement during the fingerprint stage 2024-02-27 21:57:14 -05:00
Jason Wen dbaba022a2 Fix upstream merge conflicts 2024-02-27 21:28:12 -05:00
Jason Wen f588a0367b Merge branch 'master' into sync-priv-20240227
# Conflicts:
#	panda
#	selfdrive/car/chrysler/values.py
#	selfdrive/car/ford/carstate.py
#	selfdrive/car/ford/interface.py
#	selfdrive/car/ford/values.py
#	selfdrive/car/interfaces.py
#	selfdrive/car/nissan/values.py
#	selfdrive/car/subaru/interface.py
#	selfdrive/car/volkswagen/interface.py
#	selfdrive/car/volkswagen/values.py
#	selfdrive/controls/radard.py
#	selfdrive/manager/process.py
#	selfdrive/modeld/modeld.py
2024-02-27 21:22:16 -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 761b16d8f5 Merge branch 'master' into dev-priv/master-priv 2024-02-27 10:31:13 -05: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