Two development kits are connected to a single laptop and running simultaneously. On the right is a kit with a green 532nm laser, and on the left is a kit with a red 630nm laser.

The software suite enables users to perform MEMS mirror device driving from proof of concept in new application development to products. Additionally, it has been proven to be an excellent educational tool for MEMS students and professionals. It features software development capabilities with extensive C++, Matlab, Labview and Android Java API for prototype and product development.

Software solutions included in the suite provide tools to aid users in: developing content for controlling MEMS mirror position/scanning behavior over time, conditioning that content to get the best performance from the devices, streaming that content to appropriate MEMS Controller hardware, and controlling certain parameters in the hardware (e.g. amplitude and offset).

There are multiple Windows-based executables which give users control of all of the mirrors’ various modes of operation – point-to-point (quasi-static) beam steering, line-by-line uniform velocity rastering, vector graphics at various refresh rates, bitmap image laser displaying or laser marking, one-axis-resonating, and Lissajous patterns.

The main executable “MirrorcleDraw” provides a graphical user interface with all of the above-mentioned modes and options. The program further allows users to study a device’s step response, resonant frequency of each axis, response with the use of various types of filters, etc. There are several examples of laser display capabilities based on vector graphics drawings, laser display of text with various fonts, and animations. Features also include the capability to load waveforms (import from text files) to direct the MEMS mirror to user-controlled positions, as well as the capability to load ILDA-specification vector files.

Mirrorcle Software Suite 10.6 includes the following software:


MirrorcleDraw executable for Windows (XP, Vista, Win7, Win8, Win10) has an extensive graphical user interface (GUI).  It enables users to prepare content for driving MEMS mirror’s x-axis, y-axis, and a digital port (e.g. for laser modulation, camera triggering), and to run that content on USB MEMS Controllers.  Content generation includes vector graphics modes, raster modes, function generating modes, quasi-static positioning mode (point-to-point movement), Lissajous pattern modes, ILDA file import capability, keypoint and sample text file import and export capability, etc.  There are also multiple modes of raster scanning.  One mode provides for loading of an image and rastering that image content (laser on/off pixels) over the designated angle space, e.g. in a laser marking application.  Simple linear raster type allows various user controls such as number of lines, angle of lines, time-duration of each line and others.  Offsets, signal conditioning, filtering, voltage control, refresh rate control and other parameters are all available in the GUI.


MirrorcleLinearRaster is a console application for Windows (XP, Vista, Win7, Win8) with a simple user interface for preparing and running raster scans with uniformly spaced lines and with uniform scanning velocity.  User chooses number of lines, pixels per line, line duration, point-to-point or uniform-velocity motion, and other parameters and runs single or continuous raster scans with the MEMS mirror.  Lines can have any, user-controlled rotation angle.  The application controls MEMS mirror x-axis and y-axis, and also provides 8-bits of synchronized digital output.

Software Development Kit for C++

Software Development Kit for C++. Mirrorcle’s complete Application Programming Interface (API) is provided to developers including comprehensive user guides, example source files and executable examples.  It allows users to develop their own applications using the same libraries and functions that Mirrorcle uses to create its executable software and products. The API provides two main libraries with separate functionalities. MTIDataGenerator library provides functions for content/data generation, filtering, conditioning, interpolations, etc. MTIDevice library provides a set of functions for connecting with the USB controllers, setting/reading parameters, streaming data to the MEMS driver synchronously or asynchronously, controlling a digital output port, reading from analog inputs, etc.  An example Visual C++ project is provided to illustrate the use of the library classes and several ways of driving devices.

Software Development Kit for Matlab

Software Development Kit for Matlab includes Mirrorcle’s Matlab API and Matlab example scripts. Similar to the C++ version, it allows users a fast and easy route to development of applications.  There are multiple examples of creating and conditioning the content and streaming the content on MEMS Controllers.  Matlab 2012b (or newer) compatible.

Software Development Kit for LabVIEW

Software Development Kit for LabVIEW. Based on the libraries from the C++ API, this SDK includes several examples of content generation (and content importing) and driving of MEMS mirror devices from National Instruments LabVIEW software.  LabVIEW 2011 (or newer) compatible.

Mirrorcle Android Suite 10.6, provided as part of the Android Development Kit for mobile Android devices, includes:


MirrorcleDraw for Android is an executable application provided as an apk file. The application provides a touch-based graphical user interface.  It enables users to prepare content for driving MEMS mirror’s x-axis, y-axis, and a digital port (e.g. for laser modulation), and to run that content on applicable wireless-enabled MEMS Controllers.  Content generation includes vector graphics modes, raster modes, function generating modes, quasi-static positioning mode (point-to-point movement), ILDA file import capability, etc.  Offsets, signal conditioning, filtering, voltage control, refresh rate control and other parameters are all available in the user interface. Tilt sensor-based laser beam control and touch-based laser beam control is demonstrated.

Software Development Kit for Android

Software Development Kit for Android. Similar to the C++ version, this is a Java-based software development kit (SDK) specifically designed for creating applications on Android mobile devices, allowing the user the fastest and easiest route to development wireless applications for MEMS mirrors. A complete library project is included with all of the necessary classes to create content for MEMS mirror driving, to connect via Bluetooth to a MEMS Controller, to stream data and settings to the Controller, and much more. The library project also includes a copy of the openCV library for applications that combine the use of the mobile device camera with lasers.   Another project with a specific open source application example is included.

Mirrorcle Linux Suite 10.6, provided as part of the Linux Development Kitincludes:


MTIDevice-Demo for Linux is a compiled executable application provided to demonstrate a variety of ways to drive MEMS mirrors in point to point, scanning, rastering, and other modes.

Software Development Kit for Linux

Software Development Kit for Linux. Written in C++ and containing libraries compiled for the ARM11 Raspberry Pi processor running a Unix OS, the Linux Software Development Kit allows developers to create applications for Mirrorcle MEMS on a compact, portable, and low-cost platform. The documented source code is included for the MTIDevice-Demo application which demonstrates all of the core control concepts required to begin operating the MEMS mirrors and control electronics.

Please refer to the Mirrorcle Software Suite – Applications Guide for additional information. Additional comprehensive user guides are provided with the purchase of a development kit.