Read the statement by Michael Teeuw here.
Raspberry Pi Zero W for Magic Mirror
-
-
@davidgagne Wow, your summary above is just amazing! This is exactly what I was looking for.
Can you comment on why the choice of legacy OS was selected? Is there some kind of tradeoff that is being made here?
-
@capedbuffethero the pi0 is older armv6l processor, it can only run 32 bit mode. the memory is small on pi0,
everything that doesn’t fit in memory causes swapping, to the sd card. pi0 has the older slower sd chip.
so, use the legacy 32 bit image to reduce the footprint
-
@capedbuffethero Thanks! Please upvote if you found it valuable. I’m fairly new here and trying to improve my rep so all my posts aren’t held for moderation. :)
-
@davidgagne It appears I need 1 reputation to upvote.
-
@capedbuffethero really? I’ll check on that. didn’t used to be.
-
@capedbuffethero can you try this again… we should have reset this option to 0
downvote still requires rep of 1 or above… -
@davidgagne
Does it matter that you install firefox-esr
but in the mm.sh script you just call it firefox ?
I went to midori to get mine to work it would not recognize the firefox in mm.sh for some reason. -
@plainbroke the package is called firefox-esr
the program name is firefox
it must be on the path for mm.sh to execute it.
I don’t know if installing the package does that.
I don’t remember worrying about itthe command
which firefox
should return the full path to the executable if it’s on the path.
otherwise you can add its folder onto the path in the .profile or .bashrc scripts
that setup the shell environment -
@davidgagne said in Raspberry Pi Zero W for Magic Mirror:
Summary
- when running
DISPLAY=:0 npm startI got an unexpected error - follow up question:
export external_browser=firefoxdoesn’t this export vanish as soon as my session ends? Do I have to do this every time? - firefox is started and is visible on VNC
- firefox is not able to connect to the node server (I guess the node server is not running)
Details:
When executing this script:cd ~/MagicMirror export external_browser=firefox DISPLAY=:0 npm starton this step: I get this output:
myname@raspberrypi:~ $ cd ~/MagicMirror myname@raspberrypi:~/MagicMirror $ export external_browser=firefox myname@raspberrypi:~/MagicMirror $ DISPLAY=:0 npm start > magicmirror@2.27.0 start > ./run-start.sh $1 ./run-start.sh: line 79: 8050 Killed node serveronlythese are the lines that precede line 79:
# if user explicitly configured to run server only (no ui local) # OR there is no xwindows running, so no support for browser graphics if [ "$serveronly." == "$true." ] || [ "$xorg." == "." -a $mac != 'Darwin' -a "$wait_for_x." != "." ]; then # start server mode, node serveronly else # start the server in the background # wait for server to be ready # need bash for this exec 3< <(node serveronly)if we do
export external_browserdoesn’t that vanish as soon as the RPI is rebooted or if my session ends?after a while the VNC client showed firefox start, but no URL, then the screen went white, then Firefox said “Unable to connect”
then I ran this script, I am tailing logs. What does “fix 'em up” script do
- Execute fix'em-up script:
bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/fixuppm2.sh)"the last line is this:
pm2 setup completed - Fri Jun 14 21:52:48 PDT 2024cancelling the step
DISPLAY=:0 npm startallows me to rerun this step, but the step always ends in failure.UPDATE: “Unable to connect” is because Firefox cannot connect to the node server. VNC can connect without issue! The error is actually an error from the Firefox browser.
- when running
-
@capedbuffethero
the export is used on the MagicMirror system side. it is paired with the
node server execution, which launches MagicMirror without a ui.
then when the server is running, run-start.sh launches a browser to connect to the serverthe export has nothing to do with vnc,
it is just used to tell run-start.sh which browser to launch. (on linux, env variables are NOT passed to children processes by default. you have to use the export keyword to enable it, for each env var you want to pass)if you set the MagicMirror config.js.js to
address:"0.0.0.0", ipWhitelist:[],then you can use a browser on your phone, Windows, Linux, or Mac system to view MagicMirror directly without vnc
the killed message is because you restarted MagicMirror, and run-start.sh found the server instance running already. so it must be stopped and restarted in case you changed the config
-
Hello all giving MM a try again on a Rpi zero and have been trying to run the script in this thread but keeping getting the following message

Am I missing something to by pass the Xorg check?
OS
achild@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME=“Raspbian GNU/Linux 12 (bookworm)”
NAME=“Raspbian GNU/Linux”
VERSION_ID=“12”
VERSION=“12 (bookworm)”
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL=“http://www.raspbian.org/”
SUPPORT_URL=“http://www.raspbian.org/RaspbianForums” -
@funkdafied I have just pushed a fix for that… (was a test for text mode or graphical mode)
(and I see I have to expand the test for the Bookworm compositor too,edit: just fixed that too)but it won’t help in your situation…
you cannot run MagicMirror on bookworm successfully on a pi0-w, armv6l
takes too much memoryyou need to use the legacy 32 bit image (bullseye)
-
@sdetweil thank you that worked to a point please have a look at the below with the errors I getting:

-
@funkdafied I cannot recreate this…
try this to increase the timeout
You can extend timeout with those two commands: npm config set fetch-retry-maxtimeout 6000000 npm config set fetch-retry-mintimeout 1000000 enter image description here Source: https://docs.npmjs.com/cli/v9/using-npm/config#fetch-retry-maxtimeout
-
@sdetweil Thank you that did the trick. Only issue I see to be running into at the moment is Midori telling me it can’t find the page it is looking for.
-
@funkdafied ok,
when you run on a device that doesn’t have electron support, it doesn’t get installed via MM as expected…
then my install script changes the startup to use my run-start.sh script
which launches MagicMirror in server mode
and waits for the ready message>>> Ready to go! Please point your browser to: http://0.0.0.0:8080 <<<and then launches midori like this (with whatever the port number is in the message)
midori http://localhost:8080 -e Fullscreen -e Navigationbarjust for grins can you do
cd ~/MagicMirror npm start serverto see if that message appears
-
@funkdafied I think we solved this on discord
-
S schris88 referenced this topic on
-
I made a magic mirror in my college time using Raspberry pi 3b+
Integrated google assistant with youtube play also in it.
Now i am graduated and doing job from past 2 years, i am thinking to build one for my home.
Raspberry pi 4 and 5 are expensive, does raspberry pi zero works?
Will google assistant work on it? And youtube also will work on it?
If not youtube, will spotify work on it using pi zero
Which raspberry pi zero will you recommend me
-
@Mayank-Arora you need the pi0-2w at minimum and a fast sd card
The google assistant module is no longer available
Most of the MagicMirror modules for Spotify are display only,
You need the raspotify system service to play ON the PI
YouTube might work, but you have no voice control without GA
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login