Motif Software Version History


  • ...


  • updated imgstore
  • support for flir/spinnaker version 3.x


  • fix handling of ordered config in console and multicam copy


  • improve recnode-view-stream error messages
  • fix recnode-view-stream with multiple cameras
  • improve type inference with camera parameters
  • recnode-view-stream supports bayer encoded streams


  • add connnect/disconnect all to REST API
  • fix wrong realtime stream information in rare multicam situations
  • realtime stream can be bound to an interface IP
  • expose timezone in camera status API
  • add recnode-view-stream command to view a remote stream and frame information
  • can explicitly specify the web-browser system wide


  • hide more UI elements in slave UI when slave EnableRecord=false
  • improve copy/move behavior when multicam slaves use different recording directories
  • add IPC and recnode-control commands to fetch remote camera actual config
  • fix Motif6 rare race condition crashes on multicamera systems which sync before recording
  • add --connect-all and --disconnect-all to multicam api (command and REST)


  • fix loopy upload


  • add rotation support MotifImageRotate
  • fix loopbio triggerbox issues
  • fix firefox browser launch for snap firefox installs


  • bugfixes for backend names and web-index


  • support new arena sdk including, lucid 10G camera support, chunk timestamp support
  • support ptp sync for lucid cameras
  • support new ptp sync mode for basler ace2
  • add a debug viewer recnode-backend-camera-view
  • more reset modes for cameras (reboot, soft, hard) and support reseting cameras with recnode-backend-camera-reset
  • support explicit ordering of camera parameter config
  • removed PerCamera single-camera stanza. camera specific config files are preferred.


  • python3

