Skip to main content
Version: 22 May 2023

Controller Recovery Guide

In the event that your Controller fails to update and results in the Controller not connecting to the Compute Pack or failing to boot; a manual flash may be required. This guide includes instructions on how to manually flash the Controller.


Only perform a manual flash if the Controller fails to updated after connecting it to the Compute Pack.

Manual flashing is only supported on Windows and Linux.

Before you start


  1. Make sure the Controller is NOT connected to your computer.
  2. Download the Controller recovery files and extract the folder so it can be easily accessed. For example, the folder can be placed into the MagicLeap/firmware/ directory.
  • To extract the contents of the compressed file, you may need to enter a password. If prompted enter MagicLeap.
  1. With the folder extracted, open command line and navigate to that directory:
cd Magicleap/firmware/control_4992-R2/
  1. Run the Controller recovery command:
Hot Tip

If the output from running erase_myriad.bat shows some output resembling "instance not found" repeatedly, execute the following two commands until you get nothing but OK:s as output. If you get errors on the second command, run the first command until you get no errors, then the second one must have no errors on the first attempt, or you must start again:

fcmd.bat mode 0101 & timeout /t 3 & fcmd.bat gpio 010300
fcmd.bat gpio 0003 & fcmd.bat edfu 01 & fcmd.bat edfu 040000000000040000

After both commands have been run without any errors (subsequently, in-a-row), run the following, one more time:

  1. With the script running, turn on your Controller and connect it to your computer.
  2. The command line should debug a success message after completing.
  3. Finally, connect the Controller to your compute pack and wait for it to update and pair.


If you still experience issues, such as your Controller appearing to not provide input to the ML2, try the following steps:

  1. Hold the bumper, trigger and home buttons until the Controller beeps and turns off, to reset pairing, then plug the Controller into the Compute Pack (via direct USB-C to USB-C connection).
  2. If that does not fix the issue, downgrade the Compute Pack to the previous OS version, flash the Controller to the previous version (via direct USB-C to USB-C connection), then upgrade the Compute Pack to the most recent OS and flash the controller to the most recent OS (via direct USB-C to USB-C connection).