Diashutter on IX83 opens/closes every 50 slices in a zstack in sequence mode

When acquiring transmitted light zstacks using 2.0g on our Olympus IX83, with auto shutter on, sequence mode enabled on our ASI Z stage, and “keep shutter open” checked in MDA, the shutter opens/closes every 50 frames in each stack. Looking at the problem report it seems like the MDA is setting up the acquisition as a series of 50 frame burst acquisitions even though this is a single z stack? With sequence mode off everything behaves as expected, I’m just not sure where this odd 50 frame behavior is coming from with sequencing on. Sequencing with the stage seems to be critical for this behavior as simply acquiring 100 frames without a zstack doesn’t stop every 50 frames.

Problem Report.txt (558.3 KB)

That is because the buffer of your ASI controller only holds 50 positions. After 50 positions, MM pauses because it has to send a new list of positions (if positions are evenly spaced, there would be more efficient ways to doing this, but the acquisition engine is not smart enough to do so).

On some ASI controllers, you can increase the size of the buffer. For others, you need to flash them with another firmware version. Contact ASI and provide them with info on your controller, and they will likely be able to send you firmware with a larger buffer.

Nico is correct, default firmware has a buffer capacity of 50 positions but for most firmware variants we can make one with more positions. @pavak_shah, I just emailed you corresponding firmware.

To Nico’s parenthetical point, these days most of the firmware variants have better ways of implementing stacks without limits in size, but the MM implementation uses the “ring buffer”. Mark did some work a while back trying to add support for one of these alternate methods, but the “if it ain’t broke” approach is just to get a firmware with a larger ring buffer.

Thanks guys, I know I’ve read about that limitation before, not sure why it didn’t occur to me that that’s the issue. Are there any catches with using a firmware with a larger buffer? I’m curious why that’s not the default if there isn’t.

Some firmware variants take up too much memory on the microcontroller inside the ASI controller to accommodate a large ring buffer depending on which firmware modules are included, how many axes on the controller, etc. So for “internal practicality” ASI makes the large ring buffer a special case. But if the firmware memory footprint suffices there is no downside to having the larger ring buffer.