BluePilot 7.1: merge bp-sunnypilot into a work branch
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 8/100
- Tipo di issue
- Refactoring
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- infrastructure, release
Direzione di ricerca
This is a branch-level merge, not a single fix: start with the conflict list in the issue and the hook checklist, beginning with .gitattributes and launch_chffrplus.sh. Done means bp-7.1-dev builds and boots on a comma four and a comma 3X with the BluePilot UI rendering, as the issue states. Driving verification is tracked separately in #226.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Part of ford-op/bp-sunnypilot#20. Needs ford-op/opendbc#15.
What
Branch bp-7.1-dev off bp-dev and merge a green bp-sunnypilot into it (merge commit). bp-dev and bp-sunnypilot share sunnypilot 01a843e0a as their merge base, so this is a normal merge, not a re-port. Upstream, opendbc and the library win everywhere outside the BluePilot layer. The BluePilot layer is BluePilot's own folders plus the hooks listed below.
A trial merge gives 118 conflicted paths:
- 88 "file location": BluePilot's files in folders upstream moved under
openpilot/; git already placed them. Accept, fix imports. - 7 file/directory: upstream's root
openpilotsymlink is now a folder. Accept. opendbc_repo,agnos.json,bookmark_fill.png: take upstream;opendbc_repopoints at ford-op/opendbcbp-full.- 3 modify/delete: upstream moved
process_config.py,sentry.py,vehicle.yaml. Re-apply BluePilot's edits at the new location. - 23 content conflicts, the hooks (by hand, below).
Checklist
Hooks (keep each to an entry point):
-
.gitattributes,.gitmodules -
launch_chffrplus.sh(boot logo, verbose build; check whether the EGL fix is still needed),launch_env.sh(connect backend; the AGNOS pin follows upstream). Merged; AGNOS is upstream's 19.9; the EGL check is left for the device build -
common/hardware/comma/hardware.py(lazyTiciLPAimport, noscaling_max_freqcap: keep each only if current upstream still needs it). Upstream imports the LPA lazily now, so that hook is gone; the cap stays removed -
common/params_keys.h,sunnypilot/system/params_migration.py. 58 BluePilot keys added; the 19 lateral keys bp-sunnypilot already declares (the library's, same names) are not duplicated -
selfdrive/car/card.py,selfdrive/car/cruise.py,sunnypilot/selfdrive/car/interfaces.py.log_fingerprint(VIN on the no-fingerprint report) went with upstream's Sentry removal; it comes back with crash reporting -
selfdrive/selfdrived/selfdrived.py(commIssuedebounce) - UI:
selfdrive/ui/layouts/main.py,selfdrive/ui/mici/layouts/main.py,selfdrive/ui/soundd.py,selfdrive/ui/sunnypilot/mici/layouts/settings.py,selfdrive/ui/sunnypilot/mici/widgets/sunnylink_pairing_dialog.py,selfdrive/ui/sunnypilot/ui_state.py. Rebuilt from upstream plus BluePilot's edits (BP7 had removed upstream's body layouts and always-offroad buttons); theme-pack sounds moved intoSounddBP, so upstream'ssoundd.pyis unchanged; the sunnylink dialog was a misdetected rename and stays upstream's - Sunnylink:
settings_ui.json,docs/README.md,tests/test_settings_changes.py, plusvehicle.yamlat its new location (merge with the Ford settings already there, no duplicates). BP7's 33 extra Ford items appended,disable_BP_lat_UIin front of the mode selector,settings_ui.jsonregenerated (--checkclean) - System:
system/athena/registration.py(Konik / offline),system/qcomgpsd/qcomgpsd.py,system/ui/lib/wifi_manager.py, plusprocess_config.pyandsentry.pyat their new locations. All done exceptsentry.py(crash reporting below). The comma four's Konik/offline pairing host moved tomici/layouts/settings/device/prime.py(upstream removed the mici pairing dialog);qcomgpsdcatchesOSError(upstream dropped pyserial);restart_if_crashis gone upstream, so qcomgpsd keeps only its in-process reconnect
The rest:
- Drop the opendbc folder;
opendbc_repo= ford-op/opendbcbp-full - Drop BP7's Ford panda safety edits (the old panda logic without native curvature); the library's safety comes with
bp-full -
controllerStateBP/carStateBPkeep slots 139/140 inlog.capnp; the library provides the lateral fields the publisher needs. Slots kept; the publisher wiring is in "Counterparts" below - LFS: BluePilot's binaries stay plain git files, moved under BluePilot-owned folders with one
-filterrule per folder; no in-place overrides of upstream assets;.lfsconfigand upstream assets from upstream; drop the stalethird_party/rule. Done except the move: 29 BluePilot images inside upstream asset folders keep per-file rules for now; thespinner_sunnypilot.pngoverride is gone (see follow-ups) - Portal, Konik / offline backend switch and BluePilot crash reporting (glitchtip.bluepilot.dev) all come along. Portal and backend switch done; crash reporting below
Progress
bp-7.1-dev @ ebe5f4a3f: the merge of bp-sunnypilot (1c8be8d9) into bp-dev (5ea746ae3), one merge commit. Every upstream file BluePilot touches differs from upstream only by BluePilot's own edits (checked line by line); BluePilot code imports and BASEDIR paths are fixed for upstream's nested openpilot/ layout; upstream's removed onroad experimental-mode button is kept under openpilot/selfdrive/ui/bp/onroad/exp_button_base.py as the base of BluePilot's steering-wheel icon. Not built or run yet.
Crash reporting (decided: vendored sentry-sdk)
Upstream removed Sentry (comma's #38790): system/sentry.py, its call sites and the sentry-sdk dependency. Adding the dependency back to pyproject.toml/uv.lock would make every upstream sync conflict in uv.lock, so:
-
sentry-sdk(pure Python) vendored underbluepilot/vendor/, with its version noted for updates;uv.lockstays upstream's - BluePilot's
sentry.py(BP7's, 308 lines: GlitchTip DSN, filters, rate limiting) as a BluePilot-owned module that loads the vendored package - Its call sites as hooks: manager start and crash, the process runner, the native crash collector, modeld, the map daemon's installer, and the VIN on the no-fingerprint report
- A crash report from the device reaches glitchtip.bluepilot.dev
Counterparts from ford-op/opendbc#16
- Publish
BPX_LONG_PARAMS(disable_BP_long_UI,disable_downhill_comp_UI) inCarControlSP.paramsnext to the library's keys (PR 3, ford-op/opendbc#20) -
bp_card_publisherbuildscarStateBPfromCI.CS.bp.car_state_bp(a dict withCarStateBP's fields) andcontrollerStateBPfrom the library'sLateralStatusplus params; both inservices.py(PR 4, branchbp-full-car-state) - The ICBM openpilot side (
cruise.py, the ICBM controller,speed_limit_assist.py) when PR 5 lands; thecruise.pyhook is already merged
Follow-ups (not blocking 7.1)
- BluePilot's home layouts (comma 3X and comma four) extend upstream's base home, so they miss sunnypilot's
HomeLayoutSP/MiciHomeLayoutSPadditions (same as BP7) - The boot spinner shows sunnypilot's logo: point BluePilot's spinner at
spinner_bluepilot.pnginstead of overriding sunnypilot's image - Move the 29 BluePilot images in upstream asset folders under a BluePilot folder
- BluePilot keeps removing upstream's 1.69 GHz CPU cap; worth measuring again on current upstream
wifi_managerkeeps BP7's silenced "adapter type" exception log
Done when
bp-7.1-dev builds and boots on a comma four and a comma 3X, the BluePilot UI renders on both, the BluePilot settings panels and the portal open, and a device moved from bp-7.0 keeps its BluePilot settings. Driving is #226.
- Lingua principale
- Python
- Stelle
- 144
- Fork
- 96
- Merge medio
- 3g 17h
- PR unite (30g)
- 6
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di BluePilotDev/bluepilot
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 8/100
BluePilotDev/bluepilot#227 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
BluePilotDev/bluepilot#225 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 5/100
BluePilotDev/bluepilot#226 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
BluePilotDev/bluepilot#224 ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
BluePilotDev/bluepilot#219 · 1 commento ·
Tutte le issue di BluePilotDev/bluepilot
Issue simili
-
binding:python bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
The Browser tab fails with a Wayland error when Open Terminal runs from a Wayland desktop sessionAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
open-webui/open-terminal#210 ·
-
triage/confirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
agentscope-ai/agentscope#3807 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#150542 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
triton-inference-server/server#9069 ·
I maintainer di solito rispondono entro 1 giorno