Skip to content

Title: MeshCore Virtual Node: config/admin commands silently dropped with unhandled frame: code=142 #3904

Description

@djvdberg94-hash

Environment

  • MeshMonitor version: 4.12.3 (Docker, ghcr.io/yeraze/meshmonitor:latest)
  • Deployment: Docker Compose on Ubuntu 24 VM (Proxmox), device passed through via USB
  • MeshCore source: USB/Serial, device type Companion, firmware v1.16.0-07a3ca9
  • Hardware: Seeed XIAO nRF52840 (companion_radio_usb build)
  • MeshCore mobile app: meshcore-flutter
  • Virtual Node: enabled, port 5000, connecting over LAN WiFi

Summary

Connecting the MeshCore mobile app to a MeshMonitor-managed MeshCore Virtual Node works for read operations and messaging (nodes/contacts visible, messages send fine), but any config-mutating action from the app (e.g. changing radio params, device settings) fails silently on the app side with no clear error.

Confirmed not a permissions issue

allowAdminCommands is set to true on the source config, confirmed via direct API query:

"virtualNode": {
  "enabled": true,
  "port": 5000,
  "allowAdminCommands": true
}

Note: this field currently has no corresponding checkbox in the Edit Source dialog for MeshCore sources in the web UI — only Meshtastic TCP sources seem to render it. Had to PUT the full source object via a browser console fetch to set it, since PATCH isn't a supported method on /api/sources/{id} — only PUT. Might be worth a separate issue/PR for the missing UI control.

Logs

Every attempted config action produces repeated log lines like:

unhandled frame: code=142 [
142, 48, 206, 0, 146, 56, 51, 236, 114,
35, 200, 84, 213, 132, 9, 198, 239, 221,
...
]

This appears immediately after AppStart from mcvn-N (app "meshcore-flutter") → SelfInfo for "DJ_Meshcore_Base", and repeats for each attempted action. Messaging (send_msg etc.) works normally and produces no such warnings — this only happens for what appear to be config/admin frame types.

Expected behavior

Either the config command is forwarded to the physical node (per docs: "Enabling Allow admin commands forwards those configuration commands through to the real node"), or the app receives an explicit rejection/error it can surface to the user — rather than the request being silently dropped with only a server-side log entry.

Steps to reproduce

  1. Add a MeshCore source (USB, Companion) in MeshMonitor
  2. Enable Virtual Node, set allowAdminCommands: true
  3. Connect the MeshCore mobile app to the VN over WiFi
  4. Attempt any settings change from the app (e.g. rename node, change radio params)
  5. Action fails/hangs in the app; server log shows unhandled frame: code=142

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions