Ash's profile pictureAsh
Joined in 2018
Ash is an experienced tech writer with an endless passion for technology. She enjoys retro gaming, 3D printing, and making awesome projects on the Raspberry Pi.
Related to this guide:
People also read:
Amazon Wedding Registry
Plan your registry entirely on Amazon!
Get Amazon Prime for free
Everybody loves free stuff, and most people love the Amazon Prime membership for the free shipping and free video/music streaming. However, all of that free stuff costs $119/year.
So Amazon just announced free same-day delivery in 14 different metro areas. How do you know if you apply?
Kindle.
Publishing a book has never been easier.
Posted in these interests:
amazonamazon
amazon
PRIMARY
Discuss this guide:
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Alfawise U20 Review: A Large Scale Budget 3D Printer

Alfawise U20 Review: A Large Scale Budget 3D PrinterAlfawise U20 Review: A Large Scale Budget 3D Printer
A large scale review for a large scale printer!
Ash Ash (283)
0
Updated: December 20th, 2019
4.25 – Our Rating

Over the past few years, competition has brought out some of the best features in 3D printing. If you’re looking for an affordable printer that meets high quality industry standards, the Alfawise U20 Large Scale printer is definitely worth a look.

Specs

Feature Spec
Build volume 300 x 300 x 400mm
Filament types PLA, ABS, PVA, PP, TPU, Wood Filled
Filament diameter 1.75mm
Nozzle diameter 0.4mm
Construction Aluminum Alloy
Extruder type Bowden
Heated bed Yes
Weight 26.45 lb
Dimensions 15.5″ x 22.6″ x 24.1″
Price Under $300 on GearBest

Pros

  • Easy to assemble
  • Affordable
  • Incredible print quality
  • Plenty of bed space for large scale prints
  • Heated glass bed
  • Compatible with many types of filament

