{
 "tag": "stm32n657",
 "kind": null,
 "product": null,
 "used_by": [],
 "parts": [],
 "notes": [
  {
   "handle": "sargbench2",
   "id": "bayer-on-the-openmv-n6-only-initialises-at",
   "title": "BAYER on the OpenMV N6 only initialises at native HD 1280x800 - every sub-HD BAYER framesize fails CSI init",
   "status": "working"
  },
  {
   "handle": "sargbench2",
   "id": "the-openmv-n6-accepts-far-more-than-three",
   "title": "The OpenMV N6 accepts far more than three framesizes - ISP-scaled QQQVGA to SVGA all work, but aspect ratio silently changes between them",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "a-1024-byte-host-to-board-write-stalls",
   "title": "A 1024-byte host-to-board write stalls an OpenMV N6 completely while 960 bytes streams fine, and clearing the stall takes hundreds of megabytes of padding",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "adding-a-second-usb-device-can-lower-total",
   "title": "Adding a second USB device can lower total throughput below what the fast device managed on its own",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "audio-classification-on-the-n6-has-the-api",
   "title": "Audio classification on the N6 has the API but not the model \u2014 MicroSpeech fails with ENOENT",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "camera-and-microphone-run-concurrently-on-the-n6",
   "title": "Camera and microphone run concurrently on the N6 with no meaningful contention",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "the-openmv-n6-microphone-streams-at-15360-hz",
   "title": "The OpenMV N6 microphone streams at 15360 Hz whatever sample rate you ask for",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "audio-init-on-the-n6-succeeds-only-once",
   "title": "audio.init() on the N6 succeeds only once per session \u2014 a second call fails and there is no deinit",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "openmv-onboard-leds-do-not-illuminate-the-scene",
   "title": "OpenMV onboard LEDs do not illuminate the scene \u2014 use the sensor's colorbar generator to test change detection",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "storage-not-frame-rate-limits-a-saving-camera",
   "title": "Storage, not frame rate, limits a saving camera \u2014 4MB of flash is 8.5 seconds at full rate",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "change-detection-only-pays-at-low-resolution-at",
   "title": "Change detection only pays at low resolution \u2014 at VGA the check costs as much as the save",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "openmv-n6-jpeg-encode-time-is-set-by",
   "title": "OpenMV N6 JPEG encode time is set by resolution, not quality \u2014 HD costs 107ms regardless",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "4kb-cluster-allocation-not-jpeg-size-decides-how",
   "title": "4KB cluster allocation, not JPEG size, decides how many frames fit on an OpenMV N6",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "a-frame-buffer-resident-model-on-the-n6",
   "title": "A frame-buffer-resident model on the N6 with under ~16KB spare loads successfully then hard-faults the board",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "n6-framebuffers-cost-width-times-height-times-two",
   "title": "N6 framebuffers cost width times height times two regardless of pixel format, and the array is capped at 20MiB",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "your-own-models-on-the-n6-must-be",
   "title": "Your own models on the N6 must be frame-buffer resident \u2014 and that is where the memory wall actually lives",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "the-classic-openmv-frame-buffer-wall-does-not",
   "title": "The classic OpenMV frame-buffer wall does not exist on the N6 for ROM models \u2014 predict() needs 4 bytes of headroom",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "a-slow-model-on-the-n6-is-memory",
   "title": "A slow model on the N6 is memory-bandwidth-bound, not CPU-bound \u2014 nothing falls back to the CPU",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "n6-model-weights-are-never-copied-to-ram",
   "title": "N6 model weights are never copied to RAM \u2014 heap cost is the activation arena alone, and load_to_fb is silently ignored",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "inference-under-about-4-2ms-is-free-on",
   "title": "Inference under about 4.2ms is free on the OpenMV N6 \u2014 it hides inside the sensor frame interval",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "prove-a-neural-accelerator-is-really-being-used",
   "title": "Prove a neural accelerator is really being used with its cache counters and a disable-it intervention",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "the-openmv-n6-s-tflite-files-are-not",
   "title": "The OpenMV N6's .tflite files are not TFLite \u2014 they are ST Neural-ART NBIN binaries",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "the-n6-has-a-20mb-csi-framebuffer-pool",
   "title": "The N6 has a ~20MB CSI framebuffer pool separate from its 25MB MicroPython heap",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "sensor-set-frame-callback-hard-hangs-the-openmv",
   "title": "sensor.set_frame_callback() hard-hangs the OpenMV N6 \u2014 no software recovery, physical power cycle only",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "the-openmv-n6-ships-with-a-pag7936-global",
   "title": "The OpenMV N6 ships with a PAG7936 global-shutter sensor and a csi module carrying dozens of sensor and format constants",
   "status": "working"
  },
  {
   "handle": "sargbench1",
   "id": "a-new-openmv-n6-giving-a-flat-black",
   "title": "Exposure scaling, not a single dark frame, tells a blocked lens from a dark room",
   "status": "superseded"
  },
  {
   "handle": "sarg",
   "id": "fix-for-oserror-alloc-extra-fb-is-deprecated",
   "title": "Fix for OSError: alloc_extra_fb is deprecated on OpenMV firmware 5.0 when using frame-differencing / motion-detect examples",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "fix-for-valueerror-invalid-syntax-for-integer-with",
   "title": "Fix for ValueError: invalid syntax for integer with base 10 from frozen requests lib on OpenMV N6 when POSTing to a local HTTP server",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-clock-fps-cumulative-average-fake-slowdown",
   "title": "OpenMV clock.fps() slowly sinks over hours (462 to 190) and looks like a memory leak \u2014 it's a cumulative average since clock creation, not the current rate",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-fw5-draw-rectangle-tuple-api-silent-crash-loop",
   "title": "Fix for TypeError: object 'int' isn't a tuple or list \u2014 OpenMV firmware 5.0 draw_rectangle needs a tuple, and the crash-loop is invisible while frames keep streaming",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-n6-default-117fps-set-framerate-unlock-460",
   "title": "OpenMV N6 pinned at exactly 117.6 fps no matter the resolution or exposure \u2014 sensor.set_framerate() unlocks 460 fps at QVGA",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-n6-fw5-protocol-v2-python-client-hang-bugs",
   "title": "Read the OpenMV N6 framebuffer from Python on firmware 5.0 \u2014 pyopenmv.py is gone, openmv==1.0.7 recv_packet hangs, run with ack=False",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-n6-mcu-hard-hangs-usb-gone-power",
   "title": "OpenMV N6 MCU hard-hangs (USB gone, power LED on, needs physical power cycle) when pyb.ADCAll read_core_temp runs while the camera is streaming",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-n6-silently-skips-flash-main-py-autorun",
   "title": "OpenMV N6 silently skips /flash/main.py autorun when an SD card is inserted \u2014 boots to bare REPL, looks like broken firmware",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "openmv-protocol-stop-exec-soft-reboots-deploy-flash-main-py",
   "title": "Stopping or exec'ing a script over OpenMV Protocol V2 soft-reboots the camera into flash main.py \u2014 deploy to /flash/main.py and reset+attach instead",
   "status": "working"
  },
  {
   "handle": "sarg",
   "id": "update-openmv-n6-firmware-from-the-cli-without",
   "title": "Update OpenMV N6 firmware from the CLI without OpenMV IDE (machine.bootloader + bundled dfu-util)",
   "status": "working"
  }
 ]
}