The MDS Automaton automates the keyboard presses needed to fully automate a Mac setup using the resources for the MDS macOS app. Specifically, when the MDS Automaton is plugged in to a USB keyboard, it will send the keyboard command to boot to recovery (Command-R) then wait for a default 30 seconds. The keyboard commands for opening Terminal will then be sent, followed by the command to run the workflow selector.

If you purchased the MDS Automaton bundle, your Automaton has been already programmed for you. It can be re-programmed and configured easily right in the MDS app.


The MDS Automaton is an Arduino-compatible Adafruit ItsyBitsy inside a custom enclosure. It also includes a short micro USB to USB-A cable. The micro USB end of the cable plugs into the USB connector on the Automaton, and the USB-A end of the cable plugs into the Mac that is being is being set up.

To put MDS Automaton into programming mode, insert a paperclip into the Programming Button hole and press the button inside the enclosure twice quickly. If it has already been programmed by MDS, this is not needed.

Downloading the macOS Software

Download MDS by going to the MDS product page.

Programming an Arduino (skip if you purchased the MDS Bundle from Twocanoes Software)

If you purchased a compatible Arduino, it must be programmed with the firmware bundled within the macOS MDS app. Programming is simple:

  1. Click Create Automaton in the MDS macOS App.
  2. Plug in the Arduino and put it in programming mode. This is usually done by pressing the programming button once or twice, or briefly shorting the reset pin to ground. Consult your manual for details.
  3. Once the flashing is completed, a success dialog will appear. You can now unplug the Automaton.

Note: If the flashing does not start, verify the cable is not a “power only” cable. In order to flash the Arduino, it must show up in macOS under /dev with a name that contains “cu.usbmodem”.

Configuring the Automaton

To configure the MDS Automaton, launch the MDS macOS App, and click “Configure Mac Automaton.” Once the configure sheet is displayed, plug in the Automaton using the provided USB cable. Note: the MDS Automaton must be connected when the configuration sheet is shown, since it only listens for a connection for a few seconds on initial power.


The settings on the Automaton are read by the MDS app and show in the configuration sheet:

  1. Version: The current version of the firmware on the device. If there is a new version available, you will be prompted when this sheet is opened.
  2. Command (default: /Volumes/mds/run): The command that is run once Terminal is opened to launch Imagr, the workflow selection app.
  3. Delay before opening Terminal: The amount of seconds between pressing command-R and issuing the commands to open Terminal to run the command.
  4. Delay before running command in Terminal: Additional time before the command is executed.
  5. Firmware password: Use only if the target Mac has been configured to use a firmware password. This setting will enter the required firmware password before booting to the recovery partition.
  6. Boot into recovery: Usually this should be left checked. Unchecking this option will disable the Automaton’s normal function of immediately issuing keyboard commands to boot to the recovery partition. Instead the Automaton will wait to receive commands later using its command line interface. Or, this option can be configured to boot to the different recovery partition options available (note that some of these may not be available for older macOS versions):
    1. Latest macOS that was installed on your Mac (Command-R)
    2. Latest macOS that is compatible with your Mac (Option-Command-R)
    3. macOS that came with your Mac, or the closest version still available (Shift-Option-Command-R)
  7. Erase first volume: This is for use with volumes that have FileVault enabled. To avoid being prompted for a password when running the workflow, this option will instead have the Automaton open Disk Utility and delete the first volume in the recovery partition prior to running Imagr. A volume with the same name will be created so that Imagr can then proceed normally.
  8. Set language and keyboard to English prior to running workflow: This would only be needed in some situations for Macs with non-English settings that are found to have a conflict with how Automaton types commands.

Using the Automaton

Once the automaton is programmed and configured, you can now start using it. After preparing the MDS resource volume or disk image:

  1. Boot the target mac by pressing the power button and holding the Option key.
  2. When the boot selector screen appears, insert the Automaton into the USB port. Within 5 seconds, the Mac should start booting to the recovery partition.
  3. The Automaton will enter the keystrokes to open Terminal and run the command to launch the workflow selector.

MDS Automaton Timing

The MDS Automaton performs keyboard strokes to boot into the recovery partition and other operations. The timing is very specific for each operation:

  • 0 sec: MDS Automaton is powered on. LED turns on.
  • 2 sec: serial port turned on and listening for any keystroke over serial to enter admin mode
  • 7 sec: Enter startup mode. Serial port closed. LED turns off. Wait 1 second for serial to close and keyboard mode engaged.
  • 8 sec: Command-r is pressed for 30 seconds. LED flashes about every 1/2 second.
  • 38 sec: startup delay specified in settings starts (default 180 seconds). Flashes LED two times every 1/2 second.
  • 3 min, 38 secs Press space to clear mouse configuration for Mac Mini. Wait 10 seconds for language selector to come up.
  • 3 min, 48 sec: Press return to dismiss language dialog. Wait 30 seconds for recovery window to show.
  • 4 min, 18 sec: Press control-f2 to turn on keyboard navigation. Press right arrow key 4 times and down arrow key 4 times.
  • 4 min, 20 sec: Wait for pre-command delay (default 6 seconds) for terminal to come up.
  • 4 min, 26 sec: type specified terminal command
  • 4 min, 30 sec: turn off keyboard, wait 2 seconds
  • 4 min, 32 sec: turn on serial port and wait for input.