From 4b507c960a67be5843ddf2d91d61b0a186137893 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 6 Sep 2026 09:57:53 -0500 Subject: [PATCH] Restore sunnypilot HKG attribution Document reconstructed HKG lineage from sunnypilot's hkg-angle-steering-2025 branches and later opendbc history. Preserve applicable notices, credit upstream contributors, and mark the derived controller, CAN, platform, safety, and test boundaries. Reference snapshots: sunnypilot/sunnypilot cfb38312db33779f4727c983d372474a56ccb5d8; sunnypilot/opendbc cc4b08625a98e94b318cab15e45e05dad58042bd; sunnypilot/opendbc f95f996f5917dcbbf2e32fe51b606a24cf836af6. --- CREDITS.md | 64 +++++++++++++++++++ README.md | 7 ++ THIRD_PARTY_NOTICES.md | 56 ++++++++++++---- .../opendbc/car/hyundai/carcontroller.py | 2 + opendbc_repo/opendbc/car/hyundai/carstate.py | 2 + .../opendbc/car/hyundai/fingerprints.py | 2 + .../opendbc/car/hyundai/hyundaicanfd.py | 2 + opendbc_repo/opendbc/car/hyundai/interface.py | 2 + opendbc_repo/opendbc/car/hyundai/values.py | 2 + .../opendbc/safety/modes/hyundai_canfd.h | 2 + .../safety/tests/test_hyundai_canfd.py | 2 + 11 files changed, 132 insertions(+), 11 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index edf223317..44c264365 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -79,6 +79,70 @@ parts of their implementation. Future ports should cite the exact upstream commi commit and at the relevant source boundary; when history can be retained cleanly, use a merge, subtree, or cherry-pick with origin metadata rather than a single squashed attribution. +## Hyundai, Kia, and Genesis support adapted from sunnypilot + +Portions of StarPilot's HKG angle steering, CAN integration, panda safety enforcement, safety tests, +firmware fingerprints, and cruise-button management are adapted from sunnypilot. Some upstream HKG +authorship is retained in StarPilot's Git history, and StarPilot commit +[`e33305151`](https://github.com/firestar5683/StarPilot/commit/e33305151ba852ea3350aa9f7a12d1c8bd137c43) +identified its ICBM/CSLC work as a sunnypilot port. Other substantial imports were committed locally +without recording an exact source revision, so this section documents the reconstructed lineage. + +The exact checkout used for each historical import cannot now be proven. The reference snapshots +used for this audit are: + +- [`sunnypilot/sunnypilot` `hkg-angle-steering-2025`](https://github.com/sunnypilot/sunnypilot/tree/hkg-angle-steering-2025) + at [`cfb38312d`](https://github.com/sunnypilot/sunnypilot/commit/cfb38312db33779f4727c983d372474a56ccb5d8), + whose opendbc submodule points to the next snapshot. +- [`sunnypilot/opendbc` `hkg-angle-steering-2025`](https://github.com/sunnypilot/opendbc/tree/hkg-angle-steering-2025) + at [`cc4b08625`](https://github.com/sunnypilot/opendbc/commit/cc4b08625a98e94b318cab15e45e05dad58042bd). +- [`sunnypilot/opendbc` `master`](https://github.com/sunnypilot/opendbc) + at [`f95f996f5`](https://github.com/sunnypilot/opendbc/commit/f95f996f5917dcbbf2e32fe51b606a24cf836af6), + used to audit later HKG fingerprints and extension history. + +### Upstream authors and work + +- **Haibin (Jason) Wen** contributed the original Kia EV9 HDA2/LFA2 angle-steering port, Hyundai + angle integration and signals, non-SCC platform support, and Intelligent Cruise Button Management. + Important lineage commits include + [`abe78de2c`](https://github.com/sunnypilot/opendbc/commit/abe78de2c2f9d8774d343c35c181d27e9d944392), + [`333de6f1a`](https://github.com/sunnypilot/opendbc/commit/333de6f1a2097a27709a652d5862bad05d83ed1f), + [`559a37426`](https://github.com/sunnypilot/opendbc/commit/559a37426976171ceb56c541bec9362abd8b8bd2), and + [`862828ad6`](https://github.com/sunnypilot/opendbc/commit/862828ad6f870fb23dd8670fe2a18dc19313217b). +- **Shane Smiskol** contributed foundational angle-command limiting, driver-override behavior, and + EPS-fault avoidance, including + [`228a397a3`](https://github.com/sunnypilot/opendbc/commit/228a397a37618de1ecbaf06b70efe3e0e0a8eec6) and + [`42d84ff6c`](https://github.com/sunnypilot/opendbc/commit/42d84ff6ca3d48529b195395d652ad777ad397ca). +- **DevTekVE** contributed substantial angle-controller integration, tuning, platform support, panda + safety logic, and tests, including + [`c77c7ec2e`](https://github.com/sunnypilot/opendbc/commit/c77c7ec2e39959b65c42e2d70aa943fccd606361), + [`7ded99dba`](https://github.com/sunnypilot/opendbc/commit/7ded99dba145c56754e8bbe47217eb174ec03396), + [`3819ca7f0`](https://github.com/sunnypilot/opendbc/commit/3819ca7f0d2576771924bd60f47d3e8676b5d583), and + [`8d134e98f`](https://github.com/sunnypilot/opendbc/commit/8d134e98f3151a1aec354f93e81c3a4269788991). +- **Nicholas Evans, dany7915, janpoo6427, Tinkerpet, royjr, Taylor Hoshino, Intelli, Joshua Mack, + Mark McCallister, Discountchubbs, and other sunnypilot contributors** supplied vehicle ports, + fingerprints, firmware data, safety-limit updates, and related integration represented in the + adapted HKG support. + +This list identifies contributors found during the repository, commit, and blame audit. The +sunnypilot repositories and their Git histories remain the authoritative record and may identify +additional contributors. + +### Local-to-upstream map + +| StarPilot area | Upstream lineage | What StarPilot changed | +| --- | --- | --- | +| `opendbc_repo/opendbc/car/hyundai/carcontroller.py` | Angle controller and driver-override work in `sunnypilot/opendbc` `hkg-angle-steering-2025` | Integrated the controller into StarPilot's opendbc layout and added substantial local longitudinal, smoothing, recovery, and platform behavior. | +| `opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py`, `interface.py`, and `values.py` | Angle commands, signal selection, safety flags, limits, and platform integration from the angle branch | Combined later upstream changes with StarPilot flags, Params, platform tuning, and local CAN/CAN-FD behavior. | +| `opendbc_repo/opendbc/safety/modes/hyundai_canfd.h` and its tests | Angle-command safety enforcement and regression tests from the angle branch | Extended and reorganized the safety mode and tests for StarPilot's current supported modes. | +| `opendbc_repo/opendbc/car/hyundai/fingerprints.py` and HKG platform data | sunnypilot HKG extension/fingerprint history on `master` plus angle-branch vehicle ports | Flattened extension data into the local opendbc tree and continued adding and updating platforms. | +| HKG cruise-button management and settings integration | sunnypilot ICBM/CSLC concepts and implementation history, including `862828ad6` and `2277e3d49` | Adapted the feature to StarPilot/FrogPilot controls and settings; later revisions changed or removed portions of the original integration. | + +The current implementation is not a wholesale copy of either reference snapshot and has diverged +substantially. Its HKG angle-control and supporting safety architecture nevertheless remain +derivative in design and in identifiable portions of the implementation. The applicable upstream +notices are preserved in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). + ## Policy for future third-party ports Before publishing a third-party port: diff --git a/README.md b/README.md index ee2d0ca5d..a5418eb72 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,12 @@ for the code-level provenance and [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.m upstream notices and terms. BluePilot and its contributors do not maintain or endorse StarPilot; please direct support requests for this adaptation to the StarPilot project. +Hyundai, Kia, and Genesis angle steering and related vehicle support include substantial adaptations +from [sunnypilot](https://github.com/sunnypilot/sunnypilot/tree/hkg-angle-steering-2025) and its +[opendbc angle-steering branch](https://github.com/sunnypilot/opendbc/tree/hkg-angle-steering-2025). +StarPilot's implementation has diverged significantly; the upstream contributors do not maintain +this adaptation. Detailed code lineage is recorded in [CREDITS.md](CREDITS.md#hyundai-kia-and-genesis-support-adapted-from-sunnypilot). + StarPilot has a vibrant, welcoming community [discord](https://firestar.link/discord). Stop by to chat or ask questions! @@ -88,5 +94,6 @@ Uses your comma's sysroot/toolchain * Portions of this software include modified versions of the Material Design Icons provided by Google under the Apache License 2.0. A copy of the license is included in the `LICENSE-MDI` file. * Ford support includes software adapted from BluePilot's `bp-7.0` branch. The source repository contains both a standard MIT notice and a separate custom SUNNYPILOT LLC notice; StarPilot preserves both in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). +* Hyundai, Kia, and Genesis support includes software adapted directly from sunnypilot's HKG angle-steering branch and sunnypilot/opendbc. StarPilot preserves the applicable notices in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). > This project uses software from Haibin Wen and SUNNYPILOT LLC and is licensed under a custom license requiring permission for use. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 2189dc6e2..8a1c9ce9e 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -14,11 +14,27 @@ and related tests are adapted from the public BluePilot repository: - Historical reconstruction: [CREDITS.md](CREDITS.md#ford-support-adapted-from-bluepilot) - Provenance and contributors: [CREDITS.md](CREDITS.md) -The upstream branch contains both `LICENSE` and `LICENSE.md`. Its README points to `LICENSE` for -openpilot licensing, while some extension files point to `LICENSE.md`. Because the scope of those -two notices is not unambiguous, StarPilot preserves both and treats the more restrictive notice -conservatively for upstream-derived material. This is a record of the published notices, not a -legal conclusion about their scope. +## sunnypilot Hyundai, Kia, and Genesis support + +Portions of StarPilot's HKG angle steering, CAN integration, panda safety enforcement and tests, +firmware fingerprints, platform data, and cruise-button management are adapted directly from the +public sunnypilot repositories: + +- Source: +- Audited superproject snapshot: [`cfb38312db33779f4727c983d372474a56ccb5d8`](https://github.com/sunnypilot/sunnypilot/commit/cfb38312db33779f4727c983d372474a56ccb5d8) +- Source: +- Audited angle-branch snapshot: [`cc4b08625a98e94b318cab15e45e05dad58042bd`](https://github.com/sunnypilot/opendbc/commit/cc4b08625a98e94b318cab15e45e05dad58042bd) +- Later HKG history was audited against `sunnypilot/opendbc` `master` at + [`f95f996f5917dcbbf2e32fe51b606a24cf836af6`](https://github.com/sunnypilot/opendbc/commit/f95f996f5917dcbbf2e32fe51b606a24cf836af6). +- Historical reconstruction and contributors: [CREDITS.md](CREDITS.md#hyundai-kia-and-genesis-support-adapted-from-sunnypilot) + +## Applicable upstream license notices + +The upstream repositories and branches identified above publish both `LICENSE` and `LICENSE.md`. +Their READMEs point to `LICENSE` for openpilot licensing, while some extension files point to +`LICENSE.md`. Because the scope of those two notices is not unambiguous, StarPilot preserves both +and treats the more restrictive notice conservatively for upstream-derived material. This is a +record of the published notices, not a legal conclusion about their scope. ### Upstream `LICENSE` notice (MIT) @@ -39,19 +55,37 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FO DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -### Upstream Ford extension file notice +### Upstream `opendbc` `LICENSE` notice (MIT) -The upstream `carstate_ext.py`, `values_ext.py`, and several related sunnypilot extension files -carry this file-level notice: +Copyright (c) 2020, Comma.ai, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +### Upstream extension file notice + +Several upstream Ford and HKG extension files carry this file-level notice: > Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. > > This file is part of sunnypilot and is licensed under the MIT License. > See the LICENSE.md file in the root directory for more details. -StarPilot's Ford state integration and lateral-limit values were informed by those extension files. -The reference to “MIT License” conflicts with the nonstandard restrictions in the referenced -upstream `LICENSE.md`; both texts are retained here rather than silently choosing between them. +StarPilot's Ford and HKG integrations were informed by extension files carrying this notice. The +reference to “MIT License” conflicts with the nonstandard restrictions in the referenced upstream +`LICENSE.md`; both texts are retained here rather than silently choosing between them. ### Upstream `LICENSE.md` notice (published as “Custom MIT License”) diff --git a/opendbc_repo/opendbc/car/hyundai/carcontroller.py b/opendbc_repo/opendbc/car/hyundai/carcontroller.py index ce2f3fae1..8f7b2f533 100644 --- a/opendbc_repo/opendbc/car/hyundai/carcontroller.py +++ b/opendbc_repo/opendbc/car/hyundai/carcontroller.py @@ -1,5 +1,7 @@ from dataclasses import dataclass +# Provenance: portions of HKG angle control are adapted from sunnypilot/opendbc's +# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. import numpy as np from opendbc.can import CANPacker from opendbc.car import Bus, DT_CTRL, make_tester_present_msg, rate_limit, structs diff --git a/opendbc_repo/opendbc/car/hyundai/carstate.py b/opendbc_repo/opendbc/car/hyundai/carstate.py index e161fc37e..3e361619f 100644 --- a/opendbc_repo/opendbc/car/hyundai/carstate.py +++ b/opendbc_repo/opendbc/car/hyundai/carstate.py @@ -2,6 +2,8 @@ from collections import deque import copy import math +# Provenance: portions of HKG angle-state integration are adapted from sunnypilot/opendbc's +# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. from cereal import custom from opendbc.can import CANDefine, CANParser from opendbc.car import Bus, create_button_events, structs diff --git a/opendbc_repo/opendbc/car/hyundai/fingerprints.py b/opendbc_repo/opendbc/car/hyundai/fingerprints.py index 023d084c0..7350b9bfc 100644 --- a/opendbc_repo/opendbc/car/hyundai/fingerprints.py +++ b/opendbc_repo/opendbc/car/hyundai/fingerprints.py @@ -1,4 +1,6 @@ """ AUTO-FORMATTED USING opendbc/car/debug/format_fingerprints.py, EDIT STRUCTURE THERE.""" +# Provenance: portions of HKG firmware data are adapted from sunnypilot/opendbc master at +# f95f996f5 and its hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md. from opendbc.car.structs import CarParams from opendbc.car.hyundai.values import CAR diff --git a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py index f93f62c41..bd06b2895 100644 --- a/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py +++ b/opendbc_repo/opendbc/car/hyundai/hyundaicanfd.py @@ -1,4 +1,6 @@ import copy +# Provenance: portions of HKG angle-command construction are adapted from sunnypilot/opendbc's +# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. import numpy as np from opendbc.car import CanBusBase, CanData from opendbc.car.common.conversions import Conversions as CV diff --git a/opendbc_repo/opendbc/car/hyundai/interface.py b/opendbc_repo/opendbc/car/hyundai/interface.py index ac312fb92..77ae9edcf 100644 --- a/opendbc_repo/opendbc/car/hyundai/interface.py +++ b/opendbc_repo/opendbc/car/hyundai/interface.py @@ -1,4 +1,6 @@ import time +# Provenance: portions of HKG angle integration are adapted from sunnypilot/opendbc's +# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. from opendbc.car import get_safety_config, structs, uds from opendbc.car.hyundai.hyundaicanfd import CanBus from opendbc.car.hyundai.values import HyundaiFlags, CAR, CarControllerParams, \ diff --git a/opendbc_repo/opendbc/car/hyundai/values.py b/opendbc_repo/opendbc/car/hyundai/values.py index d1f6bc38f..bb6d7022a 100644 --- a/opendbc_repo/opendbc/car/hyundai/values.py +++ b/opendbc_repo/opendbc/car/hyundai/values.py @@ -2,6 +2,8 @@ import re from dataclasses import dataclass, field from enum import IntFlag +# Provenance: portions of HKG angle limits, flags, and platform data are adapted from +# sunnypilot/opendbc's hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md. from opendbc.car import ACCELERATION_DUE_TO_GRAVITY, Bus, CarSpecs, DbcDict, PlatformConfig, Platforms, uds from opendbc.car.lateral import AngleSteeringLimits, ISO_LATERAL_ACCEL from opendbc.car.common.conversions import Conversions as CV diff --git a/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h b/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h index c47ff06f0..6dc25b733 100644 --- a/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h +++ b/opendbc_repo/opendbc/safety/modes/hyundai_canfd.h @@ -1,5 +1,7 @@ #pragma once +// Provenance: portions of HKG angle-command safety are adapted from sunnypilot/opendbc's +// hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. #include "opendbc/safety/declarations.h" #include "opendbc/safety/modes/hyundai_common.h" diff --git a/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py b/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py index c9400dece..291b4c707 100755 --- a/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py +++ b/opendbc_repo/opendbc/safety/tests/test_hyundai_canfd.py @@ -1,4 +1,6 @@ #!/usr/bin/env python3 +# Provenance: portions of HKG angle-safety tests are adapted from sunnypilot/opendbc's +# hkg-angle-steering-2025 branch at cc4b08625. See CREDITS.md and THIRD_PARTY_NOTICES.md. from parameterized import parameterized_class import unittest import numpy as np