E.118 specifies decimal digits, but many real SIMs carry hex characters
in EF_ICCID (e.g. China Mobile's 898600B5... range, some MVNO/IoT SIMs).
AT+QCCID returns them verbatim, and the strict isdigit() check blanked
the ICCID, leaving the modem daemon stuck in INITIALIZING forever and
cellular dead. ModemManager parses ICCID as hex for the same reason.
Verified on a comma four with a China Mobile SIM (EG916Q-GL): previously
stuck retrying 'identity read incomplete', now dials and passes traffic.
The destructor built its cleanup commands as "rm %s -rf", with the flags
after the operand. GNU rm permutes arguments so this works on device and
in CI, but BSD rm on macOS stops option parsing at the first operand and
treats "-rf" as a second filename:
$ mkdir -p /tmp/rmtest/sub && rm /tmp/rmtest -rf
rm: /tmp/rmtest: is a directory
rm: -rf: No such file or directory
exit=1
So nothing is removed, and each of the four calls prints two errors plus
"system command failed (256)" from check_system. Every run of a tool that
owns an OpenpilotPrefix (replay, cabana) leaks its params dir, its
comma_home and its /tmp/msgq_ dir; 33 of each had accumulated on my
machine.
Pass the flags first.
* system: add chestnut offroad alerts
* system: refine chestnut offroad alerts
* system: refine chestnut power alerts
* system: confirm chestnut power recovery from PCIe
* system: detect missing chestnut power from INA voltage
* models: dual-slot backend (qcom/usbgpu) with ref-based downloads
* models: restore get_active_source and the usbgpu-to-qcom fallback
* models: fix per-slot validation and cap mismatched-source refetches
* ui/models: select models by ref and seed the usbgpu slot on migration
* models: drop defensive attribute guards on capnp bundles
* models: remove vestigial fetcher state and dead fallbacks
* models: resolve the active bundle from the active source slot only
* models: pass the usbgpu kwarg through the modeld test stubs
* models: resolve the displayed model from the active slot in ui_state
* models: correct the validation memo type hint
* models: drop docstrings that restate the function name
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* modeld_v2: Support eGpu
* bump tg
* egpu
* no pkls please
* god no onnx either
* fix test
* done in build model now
* lint
* rip
* egpu ready build all split
* manual seed , reuse memory buffers across runs
* dont download big when we dont have big lol
* whoops
* no i and x
* cd
* who put those there. ??
* reduce flakiness by using artifact-name from build-model to regex, speed up pub b y checking the name before trying to clone and publish again
* try hf as a trusted publisher :)
* mf its a dataaset. i knew that
* fucking validation wants raw to fetch and full to push. grr
* smh
* dude i am missing so much
* pkl name
* move build all to hf
* tests: migrate sunnypilot tests to unittest and remove pytest
* red diff mf
* im scared , this may be a bad idea lol
* fetch latest commit.
* transition to requests
* models: use requests instead of aiohttp
* tici
* fix
* gpu fixes from upstream
* lint
* bump
* needed to say
* old
* how??
* epgu flag reduce
* this made me cry
* support monolith still
* precache warp in legacy
* Move jsons to param for sunnylink
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* relc
* so picky
* clean up
* switch to distance based
* same calls
* all you brother i'm just here to red diff
---------
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>
* init
* more init
* keep it alive
* fixes
* more fixes
* more fix
* new submodule for nn data
* bump submodule
* update path to submodule
* spacing???
* update submodule path
* update submodule path
* bump
* dump
* bump
* introduce params
* Add Neural Network Lateral Control toggle to developer panel
This introduces a new toggle for enabling Neural Network Lateral Control (NNLC), providing detailed descriptions of its functionality and compatibility. It includes UI integration, car compatibility checks, and feedback links for unsupported vehicles.
* decouple even more
* static
* codespell
* remove debug
* in structs
* fix import
* convert to capnp
* fixes
* debug
* only initialize if NNLC is enabled or allow to enable
* oops
* fix initialization
* only allow engage if nnlc is off
* fix toggle param
* fix tests
* lint
* fix more test
* capnp test
* try this out
* validate if it's not None
* make it 33 to match
* align
* share the same friction input calculation
* return stock values if not enabled
* unused
* split base and child
* space
* rename
* NeuralNetworkFeedForwardModel
* less
* just use file name
* try this
* more explicit
* rename
* move it
* child class for additional controllers
* rename
* time to split out custom lateral acceleration
* move around
* space
* fix
* TODO-SP
* TODO-SP
* update regardless, it's an extension now
* update name and expose toggle
* ui: sunnypilot Panel -> Steering Panel
* Update selfdrive/ui/sunnypilot/qt/offroad/settings/lateral_panel.h
* merge
* move to steering panel
* no need for this
* live params in a thread
* no live for now
* new structs
* more ui
* more flexible
* more ui
* no longer needed
* another ui
* cereal changes
* bump opendbc
* simplify checks
* all in one place
* just Enhanced Lat Accel only
* no submodule for this
* Enhanced Lateral Acceleration: fix bugs, restore NNLC, add UI/schema
Fix 4 bugs in latcontrol_torque_lat_accel.py: missing CI param, wrong
method name (torque_from_lateral_accel → torque_from_lateral_accel_in_torque_space),
self.enabled collision with NNLC, missing output torque recomputation.
Restore NNLC + ExtOverride inheritance chain with Enhanced slotted between
ExtBase and NNLC. Add mutual exclusion constraints, Python UI toggle,
sunnylink schema entries, and controller init/update tests.
* fix lint: remove unused default params list, add ty ignore, fix test fixture
* use the og name
* rename
* need gates
* TODOs
* wrong
* gate them all on init
---------
Co-authored-by: DevTekVE <devtekve@gmail.com>
* Process eSIM notifications after profile operations
* Clarify sleep purpose after operation in execute_and_process_notifications
Added comment to clarify the purpose of the sleep.
* chestnut: production flasher with ROM bootloader recovery
* hardwared: flash chestnut firmware offroad
* comments
* single FW version
* hardwared: fix chestnut flasher path
* chestnut: update firmware to 1d368808
* hardwared: log the flasher output
* comment
* hardwared: flash in a thread
* match panda flashing style
* fix
* chestnut: defer signals and harden the flasher
* chestnut: detect bootloader mode and retry
* comments
* chestnut: name the config dir for its content
* chestnut: name the ROM bootloader consistently
* chestnut: clearer name for the device lookup
* chestnut: spell out the low level names
* chestnut: claim the interface, not the device
* Tesla: MADS Screen Button Settings
Adds a Tesla vehicle setting (vehicle bus required) to control how many
fingers activate the MADS screen button, or disable it entirely.
Rebased onto current master:
- Migrated the setting metadata from the deprecated params_metadata.json
(removed in #1862) to the yaml SDUI system: added TeslaMadsScreenButton
to settings_ui_src/pages/vehicle.yaml and recompiled settings_ui.json.
Vehicle-bus gating uses the tesla_has_vehicle_bus capability visibility.
- Bumped opendbc_repo to the latest head of sunnypilot/opendbc#459.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JiSH2KAAueUmDe29xvpuAd
* bump
* Tesla: address MADS Screen Activation review feedback
Default TeslaMadsScreenButton to Off for fresh installs and add a param
migration that seeds existing Tesla installs with 3-Finger, preserving the
previous always-on behaviour. Brand resolves from CarPlatformBundle, falling
back to CarParamsPersistent so auto-fingerprinted Teslas are covered too.
Rename the setting to "MADS Screen Activation", hyphenate the finger-count
labels, and reword the description to use <br> (descriptions render as HTML)
with a note that a higher finger count may reduce accidental activations.
Applied both on-device and in sunnylink.
Also fix test_tesla_with_vehicle_bus_uses_param, which broke once
get_mads_limited_brands started reading TeslaMadsScreenButton from the same
blanket params mock, and add coverage for the screen-button-Off path.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X5icDp7zZ49gpyC2mpCfF1
* bump opendbc
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Jason Wen <haibin.wen3@gmail.com>