Skip to content

MDA inter-frame interval fixed at ~1.5 s regardless of settings — AlliedVision Alvium USB3 #964

Description

@patriciorojasm

MDA inter-frame interval fixed at ~1.5 s regardless of settings — AlliedVision Alvium USB3

Summary

When running Multi-Dimensional Acquisition (MDA) with the AlliedVisionCamera device adapter, each frame takes approximately 1.5 seconds regardless of the configured interval or exposure time. The CoreLog shows AcquisitionFrameRate being re-applied to the camera repeatedly between every frame, which appears to be the cause of the fixed overhead.

This is a separate issue from #961 (live stream fix, resolved in #963), which was recently fixed and confirmed working.

Environment

  • OS: Windows 10 and Windows 7 (reproduced on both)
  • MicroManager version: [20260624]
  • Vimba X SDK version: [2026-1]
  • Camera model: Allied Vision Alvium U-158m (USB3) — reproduced with two independent cameras on two independent machines
  • Device adapter: AlliedVisionCamera

Steps to reproduce

  1. Configure AlliedVisionCamera in MicroManager
  2. Confirm camera runs at correct frame rate in Live view (e.g. 10 fps at 100 ms exposure) ✅
  3. Open Multi-Dimensional Acquisition dialog
  4. Set Time Points with any interval (e.g. 333 ms) and any exposure (e.g. 100 ms)
  5. Run MDA → frames are acquired at ~1 frame per 1.5 seconds regardless of settings ❌

Expected behavior

MDA respects the configured interval and exposure. At 100 ms exposure with 333 ms interval, frames should be acquired approximately every 333 ms.

Actual behavior

Frames are acquired at a fixed ~1.5 second interval regardless of:

  • Exposure time
  • Interval setting
  • Image resolution
  • Bit depth (tested at 8-bit)
  • Whether saving to disk or keeping in RAM
  • Whether an external Arduino trigger is used or not

Live view runs correctly at 10 fps (100 ms exposure), confirming the camera and USB transfer are not the bottleneck.

CoreLog evidence

The CoreLog shows AcquisitionFrameRate being re-applied to the camera approximately every second during MDA, interleaved with repeated invalid value errors for file-access properties:

2026-06-26T12:36:49.297416 [dbg,App] Notification for Device: DEV_1AB22C021439 Property: AcquisitionFrameRate changed to value: 29.666014
2026-06-26T12:36:50.803888 [dbg,App] Notification for Device: DEV_1AB22C021439 Property: AcquisitionFrameRate changed to value: 29.666014
2026-06-26T12:36:52.309689 [dbg,App] Notification for Device: DEV_1AB22C021439 Property: AcquisitionFrameRate changed to value: 29.666014
...
2026-06-26T12:36:57.646188 [IFO,dev:DEV_1AB22C021439] Device adapter requests invalid values (0, 0) for property: FileAccessOffset
2026-06-26T12:36:57.646342 [IFO,dev:DEV_1AB22C021439] Device adapter requests invalid values (0, 0) for property: FileSize
2026-06-26T12:36:57.646342 [IFO,dev:DEV_1AB22C021439] Device adapter requests invalid values (0, 0) for property: FileAccessLength

The AcquisitionFrameRate property is being set to the same value (29.666014) on every cycle, suggesting MicroManager's MDA engine is re-applying all camera properties between frames and the adapter is not skipping no-op property changes. Each re-application appears to trigger an internal camera reset that takes ~1.5 seconds.

The FileAccessOffset / FileSize / FileAccessLength invalid value errors are likely a secondary issue — the adapter appears to be polling file-transfer properties that are not applicable during live acquisition.

Hypothesis

MicroManager's MDA engine re-applies all channel properties between each frame. The AlliedVision adapter does not guard against re-applying a property when the value has not changed. Setting AcquisitionFrameRate on the Alvium likely causes the camera to restart its internal timing engine even when the value is identical, introducing ~1.5 s of overhead per frame.

A possible fix would be to cache the last-set value of AcquisitionFrameRate (and other expensive properties) in the adapter and skip the SDK call when the value has not changed.

Additional context

Reproduced across two cameras and two machines with different OS versions, ruling out hardware fault or local configuration. Happy to test patches or provide additional log excerpts.
Claude.io helped me get the info and writing this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions