About 20% of the time "Network Firmware Upload" fails and has to be terminated with a keyboard interrupt. Waiting a few seconds and then running it again usually works. Is there a way I can encourage it to always load?
Example fail
Example success (with keyboard interrupt)
Example fail
Code:
(VirEnv) user@host:~/ $ python3 imx500_object_detection_demo.py --fps 5 --model /usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk[16:34:30.923216058] [870521] INFO Camera camera_manager.cpp:327 libcamera v0.4.0+53-29156679[16:34:30.930663734] [870525] INFO RPI pisp.cpp:720 libpisp version v1.1.0 e7974a156008 27-01-2025 (21:50:51)[16:34:30.939968897] [870525] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a to CFE device /dev/media1 and ISP device /dev/media2 using PiSP variant BCM2712_D0------------------------------------------------------------------------------------------------------------------NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.------------------------------------------------------------------------------------------------------------------[16:34:30.966613007] [870521] INFO Camera camera.cpp:1202 configuring streams: (0) 1280x720-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1[16:34:30.966817543] [870525] INFO RPI pisp.cpp:1484 Sensor: /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R[16:34:31.003909976] [870521] INFO Camera camera.cpp:1202 configuring streams: (0) 640x480-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1[16:34:31.004425084] [870525] INFO RPI pisp.cpp:1484 Sensor: /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1RNetwork Firmware Upload: 0%| | 0.00/2.98M [01:47<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:49<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:50<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:51<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:53<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:56<?, ?bytes/s]Network Firmware Upload: 0%| | 0.00/2.98M [01:58<?, ?bytes/s]^CProcess Process-1:Traceback (most recent call last): File "~/imx500_object_detection_demo.py", line 277, in <module> last_results = parse_detections(picam2.capture_metadata()) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1554, in capture_metadata return self.dispatch_functions(functions, wait, signal_function) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1362, in dispatch_functions return job.get_result(timeout=timeout) if wait else job ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/job.py", line 79, in get_result return self._future.result(timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/concurrent/futures/_base.py", line 451, in result self._condition.wait(timeout) File "/usr/lib/python3.11/threading.py", line 320, in wait waiter.acquire()KeyboardInterruptTraceback (most recent call last): File "/usr/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap self.run() File "/usr/lib/python3.11/multiprocessing/process.py", line 108, in run self._target(*self._args, **self._kwargs) File "/usr/lib/python3/dist-packages/picamera2/devices/imx500/imx500.py", line 416, in __do_progress_bar time.sleep(0.5)KeyboardInterruptCode:
(VirEnv) user@host:~/ $ python3 imx500_object_detection_demo.py --fps 5 --model /usr/share/imx500-models/imx500_network_ssd_mobilenetv2_fpnlite_320x320_pp.rpk[16:37:53.794900990] [870561] INFO Camera camera_manager.cpp:327 libcamera v0.4.0+53-29156679[16:37:53.802523062] [870565] INFO RPI pisp.cpp:720 libpisp version v1.1.0 e7974a156008 27-01-2025 (21:50:51)[16:37:53.812983194] [870565] INFO RPI pisp.cpp:1179 Registered camera /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a to CFE device /dev/media1 and ISP device /dev/media2 using PiSP variant BCM2712_D0------------------------------------------------------------------------------------------------------------------NOTE: Loading network firmware onto the IMX500 can take several minutes, please do not close down the application.------------------------------------------------------------------------------------------------------------------[16:37:53.842563506] [870561] INFO Camera camera.cpp:1202 configuring streams: (0) 1280x720-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1[16:37:53.842679395] [870565] INFO RPI pisp.cpp:1484 Sensor: /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1R[16:37:53.872754112] [870561] INFO Camera camera.cpp:1202 configuring streams: (0) 640x480-XBGR8888 (1) 2028x1520-RGGB_PISP_COMP1Network Firmware Upload: 0.00bytes [00:00, ?bytes/s][16:37:53.874206604] [870565] INFO RPI pisp.cpp:1484 Sensor: /base/axi/pcie@120000/rp1/i2c@80000/imx500@1a - Selected sensor format: 2028x1520-SRGGB10_1X10 - Selected CFE format: 2028x1520-PC1RNetwork Firmware Upload: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2.98M/2.98M [00:06<00:00, 521kbytes/s]^CTraceback (most recent call last): File "~/imx500_object_detection_demo.py", line 277, in <module> last_results = parse_detections(picam2.capture_metadata()) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1554, in capture_metadata return self.dispatch_functions(functions, wait, signal_function) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/picamera2.py", line 1362, in dispatch_functions return job.get_result(timeout=timeout) if wait else job ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/picamera2/job.py", line 79, in get_result return self._future.result(timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/concurrent/futures/_base.py", line 451, in result self._condition.wait(timeout) File "/usr/lib/python3.11/threading.py", line 320, in wait waiter.acquire()KeyboardInterruptStatistics: Posted by Cobilia — Mon Feb 24, 2025 9:15 am