Meshtastic PortNum Registry: Application Port Numbers & Packet Types
Quick answer
What is a Meshtastic PortNum?
The on-air application registry for Meshtastic, sourced verbatim from
meshtastic/protobufs → portnums.proto (as of 2026-07-21).
Behaviour that is not in the .proto (per-port ACK semantics, MQTT bridging rules) is intentionally left to
the firmware docs rather than guessed here; MQTT relevance is noted only where the .proto states it.
| Dec | Hex | PortNum | Range | Payload / purpose |
|---|---|---|---|---|
| 0 | 0x0 |
UNKNOWN_APP |
Sentinel | A packet from outside the mesh, in a form the mesh does not understand. |
| 1 | 0x1 |
TEXT_MESSAGE_APP |
Core (built-in, 0-63) | Plain UTF-8 text messaging — the default chat payload. |
| 2 | 0x2 |
REMOTE_HARDWARE_APP |
Core (built-in, 0-63) | Built-in GPIO / remote hardware control example app. |
| 3 | 0x3 |
POSITION_APP |
Core (built-in, 0-63) | Position updates via the Position protobuf. |
| 4 | 0x4 |
NODEINFO_APP |
Core (built-in, 0-63) | Node/user identity via the User protobuf. |
| 5 | 0x5 |
ROUTING_APP |
Core (built-in, 0-63) | Protocol control (acks, routing errors) via the Routing protobuf. |
| 6 | 0x6 |
ADMIN_APP |
Core (built-in, 0-63) | Remote administration via the AdminMessage protobuf. |
| 7 | 0x7 |
TEXT_MESSAGE_COMPRESSED_APP |
Core (built-in, 0-63) | TEXT_MESSAGE payloads compressed with Unishox2. |
| 8 | 0x8 |
WAYPOINT_APP |
Core (built-in, 0-63) | Shared map waypoints via the Waypoint protobuf. |
| 9 | 0x9 |
AUDIO_APP |
Core (built-in, 0-63) | Encapsulated Codec2 voice packets (2.4 GHz-class bandwidth). |
| 10 | 0xA |
DETECTION_SENSOR_APP |
Core (built-in, 0-63) | Text messages emitted by detection-sensor modules. |
| 11 | 0xB |
ALERT_APP |
Core (built-in, 0-63) | Text format for critical alerts (bypasses normal notification muting). |
| 12 | 0xC |
KEY_VERIFICATION_APP |
Core (built-in, 0-63) | Handles public-key verification requests between nodes. |
| 13 | 0xD |
REMOTE_SHELL_APP |
Core (built-in, 0-63) | Primitive remote shell access. |
| 32 | 0x20 |
REPLY_APP |
Core (built-in, 0-63) | A "ping" service that echoes any packet it receives. |
| 33 | 0x21 |
IP_TUNNEL_APP |
Core (built-in, 0-63) | Experimental IP-over-mesh tunnel (Python). |
| 34 | 0x22 |
PAXCOUNTER_APP |
Core (built-in, 0-63) | Paxcounter (people-counting) payloads. |
| 35 | 0x23 |
STORE_FORWARD_PLUSPLUS_APP |
Core (built-in, 0-63) | Git-style message-chain store-forward for Linux-native nodes. |
| 36 | 0x24 |
NODE_STATUS_APP |
Core (built-in, 0-63) | A short status string broadcast periodically by a node. |
| 37 | 0x25 |
MESH_BEACON_APP |
Core (built-in, 0-63) | Beacon-mode broadcast advertising text + channel/preset offers. |
| 64 | 0x40 |
SERIAL_APP |
Module (registered, 64-127) | Bridges a hardware serial (RX/TX) interface onto the mesh. |
| 65 | 0x41 |
STORE_FORWARD_APP |
Module (registered, 64-127) | Store-and-forward message persistence. |
| 66 | 0x42 |
RANGE_TEST_APP |
Module (registered, 64-127) | Range-testing module (distance/packet-loss measurement). |
| 67 | 0x43 |
TELEMETRY_APP |
Module (registered, 64-127) | Device / environment / power telemetry framework. |
| 68 | 0x44 |
ZPS_APP |
Module (registered, 64-127) | Experimental GPS-less position estimation. |
| 69 | 0x45 |
SIMULATOR_APP |
Module (registered, 64-127) | Linux LoRa-simulator application. |
| 70 | 0x46 |
TRACEROUTE_APP |
Module (registered, 64-127) | Traceroute — reveals the hop path a packet takes. |
| 71 | 0x47 |
NEIGHBORINFO_APP |
Module (registered, 64-127) | Aggregated info about a node's direct neighbours (network edges). |
| 72 | 0x48 |
ATAK_PLUGIN |
Module (registered, 64-127) | Official Meshtastic ATAK (Android Team Awareness Kit) plugin. |
| 73 | 0x49 |
MAP_REPORT_APP |
Module (registered, 64-127) | Unencrypted node info for public map apps — sent over MQTT. |
| 74 | 0x4A |
POWERSTRESS_APP |
Module (registered, 64-127) | Automated power-testing / stress module. |
| 75 | 0x4B |
LORAWAN_BRIDGE |
Module (registered, 64-127) | Transports LoRaWAN payloads with RF metadata. |
| 76 | 0x4C |
RETICULUM_TUNNEL_APP |
Module (registered, 64-127) | Tunnel interface for the Reticulum Network Stack. |
| 77 | 0x4D |
CAYENNE_APP |
Module (registered, 64-127) | Cayenne Low Power Payload (LPP) telemetry transport. |
| 78 | 0x4E |
ATAK_PLUGIN_V2 |
Module (registered, 64-127) | ATAK plugin v2 (TAKPacketV2 + zstd compression). |
| 79 | 0x4F |
LORA_OTA_APP |
Module (registered, 64-127) | Signed firmware updates over LoRa (OTA). |
| 112 | 0x70 |
GROUPALARM_APP |
Module (registered, 64-127) | GroupAlarm alert-message integration transport. |
| 256 | 0x100 |
PRIVATE_APP |
Private / custom (256-511) | Reserved for private app development without rebuilding protobufs. |
| 257 | 0x101 |
ATAK_FORWARDER |
Private / custom (256-511) | ATAK forwarder module (libcotshrink). |
| 511 | 0x1FF |
MAX |
Range limit | Upper bound of the PortNum allocation space (not an app). |
How the ranges work
- 0-63 — core: built into every Meshtastic firmware (text, position, nodeinfo, routing, admin, telemetry lives just above at 67).
- 64-127 — modules: optional registered modules (serial, store-and-forward, range test, traceroute, ATAK, map report, LoRaWAN bridge, OTA).
- 256-511 — private/custom: use
PRIVATE_APP(256) and above for your own applications; they will never clash with an official port.
Related
MeshPacket & Data field reference (the packet envelope that carries this portnum) · Meshtastic encryption & PSK model · device comparison · LoRa regional settings · Nostr event-kinds reference (the Nostr analogue of this page) · range calculator.
Credit: the PortNum enum is defined and maintained by the Meshtastic project in meshtastic/protobufs (GPL-3.0). This page is a dated, human-readable index of that file.
Related products, repair, and setup paths
- Bitcoiner sovereignty hub
- the plebs sovereign stack
- Nostr for Bitcoiners
- run your own Nostr relay
- getting started with Meshtastic
- Bitcoin over Meshtastic mesh networks
- open-source hardware tools directory
- off-grid Bitcoin mining
Last reviewed July 21, 2026.
