Read the statement by Michael Teeuw here.
update package list
-
@pat59 and now
npm start
-
I don’t know how to thank you, it’s working again, thank you, thank you
-
Well, it’s working normally again. I don’t know how to thank you. Thank you, thank you.
-
Hello, I must have missed a step. I started my mirror this morning, same problem.
pi@raspberrypi:~/MagicMirror $ pm2 stop MagicMirror
[PM2] Applying action stopProcessId on app [MagicMirror](ids: [ 1 ])
[PM2] MagicMirror ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 1 │ MagicMirror │ fork │ 0 │ stopped │ 0% │ 0b │
│ 0 │ mm │ fork │ 0 │ online │ 0% │ 2.4mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
pi@raspberrypi:~/MagicMirror $ npm startmagicmirror@2.27.0 start
DISPLAY=“${DISPLAY:=:0}” ./node_modules/.bin/electron js/electron.js[2025-09-12 07:06:24.742] [LOG] Starting MagicMirror: v2.27.0
[2025-09-12 07:06:24.863] [LOG] Loading config …
[2025-09-12 07:06:24.888] [LOG] config template file not exists, no envsubst
[2025-09-12 07:06:24.899] [LOG] Loading module helpers …
[2025-09-12 07:06:25.265] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.269] [LOG] Module helper loaded: MMM-Remote-Control
[2025-09-12 07:06:25.273] [LOG] No helper found for module: alert.
[2025-09-12 07:06:25.286] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.290] [LOG] Module helper loaded: MMM-Saint
[2025-09-12 07:06:25.299] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.301] [LOG] Module helper loaded: MMM-BME280
[2025-09-12 07:06:25.303] [LOG] No helper found for module: MMM-FlipClock.
[2025-09-12 07:06:25.467] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.469] [LOG] Module helper loaded: MMM-network-signal
[2025-09-12 07:06:26.004] [LOG] Initializing new module helper …
[2025-09-12 07:06:26.005] [LOG] Module helper loaded: calendar
[2025-09-12 07:06:27.471] [LOG] Initializing new module helper …
[2025-09-12 07:06:27.474] [LOG] Module helper loaded: MMM-Jast
[2025-09-12 07:06:28.921] [LOG] Initializing new module helper …
[2025-09-12 07:06:28.923] [LOG] Module helper loaded: MMM-GooglePhotos
[2025-09-12 07:06:28.926] [LOG] No helper found for module: MMM-WiFiPassword.
[2025-09-12 07:06:28.929] [LOG] No helper found for module: MMM-OpenmapWeather.
[2025-09-12 07:06:28.931] [LOG] No helper found for module: MMM-WeatherOrNot.
[2025-09-12 07:06:28.933] [WARN] No /home/pi/MagicMirror/js/…/modules/MMM-Linky/MMM-Linky.js found for module: MMM-Linky.
[2025-09-12 07:06:28.935] [LOG] No helper found for module: MMM-Linky.
[2025-09-12 07:06:29.442] [LOG] Initializing new module helper …
[2025-09-12 07:06:29.444] [LOG] Module helper loaded: newsfeed
[2025-09-12 07:06:29.446] [LOG] All module helpers loaded.
[2025-09-12 07:06:29.475] [LOG] Starting server on port 8080 …
[2025-09-12 07:06:29.494] [WARN] You’re using a full whitelist configuration to allow for all IPs
[2025-09-12 07:06:31.407] [ERROR] Whoops! There was an uncaught exception…
[2025-09-12 07:06:31.452] [ERROR] Error: listen EADDRINUSE: address already in use 0.0.0.0:8080
at Server.setupListenHandle [as _listen2] (node:net:1872:16)
at listenInCluster (node:net:1920:12)
at doListen (node:net:2069:7)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: ‘EADDRINUSE’,
errno: -98,
syscall: ‘listen’,
address: ‘0.0.0.0’,
port: 8080
}
[2025-09-12 07:06:31.459] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
[2025-09-12 07:06:31.461] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MagicMirrorOrg/MagicMirror/issues
[2025-09-12 07:06:44.850] [INFO] System information:SYSTEM: manufacturer: Raspberry Pi Foundation; model: Raspberry Pi 3 Model B Plus Rev 1.3; raspberry: [object Object]; virtual: false
OS: platform: linux; distro: Raspbian GNU/Linux; release: 10; arch: arm; kernel: 6.12.45-v7+
VERSIONS: electron: 29.1.6; used node: 20.9.0; installed node: 18.18.0; npm: 9.8.1; pm2: 5.3.1
OTHER: timeZone: Europe/Paris; ELECTRON_ENABLE_GPU: undefined
pi@raspberrypi:~/MagicMirror $ pm2 stop MagicMirror
[PM2] Applying action stopProcessId on app [MagicMirror](ids: [ 1 ])
[PM2] MagicMirror ✓
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 1 │ MagicMirror │ fork │ 0 │ stopped │ 0% │ 0b │
│ 0 │ mm │ fork │ 0 │ online │ 0% │ 2.4mb │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
pi@raspberrypi:~/MagicMirror $ npm startmagicmirror@2.27.0 start
DISPLAY=“${DISPLAY:=:0}” ./node_modules/.bin/electron js/electron.js[2025-09-12 07:06:24.742] [LOG] Starting MagicMirror: v2.27.0
[2025-09-12 07:06:24.863] [LOG] Loading config …
[2025-09-12 07:06:24.888] [LOG] config template file not exists, no envsubst
[2025-09-12 07:06:24.899] [LOG] Loading module helpers …
[2025-09-12 07:06:25.265] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.269] [LOG] Module helper loaded: MMM-Remote-Control
[2025-09-12 07:06:25.273] [LOG] No helper found for module: alert.
[2025-09-12 07:06:25.286] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.290] [LOG] Module helper loaded: MMM-Saint
[2025-09-12 07:06:25.299] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.301] [LOG] Module helper loaded: MMM-BME280
[2025-09-12 07:06:25.303] [LOG] No helper found for module: MMM-FlipClock.
[2025-09-12 07:06:25.467] [LOG] Initializing new module helper …
[2025-09-12 07:06:25.469] [LOG] Module helper loaded: MMM-network-signal
[2025-09-12 07:06:26.004] [LOG] Initializing new module helper …
[2025-09-12 07:06:26.005] [LOG] Module helper loaded: calendar
[2025-09-12 07:06:27.471] [LOG] Initializing new module helper …
[2025-09-12 07:06:27.474] [LOG] Module helper loaded: MMM-Jast
[2025-09-12 07:06:28.921] [LOG] Initializing new module helper …
[2025-09-12 07:06:28.923] [LOG] Module helper loaded: MMM-GooglePhotos
[2025-09-12 07:06:28.926] [LOG] No helper found for module: MMM-WiFiPassword.
[2025-09-12 07:06:28.929] [LOG] No helper found for module: MMM-OpenmapWeather.
[2025-09-12 07:06:28.931] [LOG] No helper found for module: MMM-WeatherOrNot.
[2025-09-12 07:06:28.933] [WARN] No /home/pi/MagicMirror/js/…/modules/MMM-Linky/MMM-Linky.js found for module: MMM-Linky.
[2025-09-12 07:06:28.935] [LOG] No helper found for module: MMM-Linky.
[2025-09-12 07:06:29.442] [LOG] Initializing new module helper …
[2025-09-12 07:06:29.444] [LOG] Module helper loaded: newsfeed
[2025-09-12 07:06:29.446] [LOG] All module helpers loaded.
[2025-09-12 07:06:29.475] [LOG] Starting server on port 8080 …
[2025-09-12 07:06:29.494] [WARN] You’re using a full whitelist configuration to allow for all IPs
[2025-09-12 07:06:31.407] [ERROR] Whoops! There was an uncaught exception…
[2025-09-12 07:06:31.452] [ERROR] Error: listen EADDRINUSE: address already in use 0.0.0.0:8080
at Server.setupListenHandle [as _listen2] (node:net:1872:16)
at listenInCluster (node:net:1920:12)
at doListen (node:net:2069:7)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: ‘EADDRINUSE’,
errno: -98,
syscall: ‘listen’,
address: ‘0.0.0.0’,
port: 8080
}
[2025-09-12 07:06:31.459] [ERROR] MagicMirror² will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?
[2025-09-12 07:06:31.461] [ERROR] If you think this really is an issue, please open an issue on GitHub: https://github.com/MagicMirrorOrg/MagicMirror/issues
[2025-09-12 07:06:44.850] [INFO] System information:SYSTEM: manufacturer: Raspberry Pi Foundation; model: Raspberry Pi 3 Model B Plus Rev 1.3; raspberry: [object Object]; virtual: false
OS: platform: linux; distro: Raspbian GNU/Linux; release: 10; arch: arm; kernel: 6.12.45-v7+
VERSIONS: electron: 29.1.6; used node: 20.9.0; installed node: 18.18.0; npm: 9.8.1; pm2: 5.3.1
OTHER: timeZone: Europe/Paris; ELECTRON_ENABLE_GPU: undefined
-
Did you stop it manually ctrl-q
Yesterday after we finished testing?pm2 status
Is anything listed as running?
If not then do thisps -ef| grep MagicMirror
You should only get one line of output
-
pi@raspberrypi:~ $ cd ~/MagicMirror
pi@raspberrypi:~/MagicMirror $ pm2 status┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐ │ id │ name │ mode │ ↺ │ status │ cpu │ memory │ ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤ │ 1 │ MagicMirror │ fork │ 0 │ online │ 0% │ 2.5mb │ │ 0 │ mm │ fork │ 0 │ online │ 0% │ 2.3mb │ └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘
so you have two instances
pi@raspberrypi:~/MagicMirror $ ps -ef|grep MagicMirror pi 1037 818 0 14:29 ? 00:00:00 bash /home/pi/MagicMirror/installers/mm.sh pi 1096 1075 26 14:29 ? 00:00:56 /home/pi/MagicMirror/node_modules/electron/dist/electron js/electron.js pi 1097 1077 24 14:29 ? 00:00:52 /home/pi/MagicMirror/node_modules/electron/dist/electron js/electron.js pi 1102 1097 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote --no-zygote-sandbox pi 1103 1096 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote --no-zygote-sandbox pi 1104 1096 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote pi 1106 1097 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote pi 1109 1104 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote pi 1110 1106 0 14:29 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=zygote pi 1407 1103 1 14:31 ? 00:00:01 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=gpu-process --enable-crash-reporter=d92a2a3b-ea77-4f26-9bb3-aaab877f322e,no_channel --user-data-dir=/home/pi/.config/Electron --gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --use-gl=angle --use-angle=swiftshader-webgl --shared-files --field-trial-handle=0,i,17126282988831355409,13634691343321116781,262144 --enable-features=kWebSQLAccess --disable-features=SpareRendererForSitePerProcess --variations-seed-version pi 1408 1102 0 14:31 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=gpu-process --enable-crash-reporter=d92a2a3b-ea77-4f26-9bb3-aaab877f322e,no_channel --user-data-dir=/home/pi/.config/Electron --gpu-preferences=WAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAGAAAAAAAAAAYAAAAAAAAAAgAAAAAAAAACAAAAAAAAAAIAAAAAAAAAA== --use-gl=angle --use-angle=swiftshader-webgl --shared-files --field-trial-handle=0,i,4975378740503322807,8852675362163135929,262144 --enable-features=kWebSQLAccess --disable-features=SpareRendererForSitePerProcess --variations-seed-version pi 1478 1097 0 14:31 ? 00:00:00 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=utility --utility-sub-type=network.mojom.NetworkService --lang=fr --service-sandbox-type=none --enable-crash-reporter=d92a2a3b-ea77-4f26-9bb3-aaab877f322e,no_channel --user-data-dir=/home/pi/.config/Electron --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,4975378740503322807,8852675362163135929,262144 --enable-features=kWebSQLAccess --disable-features=SpareRendererForSitePerProcess --variations-seed-version pi 1498 1096 1 14:31 ? 00:00:01 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=utility --utility-sub-type=network.mojom.NetworkService --lang=fr --service-sandbox-type=none --enable-crash-reporter=d92a2a3b-ea77-4f26-9bb3-aaab877f322e,no_channel --user-data-dir=/home/pi/.config/Electron --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,17126282988831355409,13634691343321116781,262144 --enable-features=kWebSQLAccess --disable-features=SpareRendererForSitePerProcess --variations-seed-version pi 1517 1109 4 14:31 ? 00:00:04 /home/pi/MagicMirror/node_modules/electron/dist/electron --type=renderer --enable-crash-reporter=d92a2a3b-ea77-4f26-9bb3-aaab877f322e,no_channel --user-data-dir=/home/pi/.config/Electron --app-path=/home/pi/MagicMirror/js --enable-sandbox --autoplay-policy=no-user-gesture-required --disable-gpu-compositing --lang=fr --num-raster-threads=2 --enable-main-frame-before-activation --renderer-client-id=4 --time-ticks-at-unix-epoch=-1757680110193681 --launch-time-ticks=192347868 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,17126282988831355409,13634691343321116781,262144 --enable-features=kWebSQLAccess --disable-features=SpareRendererForSitePerProcess --variations-seed-version pi 1662 1367 0 14:33 pts/1 00:00:00 grep --color=auto MagicMirror pi@raspberrypi:~/MagicMirror $
-
Hello, I stopped it with smartphone remote control.
-
@pat59 you have two instances… pick one… delete the other
pm2 --help
will give you the command options
what is the remote control function to stop it?
-
I used restart RPII used restart RPI
-
pi@raspberrypi:~ $ cd ~/MagicMirror
pi@raspberrypi:~/MagicMirror $ pm2 --helpUsage: pm2 [cmd] app
Options:
-V, --version output the version number -v --version print pm2 version -s --silent hide all messages --ext <extensions> watch only this file extensions -n --name <name> set a name for the process in the process list -m --mini-list display a compacted list without formatting --interpreter <interpreter> set a specific interpreter to use for executing app, default: node --interpreter-args <arguments> set arguments to pass to the interpreter (alias of --node-args) --node-args <node_args> space delimited arguments to pass to node -o --output <path> specify log file for stdout -e --error <path> specify log file for stderr -l --log [path] specify log file which gathers both stdout and stderr --filter-env [envs] filter out outgoing global values that contain provided strings (default: ) --log-type <type> specify log output style (raw by default, json optional) --log-date-format <date format> add custom prefix timestamp to logs --time enable time logging --disable-logs disable all logs storage --env <environment_name> specify which set of environment variables from ecosystem file must be injected -a --update-env force an update of the environment with restart/reload (-a <=> apply) -f --force force actions -i --instances <number> launch [number] instances (for networked app)(load balanced) --parallel <number> number of parallel actions (for restart/reload) --shutdown-with-message shutdown an application with process.send('shutdown') instead of process.kill(pid, SIGINT) -p --pid <pid> specify pid file -k --kill-timeout <delay> delay before sending final SIGKILL signal to process --listen-timeout <delay> listen timeout on application reload --max-memory-restart <memory> Restart the app if an amount of memory is exceeded (in bytes) --restart-delay <delay> specify a delay between restarts (in milliseconds) --exp-backoff-restart-delay <delay> specify a delay between restarts (in milliseconds) -x --execute-command execute a program using fork system --max-restarts [count] only restart the script COUNT times -u --user <username> define user when generating startup script --uid <uid> run target script with <uid> rights --gid <gid> run target script with <gid> rights --namespace <ns> start application within specified namespace --cwd <path> run target script from path <cwd> --hp <home path> define home path when generating startup script --wait-ip override systemd script to wait for full internet connectivity to launch pm2 --service-name <name> define service name when generating startup script -c --cron <cron_pattern> restart a running process based on a cron pattern -c --cron-restart <cron_pattern> (alias) restart a running process based on a cron pattern -w --write write configuration in local folder --no-daemon run pm2 daemon in the foreground if it doesn't exist already --source-map-support force source map support --only <application-name> with json declaration, allow to only act on one application --disable-source-map-support force source map support --wait-ready ask pm2 to wait for ready event from your app --merge-logs merge logs from different instances but keep error and out separated --watch [paths] watch application folder for changes (default: ) --ignore-watch <folders|files> List of paths to ignore (name or regex) --watch-delay <delay> specify a restart delay after changing files (--watch-delay 4 (in sec) or 4000ms) --no-color skip colors --no-vizion start an app without vizion feature (versioning control) --no-autostart add an app without automatic start --no-autorestart start an app without automatic restart --stop-exit-codes <exit_codes...> specify a list of exit codes that should skip automatic restart --no-treekill Only kill the main process, not detached children --no-pmx start an app without pmx --no-automation start an app without pmx --trace enable transaction tracing with km --disable-trace disable transaction tracing with km --sort <field_name:sort> sort process according to field's name --attach attach logging after your start/restart/stop/reload --v8 enable v8 data collecting --event-loop-inspector enable event-loop-inspector dump in pmx --deep-monitoring enable all monitoring tools (equivalent to --v8 --event-loop-inspector --trace) -h, --help output usage information
Commands:
start [options] [name|namespace|file|ecosystem|id...] start and daemonize an app trigger <id|proc_name|namespace|all> <action_name> [params] trigger process action deploy <file|environment> deploy your json startOrRestart <json> start or restart JSON file startOrReload <json> start or gracefully reload JSON file pid [app_name] return pid of [app_name] or all create return pid of [app_name] or all startOrGracefulReload <json> start or gracefully reload JSON file stop [options] <id|name|namespace|all|json|stdin...> stop a process restart [options] <id|name|namespace|all|json|stdin...> restart a process scale <app_name> <number> scale up/down a process in cluster mode depending on total_number param profile:mem [time] Sample PM2 heap memory profile:cpu [time] Profile PM2 cpu reload <id|name|namespace|all> reload processes (note that its for app using HTTP/HTTPS) id <name> get process id by name inspect <name> inspect a process delete|del <name|id|namespace|script|all|json|stdin...> stop and delete a process from pm2 process list sendSignal <signal> <pm2_id|name> send a system signal to the target process ping ping pm2 daemon - if not up it will launch it updatePM2 update in-memory PM2 with local PM2 update (alias) update in-memory PM2 with local PM2 install|module:install [options] <module|git:/> install or update a module and run it forever module:update <module|git:/> update a module and run it forever module:generate [app_name] Generate a sample module in current folder uninstall|module:uninstall <module> stop and uninstall a module package [target] Check & Package TAR type module publish|module:publish [options] [folder] Publish the module you are currently on set [key] [value] sets the specified config <key> <value> multiset <value> multiset eg "key1 val1 key2 val2 get [key] get value for <key> conf [key] [value] get / set module config values config <key> [value] get / set module config values unset <key> clears the specified config <key> report give a full pm2 report for https://github.com/Unitech/pm2/issues link [options] [secret] [public] [name] link with the pm2 monitoring dashboard unlink unlink with the pm2 monitoring dashboard monitor [name] monitor target process unmonitor [name] unmonitor target process open open the pm2 monitoring dashboard plus|register [options] [command] [option] enable pm2 plus login Login to pm2 plus logout Logout from pm2 plus dump|save [options] dump all processes for resurrecting them later cleardump Create empty dump file send <pm_id> <line> send stdin to <pm_id> attach <pm_id> [comman] attach stdin/stdout to application identified by <pm_id> resurrect resurrect previously dumped processes unstartup [platform] disable the pm2 startup hook startup [platform] enable the pm2 startup hook logrotate copy default logrotate configuration ecosystem|init [mode] generate a process conf file. (mode = null or simple) reset <name|id|all> reset counters for process describe <name|id> describe all parameters of a process desc <name|id> (alias) describe all parameters of a process info <name|id> (alias) describe all parameters of a process show <name|id> (alias) describe all parameters of a process env <id> list all environment variables of a process id list|ls list all processes l (alias) list all processes ps (alias) list all processes status (alias) list all processes jlist list all processes in JSON format sysmonit start system monitoring daemon slist|sysinfos [options] list system infos in JSON prettylist print json in a prettified JSON monit launch termcaps monitoring imonit launch legacy termcaps monitoring dashboard|dash launch dashboard with monitoring and logs flush [api] flush logs reloadLogs reload all logs logs [options] [id|name|namespace] stream logs file. Default stream all logs kill kill daemon pull <name> [commit_id] updates repository for a given app forward <name> updates repository to the next commit for a given app backward <name> downgrades repository to the previous commit for a given app deepUpdate performs a deep update of PM2 serve|expose [options] [path] [port] serve a directory over http via port autoinstall examples display pm2 usage examples *
pi@raspberrypi:~/MagicMirror $