fixed missing internal panda

This commit is contained in:
lukasloetkolben
2026-03-03 15:25:48 +01:00
parent a17a38d8c3
commit 73092daefc
2 changed files with 21 additions and 13 deletions
+3 -3
View File
@@ -124,15 +124,15 @@ def main() -> None:
no_internal_panda_count += 1
continue
# flash and filter out Rivian longitudinal before stock logic
panda_serials = flash_rivian_long(panda_serials)
cloudlog.info(f"{len(panda_serials)} panda(s) found, connecting - {panda_serials}")
# Flash the first panda
panda_serial = panda_serials[0]
panda = flash_panda(panda_serial)
# flash Rivian longitudinal upgrade panda
flash_rivian_long(panda)
# Ensure internal panda is present if expected
if HARDWARE.has_internal_panda() and not panda.is_internal():
cloudlog.error("Internal panda is missing, trying again")
@@ -74,22 +74,30 @@ def _flash_panda(panda: Panda) -> None:
panda.reconnect()
def flash_rivian_long(panda: Panda) -> None:
def flash_rivian_long(panda_serials: list[str]) -> list[str]:
if not os.path.isfile(FW_PATH):
cloudlog.error(f"Rivian longitudinal upgrade firmware not found at {FW_PATH}")
return
return panda_serials
if not _is_rivian():
cloudlog.info("Not a Rivian, skipping longitudinal upgrade...")
return
return panda_serials
# only flash external black pandas (HW_TYPE_BLACK = 0x03)
if panda.get_type() == b'\x03' and not panda.is_internal():
try:
_flash_panda(panda)
except Exception:
cloudlog.exception(f"Failed to flash F4 panda {panda.get_usb_serial()}")
remaining_pandas = []
for serial in panda_serials:
panda = Panda(serial)
# only flash external black pandas (HW_TYPE_BLACK = 0x03)
if panda.get_type() == b'\x03' and not panda.is_internal():
try:
_flash_panda(panda)
except Exception:
cloudlog.exception(f"Failed to flash F4 panda {serial}")
else:
remaining_pandas.append(serial)
panda.close()
return remaining_pandas
if __name__ == '__main__':
flash_rivian_long(Panda())
flash_rivian_long(Panda.list())