A cool and fun summer project …

These are the steps I used to get MagicMirror2 working on a Raspberry Pi Zero W:

  1. Flash memory card with Legacy 32-bit.
  2. Connect via ssh to run script:
    bash -c  "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/raspberry.sh)"

    Answer **yes** to disable screen saver and use pm2 questions.

  3. Remove chromium with:
    sudo apt-get remove chromium-browser
    sudo apt autoremove
  4. Add Firefox with:
    sudo apt-get update
    sudo apt-get install firefox-esr
  5. Enable VNC using GUI (Interface Options):
    sudo raspi-config
  6. Connect via TigerVNC (Apple app)
  7. Edit installers/mm.sh via VNC using Pi’s baked-in text editor by adding:
    cd ~/MagicMirror
    export external_browser=firefox
    DISPLAY=:0 npm start
  8. Execute fix’em-up script:
    bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/fixuppm2.sh)"
  9. cd ~/MagicMirror/
    pm2 start MagicMirror
  10. sudo reboot

Note: On my Pi Zero W it takes a solid ten minutes from reboot to actually seeing MM output via HDMI.

Huge thanks to @sdetweil for all his help!

Here are the modules I have installed:

Here are some other modules / resources I like:

  • I’ve played with several background image players and think (so far) that MMM-BackgroundSlideshow is the best. I’m not using it on any of my screens now, but I have configured it and it’s great.
  • I found an awesome (free) version of Aurabesh, the alphabet of Star Wars, if you are looking for that aesthetic. Unzip the file and drop the contents into the ~/MagicMirror/fonts directory and add this to ~/MagicMirror/css/custom.css:
    @font-face {
      font-family: "Aurebesh";
      font-style: normal;
        url("/fonts/aurebesh/Aurebesh.otf") format("opentype");

    Then you can create any class and use that as the font-family. e.g.:

         font-family: "Aurebesh";
  • There seems to be a bug in the Theme Park Wait Times module because no matter what I try, it always displays the park hours for the next several days. For now I’m simply hiding that table from the display with this in custom.css:
    .MMM-ThemeParkWaitTimes .hours{
         display: none;

Post the first comment:

I'll never share your email address and it won't be published.

What Is This?

davidgagne.net is the personal weblog of me, David Vincent Gagne. I've been publishing here since 1999, which makes this one of the oldest continuously-updated websites on the Internet.


A few years ago I was trying to determine what cocktails I could make with the alcohol I had at home. I searched the App Store but couldn't find an app that would let me do that, so I built one.


You can read dozens of essays and articles and find hundreds of links to other sites with stories and information about Ernest Hemingway in The Hemingway Collection.