A MagicMirror² module that provides real-time notifications and status updates from your Bambu Lab printer (tested with A1, should also work with A1 Mini, X1 and P1 series).
It connects to the printer’s local MQTT broker and shows toast notifications and a status panel for print events like started, paused, resumed, canceled, finished, and error states.
- 📡 Real-time printer status via MQTT over TLS
- 🔔 Toast notifications for:
- Print started
- Print paused
- Print canceled
- Print finished
- Error conditions
- 📊 Inline status panel:
- Current state (Idle, Preparing, Printing, Paused, Canceled, Error, Finished)
- Job progress bar (%)
- Layer countdown
- Current file name
To install in MagicMirror modules folder:
cd ~/MagicMirror/modules
git clone https://github.com/LuckyDuckTx/MMM-BambuLabNotify.git
cd MMM-BambuLabNotify
npm installNeed to update your BambuLabNofity module?
cd ~/MagicMirror/modules/MMM-BambuLabNotify
git pull
npm installAdd the Module to config.js:
-
🔑 Getting your credentials
- IP Address: Found in your Bambu printer’s settings (Settings > Lan Only section).
- Access Code: Found in your Bambu printer’s settings (Settings > Lan Only section).
- Serial Number: Printed on your printer label and in Bambu Studio (under > Device > Update ), or in the Bambu Handy app (Settings > Firmware Version).
-
Edit your
MagicMirror/config/config.jsfile and add the following configuration:
{
module: "MMM-BambuLabNotify",
position: "bottom_right",
config: {
printerName: "BambuLab A1",
host: "192.168.x.xxx", // Printer IP address
password: "YOUR-ACCESS-CODE", // Access Code from printer
serial: "YOUR-PRINTER-SERIAL", // Serial Number from printer
// Toast Message options
toastDurationMs: 60000,
toastStyle: "Modal",
showOnStart: true,
showOnDone: true,
showOnError: true,
showOnPause: true,
showOnIdle: true,
showOnCancel: true,
hideWhileOff: false,
hideWhileIdle: false
}
}| Option | Type | Default | Description |
|---|---|---|---|
printerName |
String | BambuLab Printer |
Name shown in the panel and toasts. |
host |
String | 127.0.0.1 |
IP Address - Found in your Bambu printer’s settings (Settings > Lan Only section). |
password |
String | Access Code - Found in your Bambu printer’s settings (Settings > Lan Only section). | |
serial |
String | Serial Number - Printed on your printer label and in the Bambu Handy app (Settings > Firmware Version). | |
| ** Toasts Messages ** | |||
toastDurationMs |
Number | 60000 |
How long toast notifications remain visible (milliseconds). |
toastStyle |
String | modal |
Where the toast messages display. "modal" (center + overlay) or "corner" (top-right) |
showOnStart |
Boolean | true |
Show Toast while connecting |
showOnDone |
Boolean | true |
Show Toast when print is finished |
showOnError |
Boolean | true |
Show Toast when an error or cancel occurs |
showOnIdle |
Boolean | true |
Show Toast when printer becomes idle |
showOnPause |
Boolean | true |
Show Toast when printer is paused |
showOnCancel |
Boolean | true |
Show Toast when print is canceled |
hideWhileOff |
Boolean | false |
Hide status when the printer is offline |
hideWhileIdle |
Boolean | false |
Hide status when the printer is idle |
| ** Advanced Settings ** | You shouldn't need to change these unless you're debugging | ||
port |
Number | 8883 |
MQTT Port on printer |
user |
String | bblp |
MQTT user on printer |
idleAfterCancelMs |
Number | 60000 |
Time after cancel before panel resets to Idle (milliseconds). |
progressStep |
Number | 5 |
Bucket size for progress updates. Example: 5 → updates at 0%, 5%, 10% … |
debounceMs |
Number | 15000 |
Minimum time between identical toast notifications (prevents spam). |
logRaw |
Boolean | false |
If true, logs every raw MQTT message to console (very noisy). |
logOnChange |
Boolean | false |
Logs only when state changes (recommended for debugging). |
idleTimeoutMs |
Number | 120000 |
Auto-reset to idle if no messages received for this duration (ms). |
doneQuietWindowMs |
Number | 120000 |
Suppresses ghost finish/error events if printer hasn’t been recently active (helps after reconnects). |
assumeIdleAfterMs |
Number | 8000 |
Fallback: if nothing arrives after connect, assume Idle to clear “Connecting…” state. |
- Works locally on LAN only - MagicMirror and Printer must be on same LAN.
- Printer does not need to be in
LAN Only Mode. - Tested with Bambu Lab A1 (Aug 2025 firmware version 01.06.00.00).
- All state changes and notifications are logged.
This project is licensed under the MIT License.
- Created using ChatGPT 5.0 (OpenAI)
- Module inspired and tested by LuckyDuckTx.







