Template:13.3inch Magic Mirror user manual

From Waveshare Wiki
Jump to: navigation, search


  • 13.3inch IPS screen,1920x1080 high resolution
  • Embed Raspberry Pi 3A+ as controller
  • One-way mirror, can display news, weather and time.
  • Toughened glass capacitive touch panel, 6H hardness, supports up to 10-points touch
  • Embedded ferrite Hi-Fi speaker
  • Embedded Microphone And Speaker, Adopts Snowboy Hotword Detection Engine
  • 75x75mm spacing mounting holes (M4 screw hole) for general wall mount
  • Comes with 75° tilt angle stand

User Guide

To use the Magic mirror, you can use the pre-configured image which we provide or configure it yourself with the original Raspbian image.

Method 1. Pre-configured image

1. Download the pre-configured image and write it to your SD card
2. Add the following lines to wpa_supplicat.conf files in the BOOT directory. (if you didn't find the files, create it)
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

Note: you need to change your_real_wifi_ssid and your_real_password" to the real ssid and password

3. Inset the card to Raspberry Pi and power on it

Method 2. Configure image manually

1. Write Raspbian image
Download the lasted Raspbian image from the Rasberry Pi website and write it to an empty micro SD card.
Create a new txt file under the BOOT directory of micro SD card and name it as SSH.
Modify config.txt file which is located at BOOT directory, add the following lines to config.txt file
hdmi_cvt 1920 1080 60 6 0 0 0
Save and insert the micro SD card to Raspberry Pi.
Connect the Magic mirror to network and power on Raspberry Pi.
After booting, you can access Raspberry Pi via SSH, or directly connect keyboard and mouse.
2. Install WM8960 sound card driver
Open the terminal and use the following commands to install
git clone https://github.com/waveshare/WM8960-Audio-HAT
cd WM8960-Audio-HAT
sudo ./install.sh 
Modify config.txt file, remove the following line from the file or comment it.
Then reboot Raspberry Pi
sudo reboot
After rebooting, check the driver by the following command
sudo dkms status 
If you can get the information as below, it means that the driver was installed successfully.
wm8960-soundcard, 1.0, 4.19.58-v7l+, armv7l: installed
Test the sound card
  • Test playing: aplay -l
[email protected]:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • Test recording: arecord -l
[email protected]:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
3. Install Magic Mirror driver
Open terminal and type the following commands
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs
git clone https://github.com/MichMich/MagicMirror
cd MagicMirror/
npm install
After installing, run the command to display
DISPLAY=:0 npm start
Install MMM-VoiceAssistant model and display
cd ~/MagicMirror/modules
git clone https://github.com/waveshare/MMM-VoiceAssistant.git
cd MMM-VoiceAssistant
cp config/config.js.en ~/MagicMirror/config/config.js  #显示英文
#cp config/config.js.cn ~/MagicMirror/config/config.js  #显示中文
cd ~/MagicMirror
DISPLAY=:0 npm star
4. Install Python3 virtual environment
sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate
Note: The following steps should be take in the virtual environment, if you close the terminal and restart it, you should use the command below to enter the environment again firstly
source ~/env/bin/activate
5. Install snowboy
Install libraries
sudo apt-get install swig
sudo apt-get install libatlas-base-dev
sudo apt-get install portaudio19-dev
sudo apt-get install flac
pip3 install PyAudio
pip3 install SpeechRecognition
Download snowboy
git clone https://github.com/Kitt-AI/snowboy.git
cd snowboy/swig/Python3
cd ../../examples/Python3
Modify snowbiydecoder.py file. Change from.import snowboydetect to import snowboydetect. Save and enable snowboy
cd ~/snowboy/examples/Python3
python3 demo.py resources/models/smart_mirror.umdl
Try to say snowboy, you will hear ding and the information below are printed on the mirror
INFO:snowboy:Keyword 1 detected at time: 2019-12-03 11:30:16
6. Install Google Assistant Service
Create .asoundrc file in /home/pi directory (the user directory)
nano .asoundrc
Add the following lines to the .asoundrc file
pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
pcm.mic {
  type plug
  slave {
    pcm "hw:0,0"
pcm.speaker {
  type plug
  slave {
    pcm "hw:0,0"
Accoding to the official guide to install Google Assistant Service
Please follow the third step of the official guide to configure and create OAuth Client ID JSON file. Don't forget to copy the JSON file to your Raspberry Pi.
Following the fourth step of the guide to register device model
Install Google Assistant SDK
(env) $ sudo apt-get install portaudio19-dev libffi-dev libssl-dev
(env) $ python -m pip install --upgrade google-assistant-sdk[samples]
Authorize model
(env) $ python -m pip install --upgrade google-auth-oauthlib[tool]
Genegrate credential
(env) $ google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \
      --save --headless --client-secrets /path/to/client_secret_ client-id .json
Then you will get an URL, please copy it and open it on browser of your PC.
Please visit this URL to authorize this application: https://...
Go to the URL, you are asked to log in your Google Account and get the authorization code by following guides, Copy the code to the terminal
Please go to this URL: https://...
Enter the authorization code:
If the authorization process is done successfully, you will get the information as below.
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
Use the following commandto test.
googlesamples-assistant-pushtotalk --project-id my-dev-project --device-model-id my-model
Note: my-dev-project is the Google Could Platform ID of Actions Console porject you created. You need to find the project ID in Actions Console. my-model is the device model name you create
Press Enter, and try to ask something.
7. Set auto-run
Install PM2
sudo npm install -g pm2
Setup pm2
pm2 startup
You will get informatin below, please copy the command and run it on terminal
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi
Run Magic mirror by PM2
cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start mm.sh
Run snowbiy by PM2
cd MagicMirror/modules/MMM-VoiceAssistant/pi
pm2 start snowboy.sh
Set auto-run
pm2 save
If you want to disable the sevices, you can aslo use the following command
pm2 stop mm
pm2 stop snowboy
8. kepp display lighting all the time
Modify lightdm.conf
sudo nano /etc/lightdm/lightdm.conf
Find the line "Xserver-command" below [SeatDefaults] section and change it from


xserver-command=X -s 0 -dpms
Then save and reboot
sudo reboot


1. If the wakeup word is unworkable for you, please log in snowboy website
https://snowboy.kitt.ai , And add the new wakeup word.
Click recording icon to record voice and test if the voice model is workable
Download the model file and copy it to ~/MagicMirror/modules/MMM-VoiceAssistant/pi direcotory.
Modify snowboy.sh file
nano snowboy.sh
Modify the name to the the one you download, for English, you need to modify the snowboy.umdl to the yours
cd ~/MagicMirror/modules/MMM-VoiceAssistant/pi
~/env/bin/python3 demo.py smart_mirror.umdl snowboy.umdl
2. Google Assistant Service can only support 500 request every day.