5.2.5 * benchmark tool: add bayer decoding * benchmark tool: add thread limiting of ffmpeg and opecv


  • fix remaining time in UI
  • add recnode-transcode command


  • add new jetson codecs
  • export to store should respect ffmpeg path
  • configurable fullsize image preview width
  • show recording duration remaining
  • show durations longer than 24 hours correctly
  • multicam triggerbox auto-config of cameras to hardware trigger mode now respects camera serial number whitelist
  • allow starting blacklisted cameras in multicam setups but have them still ignored from triggerbox harder trigger autoconfig (above)
  • support stream parameters in Spinnaker, also setting buffer mode explicitly to NewestOnly
  • add recnode-control --list-cameras to list locally connected cameras


  • fix color codec detection on ace2 cameras
  • support setting other configuration parameters, including default values, on phidgets
  • support multiple IO UI elements targeting the same IO device (so can have switch and slider)
  • recnode-control supports setting IO
  • recnode-control supports getting IO
  • add a 'remote' io backend to redirect config to another recnode io process


  • added camera undistortion using loopy based intrinsic calibrations
  • fixed G/B whitebalance setting on spinnaker
  • also set recording indicator in the manual sync case (SynchronizeOnRecordStart=False) although only precisely synchronous setting of the recording indicator signal with the first saved from is supported in the SynchronizeOnRecordStart=True condition
  • fix hvec in multi-GPU situations
  • fix 421 temperature error in new Basler cameras
  • fix ZMQ backend camera crashes in multicam case
  • show actions in web-index in custom mode
  • can disable chunk timestamp and use system time on Spinnaker


  • (bugfix) more reliable setting of AcquisitionFramerateEnabled (note the D)
  • can add binary/switch camera parameters to UI
  • (bugfix) misformed copy paths on windows crash rsync
  • (bugfix) could not hide recording metadata
  • dont set USB params on GigE cameras and vice-versa
  • dont show camera temperature if unavailable
  • dont show camera adjustments if disabled (null)
  • can whitelist cameras in a Multicamera setup
  • support ptp synchronization in multicamera setups
  • (bugfix) always set LineSelector before LineSource
  • recnode-control --read can read camera parameters
  • (bugfix) fix multicamera master ui re-attach to camera nodes after master restart
  • add nvenc-slow-yuv420-lq30 codec
  • (bugfix) fix failure to quit cameras when cameras cannot acquire images
  • (bugfix) work around SDK bug and reduce polling interval in certain configurations
  • refactor camera IO line configuration for recording status support
  • add support for starting recording from camera IO lines
  • add support for uploading directly to loopy
  • (bugfix) fix export to store from store
  • (bugfix) also save gainabs and auto-exposure config to metadata
  • add suppport for audio recording as an IO backend
  • add MCC usb DAQ support to recnode-io
  • (bugfix) incorrect store image shape with native color cameras
  • prevent conflicting trigger and AcquisitionFramerateEnable
  • (bugfix) do not prevent other trigger lines on non-loopbio triggerboxes
  • lucid camera support
  • add recnode-top (htop like system monitor)
  • can adjust number of encoding threads
  • adjustable process priority for IO process (reduces audio latency)
  • multi-camera can autostart cameras
  • show camera status in multicamera index page
  • multi-camera can synchronize via command line or REST
  • all camera parameters can now be set over API
  • (bugfix) stop some half-framerate problems with hardware trigger on FLIR cameras
  • (bugfix) hide lost+found directory
  • (linux only) web-index serial number based redirects to camera
  • (bugfix) only list video compatible v4l devices
  • (bugfix) prevent infinite loop exporting on broken stores
  • show a status icon on linux always
  • compulsory metadata support
  • support feeltech trigger devices
  • better error message when externally triggered and trigger is not connected
  • timelapse support
  • photo mode (programatically schedule single photos to be taken)
  • (bugfix) loopbio triggerbox only supports Line1 trigger sources
  • can write messages to be logged in extra-data (json backend only) via REST API
  • can read IO values from REST API
  • moving files (from the API) now ignores currently recording imgstores yet still copies completed chunks, which makes it safe to call/schedule regularly in order to keep extremely long recordings synchronized on storage
  • (bugfix) difficulty starting >10 cameras in some multicam configurations
  • (bugfix) scheduled tasks are sorted in the UI
  • can specify custom CSS for the web interface
  • support remote (network) phidgets
  • a generic HTTP io backend
  • a shell command io backend
  • a zmq camera backend
  • (bugfix) write imgstore chunk extension for forward compatibility
  • (bugfix) dont stop move/copy rsync when the disk is full
  • arena camera bugfixes (skipped frame accounting and motif launcher)
  • rest API reports free disk space


  • (bugfix) fix crash during montage
  • (bugfix) prevent failed recording due to unknown framerate
  • (bugfix) show administration link when accessing web-index page from localhost
  • can configure stream parameters (Basler/cypylon on Linux only)
  • support for phidget RTC sensors
  • (bugfix) defensively stop acquisition at camera start
  • (bugfix) fix IO failing to show in the UI in certain public IP multicam scenarios
  • support for adjusting process priority
  • (bugfix) no frame detection based on host time and not camera time
  • add imgstore backend
  • (new config) adjustable zoom percent CameraPreviewZoomPercent
  • (new config) can disable browser image interpolation CameraPreviewDisableBrowserInterpolation
  • (bugfix) IO label not shown in UI
  • can add extra experiment metadata


  • point-gray / FLIR camera support (spinnaker backend)
  • limited legacy point-gray camera support (pycapture2 backend)
  • add a single command launcher (motif)
  • add a status/notifaction icon
  • support 18.04 and other distributions by trimming dependencies
  • support older Flycapture2 backend
  • live video streaming over zmq
  • live state streaming over zmq
  • FFmpegPath can be defined in config file
  • run on Windows 10
  • nicer test pattern
  • limit number of recordings shown in UI for performance
  • detect when camera stops sending images (such as accidental trigger cable unplugging)
  • can start recording for specified duration
  • display elapsed recording duration in multicam view
  • complete camera specific configuration for multicamera setups
  • improved IO support for shared IO configurations (IO shared across multiple physical machines via the loopbio-lcdscreen)
  • can arbitrarily add IO control to web UI
  • frequency output for recnode-io
  • IO can be logically associated and separated per camera
  • show camera resolution more prominately in the UI
  • show recording location in UI
  • improved startup stability with complex external trigger / IO configurations
  • can log IO outputs to .io.json files chunked beside recordings
  • can add per-camera video recording relative time scheduled operations, e.g. 'every 5 minutes when recording', or 'at :30 on the 5th and 10th minute'
  • can schedule recording stop time explicitly (in according to recording duration)
  • warn if configured to save videos to a temporary directory
  • the web-index should only show links to the admin page if accessible (i.e if accessed via localhost)
  • special support for toggling DigitalOutput IO
  • can clear and show next execution times for scheduled tasks from the single camera UI
  • users can define experimental scripts in python which can be executed from the user interface in order to schedule and program subsequent events, including I/O
  • tabbed multicam interface to match single cam one
  • can set IO and edit scheduled events from the multicam interface
  • launching motif twice will open a browser to the running instance (windows)
  • fixed interval sampling of defined IO sensors (supports multiple backends). data logged to file and shown in the user interface
  • can schedule camera parameter changes
  • ZMQ backend for out-of-process IO
  • camera and multicam specific config files are applied on top of one another, rather than replacing one another, which means more specific config files need only contain what differs
  • improved accuracy actual framerate estimation for variable FPS situations (such as parameter changes)
  • can record videos at native FPS in non-imgstore scenarios
  • show camera details on configure tab too
  • can disable / configure experiment script and script interpreter
  • improved web UI performance with many cameras
  • different backends and / or cameras can use different codecs despite being started at the same time in a multicamera arrangement
  • allow the user to select if they record to store or not


  • fix returning filenames over API for multicamera case


  • improved debouncing of buttons in web ui


  • fixes for network cameras
  • can set digital output 0 high when starting recording automatically after synchronization
  • better recovery from crashed recording/camera processes


  • generalized input/output support


  • try to survive crashed ffmpeg
  • better error messages with crashed ffmpeg


  • add --print-rsync to recnode-control
  • add recnode-webbrowser 'GUI' wrapper to launch browser
  • show multicam mode in recnode-control
  • add a configure 'target' preview to help camera alignment
  • add documentation link
  • show buffer usage with only 1 decimal place
  • show camera temperature
  • auto-synchronize when starting multicam recordings if triggerbox connected
  • restrict manual synchronization to once per recording
  • disallow recording if triggerbox is required and not detected
  • show size of stores on export/copy tab
  • disable moving data while recording
  • add montage support to allow exporting synchronized recordings to a single video montage
  • reload broken images / camera streams
  • loopy upload support for multicam systems
  • fix a bug sometimes setting offset/width the first time


  • fix failure to import mp4 stores to loopy


  • fix single cam setups not honouring ExportToStore


  • fix export-all with index mode


  • fix filename appending for scheduled recordings
  • fix zombie cameraproxy connections to remote multicam systems


  • fix display of recordings in index mode


  • show scheduled operations in multicamera UI
  • show in the multicamera UI when cameras have died
  • add --clear-schedule to recnode control
  • set title in metadata from filename if otherwise undefined
  • clearer disk full warning
  • bugfixes in scheduler
  • fix sorting by date
  • fix filenames with scheduled recordings by adding date when executed


  • add --list-schedule to recnode-control
  • independent recording directories in index mode


  • fix 'lost+found' directory handling


  • can add links to recnode-web-index
  • always start a localhost registry so that mode=index always shows links
  • add clearer RECORD_CONF[EnableExport] config switch
  • fix export delete after ('move') to network locations
  • recnode-version can print configured backup location


  • add a web REST api and associated python API (it is preferred that you use this for controlling recordings instead of the command line client over ssh)
  • add scheduler for scheduling recordings and other operations. this feature is only accessible over the REST api for now
  • add preview transforms:
  • false-color maps can now show lighting irregularities
  • focus
  • can crop to the centre 40% of the frame for fine-tuning
  • opt-in show saturated pixels (previously was automatically shown only if configured)
  • add a 'focus' / 'sharpness' transform which highlights edges to help focusing on fine details
  • add ability to automatically stop recording after a specified time (available only via the REST api and from recnode-control
  • add 'delete after copy', i.e. 'Move' and 'delete after export' modes
  • can differentially enable/disable EnableCopy, EnableMove, EnableEject
  • add integration with loopy. videos can be automatically added to the configured user account after copy to shared storage (supported in the web-ui, recnode-control, and the REST api)
  • support multiple Ximea cameras
  • add camera-specific config in configuration file. this allows setting differential default settings per camera
  • add support for assigning specific cameras to specific GPUs
  • add recnode-api-key command line tool for generating/printing api key for REST api
  • more consistently show / use camera serial number in UI and recnode-control
  • don't leak underlying codec name at export
  • adjustable preview FPS (was fixed at 2fps)
  • bugfix: survive interrupted socket reads
  • show direct links to cameras from the web-index if configured in index mode
  • fix limitation that cameras can only be stop/started 50 times per session
  • color the disk full indicator red
  • switch default FPS to 25fps
  • bugfix: really wait for stores to be flushed before attempting to copy/export them


  • be careful with paths/identifiers using opencv backend


  • web-ui: dont touch DOM until websock connection is up


  • web-ui: fix javascrip focus bug


  • fix for multicam setups with IPC IP on public ports


  • recnode-control can address cameras individually


  • add support for multiple backends (opencv, ximea, basler)


  • add another mode to the multicam concept - 'index' - like slave, but direct links to cameras are added to the web-index and to the GUI
  • selectable temperature sensor


  • UI can show temperature


  • prevent failed exports freezing export process
  • multicamera-recorder: show an eject button if copy/export is enabled
  • recnode-console: can list recordings
  • add the ability to export all videos at once


  • don't mangle decimal point in float metadata


  • show file sizes in single-camera case
  • recnode-control improvements (can record to 'store' format, i.e. splits recordings into multiple files
  • more UI feedback for multi-camera hardware synchronization. use synchronization relative framenumber
  • transcoding/export support for multi-camera recording nodes
  • UI improvements for multi-camera recorder on small screens


  • capitalise UI lavels
  • fix ui errors on the slaves when hardware trigger is otherwise configures *


  • add hardware trigger and synchronization support across multi master/slave setups
  • add a chain mode where upon hardware signal we can start recording in a multi/single cam setup
  • store hwframerate in metadata
  • add export and (removable) copy support to multi-camera setups
  • gui: better status on export tab
  • recnode-control: can record to store
  • gui: show file size
  • gui: don't show camera parameters as adjustable from slave


  • gui: spinbuttons now adjust camera parameters in addition to the sliders
  • gui: style and webgui improvements for small screens
  • multicamera-recorder: can now adjust individual camera parameters
  • multicamera-recorder: improved support for extra metadata
  • recnode-console: improved support for multiple cameras
  • config: move multicam config to its own section 'MultiCam'. Per camera configuration can be specified by using the new 'PerCamera' config section


  • added the ability to attache any metadata you want to recordings 'title', 'genotype', 'what-i-had-for-breakfast'. each field can be filled out in the GUI and will then be saved in the resulting video (you can extract / see this metadata using VLC or most other movie players.
  • the framerate, exposure, gain, and any other camera settings are also saved as metadata (see above)
  • each system can be assigned a more memorable name which will be shown in the user interface (should help you remember which system you are working on)
  • UI improvements to multicamera gui
  • you can now specify the filename of the files instead of them having only the date/time filename (please talk to me how to enable this)
  • added a command line client to control recordings. If you like SSHing into your machine, you can now start or stop recordings, or start file uploads, using the new recnode-control command line tool