commaai / panda

code powering the comma.ai panda
MIT License
1.5k stars 744 forks source link

Panda DFU recovery #1956

Open dzid26 opened 1 month ago

dzid26 commented 1 month ago

Panda (C3X) doesn't always enter DFU when running recover.py.

I tried rebooting and entering dfu manually. After that it would either work many times and or repeatedly not find dfu.

putting 24001a001451313236343430 in DFU mode
^X^CTraceback (most recent call last):
  File "/data/openpilot/panda/board/./recover.py", line 22, in <module>
    dfu_serials = PandaDFU.list()
                  ^^^^^^^^^^^^^^^
  File "/data/pythonpath/panda/python/dfu.py", line 134, in list
    ret += PandaDFU.spi_list()
           ^^^^^^^^^^^^^^^^^^^
  File "/data/pythonpath/panda/python/dfu.py", line 91, in spi_list
    _, h = PandaDFU.spi_connect(None)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/pythonpath/panda/python/dfu.py", line 63, in spi_connect
    handle = STBootloaderSPIHandle()
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/data/pythonpath/panda/python/spi.py", line 319, in __init__
    with self.dev.acquire() as spi:
  File "/usr/local/pyenv/versions/3.11.4/lib/python3.11/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/data/pythonpath/panda/python/spi.py", line 111, in acquire
    fcntl.flock(self._spidev, fcntl.LOCK_EX)

^C
^C