This page covers common issues and how to resolve them.
The first step for any problem is to enable debug logging. Add this to your s2m.conf and restart:
DEBUG_LOG=TrueDebug output is written to both the log file and the console. This makes it much easier to see what system2mqtt is doing at each step.
Symptoms: Log shows "Connection refused" or the application retries indefinitely.
Causes and fixes:
- Wrong broker address — verify
MQTT_HOSTandMQTT_PORTins2m.conf. - Broker not running — confirm your MQTT broker is running:
# For Mosquitto: sudo systemctl status mosquitto - Firewall blocking port 1883 — check that port 1883 is open on the broker host.
- Authentication failure — if your broker requires credentials, set
MQTT_USERandMQTT_PASSWORD. If it does not require credentials, remove those lines. - Broker only listens on localhost — if your broker is on the same machine but only bound to
127.0.0.1, either useMQTT_HOST=localhostor configure the broker to listen on0.0.0.0.
Symptoms: HA_DISCOVERY=True is set but nothing shows up in Home Assistant.
Causes and fixes:
- MQTT integration not configured — go to Settings → Devices & Services → Add Integration and add the MQTT integration pointing to your broker.
- Discovery prefix mismatch — the default prefix is
homeassistant. If your Home Assistant uses a different prefix, updateHA_DISCOVERY_BASEto match. - Broker mismatch — system2mqtt and Home Assistant must be connected to the same MQTT broker.
- Discovery messages not published yet — discovery messages are only published on the first publish cycle. Wait for the first
PUBLISH_PERIODinterval, or restart system2mqtt. - Check with MQTT Explorer — subscribe to
homeassistant/#on your broker to verify discovery messages are being published.
Symptoms: cpu/temperature topic is never published, or shows 0.
Causes and fixes:
- Linux: Requires temperature sensors exposed via
/sys/class/thermal. This is common on most Linux systems. If missing, your hardware or kernel drivers may not support it. - macOS: Requires
istatsto be installed:sudo gem install iStats
- Docker: Temperature sensors are not accessible from inside a container.
- Proxmox mode: CPU temperature is not available via the Proxmox API.
Symptoms: ARGON=True is set but disks/temperature/<disk> topics are not published.
Causes and fixes:
smartmontoolsnot installed:sudo apt install smartmontools
- Insufficient permissions —
smartctlrequires root orsudoaccess. Run system2mqtt with elevated privileges, or configuresudoersto allow the user to runsmartctlwithout a password:youruser ALL=(ALL) NOPASSWD: /usr/sbin/smartctl
Symptoms: disks/storage/<label> topics are missing for some or all disks.
Causes and fixes:
- Disk is excluded — check
STORAGE_EXCLUDEin your config. The disk label may match an excluded entry. STORAGE_INCLUDEis set — ifSTORAGE_INCLUDEis configured, only explicitly listed disks are reported. Add the missing disk to the list.- Label mismatch — enable
DEBUG_LOG=Trueto see the exact disk labels that are detected at startup.
Symptoms: Log shows API errors or authentication failures when PVE_SYSTEM=True.
Causes and fixes:
- Wrong credentials — verify
PVE_USERandPVE_PASSWORD. - Wrong host — verify
PVE_HOSTis reachable from the machine running system2mqtt (ping <PVE_HOST>). - Wrong node name — verify
PVE_NODE_NAMEmatches the node name shown in the Proxmox UI. - Proxmox API port blocked — the Proxmox API uses port
8006. Ensure it is accessible. - User lacks permissions — ensure the Proxmox user has at least
Sys.AuditandDatastore.Auditprivileges on the/path.
Symptoms: Error during startup like venv creation failed or pip install failed.
Causes and fixes:
- Python 3 not found — ensure
python3is in yourPATH. venvmodule not available — install it:# Debian/Ubuntu: sudo apt install python3-venv- Disk full — check available disk space with
df -h. - Permission error — ensure you have write access to the system2mqtt directory.
- Force reinstall — if the virtual environment is corrupted, force a rebuild:
python3 run.py --force-reinstall
Symptoms: No log file appears in ./logs/.
Causes and fixes:
- The log directory is created automatically. If there is a permission issue, set
LOG_DIRto a path where you have write access:LOG_DIR=/tmp/s2m-logs - When running in debug mode, log output is also printed to the console, so you can see messages even without a log file.
- Check the GitHub Issues page for known issues and solutions.
- Enable
DEBUG_LOG=Trueand include the log output when reporting a bug. - Provide your
s2m.conf(with passwords removed) when asking for help.