Skip to main content

Troubleshooting

Find your symptom in the tables below. The links go to the full details. To reset the state of the integration, reload the entry. The Reload command is in the three-dot menu of the entry.

Enable debug logging​

To keep debug logging after a restart:

  1. Add this to configuration.yaml:

    logger:
    logs:
    custom_components.meshcore: debug
  2. Restart Home Assistant.

To enable debug logging until the next restart, run this action:

action: logger.set_level
data:
custom_components.meshcore: debug

To find the log lines:

  1. Make the problem occur again.
  2. Go to Settings > System > Logs.
  3. Search for meshcore.

Traffic policy decisions, uploads and route changes also show at the info level.

CAUTION: Disable debug logging after the diagnosis. Debug logging makes the log file large.

Connection​

SymptomCauseFix
Setup or Reconfigure shows "Failed to connect"No connection in 10 seconds, or no node information from the companionCheck the cable, power, port, address and firmware. USB needs the USB companion firmware. BLE needs the Bluetooth companion firmware. See Installation.
After a restart, the entry does not load. Log: Failed to connect to MeshCore device at <address> after 3 attempts.3 connection attempts failedCheck the companion and the address in the message (USB path, BLE address or TCP host and port). Home Assistant retries the setup later.
Node Status is offline or unavailable. Log: MeshCore link lost (...); starting recovery.The link to the companion is lostThe integration reconnects with waits of 5, 10, 20, 40 and then 60 seconds. Check the power, cable or network. If it does not recover, reload the entry.
BLE through a Bluetooth proxy does not connectThe proxy does not pass the MeshCore PIN pairingUse a Bluetooth adapter on the host, or a BLE to TCP bridge
USB failsWrong port, no permission, or Bluetooth firmwareCheck the path (for example /dev/ttyUSB0), the permissions and the firmware
TCP failsWrong host or port, or a firewallCheck the host, the port (default 5000) and the network
Repair issue "MeshCore public key changed"A companion with a different public key is on the connectionThe entity ID prefixes changed. Update your automations and dashboards, then dismiss the issue.
After a downgrade to 2.x, the entry does not load3.0 migrated the entry to version 4Restore the backup from before the upgrade. See Upgrade to 3.0.

Setup and adding nodes​

SymptomCauseFix
"Device is already configured"An entry for this companion existsUse Reconfigure on that entry
"No repeaters found" or "No client devices found"No contacts of that node typeWait for adverts, or add the nodes to the companion. Then open the form again.
Add Repeater Station shows "Contact not found"The node is a discovered contactAdd the node to the companion first. See Contact Management.
"Device not connected"The companion is not connectedFix the connection, then submit again
"Failed to log in to repeater"Wrong password, or no answerCheck the password, power and range. For a node without a password, check that its ACL allows your companion.
"Mesh traffic <lane> lane is empty. Try again in <seconds> seconds."The lane has no credit for the loginWait for the time in the message. Then submit again. See Mesh Traffic Policy.
A tracked client never answersNot an added contact, or its ACL does not allow your companionAdd the client to the companion. Check its ACL.

Repeaters and polling​

SymptomCauseFix
Repeater sensors unavailableNo status response in 3 x the interval (6 h at default). After a restart, until the first response.Check the Request Failures and Online sensors, then the rows below
Telemetry sensors unavailable or missingNo reading in 3 x the interval. Sensors appear only at the first reading.Wait one poll cycle. For a repeater, enable Enable Telemetry Polling.
Online is offNo successful request in 2.5 x the intervalSee the rows for failed polls
Log: Login to repeater myrepeater failed or timed outThe password changed, or no answerEnter the new password in Manage Monitored Devices
Request Failures increases oftenThe node does not answer, because of a weak radio link or a bad route. A poll that waits for credit is not a failure.Look at Path Length and Routing Path. To use a better route, see Pin a route.
Route healing finds the same weak routeThe integration keeps the first route that answersSet the route with change_contact_path, then enable Disable Path Reset. See Pin a route.
A node gets no more polls. Log: ... no successful requests in 120.0 hours. Automatically disabling ....Auto-disableEdit the node in Manage Monitored Devices and select Submit, or wait for its next advert. See Auto-disable.
No firmware version on the repeater deviceNo credit, or the query timed outPress Refresh firmware version
No neighbor sensorsEnable Neighbor Entities is off, firmware older than 1.14.0, or no successful status pollEnable the option and wait for a status poll. See Repeater Neighbors.
A neighbor sensor is unavailableNot heard for 72 hoursNo fix is necessary. Enable Auto-Remove Stale Neighbors to remove old neighbors.

Traffic policy​

For installs from 2.x that still use the deprecated Legacy policy, see Legacy traffic policy.

