bkey1970@mirrorserv:~ $ bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" apply
update log will be in /home/bkey1970/MagicMirror/installers/upgrade.log
doing test run = false
Node currently installed. Checking version number.
Minimum Node version: v22.21.1
Installed Node version: v22.18.0
installing correct version of node and npm, please wait
Check current Node installation ...
Node currently installed. Checking version number.
Minimum Node version: v22.21.1
Installed Node version: v22.21.1
No Node.js upgrade necessary.
Check current NPM installation ...
NPM currently installed. Checking version number.
Minimum npm version: V10.9.4
Installed npm version: V10.9.4
No npm upgrade necessary.
want /var/swap=512MByte, checking existing: keeping it
saving custom.css
Unable to determine upstream git repository
Upgrade started - Fri Jan 2 13:41:18 PST 2026
system is Linux mirrorserv 6.12.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
user requested to apply changes
doing test run = false
the os is PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=deb>
architecture from dpkg is
^[[0mNode currently installed. Checking version number.^[[0m
^[[0mMinimum Node version: ^[[1mv22.21.1^[[0m
^[[0mInstalled Node version: ^[[1mv22.18.0^[[0m
^[[96minstalling correct version of node and npm, please wait^[[0m
installing : node-v22.21.1
mkdir : /usr/local/n/versions/node/22.21.1
fetch : https://nodejs.org/dist/v22.21.1/node-v22.21.1-linux-arm64.tar.xz
copying : node/22.21.1
installed : v22.21.1 (with npm 10.9.4)
^[[0mNo npm engines section specified in package.json, using default=V10.9.4 ...^[[0m
^[[96mCheck current Node installation ...^[[0m
^[[0mNode currently installed. Checking version number.
^[[0mMinimum Node version: ^[[1mv22.21.1^[[0m
^[[0mInstalled Node version: ^[[1mv22.21.1^[[0m
^[[92mNo Node.js upgrade necessary.^[[0m
^[[96mCheck current NPM installation ...^[[0m
^[[0mNPM currently installed. Checking version number.
^[[0mMinimum npm version: ^[[1mV10.9.4^[[0m
^[[0mInstalled npm version: ^[[1mV10.9.4^[[0m
^[[92mNo npm upgrade necessary.^[[0m
increasing swap space
increasing swap space
saving custom.css
Unable to determine upstream git repository
Upgrade ended - Fri Jan 2 13:41:45 PST 2026
What’s going on?
I upgraded my MagicMirror and now the logs are showing the below errors:
ERROR:ui/ozone/platform/wayland/host/wayland_connection.cc:202] Failed to connect to Wayland display: No such file or directory (2)
ERROR:ui/ozone/platform/wayland/ozone_playform_wayland.cc:202] Failed to initalize Wayland platform
ERROR:ui/aura/env.cc:257] the platform failed to initalize. Exiting.
How do i resolve this?
Running magicmirroros which uses Karsten’s docker implementation.
This morning found mm blank, and the mm container had sigfault errors connecting to the screen (didn’t collect logs). As been at last six months since last updated, updated the os (apt-get update/upgrade), containers, and rebooted.
Everything looks to be running fine outwardly, however noted a few errors in the container logs.
And the watchtower log is just in a loop restating.
Extracts below.
scottwalsh@calendar:/opt/mm/run $ docker logs mm
[2026-01-02 07:59:07.394] [LOG] [app] Server started ...
[2026-01-02 07:59:07.397] [LOG] [node_helper] Connecting socket for: MMM-mmpm
[2026-01-02 07:59:07.399] [LOG] [node_helper] Starting module helper: MMM-mmpm
[2026-01-02 07:59:07.401] [LOG] [node_helper] Connecting socket for: calendar
[2026-01-02 07:59:07.402] [LOG] [calendar] Starting node helper for: calendar
[2026-01-02 07:59:07.404] [LOG] [node_helper] Connecting socket for: MMM-AVStock
[2026-01-02 07:59:07.406] [LOG] [node_helper] Connecting socket for: MMM-anotherNewsFeed
[2026-01-02 07:59:07.408] [LOG] [MMM-anotherNewsFeed] Starting node helper for: MMM-anotherNewsFeed
[2026-01-02 07:59:07.409] [LOG] [node_helper] Connecting socket for: updatenotification
[2026-01-02 07:59:07.411] [LOG] [node_helper] Starting module helper: updatenotification
[2026-01-02 07:59:07.412] [LOG] [app] Sockets connected & modules started ...
[21:0101/185908.239072:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[2026-01-02 07:59:08.641] [LOG] [electron] Launching application.
[21:0101/185909.015470:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type:
[21:0101/185909.016371:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.016913:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.017979:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.018861:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.023819:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type:
[2026-01-02 07:59:12.566] [INFO] [utils]
scottwalsh@calendar:/opt/mm/run $ docker logs watchtower
time="2026-01-01T18:58:38Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:38Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:43Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:43Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:46Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:46Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:50Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:50Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:54Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:54Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:58Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:58Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:04Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:04Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:13Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:13Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:27Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:27Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:55Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:55Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
scottwalsh@calendar:/opt/mm/run $
Version 2.34.0 Jan 1, 2026
Release Notes
Thanks to: @Blackspirits, @Crazylegstoo, @jarnoml, @jboucly, @JHWelch, @khassel, @KristjanESPERANTO, @rejas, @sdetweil, @xsorifc28
⚠️ This release needs nodejs version >=22.21.1 <23 || >=24
Compare to previous Release v2.33.0
[core]
Merge branch ‘master’ into develop
Prepare Release 2.34.0 (#3998)
dependency update + adjust Playwright setup + fix linter issue (#3994)
demo with gif (#3995)
[core] fix: allow browser globals in config files (#3992)
[core] fix: restore --ozone-platform=wayland flag for reliable Wayland support (#3989)
[core] auto create release notes with every push on develop (#3985)
[core] chore: simplify Wayland start script (#3974)
[gitignore] restore the old Git behavior for the default modules (#3968)
[core] configure cspell to check default modules only and fix typos (#3955)
[gitignore] restoring the old Git behavior for the CSS directory (#3954)
feat(core): add server:watch script with automatic restart on file changes (#3920)
[check_config] refactor: improve error handling (#3927)
refactor: replace express-ipfilter with lightweight custom middleware (#3917)
refactor: replace module-alias dependency with internal alias resolver (#3893)
Release 2.33.0 (#3903)
[dependencies]
[chore] update dependencies and min. node version (#3986)
[core] bump dependencies into december (#3982)
Bump actions/checkout from 5 to 6 (#3972)
Update deps, unpin parse5 (#3934)
[core] Update deps and pin jsdom to v27.0.0 (#3925)
chore: update dependencies (#3921)
update deps, exclude node v23 (#3916)
remove eslint warnings, add npm publish process to Collaboration.md (#3913)
feat: add ESlint rule no-sparse-arrays for config check (#3911)
chore: bump dependencies into october (#3909)
[logging]
logger: add calling filename as prefix on server side (#3926)
[logger] Add prefixes to most Log messages (#3923)
[modules/alert]
Add new pt and pt-BR translations for Alert module and update global PT strings (#3965)
[modules/calendar]
add checksum to test whether calendar event list changed (#3988)
[calendar] fix: prevent excessive fetching on client reload and refactor calendarfetcherutils.js (#3976)
[calendar] refactor: migrate CalendarFetcher to ES6 class and improve error handling (#3959)
[calendar] Show repeatingCountTitle only if yearDiff > 0 (#3949)
[tests] suppress debug logs in CI environment + improve calendar symbol test stability (#3941)
[calendar] chore: remove requiresVersion: "2.1.0" (#3932)
[calendar] test: remove “Recurring event per timezone” test (#3929)
[modules/compliments]
[compliments] refactor: optimize loadComplimentFile method and add unit tests (#3969)
fix: set compliments remote file minimum delay to 15 minutes (#3970)
[compliments] fix: duplicate query param “?” in compliments module refresh url (#3967)
[modules/newsfeed]
[newsfeed] fix header layout issue (#3946)
[modules/weather]
[weatherprovider] update subclass language use override (#3914)
[weather] fix wind-icon not showing in pirateweather (#3957)
[weather] add error handling to weather fetch functions, including cors (#3791)
remove deprecated ukmetoffice datapoint provider, cleanup .gitignore (#3952)
fixes problems with daylight-saving-time in weather provider openmeteo (#3931)
Fix for envcanada Provider to use updated Env Canada URL (#3919)
[weather] feat: add configurable forecast date format option (#3918)
[testing]
testing: update “Enforce Pull-Request Rules” workflow (#3987)
[core] refactor: replace XMLHttpRequest with fetch and migrate e2e tests to Playwright (#3950)
[test] replace node-libgpiod with serialport in electron-rebuild workflow (#3945)
[ci] Add concurrency to automated tests workflow to cancel outdated runs (#3943)
[tests] migrate from jest to vitest (#3940)
rotationTime: 60 * 1000, // rotate every 60 seconds
modules: [
["MMM-CalendarExt3", "clock", "compliments"],
["calendar", "clock", "compliments"],
["iFrame", "clock"],
["MMM-ATM", "clock", "compliments"],
["MMM-BirdOfTheDay", "clock"],
["MMM-CalvinAndHobbes"],
["MMM-Chores", "clock", "compliments"],
["MMM-CloneWarsQuotes", "clock", "compliments"],
["MMM-Cocktails", "clock", "compliments"],
["MMM-Confucius-say", "clock", "compliments"],
["MMM-CountDown", "clock", "compliments"], // Our Sons Passing.
["MMM-CountUP", "clock", "compliments"], //House move in.
["MMM-CoupleDays", "clock", "compliments"], // Us Married
["MMM-CustomText", "clock", "compliments"], //I love You MORE
["MMM-DateCounter", "clock", "compliments"], //Retirement
["MMM-Dogs", "clock", "compliments"],
["MMM-EmbedURL"], // Dakboard
["MMM-Evil", "clock", "compliments"],
["MMM-EyeCandy", "clock", "compliments"], //Running Dogs
["MMM-Facts", "clock", "compliments"],
["MMM-Globe", "clock", "compliments"],
["MMM-GmailFeed", "clock", "compliments"],
["MMM-History", "clock", "compliments"],
["MMM-icanhazdadjoke", "clock", "compliments"],
["MMM-iFrameReload", "clock", "compliments"], //When God Made Me!
["MMM-ImagesPhotos", "clock", "compliments"],
["MMM-Jast", "clock", "compliments"],
["MMM-MoonPhase", "clock", "compliments"],
["MMM-MyWordOfTheDay", "clock", "compliments"],
["MMM-NetworkScanner", "clock", "compliments"],
["MMM-NFL", "clock", "compliments"],
["MMM-nixie-clock", "clock", "compliments"],
["MMM-OnlineImagesViewer", "clock", "compliments"], //MyQueen
["MMM-parrot-or-gif", "clock", "compliments"],
["MMM-Pinfo", "clock", "compliments"],
["MMM-PirateSkyForecast", "clock", "compliments"],
["MMM-quote-of-the-day", "clock", "compliments"],
["MMM-RAIN-MAP"],
["MMM-rfacts", "clock", "compliments"],
["MMM-SimpleLogo", "clock", "compliments"],
["MMM-SimpleText", "clock", "compliments"],
["MMM-SmartWebDisplay"],
["MMM-TrivialAbyss", "clock", "compliments"],
["MMM-UselessFacts", "clock", "compliments"],
["MMM-WebView"],
["MMM-WOTD", "clock", "compliments"],
["random_quotes", "clock", "compliments"]
],
fixed: [ // modules that are always shown
"MMM-DynamicWeather",
],
Is this too many modules for MMM-pages?
I really want a where’s waldo module but way out of my “pay scale” [abilities].
Hello together
I have noticed that the excludedEvents function with the “until” parameter no longer works. The last time I used the function was version 18.3.24, when everything worked. While searching for the error, I came across this article https://forum.magicmirror.builders/topic/19767/2.32.0-calendar-module-limitdays-and-excludedevents-stopped-working?page=1 or this issue https://github.com/MagicMirrorOrg/MagicMirror/issues/3841.
How was the error found (Reproducible)
I want to hide a recurring event until X days before it starts.
In the test case, the event is called “DailyTask”. This repeats every 2 days. I use the configuration
excludedEvents: [{filterBy: 'DailyTask', until: '2 days'}]
The appointments are displayed unchanged on the MM. I then only used the
excludedEvents: [{filterBy: 'DailyTask''}]
command. Now no events with the name “DailyTask” are displayed. Which leads me to conclude that the “until” parameter no longer works. it does not matter whether days, weeks or months are used
Current Config for Calendar:
{
module: "calendar",
header: "Kalender",
position: "bottom_left",
config: {
excludedEvents: [{filterBy: 'DailyTask', until: '2 days'}],
fade: true,
fadePoint: 0.75, // Possible values: 0 (top of the list) - 1 (bottom of list)
tableClass: "medium", // Possible values: xsmall, small, medium, large, xlarge. Default value: small.
maximumEntries: 18, // default 10
showLocation: true,
maxTitleLength: 40, // values 10-50
maxLocationTitleLength: 20, // values 10-50
// hidePrivate: false,
coloredText: true,
coloredSymbol: true,
coloredBackground: true,
calendars: [
{
// Test-Kalender
fetchInterval: 300000, // 5 min * 12 = 1h
symbol: "calendar-plus",
color: "#FFFFFF", // Dunkleres Grün #1ea30f etwas helleres Grün #43ff64d9
symbolClassName: "fa-regular fa-",
bgColor: "rgba(0, 0, 0, 0.02)",
name: "Test-Kalender",
url: "https://calendar.google.com/calendar/ical/******************.ics"
}
]
}
MM was reinstalled a few days ago. A Raspberry Pi 3B+ is used
Operating System: Debian GNU/Linux13 (trixie)
Kernel: Linux 6.12.47+rpt-rpi-v8
Architecture: arm64
MM version: v2.33.0
i use pm2
All modules with the exception of the calendar module were deactivated for the test.
my solution
I think I have found the problem in the calendarfetcherutils.js file.
I have the following line 163:
let { excluded, eventFilterUntil } = this.shouldEventBeExcluded(config, title);
replaced with this code:
let { excluded, until: eventFilterUntil } = this.shouldEventBeExcluded(config, title);
Subsequent tests were positive for me, but I cannot judge whether the customisation has any further effects. Unfortunately I’m not a programmer, just a “nerd” =)
can someone verify this and possibly open a bug?
Best regards
Jacky
Hi have simple background slide show and pages install ill add the config at a later date I’v renamed images pic1 pic2 and up 4pic pic 5 the only pic to show up is
pic1 the picture are in folder called images my clock comes on page 1 when it changes to page 2 should pic2 and google calendar thats working fine but no pic 2 or 3, 4, 5,
picture should. came up on all pages .
ill add the config.js file tomorrow
any help how to add the code this forum?
any suggestions help please
Hi friends, liebe Grüße Freunde!
The concept of Carousel is more complicated than MMM-pages where I succeeded. This unfortunately not working, ignoring my usb keyboard and I still see on the middle of screen " module M_Carousel …etc" ps I’m a Newbie
let config = {
address: "0.0.0.0",
port: 8080,
basePath: "/",
ipWhitelist: [],
useHttps: false,
httpsPrivateKey: "",
httpsCertificate: "",
language: "en",
locale: "en-US",
logLevel: ["INFO", "LOG", "WARN", "ERROR"],
timeFormat: 24,
units: "metric",
modules: [
{
module: "MMM-KeyBindings",
config: {
evdev: { enabled: false },
enableKeyboard: true,
keyBindings: [
{
key: "ArrowRight",
notification: "PAGE_INCREMENT"
},
{
key: "ArrowLeft",
notification: "PAGE_DECREMENT"
}
]
}
},
{
module: "MMM-Carousel",
position: "bottom_bar",
config: {
transitionInterval: 10000,
ignoreModules: ["clock", "alert"],
mode: "slides",
showPageIndicators: true,
showPageControls: true,
slides: {
main: ["calendar", "compliments", "weather"],
"Slide 2": ["weather", "newsfeed"],
"Slide 3": ["MMM-PublicTransportHafas"]
},
keyBindings: {
enabled: true,
map: {
NextSlide: "ArrowRight",
PrevSlide: "ArrowLeft",
Pause: "ArrowDown",
Slide0: "Home"
},
mode: "DEFAULT"
}
}
},
{
module: "alert"
},
{
module: "updatenotification",
position: "top_bar",
},
{
module: "calendar",
header: "US Holidays",
position: "top_left",
config: {
calendars: [
{
fetchInterval: 7 * 24 * 60 * 60 * 1000,
symbol: "calendar-check",
url: "https://ics.calendarlabs.com/76/mm3137/US_Holidays.ics"
}
]
}
},
{
module: "MMM-Touch",
position: "top_right",
},
{
module: 'MMM-ViewNotifications',
position: "bottom_right",
header: "Notifications",
config: {
// See below for Configuration Options
}
},
{
module: "compliments",
position: "lower_third",
},
{
module: "weather",
position: "top_right",
header: "Weather Forecast",
config: {
weatherProvider: "openmeteo",
type: "forecast",
lat: 40.776676,
lon: -73.971321
}
},
{
module: "weather",
position: "top_right",
header: "Weather Current",
config: {
weatherProvider: "openmeteo",
type: "current",
lat: 40.776676,
lon: -73.971321
}
},
{
module: "newsfeed",
position: "bottom_bar",
config: {
feeds: [
{
title: "New York Times",
url: "https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
{
module: 'clock',
position: 'bottom_bar'
},
{
module: "MMM-PublicTransportHafas",
position: "bottom_left",
config: {
stationID: "645239",
stationName: "18.-März-Straße",
direction: "",
excludedTransportationTypes: [],
ignoredLines: [],
timeToStation: 10,
displayLastUpdate: true,
maxUnreachableDepartures: 0,
maxReachableDepartures: 7,
showColoredLineSymbols: true,
customLineStyles: "",
showOnlyLineNumbers: false,
showTableHeadersAsSymbols: true,
useColorForRealtimeInfo: true
}
},
{
module: "MMM-Remote-Control",
//position: "bottom_right",
config: {
customCommand: {},
showModuleApiMenu: true,
secureEndpoints: false,
showQRCode: true,
qrCodeSize: 150,
qrCodePosition: "below"
}
}
]
};
/***** DO NOT EDIT THE LINE BELOW *****/
if (typeof module !== "undefined") { module.exports = config; }
Thanks in advance,/Vielen Dank im voraus
Re: MMM-OpenWeatherMapForecast loading issue?
Hello @sdetweil - I’ve tried the original and your fork - did these break when they moved to v 3.0?
one-call-3)
(figured I’d ask you before I wade in)
rm -rf MMM-OpenWeatherMapForecast
git clone https://github.com/sdetweil/MMM-OpenWeatherMapForecast
cd MMM-OpenWeatheMapForecast
npm install
cd ~/MagicMirror/
npm start
… in both cases I get a ‘null’ error like the OP in the thread I’ve referenced.
My config file entry:
{
module: "MMM-OpenWeatherMapForecast",
header: "Weather",
classes: "default everyone",
position: "middle_center",
config: {
apikey: "API_KEY_REDACTED",
//latitude: 44.50498257209399,
//longitude: -73.12579372208883,
latitude: 43.6930,
longitude: 4.2783,
iconset: "4c",
concise: false,
forecastLayout: "table"
}
},
Hi all,
I am running mm in a client server scenario with the server being on a proxmox server and client being a pi3 with custom install.
Things work really well.
I now want to change my setup so that I can switch between 2 configs with the first one being a slideshow in the background with a couple of modules showing data in front. The second is just the slideshow, just brighter.
I am controlling the server with the remote module and via an ioBroker home automation.
I get it to work so I can hide modules via the remote. Unfortunately the pi is rather slow, so it takes some time to reload the page and then the remote script that would hide the modules might run too early.
So my thought was to use two different configs. I use the setup in the instructions on how to use two configs, but looks like that does not work in a client server scenario.
Has anyone implemented this correctly?
Any recoomendations welcome!
Thanks,
chrga
I am setting up a new MM and using Sam’s alternative install method. I have done this several times with no issues.
I copied the script as instructed, executed it. It runs for a bit but then I get the following failure message.
This is being done via Pi Connect.
Here are the lines I get.
Installing helper tools ...
nvm_command is sudo n v22.18.0
installing correct version of node and npm, please wait
tar: bin: Directory renamed before its status could be extracted
tar: Exiting with failure status due to previous errors
Error: failed to extract archive for 22.18.0
node failed to install, exiting
Hi all,
Quick question — what MDF or board material works best for MagicMirror frames and back panels? I’m looking for something stable, easy to cut, and paint-friendly.
I’ve seen people use standard MDF, moisture-resistant MDF, and plywood. Any recommendations from experience?
I’ve been browsing cut-to-size suppliers like https://mfcdirect.co.uk/
and noticed multiple MDF grades, which got me a bit unsure.
Thanks in advance!
Hi All. I have been using computers for a long time, and have recently taken the jump into Linux. My wife started my interest with the MagicMirror project.
So far all has been great. I’ve install the MM2 v2.33 and had it running. I’ve added modules and all was good. Testing on the Pi was fine, and I would even access from my Laptop. However, I have made some silly mistake somewhere, which only became apparent when I rebooted. I cannot access from the IP any longer. localhost on the Pi still works, but Modules like FormulaOne and getting my Gmail calendar just sit “loading”. All was good before the reboot.
Can anyone offer any suggestions?
I’ve checked config.js and the IP is blank, and IPWhitelist is blank (unchanged from before the reboot)
On starting the MM
[2025-12-14 15:19:39.798] [LOG] Starting MagicMirror: v2.33.0
[2025-12-14 15:19:39.814] [LOG] Loading config ...
[2025-12-14 15:19:39.818] [LOG] config template file not exists, no envsubst
[2025-12-14 15:19:41.369] [INFO] Checking config file /home/den/MagicMirror/config/config.js ...
[2025-12-14 15:19:41.638] [INFO] Your configuration file doesn't contain syntax errors :)
[2025-12-14 15:19:41.646] [INFO] Checking modules structure configuration ...
[2025-12-14 15:19:41.936] [ERROR] This module configuration contains errors:
undefinedmust be object
[2025-12-14 15:19:41.943] [ERROR] WARNING! Could not load config file. Starting with default configuration. Error found: TypeError: Cannot read properties of undefined (reading 'module')
[2025-12-14 15:19:41.946] [LOG] Loading module helpers ...
[2025-12-14 15:19:41.981] [LOG] Initializing new module helper ...
[2025-12-14 15:19:41.983] [LOG] Module helper loaded: updatenotification
[2025-12-14 15:19:41.984] [LOG] No helper found for module: helloworld.
[2025-12-14 15:19:41.985] [LOG] All module helpers loaded.
[2025-12-14 15:19:42.011] [LOG] Starting server on port 8080 ...
[2025-12-14 15:19:42.999] [LOG] Server started ...
[2025-12-14 15:19:43.003] [LOG] Connecting socket for: updatenotification
[2025-12-14 15:19:43.005] [LOG] Starting module helper: updatenotification
[2025-12-14 15:19:43.006] [LOG] Sockets connected & modules started ...
[2025-12-14 15:19:43.344] [LOG] Launching application.
There seems to be an error, but it isn’t giving me any pointers
Many thanks for any help
After installing this https://www.raspberrypi.com/software/
I first ran both these commands:
sudo apt full-upgrade
sudo apt update
Then followed documentation on this page https://docs.magicmirror.builders/getting-started/installation.html
This command “node --run install-mm” causes error “-bash: node: command not found” on RPi 5.
This is becoming my favorite module. I love the weather effects adding some fun into my display.
I have been experimenting with using the month/day configuration to add some stuff on various days to great initial success, but like a bad holiday guest the effect will not stop when the day rolls over.
I have tried both:
{
month: “12”,
day: “8”,
images: [“serenity.png”],
direction: “left-right”,
size: “10”,
},
and
{
dateRanges: [“2025-12-10 to 2025-12-11”],
images: [" USS_Enterprise.png"],
direction: “up”,
size: "10",
},
The effect persists. Has anyone seen anything similar?
Hi all,
I want to have the MMM-GPIO-Notification module send notifications when a Pi GPIO pin goes high.
I have GPIO pin 17 (Pi connector pin 11) with a 10k pull down, resistor and see it go from 0v to 3.255v when the switch is closed.
I followed the setup instructions here https://github.com/Tom-Hirschberger/MMM-GPIO-Notifications (not docker), but npm install fails with the same errors that are discussed here:
https://github.com/ExpeditionExploration/opengpio/issues/37 .
The issue was fixed in opengpio v2.0.1. As an experiment I changed the MMM-GPIO-Notification package.json opengpio dependency from ~1.0.13 to ~2.0.1
npm install now runs without error (it also built with opengpio v2.0.0 which surprised me)
When I close the switch, I don’t see any indication in the server logs or MMM-ViewNotifications that any notifications were sent, but I’m not sure if it’s because I have the Pi/MM set up incorrectly, or because it’s not the right version opengpio :(
I tried both with and without the forceInfoFileUsage option.
Server startup::
[LOG] Loading config ...
[LOG] config template file not exists, no envsubst
[INFO] Checking config file MagicMirror/config/config.js ...
[INFO] Your configuration file doesn't contain syntax errors :)
[INFO] Checking modules structure configuration ...
[INFO] Your modules structure configuration doesn't contain errors :)
[LOG] Loading module helpers ...
[LOG] No helper found for module: alert.
[LOG] No helper found for module: clock.
[LOG] Initializing new module helper ...
[LOG] Module helper loaded: calendar
[LOG] No helper found for module: weather.
[LOG] No helper found for module: MMM-ViewNotifications.
[LOG] Initializing new module helper ...
[LOG] Initializing new module helper ...
[LOG] Module helper loaded: MMM-GPIO-Notifications
[LOG] All module helpers loaded.
[LOG] Starting server on port 8080 ...
[LOG] Server started ...
[LOG] Connecting socket for: calendar
[LOG] Starting node helper for: calendar
[LOG] Connecting socket for: MMM-GPIO-Notifications
[LOG] Sockets connected & modules started ...
[LOG] Launching application.
[INFO]
#### System Information ####
SYSTEM: manufacturer: Raspberry Pi Foundation; model: Raspberry Pi 3 Model B Rev 1.2; virtual: false; MM: 2.33.0
OS: platform: linux; distro: Debian GNU/Linux; release: 13; arch: arm64; kernel: 6.12.47+rpt-rpi-v8
VERSIONS: electron: 38.1.2; used node: 22.19.0; installed node: 25.1.0; npm: 11.6.2; pm2: 6.0.13
ENV: XDG_SESSION_TYPE: wayland; MM_CONFIG_FILE: undefined
WAYLAND_DISPLAY: wayland-0; DISPLAY: :0; ELECTRON_ENABLE_GPU: undefined
RAM: total: 906.04 MB; free: 405.40 MB; used: 500.64 MB
OTHERS: uptime: 225 minutes;
[LOG] MMM-GPIO-Notifications: Using naming schema Default
[LOG] Force use of GPIO info file is configured. Using the information of gpioinfo.json instead of a specific device!
[LOG] MMM-GPIO-Notifications: Trying to registering pin: 17
[LOG] MMM-GPIO-Notifications: Using chip (0) and line (17) info of GPIO17
[LOG] MMM-GPIO-Notifications: Watched pin: 17 has low state delay of 1000!
[LOG] MMM-GPIO-Notifications: Watched pin: 17 has high state delay of 1000!
[LOG] MMM-GPIO-Notifications: Successfully registered pin: 17
config.js:
{
module: 'MMM-ViewNotifications',
position: "top_right",
header: 'Notifications',
config: {
timeout: 20,
format: '{time}: "{module}" sent "{notification}" with {payloadData}',
includeModules: ["MMM-GPIO-Notifications"]
}
},
{
module: 'MMM-GPIO-Notifications',
config: {
'17': {
delay: 1000,
notifications_high: [
{
notification: 'TEST_NOTIFICATION',
payload: {}
},
]
}
}
},
Is there any kind of extra logging for MMM-GPIO-Notifications or opengpio I can perhaps switch on?
Thanks in advance for any other info or suggestions.
~Queasy…
Noticed neither of my two calendars were working on my MM over the weekend.
Not having time to investigate, I left it for another day.
Then one calendar worked but not the other, then they swapped over!
Now they’re both working.
On checking the logs, there are a lot of these timeout errors:
[2025-12-07 16:11:33.349] [ERROR] Calendar Error. Could not fetch calendar: https://calendar.google.com/calendar/ical/#################group.calendar.google.com/private-5##############################/basic.ics TypeError: fetch failed
at node:internal/deps/undici/undici:13510:13
at process.processTicksAndRejections (node:internal/process/task_queues:105:5) {
[cause]: ConnectTimeoutError: Connect Timeout Error (attempted address: calendar.google.com:443, timeout: 30000ms)
at onConnectTimeout (/home/pi/MagicMirror/node_modules/undici/lib/core/util.js:876:19)
at Immediate._onImmediate (/home/pi/MagicMirror/node_modules/undici/lib/core/util.js:845:11)
at process.processImmediate (node:internal/timers:485:21) {
code: 'UND_ERR_CONNECT_TIMEOUT'
}
Looks like a timeout error at calendar_dot_google_dot_com and nothing to do with MM.
However, a more user friendly error message in place of the failed calendar would be nice to see.
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
Categories
-
Announcements
Announcements regarding the MagicMirror software and forum.
-
Core System
Discuss the MagicMirror² core framework.
-
-
-
-
-
-