Cons

  • No wireless printing (though you could add this functionality using OctoPrint
  • Requires immediate firmware update out of the box

DEAL ALERT:

Apparently right now you can the Alfawise U20 for only $279.99 (25% off) on GearBest when you use coupon code AlfawiseU203D at checkout. Shipping is free too.

I’m not sure how long this deal is active but I’ll remove this message once it’s expired.

Here’s everything you’ll need to complete this guide:

Alfawise U20 Large Scale 3D Printer×1
UnboxingUnboxing

This printer ships in a huge box. Most of the frame is already pre-assembled, making the big box a necessity. All of the pieces are packed neatly inside styrofoam. In addition to the printer itself, Alfawise throws in a few extra goodies. They make sure everyone is ready to go with an assortment of 3D printing tools and a roll of PLA filament.

In the box

  • 3D Printer components: Bed, frame, main box with touch screen
  • Additional tools: metal scraper, wire cutters, zip ties, hex keys
  • Micro SD card with a USB card reader
  • Sample filament: Yellow PLA
  • Filament spool holder
Assembly and setupAssembly and setup

The assembly instructions provided may be out of date. I had much more success looking online for recent Alfawise U20 assembly videos. The frame is held together with a few screws. It’s possible to put the machine together alone, but it’s easier if you have an extra person to help hold the frame in place.

There are a few labeled cables that need to be plugged in. I highly suggest laminating the labels with tape as they fall off very easily.

The firmware needs to be updated immediately after assembly. It’s worth noting, I ran into some issues with this. There’s a support group on Facebook run by Alfawise with other users who had the same problem. On occasion, the SD card provided by Alfawise won’t allow the firmware update to install. The group suggested I format a different SD card to get the firmware to update correctly. This resolved the issue for me and I haven’t had any more problems since the update. You can still use the original SD card after the update.

Total assembly time: ~20 minutes

DesignDesign

The overall design of this printer is well thought out. It’s very easy to change the filament, there’s no extra bulk to the design, and the frame is incredibly durable.

Build quality

The printer is built with very clean, high quality aluminum alloy. The frame is finished with a shiny red coat and also features black matte railings for the motion system.

Motion system

The motion system is constructed with high standard v-slot wheels. The result is clean movement with very smooth prints.

Bed features

The bed has some of the most exciting benefits. The Alfawise U20 comes with a heated glass bed right out of the box. The build space is huge and maintains a consistent temperature throughout the entire bed surface. On top of the glass bed is a custom adhesion plate. It’s more than capable of withstanding the heat and helps your filament stick when creating a base layer.

The bed is pre-assembled with huge knobs for leveling. Coupled with the leveling feature in the printer settings, the bed is very easy to adjust.

Bowden extruder

The Alfawise U20 features a bowden extruder system. The filament is fed into the printer away from the extruder head where it travels down a tube before feeding into the nozzle. The benefits of this design allow for speedy prints with less wobbling on your final print.

Safety features

Once you’ve finished printing your piece, the Alfawise U20 will remove the nozzle from your final print and immediately start cooling. The temperature will need to be manually set for your next print.

PrintingPrinting

Printing on the Alfawise U20 is an exciting experience. It’s easily one of the most efficient printers on the market today. From the print quality to the volume capacity, this is one of the coolest 3D printers I’ve had a chance to experience first hand (especially in this price range).

Print qualityPrint quality

The printer includes a .4mm nozzle and it supports 1.75mm filament. The result is seriously fine print quality and really awesome prints. As with any printer, it can be a little tricky and take some time to dial in the best settings.

Print volumePrint volume

The bed is huge! The exact build space dimensions are 300mm x 300mm x 400mm. This printer is more than ready for some large scale printing projects.

InterfaceInterface

The Alfawise U20 comes with a touch screen interface. The box is large enough to support the power supply and motherboard. It features a small LCD screen to adjust the printer settings. There could be a few improvements to the English translation, however.

SoftwareSoftware

In order to create printable files, you’ll need slicing software. Free software works fine. I was able to complete these projects using Cura. The Alfawise website offers a direct link to the latest firmware upgrade here.

Loading printsLoading prints

Loading print files into the printer is incredibly easy. Just drop the gcode files onto the Micro SD card and pop the SD card into the printer. You’re ready to print!

Filament typesFilament types

This device is one of the most versatile when it comes to filament compatibility. The official spec list features several different kinds of filament. The Alfawise U20 can use PLA, ABS, PVA, PP, TPU, and even wood filled filament.

ConclusionConclusion

Overall, this is a really capable printer. It’s not the cheapest printer on the market, but it’s absolutely one of the most affordable. There are a few small tweaks that can be improved on the software side.

Otherwise, you’ll find some of the best features around for 3D printers: a heated glass bed, simple assembly, and incredible print quality.

If you’re looking for a great large-scale budget 3D printer, check out the Alfawise U20 on GearBest!

We’re hiring!
Are you a passionate writer? We want to hear from you!

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Total time: 15 minutes 
Updated: December 19th, 2019
Calling all writers!

We’re hiring. Write for Howchoo

pi
PRIMARY
215 guides
Calling all writers!

We’re hiring. Write for Howchoo

Tyler's profile pictureTyler
Joined in 2015
Software Engineer and creator of howchoo.
For Raspberry Pi beginners who still love to follow along in a book.
Michael's profile picture MichaelView
In these interests: booksretropiepi
What’s better than an experiment? An experiment in space!
Michael's profile picture MichaelView
In these interests: kidspinews
In these interests: pi
Kali Linux is a great distribution for Raspberry Pi users who want to get to grips with security testing.
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Get the new official Raspberry Pi OS on your Pi.
New to the Raspberry Pi? Start here.
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Don’t skip out on a proper case for your Pi 4.
The only Raspberry Pi Bluetooth guide you’ll ever need.
Your favorite MS OS on the Pi.
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
Total time: 1 minute 
Updated: December 14th, 2019
ios
PRIMARY
24 guides
ios
PRIMARY
24 guides
Dayne's profile pictureDayne
Joined in 2015
Software engineer, co-founder of Howchoo, and renaissance man. Lifelong amateur woodworker, espresso mechanic, freestyle lyricist, drummer, artist, runner, coffee roaster, electrical engineer, gamer, inventor, churner, psychoanalyst, photographer, pizza chef, pit master, audiophile, guitarist, entrepreneur, dad, yogi, cyclist, and barista.
Trouble connecting with your iOS device? Try this.
Ash's profile picture AshView
In these interests: networkingios
Improve voice recording quality on your iPhone in about 30 seconds.
Zach's profile picture ZachView
In these interests: iphoneios
Sometimes we wind up with too many open tabs and a bit of house cleaning is in order. Fortunately, this can be done with one action.
Tyler's profile picture TylerView
In these interests: iossafari
This guide will show you how to block all unknown callers on iOS. Or said differently, this guide will show you how to only allow calls from people on your contacts list.
Along with the benefits of mobile technology comes the risk of abuse. Whether it’s a stalker or a telemarketer, learning how to block a caller can save you a lot of stress.
This is the simplest way to see the health of your iPhone’s battery. For a reminder, after 500 cycles, your battery is operating with roughly 80% of its full capacity*.
Use the Universal Clipboard to copy and paste between devices
Maybe you’ve decided that the grass is greener on the other side, or that the darn headphone jack going away was the last straw.
ios
PRIMARY
iOS is the mobile operating system used by the iPhone, iPad, and iPod Touch.
Total time: 10 minutes 
Updated: December 6th, 2019
pi
PRIMARY
215 guides
raspbian
10 guides
Calling all writers!

We’re hiring. Write for Howchoo

pi
PRIMARY
215 guides
raspbian
10 guides
Download Raspbian Stretch Download Raspbian StretchNeed an older version of Raspbian? No problem.
How to Enable SSH on Raspberry Pi Without a Screen How to Enable SSH on Raspberry Pi Without a ScreenThe SSH protocol is disabled by default.
Calling all writers!

We’re hiring. Write for Howchoo

Tyler's profile pictureTyler
Joined in 2015
Software Engineer and creator of howchoo.
For Raspberry Pi beginners who still love to follow along in a book.
Michael's profile picture MichaelView
In these interests: booksretropiepi
What’s better than an experiment? An experiment in space!
Michael's profile picture MichaelView
In these interests: kidspinews
In these interests: pi
Kali Linux is a great distribution for Raspberry Pi users who want to get to grips with security testing.
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Get the new official Raspberry Pi OS on your Pi.
New to the Raspberry Pi? Start here.
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Don’t skip out on a proper case for your Pi 4.
The only Raspberry Pi Bluetooth guide you’ll ever need.
Your favorite MS OS on the Pi.
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
Raspbian is the official Raspberry Pi operating system.

Build Your Own Google Home-Enabled Smart Mirror in About Two Hours

Google Home-Enabled smart mirrorGoogle Home-Enabled smart mirror
Magic mirror, on the wall, turn off the lights.
Zach Zach (233)
Total time: 120 minutes 
Updated: December 3rd, 2019

In this guide I’ll teach you how to build your own simple Google Home-enabled magic mirror using a Raspberry Pi computer and Google’s AIY Voice Kit.

Overview video

A few years back I built a complicated smart mirror that used an open-source voice assistant called Jasper. But that build was complicated, required woodworking tools, and used a voice assistant that was kind of on its way out.

So I set out on a mission to create a smart mirror that anyone could build, without specialized tools, on a kitchen table, while also reducing the time and cost as much as possible. Finally, I chose to integrate Google’s Assistant, turning this magic mirror into a full-blown Google Home: a Google Home Hub clone using the Raspberry Pi, if you will.

In order to accomplish this mission, the folks at ModMyPi were nice enough to donate a pi-top CEED!. The pi-top CEED is basically a thin 14″ LCD display with an integrated power button and bay to house the Raspberry Pi computer and other electronics needed for our mirror. Thanks ModMyPi 🙂

Time & cost

This project takes about 2 hours to complete. The beauty of this project is in its simplicity, using pre-built hardware rather than cutting your own frame and installing your own display. This project costs around $250. There are many ways to bring this cost down if you don’t mind spending the extra time or shopping around for better prices. I’ll mention some of the ways throughout the guide.

Let’s get started!

Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal
Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

Post in the comments section below and I’ll try my best to help you out!

Build Your Own Google Home-Enabled Smart Mirror in About Two Hours

Google Home-Enabled smart mirrorGoogle Home-Enabled smart mirror
Magic mirror, on the wall, turn off the lights.
Zach Zach (233)
Total time: 120 minutes 
Updated: December 3rd, 2019

In this guide I’ll teach you how to build your own simple Google Home-enabled magic mirror using a Raspberry Pi computer and Google’s AIY Voice Kit.

Overview video

A few years back I built a complicated smart mirror that used an open-source voice assistant called Jasper. But that build was complicated, required woodworking tools, and used a voice assistant that was kind of on its way out.

So I set out on a mission to create a smart mirror that anyone could build, without specialized tools, on a kitchen table, while also reducing the time and cost as much as possible. Finally, I chose to integrate Google’s Assistant, turning this magic mirror into a full-blown Google Home: a Google Home Hub clone using the Raspberry Pi, if you will.

In order to accomplish this mission, the folks at ModMyPi were nice enough to donate a pi-top CEED!. The pi-top CEED is basically a thin 14″ LCD display with an integrated power button and bay to house the Raspberry Pi computer and other electronics needed for our mirror. Thanks ModMyPi 🙂

Time & cost

This project takes about 2 hours to complete. The beauty of this project is in its simplicity, using pre-built hardware rather than cutting your own frame and installing your own display. This project costs around $250. There are many ways to bring this cost down if you don’t mind spending the extra time or shopping around for better prices. I’ll mention some of the ways throughout the guide.

Let’s get started!

Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal
Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

Post in the comments section below and I’ll try my best to help you out!

Jump to step

Build Your Own Google Home-Enabled Smart Mirror in About Two Hours

Google Home-Enabled smart mirrorGoogle Home-Enabled smart mirror
Magic mirror, on the wall, turn off the lights.
Zach Zach (233)
Total time: 120 minutes 
Updated: December 3rd, 2019

In this guide I’ll teach you how to build your own simple Google Home-enabled magic mirror using a Raspberry Pi computer and Google’s AIY Voice Kit.

Overview video

A few years back I built a complicated smart mirror that used an open-source voice assistant called Jasper. But that build was complicated, required woodworking tools, and used a voice assistant that was kind of on its way out.

So I set out on a mission to create a smart mirror that anyone could build, without specialized tools, on a kitchen table, while also reducing the time and cost as much as possible. Finally, I chose to integrate Google’s Assistant, turning this magic mirror into a full-blown Google Home: a Google Home Hub clone using the Raspberry Pi, if you will.

In order to accomplish this mission, the folks at ModMyPi were nice enough to donate a pi-top CEED!. The pi-top CEED is basically a thin 14″ LCD display with an integrated power button and bay to house the Raspberry Pi computer and other electronics needed for our mirror. Thanks ModMyPi 🙂

Time & cost

This project takes about 2 hours to complete. The beauty of this project is in its simplicity, using pre-built hardware rather than cutting your own frame and installing your own display. This project costs around $250. There are many ways to bring this cost down if you don’t mind spending the extra time or shopping around for better prices. I’ll mention some of the ways throughout the guide.

Let’s get started!

Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal
Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

Post in the comments section below and I’ll try my best to help you out!

Build Your Own Google Home-Enabled Smart Mirror in About Two Hours

Google Home-Enabled smart mirrorGoogle Home-Enabled smart mirror
Magic mirror, on the wall, turn off the lights.
Zach Zach (233)
Total time: 120 minutes 
Updated: December 3rd, 2019

In this guide I’ll teach you how to build your own simple Google Home-enabled magic mirror using a Raspberry Pi computer and Google’s AIY Voice Kit.

Overview video

A few years back I built a complicated smart mirror that used an open-source voice assistant called Jasper. But that build was complicated, required woodworking tools, and used a voice assistant that was kind of on its way out.

So I set out on a mission to create a smart mirror that anyone could build, without specialized tools, on a kitchen table, while also reducing the time and cost as much as possible. Finally, I chose to integrate Google’s Assistant, turning this magic mirror into a full-blown Google Home: a Google Home Hub clone using the Raspberry Pi, if you will.

In order to accomplish this mission, the folks at ModMyPi were nice enough to donate a pi-top CEED!. The pi-top CEED is basically a thin 14″ LCD display with an integrated power button and bay to house the Raspberry Pi computer and other electronics needed for our mirror. Thanks ModMyPi 🙂

Time & cost

This project takes about 2 hours to complete. The beauty of this project is in its simplicity, using pre-built hardware rather than cutting your own frame and installing your own display. This project costs around $250. There are many ways to bring this cost down if you don’t mind spending the extra time or shopping around for better prices. I’ll mention some of the ways throughout the guide.

Let’s get started!

Build Your Own Google Home-Enabled Smart Mirror in About Two Hours

pigooglemagicmirror
Magic mirror, on the wall, turn off the lights.
Zach Zach (233)
Total time: 120 minutes 
Updated: December 3rd, 2019
Zach
33
 
9
Mentioned here
Build a Voice-Controlled DIY Raspberry Pi Smart Mirror with Jasper
Things used here
Check Pricepi-top CEED
pi-top CEEDpi-top CEED×1
Google AIY Voice Kit (V1)×1
Google AIY Voice Kit (V2)Google AIY Voice Kit (V2)×1
Raspberry Pi 3 B+Raspberry Pi 3 B+×1
pi-top PROTO board×1
13″x13″ precut acrylic two-way mirror×1
Small neodymium magnets×8
pi-top CEEDGoogle AIY Voice Kit (V2)Raspberry Pi 3 B+
Jump to step
Calling all writers!

We’re hiring. Write for Howchoo

33
 
9
In these interests
pi
PRIMARY
215 guides
google
11 guides
magicmirror
4 guides
pi
PRIMARY
215 guides
google
11 guides
magicmirror
4 guides
PRIMARY
Jump to step
Watch the video
Howchoo YouTube Profile Picture
Or
Watch on YouTube
Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal
Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

Post in the comments section below and I’ll try my best to help you out!

Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

Google Assistant smart mirror on a shelfGoogle Assistant smart mirror on a shelf

Just as the prophecy prophesied. Unfortunately, it’s really hard to photograph this thing. It looks 1000X crisper in person.

First, a final photo!

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

A side photo of a Google Home magic mirrorA side photo of a Google Home magic mirror

Such thin. Much wow.

And a side photo

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

Pi-Top CEED inner components with Google AIY Voice KitPi-Top CEED inner components with Google AIY Voice Kit

And here’s a photo with the mirror removed, revealing the Raspberry Pi and Google Home Voice Kit. All the parts snap together, with no soldering required.

The mirror attaches using magnets, making it easy to remove for playing retro games more clearly, or for tinkering.

The completed innards

Things used here
Check PriceGoogle AIY Voice Kit (V2)Check PriceRaspberry Pi 3 B+
Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Google Home magic mirror selfieGoogle Home magic mirror selfie

The cost of doing Internet.

Obligatory magic mirror selfie

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

Magic mirror/smart mirror design overviewMagic mirror/smart mirror design overview

As this highly-technical drawing shows, the basic idea here is to use the pi-top CEED as the display and housing for our magic mirror project. We’ll install the Magic Mirror software on a Raspberry Pi computer, install the Google AIY Voice kit hardware and software, and then add a precut two-way mirror.

The two-way mirror

Like the mirrors in police interrogation rooms, the two-way mirror appears “mirror-like” from the brighter side, and “window-like” from the darker side. In this way, a dark screen with white text will allow the text to be visible on the “mirror” side, producing a holographic effect. Conversely, in a dark room, more of the screen becomes visible. This is a bit of a downside but just the nature of two-way mirrors. It can be mitigated by reducing screen brightness based on the time of day or by using a light sensor.

The Magic Mirror dashboard

By default the Magic Mirror dashboard shows the weather, calendar you choose, news ticker, current time, and — once you get into it — literally hundreds of other modules. Want to see if your train is running late? Or what time you need to leave for work based on current traffic patterns? Or maybe find a pet to adopt or see how the Tampa Bay Rays are doing? It’s amazing what the community has built.

The Google AIY Voice hardware and software

The Google Voice Kit turns this mirror into a full-blown Google Home. This mirror can do everything that Google’s Assistant can do!

If you just want to make a magic mirror (without the voice assistant), you can still use this guide; simply skip the Google Home parts. 🙂 If you want to use Alexa instead of Google Home for your magic mirror, install Alexa on your Raspberry Pi instead.

The computer

And, of course, we’ll be running all this on the third best-selling computer of all time: the $35 Raspberry Pi.

How it works

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

Magic mirror smart mirror sheetMagic mirror smart mirror sheet

To build a magic mirror the size of the pi-top CEED, we’re going to need a 13″ x 13″ two-way mirror.

Your two-way mirror can be made of glass or acrylic; precut acrylic two-way mirrors are generally less expensive (and safer to work with) than precut glass two-way mirrors.

There are a few ways to obtain your mirror:

Order a precut acrylic two-way mirror online (recommended)

I ordered mine from TAP Plastics here for about $40 using these options:

  • Color: Clear
  • Width: 13 and 0/16 inches
  • Length: 13 and 0/16 inches
  • Thickness: 3/16 (.177) inches — choose this size; thinner acrylic mirrors can have a “funhouse mirror” effect

Make your own glass two-way mirror

You can save a few bucks by grabbing a custom-cut 13″ x 13″ glass pane from your local hardware store. Then, buy some two-way mirror film from Amazon. However, after reading tons of reviews about this approach, it’s hard to get a perfect result — every speck of dust or hair will show up tenfold. Also, this will take a lot longer. I recommend just grabbing an acrylic mirror, but if you’re strapped for cash and are feeling handy, this approach will work!

Choosing the two-way mirror

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

First we’ll need to install Raspbian Stretch, the latest version of the official Raspberry Pi operating system. Although the pi-top comes with an SD card preinstalled with a customized version of Raspbian, we want to make sure we have a fresh install of the latest version of Raspbian so that the Magic Mirror and Google Voice Kit software will work properly.

howchooer Tyler wrote a guide that will show you step-by-step how to install Raspbian Stretch. You’ll want to install the Desktop (not Lite) version.

After installing Raspbian, return here!

Install Raspbian Stretch

Mentioned here
How to Install Raspbian Stretch on the Raspberry Pi
Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

Installing a Raspberry Pi into the Pi-Top CEEDInstalling a Raspberry Pi into the Pi-Top CEED

First, put the MicroSD card back into the Pi.

The pi-top ships with little magnetic feet that will hold the Pi securely to the pi-top’s internal metal rail. Snap these into the Pi, connect the GPIO (40-pin) cable, connect your HDMI cable, and put the Pi into the pi-top with the ports facing outward.

Finally, connect the pi-top’s power cable and hold down the power button to boot the Pi.

Put the Pi into the pi-top

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

We need to connect the Pi to the Internet. Then, we’re going to install a bunch of software from the command line (terminal) window; to do this, you have two options:

1. Input the commands from your regular computer

You can connect to your Pi remotely from your regular computer and enter the commands from there. This method is handy if you don’t have a keyboard or mouse to connect to the Pi. For this method, you’ll need to connect your Pi to WiFi via the SD card method.

Or..

2. Input the commands directly on the Pi

For this method, simply connect a mouse and keyboard to your Pi. After your Pi boots into Raspbian Desktop, navigate to Menu > Accessories > Terminal. For this method, you can connect to WiFi by clicking on the icon in the top-right of the Pi desktop.

Choose the method you prefer!

Connect to WiFi and input commands

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

First, make sure your Pi is up to date:

sudo apt-get update
sudo apt-get -y upgrade

Then, restart your Pi:

sudo reboot

Now that we have a fresh install of Raspbian, we’ll need to reinstall the pi-top Device Manager and enable the SPI interface. The Device Manager lets us use the pi-top’s internal hub and power button.

Enable SPI

We need to enable the Serial Peripheral Interface (SPI) on the Pi, which is disabled by default. Run:

sudo raspi-config

Select Interfacing Options. Use your arrow keys to select SPI and press Enter.

Install the pi-top Device Manager

sudo apt install pt-hub

Note: If you plan on using other pi-top accessories like the pi-top speaker or pulse modules, you can install them later from the pi-top Github repo. We won’t be using these modules for this guide since their support for Google Voice Kit is iffy, but you might want to mess with them in the future.

Install the pi-top software

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Pi-Top brightness settings in RaspbianPi-Top brightness settings in Raspbian

We want our brightness as high as possible, so we’re going to increase it to 100%. To do this, you can run the following in the Terminal window:

pt-brightness -b 10

Or, rricharz created a utility that adds a Raspbian menu item for adjusting brightness and disabling screen sleep. To install it:

cd ~/Downloads
git clone --depth 1 git://github.com/rricharz/pi-top-setup
cd pi-top-setup
chmod +x install
./install

Under Menu > Preferences > pi-top Configuration you will now find a new menu item. Disable sleep by setting it to 0 and then increase brightness to 100%!

Increase pi-top brightness and disable sleeping

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Install the Magic Mirror softwareInstall the Magic Mirror software

We’re going to use MichMich’s MagicMirror platform to turn our Raspberry Pi into a magic mirror. In a nutshell, the MagicMirror platform is a web page — hosted on the Pi — that displays information on the screen and forms the core visual interface of our smart mirror.

I wrote a separate detailed guide for installing MagicMirror; use that guide to install and configure it and then return here! 🙂

Note: Now that the MagicMirror software loads automatically on reboot, you can still get to the Terminal window by pressing the Windows (or Option) key on your keyboard and then selecting Terminal from Accessories. You can then use Alt-TAB (or CMD-TAB) to tab between MagicMirror and Terminal as desired!

Important: We need to change the port that MagicMirror uses so it won’t conflict with the port that the Google Voice Kit wants to use. To do this:

nano ~/MagicMirror/config/config.js

Change the port: 8080 line to port: 8081. Save and exit.

If you don’t want a voice assistant in your mirror, you can go ahead and skip to the two-way mirror installation step now.

Install the Magic Mirror software

Mentioned here
How to Install Magic Mirror on Your Raspberry Pi
Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

Installing the pi-top PROTO boardInstalling the pi-top PROTO board

This little $7 board gives you easy access to the Pi’s GPIO pins. If you don’t have one, you can use a 40-pin ribbon cable instead (though it will be more difficult to mount the Google Voice Kit board). I recommend spending the $7.

Connect the little magnetic feet to the pi-top PROTO board, attach it to the pi-top rail and slide it into the main pi-top board/hub.

Install the pi-top PROTO board

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

The Google AIY Voice KitThe Google AIY Voice Kit

We’re going to use hardware from the Google Voice Kit because it’s super inexpensive and will add a speaker and stellar microphone for about $20.

In theory, you could use a USB microphone and the pi-top speaker module instead, but this will actually cost you more — and will be more difficult to configure. tl;dr; Google’s Voice software is very particular about the hardware it runs on, and using Google’s own kit will guarantee things run smoothly and will avoid nights of troubleshooting.

The next few steps will help you install the Google Voice Kit hardware.

Note: While I was writing this guide, Google released a new Voice Kit: the Voice Kit V2. This guide uses the old kit (V1). The instructions are still the same, but some of the photos will look different. The new kit comes with the tiny Raspberry Pi Zero W, but I recommend saving that for another project and using the Raspberry Pi 3 instead.

Install the Google Voice Kit hardware

Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal
Connecting the Google Voice kit speakerConnecting the Google Voice kit speaker

Put some double-sided tape on the back of the speaker and secure it to the pi-top rail. We don’t want it sliding around and shorting anything out.

Then, use a small screwdriver to connect the Voice Kit’s speaker to the its main board. The main board is called the “Voice HAT”.

  • Connect the red wire to the positive (+) terminal
  • Connect the black wire to the negative (-) terminal

Connect the speaker

Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connecting the Google Voice Kit microphoneConnecting the Google Voice Kit microphone

Note: The microphone on the new Google Voice Kit (V2) is built into the Voice HAT board. If you’re using the newer kit, skip this step.

The dual microphone that comes with the Google Voice Kit is really, really good. Microphone quality is key to a voice assistant performing well! I can attest to this after using cheap USB microphones in the past to build my own Raspberry Pi Echo.

Use the included 5-pin cable to connect the microphone board to the Voice HAT. Then, stick the microphone board (connector side up) into the bottom of the pi-top. Use a bit of double-sided tape to secure it. Don’t cover the microphone holes with tape!

Connect the microphone

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Connecting the Google Voice HATConnecting the Google Voice HAT

Carefully push the Voice HAT board onto the pi-top PROTO board. This will officially connect it to the pi-top and Raspberry Pi.

Connect the Voice HAT

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

Google Voice hardware installed in PiTop CEEDGoogle Voice hardware installed in PiTop CEED

All the hardware is in place. You can slide the plastic covering back into the unit if you’d like, or leave it off. If you slide it on, carefully push the Voice HAT wires out of the way to avoid damaging them.

All hardware installed!

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

Since we have a fresh install of Raspbian, we’re going to install the Google Voice AIY software manually. Follow the instructions on the official Google AIY Github repo here to install everything. Since these instructions can change at any time, I don’t want to duplicate them here. 🙂 However, read the notes below before installing!

Troubleshooting

I ran into a two issues when installing the Voice Kit software — this is actually due to two bugs in Google’s software itself at the time I wrote this guide. They may be resolved by now, but if you run into any issues, use these workarounds:

Issue #1: ImportError: No module named ‘aiy’

This error also occurs when running env/bin/python checkpoints/check_audio.py.

Cause: A change removed the env folder. Github issue

Solution: Revert to an earlier version of the AIY software using the instructions here. (thanks pyorgue!)

Issue #2: Failed to apply overlay ‘0_googlevoicehat-soundcard’ (kernel)

This error occurs when running check_audio.py and looks something like this:

* Failed to apply overlay '0_googlevoicehat-soundcard' (kernel)
Traceback (most recent call last):
  File "checkpoints/check_audio.py", line 180, in 
    main()
  File "checkpoints/check_audio.py", line 174, in main
    enable_audio_driver()
  File "checkpoints/check_audio.py", line 169, in enable_audio_driver
    subprocess.check_call(['sudo', configure_driver])
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['sudo', 'scripts/configure-driver.sh']' returned non-zero exit status 1

Cause: The AIY software is incompatible with the latest version of the Raspberry Pi kernel.

Solution: Downgrade the kernel to version 4.9:

sudo rpi-update 5c80565c5c0c7f820258c792a98b56f22db2dd03
sudo reboot

Return here after successfully installing the Google Voice AIY software!

Install the Google Voice AIY software

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

You have a few options for attaching the two-way mirror to the pi-top. With any approach, you’ll want to try and minimize gaps and get the mirror as close to the display as possible.

Using double-sided tape

This is the cheapest approach: just stick a few tiny pieces along the edges of the pi-top bezel. However, once you attach any sort of tape to the mirror material, pulling the tape off will permanently damage the mirror! I learned this the hard way. Thus, you’d need to unsnap the pi-top bezel in order to access the internals once again.

Using magnets

This is the recommended approach and the one I went with. Magnets make it easy to remove the mirror later — for, say, playing retro video games with RetroPie with a better view of the action. You can still play games and watch live video with the mirror installed but of course it’s not as clear unless the room is darker.

Fuckin’ magnets, how do they work?

Anyways, we’re going to install four neodymium magnets on the inside of the pi-top’s bezel and four corresponding magnets on side of the mirror itself. Remember, magnets will only attract on one side [pole], so figure out the orientation for yourself. It’s easy to install the magnets backwards, so double and triple check everything.

Note: I’m using an acrylic 2-way mirror. If you’re using a glass two-way mirror or are mounting your mirror on the wall, the magnets may not provide enough holding strength to safely secure your mirror. In this case, you should probably use glue or adhesive tape instead.

Using clips or something

Get crafty — you can also use clips or some other method to secure your mirror. Just try to get it as close as possible to the pi-top.

Attaching the two-way mirror

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Removing the Pi-Top CEED bezel and screen cableRemoving the Pi-Top CEED bezel and screen cable

First, shut down and unplug the pi-top.

The screen has a connector that runs to the main pi-top circuit board and is secured by a tiny metal bar. Pull up on the plastic tab connected to the bar and then pull it towards the screen to disconnect it from the board.

Carefully unsnap the bezel using your nails, a small screwdriver, or plastic prying device. Once you get one corner unclipped, it’s easy to slide a credit card or something all the way around to unsnap the rest. The screen is connected to the bezel so take great care!

Remove the bezel

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Glue the magnets to the bezelGlue the magnets to the bezel

For the inside of the bezel, we’re going to use:

  • Two 10mm x 3mm magnets at the bottom of the bezel, just below the opening
  • Two 8mm x 3mm magnets at the center of the bezel, just below the screen brackets

Because the screen extends to the top of the bezel, it’s difficult to fit a magnet there. This is why we’re placing magnets in the center instead — these little neodymium magnets have enough holding power to hold the acrylic mirror sufficiently. This is the magnet set I ordered and it came with both those sizes.

Placement is important so the bezel can snap back together easily. After placing the magnets and before gluing them, hold them in place by placing magnets on the outside of the bezel. Then, try putting the bezel back on to make sure the magnets aren’t blocking it from snapping back into place. Placing the magnets 35mm from the bezel’s edge to the center of the magnet seemed to fit just perfectly.

To secure the magnets, use a dot of super or hot glue. It doesn’t take much; the glue just holds the magnets in place. The magnets themselves will stay in place because magnets. Keep the temporary magnets on the outside of the bezel to hold the magnets in place while the glue sets.

After the glue dries, carefully reattach the screen connector and snap the bezel back into place.

Glue the magnets to the bezel

Things used here
Check PriceSmall neodymium magnets
Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Magic mirror two-way mirror with magnets attachedMagic mirror two-way mirror with magnets attached

Now we need to glue the four (or more) magnets to the mirror itself. The magnets should go between the pi-top and mirror so they aren’t visible when the mirror is in place.

First, lay the pi-top flat on the table. Place magnets on the pi-top bezel itself and draw a dot in the center of each magnet using a permanent marker.

Then, place a flashlight or something next to the pi-top so that it’s brighter behind the mirror — this will allow you to see the magnets (and dots). Use this method like tracing paper to mark small dots on the mirror itself. This will help you to align the magnets perfectly. If the magnets are far off, you might not have enough holding power.

Secure the magnets to the mirror

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Connecting the mirror to my magic mirrorConnecting the mirror to my magic mirror

If your mirror doesn’t have the holding power you want, just add a few more magnets inside the bottom of the bezel. 🙂 This can vary based on mirror weight.

Mirror secured!

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

Optional: Reverse the standOptional: Reverse the stand

The built-in pi-top stand works great for setting your mirror on a desk or table. If you want to mount your mirror on the wall, we’ll want to reverse the stand so that it goes up instead of down. Then you can hang it from any standard picture hanger.

If you plan on mounting your magic mirror on the wall, you’ll want to reverse the stand while the bezel/screen are detached since this takes a bit of force. Disconnect the stand at the bottom section first — where the rubber couplings in the attached photo are — and then carefully wiggle the stand out of the housing.

Do this at your own risk as you can break the stand. Remember, there are always other ways to mount your magic mirror to the wall! Just get creative.

Once detached, flip the stand upside down and push it back into the housing.

Optional: Reverse the stand

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

A photo of my Google Home/Pi-Top CEED magic mirrorA photo of my Google Home/Pi-Top CEED magic mirror

There are a few things I’d like to do in the future to improve the mirror:

Integrated light sensor

This will reduce the faint glow that’s visible in very dark rooms; if this were purely an LED display, this would be less of an issue due to reduced backlighting. The attached photo shows that glow effect.

Facial recognition

I’d like to use Google’s AIY Vision kit to recognize whether it’s me, my girlfriend, or my dog and change the mirror dashboard accordingly — this way she can see the news and calendars she cares about.

Stereo speakers

The Voice Kit board already supports stereo speakers; I just need to add a second speaker to get that sweet stereo sound.

Install RetroPie

I’m definitely going to install RetroPie on this thing for mad instant retro gaming. The USB ports on the side and built-in bluetooth make this ideal.

Future plans

Mentioned here
RetroPie: Build Your Own Raspberry Pi Retro Gaming Rig
ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

ConclusionConclusion

This has been a super fun project because, other than breaking (and fixed) the stand, nothing went wrong. There were a few small software issues I worked through (and documented), but this was probably the highest fun-to-frustration ratio of any major guide I’ve created in a while.

The only thing lacking with the pi-topCEED is the viewing angle. This is not an expensive display, so at some angles the screen can appear brighter, darker, or less legible. This hasn’t been an issue for me but it is noticeable.

Documenting things while you create them can sometimes suck the fun out of the project, but this is a case where everything went smoothly and the final product is stunning. It isn’t easy creating things in a repeatable way so that others can do the same. 🙂 So I hope you enjoyed this guide.

If you liked this guide, be sure to check out my other “voice assistant in crazy thing guides”, like when I turned a Furby into an Amazon Echo. Also be sure to check out my original wall-mounted magic mirror guide here (Warning: woodworking ahead!)

Conclusion

Mentioned here
Build a Voice-Controlled DIY Raspberry Pi Smart Mirror with JasperI turned a Furby into an Amazon Echo. Introducing: Furlexa

Post in the comments section below and I’ll try my best to help you out!

Post in the comments section below and I’ll try my best to help you out!

Questions? Comments? Need help with your own magic mirror build?

Calling all writers!

We’re hiring. Write for Howchoo

Zach's profile pictureZach
Joined in 2015
Web developer, designer, tinkerer, and beer enthusiast living in Tampa, Florida.
Zach's profile picturehowchoo
Share this guide!
RedditEmailTextPinterest
Related to this guide:
Best Raspberry Pi Beginngers BooksBest Raspberry Pi Beginngers Books
For Raspberry Pi beginners who still love to follow along in a book.
Michael's profile picture MichaelView
In these interests: booksretropiepi
Astro Pi on the ISSAstro Pi on the ISS
What’s better than an experiment? An experiment in space!
Michael's profile picture MichaelView
In these interests: kidspinews
Best Raspberry Pi Beginngers BooksBest Raspberry Pi Beginngers Books
For Raspberry Pi beginners who still love to follow along in a book.
Michael's profile picture MichaelView
In these interests: booksretropiepi
Michael's profile pictureViewbooksretropiepi
Astro Pi on the ISSAstro Pi on the ISS
What’s better than an experiment? An experiment in space!
Michael's profile picture MichaelView
In these interests: kidspinews
Michael's profile pictureViewkidspinewsAsh's profile pictureViewpi
People also read:
The Kali Linux and Raspberry Pi logos, side by side
Kali Linux is a great distribution for Raspberry Pi users who want to get to grips with security testing.
Raspberry Pi Web Server LAMP Stack
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
NEMS and Raspberry Pi Logos
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
How to Boot Your Raspberry Pi 4 From a USB Drive
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Raspberry Pi OS
Get the new official Raspberry Pi OS on your Pi.
Raspberry Pi FAQ
New to the Raspberry Pi? Start here.
The Pi-hole logo
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Raspberry Pi 4 Cases 2020
Don’t skip out on a proper case for your Pi 4.
Setting up Bluetooth on a Raspberry Pi
The only Raspberry Pi Bluetooth guide you’ll ever need.
Raspberry Pi Windows
Your favorite MS OS on the Pi.
The Kali Linux and Raspberry Pi logos, side by side
Kali Linux is a great distribution for Raspberry Pi users who want to get to grips with security testing.
Raspberry Pi Web Server LAMP Stack
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
NEMS and Raspberry Pi Logos
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
How to Boot Your Raspberry Pi 4 From a USB Drive
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Raspberry Pi OS
Get the new official Raspberry Pi OS on your Pi.
The Kali Linux and Raspberry Pi logos, side by side
The Kali Linux and Raspberry Pi logos, side by sideHow to Install Kali Linux on a Raspberry Pi
Raspberry Pi Web Server LAMP Stack
Raspberry Pi Web Server LAMP StackHow to Set Up a Raspberry Pi Web Server
NEMS and Raspberry Pi Logos
NEMS and Raspberry Pi LogosHow to Set Up a Raspberry Pi Network Monitor
How to Boot Your Raspberry Pi 4 From a USB Drive
How to Boot Your Raspberry Pi 4 From a USB DriveHow to Boot Your Raspberry Pi 4 From a USB Drive
Raspberry Pi OS
Raspberry Pi OSHow to Install Raspberry Pi OS on Your Raspberry Pi
Raspberry Pi FAQ
New to the Raspberry Pi? Start here.
The Pi-hole logo
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Raspberry Pi 4 Cases 2020
Don’t skip out on a proper case for your Pi 4.
Setting up Bluetooth on a Raspberry Pi
The only Raspberry Pi Bluetooth guide you’ll ever need.
Raspberry Pi Windows
Your favorite MS OS on the Pi.
Raspberry Pi FAQ
Raspberry Pi FAQRaspberry Pi FAQ – Everything You Need To Know
The Pi-hole logo
The Pi-hole logoPi-hole: How to Set Up and Configure Pi-hole on Raspberry Pi
Raspberry Pi 4 Cases 2020
Raspberry Pi 4 Cases 2020Best Raspberry Pi 4 Cases of 2020
Setting up Bluetooth on a Raspberry Pi
Setting up Bluetooth on a Raspberry PiHow to Set Up Bluetooth on a Raspberry Pi
Raspberry Pi Windows
Raspberry Pi WindowsHow to run Windows on the Raspberry Pi
Posted in these interests:
pipi
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
magicmirrormagicmirror
Mirror, mirror on the wall: who’s the nerdiest of them all?
pipi
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
PRIMARY
ExploreExplore
magicmirrormagicmirror
Mirror, mirror on the wall: who’s the nerdiest of them all?
Explore
Discuss this guide:
We’re hiring!
Are you a passionate writer? We want to hear from you!
We’re hiring!
Are you a passionate writer? We want to hear from you!
View openings

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Donate
Zach's profile pictureZach
Joined in 2015
Web developer, designer, tinkerer, and beer enthusiast living in Tampa, Florida.
Related to this guide:
Raspberry Pi Web Server LAMP StackRaspberry Pi Web Server LAMP Stack
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
Ben's profile picture BenView
In these interests: pi
NEMS and Raspberry Pi LogosNEMS and Raspberry Pi Logos
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
Ben's profile picture BenView
In these interests: networkingpi
How to Boot Your Raspberry Pi 4 From a USB DriveHow to Boot Your Raspberry Pi 4 From a USB Drive
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Tyler's profile picture TylerView
In these interests: pi
People also read:
Raspberry Pi OS
Get the new official Raspberry Pi OS on your Pi.
Raspberry Pi FAQ
New to the Raspberry Pi? Start here.
The Pi-hole logo
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Raspberry Pi 4 Cases 2020
Don’t skip out on a proper case for your Pi 4.
Setting up Bluetooth on a Raspberry Pi
The only Raspberry Pi Bluetooth guide you’ll ever need.
Raspberry Pi Windows
Your favorite MS OS on the Pi.
DietPi Logo
If you need a resource-light operating system for your Raspberry Pi, then you should consider trying DietPi.
Posted in these interests:
pipi
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
magicmirrormagicmirror
Mirror, mirror on the wall: who’s the nerdiest of them all?
Discuss this guide:
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Zach's profile pictureZach
Joined in 2015
Web developer, designer, tinkerer, and beer enthusiast living in Tampa, Florida.
Related to this guide:
Raspberry Pi Web Server LAMP StackRaspberry Pi Web Server LAMP Stack
The Raspberry Pi micro-computer grows in power with each new model release, with more resources that make it a more capable, low-cost content server for your media and resources.
Ben's profile picture BenView
In these interests: pi
NEMS and Raspberry Pi LogosNEMS and Raspberry Pi Logos
Laptops, smartphones, tablets, even lightbulbs—an endless number of devices now have the ability to connect to your local network and the wider internet.
Ben's profile picture BenView
In these interests: networkingpi
How to Boot Your Raspberry Pi 4 From a USB DriveHow to Boot Your Raspberry Pi 4 From a USB Drive
The Raspberry Pi was designed to boot from an SD card, but in some cases, it’s convenient to boot from a USB drive.
Tyler's profile picture TylerView
In these interests: pi
People also read:
Raspberry Pi OS
Get the new official Raspberry Pi OS on your Pi.
Raspberry Pi FAQ
New to the Raspberry Pi? Start here.
The Pi-hole logo
Blocking ads just got easier with Pi-hole, a network-wide ad blocker for the Raspberry Pi
Raspberry Pi 4 Cases 2020
Don’t skip out on a proper case for your Pi 4.
Setting up Bluetooth on a Raspberry Pi
The only Raspberry Pi Bluetooth guide you’ll ever need.
Raspberry Pi Windows
Your favorite MS OS on the Pi.
DietPi Logo
If you need a resource-light operating system for your Raspberry Pi, then you should consider trying DietPi.
Posted in these interests:
pipi
pi
PRIMARY
The Raspberry Pi is a small, inexpensive computer developed by the Raspberry Pi Foundation in the United Kingdom.
magicmirrormagicmirror
Mirror, mirror on the wall: who’s the nerdiest of them all?
Discuss this guide:
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Zach's profile pictureZach
Joined in 2015
Web developer, designer, tinkerer, and beer enthusiast living in Tampa, Florida.
Related to this guide:
The Spaghetti DetectiveThe Spaghetti Detective
Access OctoPrint from anywhere with this OctoPrint Anywhere replacement.
Ash's profile picture AshView
In these interests: pioctoprint3dprinting
3D printer filament3D printer filament
In these interests: 3dprinting
People also read:
3D printing on glass bed
How to choose, install, and use a glass bed with your printer.
3D-printed Raspberry Pi cases
Build your dream case one line at a time!
Time for this project to take shape.
APPROVED! REJECTED! APPROVED!
Yes the holidays are already here!
Get the printer ready, it’s time to play!
Ookie spooky 3D printed goodies!
Posted in these interests:
3dprinting3dprinting
3dprinting
51 guides 113 subscribers 
PRIMARY
Think of it like a 2D printer, but with an extra dimension.
Explore
nintendonintendo
nintendo
24 guides 13 subscribers 
Thank you Mario, but our princess is in another castle!
Explore
Nintendo SwitchNintendo Switch
switch
7 guides 4 subscribers 
The Nintendo Switch is a “hybrid” video game console developed by Nintendo and released in 2017. The console can be played either portably or by connecting it to a television via its included dock.
Explore
Discuss this guide:
Follow @howchoo and learn cool things!
Like us on Facebook:
Subscribe to our YouTube channel:
Follow us on Twitter:
Follow @howchoo and learn cool things!
Like us on Facebook:
Subscribe to our YouTube channel:
Follow us on Twitter:

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Zach's profile pictureZach
Joined in 2015
Web developer, designer, tinkerer, and beer enthusiast living in Tampa, Florida.
Related to this guide:
Resin Printing FAQsResin Printing FAQs
Considering a resin printer? Here’s everything you should know first.
Ash's profile picture AshView
In these interests: 3dprinting
3D Printing FAQs3D Printing FAQs
New to 3D printing? We’ve got you covered.
Ash's profile picture AshView
In these interests: 3dprinting
Make Money 3D PrintingMake Money 3D Printing
You can’t print money, but you can make money printing.
Ash's profile picture AshView
In these interests: 3dprinting
People also read:
The Spaghetti Detective
Access OctoPrint from anywhere with this OctoPrint Anywhere replacement.
3D printing on glass bed
How to choose, install, and use a glass bed with your printer.
3D-printed Raspberry Pi cases
Build your dream case one line at a time!
Time for this project to take shape.
APPROVED! REJECTED! APPROVED!
Posted in these interests:
3dprinting3dprinting
3dprinting
PRIMARY
Think of it like a 2D printer, but with an extra dimension.
nintendonintendo
Thank you Mario, but our princess is in another castle!
Nintendo SwitchNintendo Switch
The Nintendo Switch is a “hybrid” video game console developed by Nintendo and released in 2017. The console can be played either portably or by connecting it to a television via its included dock.
Discuss this guide:
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!
We’re hiring!
Are you a passionate writer or editor? We want to hear from you!

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.

Want to support Howchoo? When you buy a tool or material through one of our Amazon links, we earn a small commission as an Amazon Associate.