SymptomCauseFix
A service call or execute_command fails with Mesh traffic <lane> lane is empty; try again in <seconds> secondsThe lane has no credit. A service call cannot wait.Wait for the time in the message. Send fewer requests. See When a lane is empty.
An automation stops at a send actionThe lane error stops itSet continue_on_error: true on the action
A poll is late. Log: Deferring status for myrepeater (flood lane empty, next at ...).The flood lane is empty. No failure is recorded.No fix is necessary. Track fewer nodes that have no route.
Request Rate Limiter is often at 0The routed requests to your tracked nodes use the credits of the direct lane faster than the lane refills (120 credits each hour)Increase Telemetry Refresh Rate (seconds) or Update Frequency (seconds). Disable Enable Telemetry Polling on the repeaters that do not need it. See Monitor the budget.

Messages and delivery​

SymptomCauseFix
Last Message Delivery shows 0 RepeatersThe companion heard no repeatNo fix is necessary. The count shows only what the companion heard.
Unconfirmed for a channel messageThe message is too long to report repeatsSend a shorter message
Unconfirmed for a direct messageNo acknowledgement before the timeoutCheck the range and the route to the recipient
A message is not sent and no error showsMost send failures do not raise an errorTrigger on meshcore_message_send_failed and read reason. See Services.
reason: contact_not_foundThe contact is not on the companion, or the name does not matchRun get_contacts and check added_to_node
A message is missing from the logbookNot connected, Retrieve queued incoming messages is off, or a direct message waits for the ACKCheck the connection and the setting
Sender name is null or Unknown, or a contact has no message entityThe sender is not a contact of the companionAdd the sender to the companion
A phone that shares the companion gets no messagesHome Assistant reads the message queueDisable Retrieve queued incoming messages. See Share the companion with a phone.
set_channel for a hashtag channel sets the wrong nameYAML read # as a commentPut the full command in quotes

Contacts​

SymptomCauseFix
Hundreds of contact sensors stay discoveredEntity per contact mode on a dense meshSelect Data only, or enable Limit Discovered Contacts. See Contact Management.
Contact sensors are unavailableThe contact is in no contact listRun meshcore.cleanup_unavailable_contacts
A contact shows stale but the node is activeNo advert in 12 hours, or the node clock is wrongCheck the clock of the node
add_contact returns pubkey_prefix_too_shortFewer than 6 charactersUse the 12-character prefix
Add Contact does nothing. Log: No contact selected.No contact selectedSelect a contact, then press the button again
The discovered contact select is emptyContact Discovery Mode is DisabledSelect Entity per contact or Data only
Add Contact or Remove Contact fails with UnauthorizedThe user is not an administratorUse an administrator account

MQTT and map upload​

SymptomCauseFix
A broker connection sensor stays offThe broker did not start or cannot connectSearch the log for [MQTT1] to [MQTT4]. See MQTT Upload.
[MQTTn] Disabled: Let's Mesh broker requires a non-default IATA codeBroker IATA Code is XYZSet a real region code
[MQTTn] Private key export disabled on firmware or Map Auto Uploader: cannot signThe firmware refuses the private key exportUse companion firmware with ENABLE_PRIVATE_KEY_EXPORT=1, then reload the entry
[MQTTn] Connect failed or Connection timed out after 10sThe broker refused or did not answerCheck the server, port, TLS settings and credentials
The map shows no nodes from your companionThe uploader is off, or no repeater, room server or sensor node advertsEnable Enable Map Auto Uploader (map.meshcore.io). See Map Auto Uploader.
Map Auto Uploader: params rejectedThe map API refused the radio settingsCheck the radio settings of the companion
A node does not update on the mapEach node uploads a maximum of one time each hourWait one hour

Events and automations​

SymptomCauseFix
An automation runs two times for each direct message sentmeshcore_message_sent fires two timesIgnore the event with progressive: true. See Automation.
A reply automation answers itselfmeshcore_message also fires for sent messagesIgnore outgoing: true
repeater_count is always 0 on an outgoing channel meshcore_messageThe count arrives laterUse meshcore_delivery_update with progressive: false. See Events.
An automation runs for all companionsNo entry filterFilter on entry_id or device_id
An automation drops a message that arrives soon after anothermode: singleUse mode: queued
channel_secret or secret shows <redacted>Expose Node Secrets in Events is offEnable it only on a private system. See Events.
ambiguous_config_entryMore than one entry and no entry_idSet entry_id. See Services.
The command '...' is not available through this integrationThe command resets the node, replaces its identity or sends raw framesDo not use these commands. See CLI Command Reference.
Log: ... is a removed meshcore internal, called from <file>:<line>Another integration uses a name that 3.0 removedUpdate the integration that the line names