Skip registration on newer devices (#34316)

pull/34315/head
Adeeb Shihadeh 4 months ago committed by GitHub
parent 2e0c91c295
commit 9cf02ca8db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      common/params.cc
  2. 8
      system/athena/registration.py
  3. 2
      system/athena/tests/test_registration.py
  4. 5
      system/manager/manager.py

@ -133,7 +133,6 @@ std::unordered_map<std::string, uint32_t> keys = {
{"GsmRoaming", PERSISTENT}, {"GsmRoaming", PERSISTENT},
{"HardwareSerial", PERSISTENT}, {"HardwareSerial", PERSISTENT},
{"HasAcceptedTerms", PERSISTENT}, {"HasAcceptedTerms", PERSISTENT},
{"IMEI", PERSISTENT},
{"InstallDate", PERSISTENT}, {"InstallDate", PERSISTENT},
{"IsDriverViewEnabled", CLEAR_ON_MANAGER_START}, {"IsDriverViewEnabled", CLEAR_ON_MANAGER_START},
{"IsEngaged", PERSISTENT}, {"IsEngaged", PERSISTENT},

@ -33,20 +33,17 @@ def register(show_spinner=False) -> str | None:
""" """
params = Params() params = Params()
IMEI = params.get("IMEI", encoding='utf8')
HardwareSerial = params.get("HardwareSerial", encoding='utf8')
dongle_id: str | None = params.get("DongleId", encoding='utf8') dongle_id: str | None = params.get("DongleId", encoding='utf8')
if dongle_id is None and Path(Paths.persist_root()+"/comma/dongle_id").is_file(): if dongle_id is None and Path(Paths.persist_root()+"/comma/dongle_id").is_file():
# not all devices will have this; added early in comma 3X production (2/28/24) # not all devices will have this; added early in comma 3X production (2/28/24)
with open(Paths.persist_root()+"/comma/dongle_id") as f: with open(Paths.persist_root()+"/comma/dongle_id") as f:
dongle_id = f.read().strip() dongle_id = f.read().strip()
needs_registration = None in (IMEI, HardwareSerial, dongle_id)
pubkey = Path(Paths.persist_root()+"/comma/id_rsa.pub") pubkey = Path(Paths.persist_root()+"/comma/id_rsa.pub")
if not pubkey.is_file(): if not pubkey.is_file():
dongle_id = UNREGISTERED_DONGLE_ID dongle_id = UNREGISTERED_DONGLE_ID
cloudlog.warning(f"missing public key: {pubkey}") cloudlog.warning(f"missing public key: {pubkey}")
elif needs_registration: elif dongle_id is None:
if show_spinner: if show_spinner:
spinner = Spinner() spinner = Spinner()
spinner.update("registering device") spinner.update("registering device")
@ -71,9 +68,6 @@ def register(show_spinner=False) -> str | None:
if time.monotonic() - start_time > 60 and show_spinner: if time.monotonic() - start_time > 60 and show_spinner:
spinner.update(f"registering device - serial: {serial}, IMEI: ({imei1}, {imei2})") spinner.update(f"registering device - serial: {serial}, IMEI: ({imei1}, {imei2})")
params.put("IMEI", imei1)
params.put("HardwareSerial", serial)
backoff = 0 backoff = 0
start_time = time.monotonic() start_time = time.monotonic()
while True: while True:

@ -32,8 +32,6 @@ class TestRegistration:
def test_valid_cache(self, mocker): def test_valid_cache(self, mocker):
# if all params are written, return the cached dongle id. # if all params are written, return the cached dongle id.
# should work with a dongle ID on either /persist/ or normal params # should work with a dongle ID on either /persist/ or normal params
self.params.put("IMEI", "imei")
self.params.put("HardwareSerial", "serial")
self._generate_keys() self._generate_keys()
dongle = "DONGLE_ID_123" dongle = "DONGLE_ID_123"

@ -58,7 +58,8 @@ def manager_init() -> None:
except PermissionError: except PermissionError:
print(f"WARNING: failed to make {Paths.shm_path()}") print(f"WARNING: failed to make {Paths.shm_path()}")
# set version params # set params
serial = HARDWARE.get_serial()
params.put("Version", build_metadata.openpilot.version) params.put("Version", build_metadata.openpilot.version)
params.put("TermsVersion", terms_version) params.put("TermsVersion", terms_version)
params.put("TrainingVersion", training_version) params.put("TrainingVersion", training_version)
@ -68,13 +69,13 @@ def manager_init() -> None:
params.put("GitRemote", build_metadata.openpilot.git_origin) params.put("GitRemote", build_metadata.openpilot.git_origin)
params.put_bool("IsTestedBranch", build_metadata.tested_channel) params.put_bool("IsTestedBranch", build_metadata.tested_channel)
params.put_bool("IsReleaseBranch", build_metadata.release_channel) params.put_bool("IsReleaseBranch", build_metadata.release_channel)
params.put("HardwareSerial", serial)
# set dongle id # set dongle id
reg_res = register(show_spinner=True) reg_res = register(show_spinner=True)
if reg_res: if reg_res:
dongle_id = reg_res dongle_id = reg_res
else: else:
serial = params.get("HardwareSerial")
raise Exception(f"Registration failed for device {serial}") raise Exception(f"Registration failed for device {serial}")
os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog
os.environ['GIT_ORIGIN'] = build_metadata.openpilot.git_normalized_origin # Needed for swaglog os.environ['GIT_ORIGIN'] = build_metadata.openpilot.git_normalized_origin # Needed for swaglog

Loading…
Cancel
Save