Smart mirrors are straight from science fiction. They’re part of an optimistic vision of the future that imagines a world where screens and data are everywhere, ready to feed you whatever information you need at a moment’s notice.
But it turns out that building your own smart mirror isn’t just science fiction — it’s actually really easy to put one together. So don’t wait around for some random Kickstarter to get its act together and sell you a smart mirror. Here’s how to build one yourself.
- A Raspberry Pi 3, or an older Raspberry Pi with a Wi-Fi adapter.
- A monitor with HDMI-in. This will be the screen for the smart mirror, so whatever size you choose is how big your mirror will ultimately be. It should also power a USB device, so you won’t need a second plug for the Pi.
- A two-way glass mirror. You’ll want to get one that’s the same size as your monitor. Acrylic ones will work, but the end result will be a lot dimmer (although it’s much cheaper).
- A mouse and keyboard, which you’ll need to get things set up on the Pi.
- A frame for the mirror. In the build here, I used a shadow box from a local art store. (We put some cardboard matting in for the parts that were too wide.) Depending on your preference, you can find something similar or build a custom frame yourself.
Putting it together
The hardest part of building a smart mirror comes down to physically building the frame and hardware. The software side of things is more or less taken care of by the fabulously well-documented and polished MagicMirror² project, created by Michael Teeuw. So, once your Raspberry Pi is set up, you’ll want to install MagicMirror², which can be done simply by running this line of code on your Raspberry Pi.
bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)"
If you prefer to do things by hand, there’s also a manual installation guide located on the project’s GitHub page.
That installation will take 10–20 minutes, but once it’s done, you’re technically all set. But since we’re on a Raspberry Pi, there are a couple extra steps in the basic setup, like disabling the screensaver, rotating the screen (assuming you’re using a vertical mirror), and making sure the Wi-Fi doesn’t shut off into a power-saving mode. Fortunately, MagicMirror has all these things documented, too, so follow those instructions here.
Now, the fun part: actually customizing your smart mirror. Out of the box, MagicMirror runs the following modules: Clock, Calendar, Current Weather, Weather Forecast, News Feed, Compliments, Hello World, and Alert. Some of those — like weather — need additional setup, including registering for an API key and adding your location. But because MagicMirror is open source, there’s a huge community of third-party developers creating additional modules, that let you add everything from commute time to Alexa voice control to your mirror.
Detailed instructions are, you guessed it, on the GitHub documentation page, but as a quick overview: you’ll need to install the module to the ~/MagicMirror/modules directory, and then add the code for the module to the config/config.js file using a text editor. (I prefer Geany, which is installed along most Raspian installations.) That config.js file is also where you’ll be able to customize where things are located on the screen.
Once you’ve got everything installed and arranged to your liking, it’s time to turn the smart screen into a smart mirror. To do that, put your two-way mirror in your frame (making sure the reflective side is out) and mount it onto your monitor. Alternatively, if you’re willing to put a little more DIY effort into things, you can take the monitor’s hardware out of the plastic casing and build a more permanent housing for it and your mirror.
That’s it! You’ve officially got your own smart mirror. Take that, Snow White.
Vox Media has affiliate partnerships. These do not influence editorial content, though Vox Media may earn commissions for products purchased via affiliate links. For more information, see our ethics policy.