Files
Meshtastic-Android/main/srp/user/discovery.html
T

9 lines
49 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <link rel="stylesheet" href="/Meshtastic-Android/main/assets/css/just-the-docs-default.css"> <link rel="stylesheet" href="/Meshtastic-Android/main/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet"> <style id="jtd-nav-activation"> .site-nav ul li a { background-image: none; } </style> <script src="/Meshtastic-Android/main/assets/js/vendor/lunr.min.js"></script> <script src="/Meshtastic-Android/main/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.9.0 --> <title>Local Mesh Discovery | Meshtastic Android</title> <meta name="generator" content="Jekyll v4.4.1" /> <meta property="og:title" content="Local Mesh Discovery" /> <meta property="og:locale" content="srp" /> <meta name="description" content="Explore your mesh network — the Local Mesh Discovery scanner, traceroute paths, neighbor maps, and node discovery tools." /> <meta name="twitter:description" property="og:description" content="Explore your mesh network — the Local Mesh Discovery scanner, traceroute paths, neighbor maps, and node discovery tools." /> <link rel="canonical" href="/Meshtastic-Android/main/srp/user/discovery.html" /> <meta property="og:url" content="/Meshtastic-Android/main/srp/user/discovery.html" /> <meta property="og:site_name" content="Meshtastic Android" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Local Mesh Discovery" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Explore your mesh network — the Local Mesh Discovery scanner, traceroute paths, neighbor maps, and node discovery tools.","headline":"Local Mesh Discovery","url":"/Meshtastic-Android/main/srp/user/discovery.html"}</script> <!-- End Jekyll SEO tag --> <!-- Inter font from Google Fonts --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> <style> /* M3-inspired typography */ :root { --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace; } body, .site-title, .search-input { font-family: var(--font-sans) !important; } code, pre, .highlight { font-family: var(--font-mono) !important; font-size: 0.875em; } /* M3 surface elevation & rounding */ .main-content table { border-radius: 12px; overflow: hidden; } .main-content blockquote { border-radius: 12px; padding: 1rem 1.25rem; border-left-width: 4px; } .main-content pre { border-radius: 12px; } .main-content code { border-radius: 6px; padding: 0.15em 0.4em; } /* Smooth transitions for theme switching */ body, .side-bar, .main, .main-content, .site-header, .search-input, .search-results, a { transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; } /* Theme toggle button styling */ .theme-toggle { background: none; border: 1px solid var(--border-color, #D5D6E0); border-radius: 20px; padding: 6px 12px; cursor: pointer; font-family: var(--font-sans); font-size: 0.75rem; font-weight: 500; display: inline-flex; align-items: center; gap: 6px; color: inherit; margin: 0 auto; transition: background-color 0.2s ease, border-color 0.2s ease; } .theme-toggle:hover { background-color: rgba(128, 128, 128, 0.1); } .theme-toggle-wrap { text-align: center; padding: 12px 0 4px; } /* Heading weight refinement */ h1, h2, h3, h4, h5, h6 { font-weight: 600; letter-spacing: -0.01em; } h1 { font-weight: 700; letter-spacing: -0.02em; } /* Smooth anchor scroll */ html { scroll-behavior: smooth; } /* Language switcher */ .language-switcher { display: inline-block; position: relative; margin-left: 8px; } .language-switcher-btn { cursor: pointer; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); list-style: none; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; display: inline-flex; align-items: center; gap: 4px; transition: background-color 0.2s ease; } .language-switcher-btn:hover { background-color: rgba(128, 128, 128, 0.1); } .language-switcher[open] .language-switcher-list { display: block; } .language-switcher-list { position: absolute; top: 100%; right: 0; left: auto; z-index: 100; list-style: none; padding: 8px 0; margin: 4px 0 0; min-width: 140px; background: var(--body-background-color, #fff); border: 1px solid var(--border-color, #D5D6E0); border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .language-switcher-list li { padding: 0; } .language-switcher-list a { display: block; padding: 6px 16px; text-decoration: none; font-size: 0.85rem; color: inherit; } .language-switcher-list a:hover { background-color: rgba(103, 234, 148, 0.15); } /* Version switcher (shares the language-switcher dropdown styling) */ .version-switcher { margin-left: 8px; } .version-switcher[hidden] { display: none; } /* Link out to the upstream meshtastic.org docs */ .upstream-docs-link { display: inline-flex; align-items: center; margin-left: 8px; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); text-decoration: none; color: inherit; transition: background-color 0.2s ease; } .upstream-docs-link:hover { background-color: rgba(128, 128, 128, 0.1); } </style> <script> // Respect OS preference on first visit, then remember user choice (function() { var stored = localStorage.getItem('jtd-theme'); if (stored) return; // will be applied by jtd.setTheme below if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { localStorage.setItem('jtd-theme', 'meshtastic-dark'); } })(); </script> </head> <body> <a class="skip-to-main" href="#main-content">Skip to main content</a> <svg xmlns="http://www.w3.org/2000/svg" class="d-none"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE --> <symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"> <title id="svg-external-link-title">(external link)</title> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md --> <symbol id="svg-copy" viewBox="0 0 16 16"> <title>Copy</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> </svg> </symbol> <symbol id="svg-copied" viewBox="0 0 16 16"> <title>Copied</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16"> <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/> </svg> </symbol> </svg> <header class="side-bar"> <div class="site-header"> <a href="/Meshtastic-Android/main/" class="site-title lh-tight"> Meshtastic Android </a> <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false"> <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg> </button> </div> <nav aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="User Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/main/en/user.html" class="nav-list-link">User Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/onboarding.html" class="nav-list-link">Getting Started</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/onboarding.html" class="nav-list-link">Getting Started</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/connections.html" class="nav-list-link">Connexions</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/connections.html" class="nav-list-link">Connections</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/messages-and-channels.html" class="nav-list-link">Messages & Channels</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/messages-and-channels.html" class="nav-list-link">Messages & Channels</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/nodes.html" class="nav-list-link">Nœuds</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/nodes.html" class="nav-list-link">Nodes</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/node-metrics.html" class="nav-list-link">Node Metrics</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/node-metrics.html" class="nav-list-link">Node Metrics</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/map-and-waypoints.html" class="nav-list-link">Map & Waypoints</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/map-and-waypoints.html" class="nav-list-link">Map & Waypoints</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/settings-radio-user.html" class="nav-list-link">Settings — Radio & User</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/settings-radio-user.html" class="nav-list-link">Settings — Radio & User</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/settings-module-admin.html" class="nav-list-link">Settings — Modules & Admin</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/settings-module-admin.html" class="nav-list-link">Settings — Modules & Admin</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/tak.html" class="nav-list-link">TAK Integration</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/tak.html" class="nav-list-link">TAK Integration</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/mqtt.html" class="nav-list-link">MQTT</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/mqtt.html" class="nav-list-link">MQTT</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/discovery.html" class="nav-list-link">Découverte de maille locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/discovery.html" class="nav-list-link">Local Mesh Discovery</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/firmware.html" class="nav-list-link">Firmware Updates</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/firmware.html" class="nav-list-link">Firmware Updates</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/desktop.html" class="nav-list-link">Desktop App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/desktop.html" class="nav-list-link">Desktop App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/signal-meter.html" class="nav-list-link">How the Meshtastic Signal Meter Works</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/signal-meter.html" class="nav-list-link">How the Meshtastic Signal Meter Works</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/units-and-locale.html" class="nav-list-link">Units, Measurement & Locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/units-and-locale.html" class="nav-list-link">Units, Measurement & Locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/translate.html" class="nav-list-link">Translate the App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/translate.html" class="nav-list-link">Translate the App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/app-functions.html" class="nav-list-link">App Functions</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/widget.html" class="nav-list-link">Home Screen Widget</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/help-and-docs.html" class="nav-list-link">Help & In-App Docs</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/debug-logs.html" class="nav-list-link">Debug Logs</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Developer Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/main/en/developer.html" class="nav-list-link">Developer Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/architecture.html" class="nav-list-link">Architecture</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/codebase.html" class="nav-list-link">Codebase</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/adding-a-feature-module.html" class="nav-list-link">Adding a Feature Module</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/navigation-and-deep-links.html" class="nav-list-link">Navigation & Deep Links</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/transport.html" class="nav-list-link">Transport</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/persistence.html" class="nav-list-link">Persistence</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/testing.html" class="nav-list-link">Testing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/contributing.html" class="nav-list-link">Contributing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/measurement.html" class="nav-list-link">Measurement & Formatting</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/test-builds.html" class="nav-list-link">Test Builds & Obtainium</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/documentation-style.html" class="nav-list-link">Documentation Style</a></li></ul></li></ul> </nav> <div class="d-md-block d-sm-none"> <div class="site-footer"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </header> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search" role="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Meshtastic Android" autocomplete="off"> <label for="search-input" class="search-label"> <span class="sr-only">Search Meshtastic Android</span> <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg> </label> </div> <div id="search-results" class="search-results"></div> </div> <div class="theme-toggle-wrap"> <button class="theme-toggle" id="theme-toggle" aria-label="Toggle dark mode" title="Toggle light/dark theme" onclick="toggleMeshtasticTheme()"> <span id="theme-icon">🌙</span> <span id="theme-label">Dark</span> </button> <details class="language-switcher version-switcher" id="version-switcher" aria-label="Documentation version" hidden> <summary class="language-switcher-btn" title="Switch documentation version"> 🏷️ <span id="version-current"></span> </summary> <ul class="language-switcher-list" id="version-switcher-list"></ul> </details> <script> (function() { var baseurl = '/Meshtastic-Android/main'; var root = baseurl; var channel = 'latest'; // /main/, /vX.Y.Z/ or a prerelease snapshot like /v2.8.0-open.1/. var match = baseurl.match(/^(.*)\/(main|v\d+\.\d+\.\d+(?:-(?:open|closed)\.\d+)?)$/); if (match) { root = match[1]; channel = match[2]; } fetch(root + '/versions.json') .then(function(res) { return res.ok ? res.json() : Promise.reject(); }) .then(function(data) { var switcher = document.getElementById('version-switcher'); var list = document.getElementById('version-switcher-list'); var current = document.getElementById('version-current'); if (!switcher || !list || !current) return; // Keep the reader on the same page when switching channels; a page // that doesn't exist in the target version lands on the 404 page. var relativePath = location.pathname.slice(baseurl.length) + location.hash; var entries = []; if (data.latest) { entries.push({ id: 'latest', label: 'latest (v' + data.latest + ')', base: root }); } // Prereleases are documented ahead of general availability, so the track // is always spelled out — a reader must not mistake a closed-testing // snapshot for a shipped release. (data.prereleases || []).forEach(function(p) { entries.push({ id: p.dir, label: p.dir.replace(/^v/, 'v') + ' — ' + p.track + ' testing', base: root + '/' + p.dir }); }); if (data.hasMain) { entries.push({ id: 'main', label: 'main (unreleased snapshot)', base: root + '/main' }); } (data.versions || []).forEach(function(v) { entries.push({ id: 'v' + v, label: 'v' + v, base: root + '/v' + v }); }); var currentEntry = entries.filter(function(e) { return e.id === channel; })[0]; current.textContent = currentEntry ? currentEntry.label : channel; var others = entries.filter(function(e) { return e.id !== channel; }); if (others.length === 0) return; others.forEach(function(e) { var li = document.createElement('li'); var a = document.createElement('a'); a.href = e.base + relativePath; a.textContent = e.label; li.appendChild(a); list.appendChild(li); }); switcher.hidden = false; }) .catch(function() { /* no manifest (local build) — leave switcher hidden */ }); })(); </script> <details class="language-switcher" aria-label="Language options"> <summary class="language-switcher-btn" title="View in another language"> 🌐 <span class="lang-current">Српски (Ћирилица)</span> </summary> <ul class="language-switcher-list"> <li><a href="/Meshtastic-Android/main/en/user/discovery" lang="en">English</a></li> <li><a href="/Meshtastic-Android/main/ar-rSA/user/discovery" lang="ar-rSA" dir="rtl">العربية</a></li> <li><a href="/Meshtastic-Android/main/be-rBY/user/discovery" lang="be-rBY" >Беларуская</a></li> <li><a href="/Meshtastic-Android/main/bg-rBG/user/discovery" lang="bg-rBG" >Български</a></li> <li><a href="/Meshtastic-Android/main/ca-rES/user/discovery" lang="ca-rES" >Català</a></li> <li><a href="/Meshtastic-Android/main/cs-rCZ/user/discovery" lang="cs-rCZ" >Čeština</a></li> <li><a href="/Meshtastic-Android/main/de-rDE/user/discovery" lang="de-rDE" >Deutsch</a></li> <li><a href="/Meshtastic-Android/main/el-rGR/user/discovery" lang="el-rGR" >Ελληνικά</a></li> <li><a href="/Meshtastic-Android/main/es-rES/user/discovery" lang="es-rES" >Español</a></li> <li><a href="/Meshtastic-Android/main/et-rEE/user/discovery" lang="et-rEE" >Eesti</a></li> <li><a href="/Meshtastic-Android/main/fi-rFI/user/discovery" lang="fi-rFI" >Suomi</a></li> <li><a href="/Meshtastic-Android/main/fr-rFR/user/discovery" lang="fr-rFR" >Français</a></li> <li><a href="/Meshtastic-Android/main/ga-rIE/user/discovery" lang="ga-rIE" >Gaeilge</a></li> <li><a href="/Meshtastic-Android/main/gl-rES/user/discovery" lang="gl-rES" >Galego</a></li> <li><a href="/Meshtastic-Android/main/iw-rIL/user/discovery" lang="iw-rIL" dir="rtl">עברית</a></li> <li><a href="/Meshtastic-Android/main/hr-rHR/user/discovery" lang="hr-rHR" >Hrvatski</a></li> <li><a href="/Meshtastic-Android/main/ht-rHT/user/discovery" lang="ht-rHT" >Kreyòl Ayisyen</a></li> <li><a href="/Meshtastic-Android/main/hu-rHU/user/discovery" lang="hu-rHU" >Magyar</a></li> <li><a href="/Meshtastic-Android/main/is-rIS/user/discovery" lang="is-rIS" >Íslenska</a></li> <li><a href="/Meshtastic-Android/main/it-rIT/user/discovery" lang="it-rIT" >Italiano</a></li> <li><a href="/Meshtastic-Android/main/ja-rJP/user/discovery" lang="ja-rJP" >日本語</a></li> <li><a href="/Meshtastic-Android/main/ko-rKR/user/discovery" lang="ko-rKR" >한국어</a></li> <li><a href="/Meshtastic-Android/main/lt-rLT/user/discovery" lang="lt-rLT" >Lietuvių</a></li> <li><a href="/Meshtastic-Android/main/nl-rNL/user/discovery" lang="nl-rNL" >Nederlands</a></li> <li><a href="/Meshtastic-Android/main/no-rNO/user/discovery" lang="no-rNO" >Norsk</a></li> <li><a href="/Meshtastic-Android/main/pl-rPL/user/discovery" lang="pl-rPL" >Polski</a></li> <li><a href="/Meshtastic-Android/main/pt-rBR/user/discovery" lang="pt-rBR" >Português (Brasil)</a></li> <li><a href="/Meshtastic-Android/main/pt-rPT/user/discovery" lang="pt-rPT" >Português</a></li> <li><a href="/Meshtastic-Android/main/ro-rRO/user/discovery" lang="ro-rRO" >Română</a></li> <li><a href="/Meshtastic-Android/main/ru-rRU/user/discovery" lang="ru-rRU" >Русский</a></li> <li><a href="/Meshtastic-Android/main/sk-rSK/user/discovery" lang="sk-rSK" >Slovenčina</a></li> <li><a href="/Meshtastic-Android/main/sl-rSI/user/discovery" lang="sl-rSI" >Slovenščina</a></li> <li><a href="/Meshtastic-Android/main/sq-rAL/user/discovery" lang="sq-rAL" >Shqip</a></li> <li><a href="/Meshtastic-Android/main/sr-rLatn/user/discovery" lang="sr-rLatn" >Српски (Latinica)</a></li> <li><a href="/Meshtastic-Android/main/sv-rSE/user/discovery" lang="sv-rSE" >Svenska</a></li> <li><a href="/Meshtastic-Android/main/tr-rTR/user/discovery" lang="tr-rTR" >Türkçe</a></li> <li><a href="/Meshtastic-Android/main/uk-rUA/user/discovery" lang="uk-rUA" >Українська</a></li> <li><a href="/Meshtastic-Android/main/zh-rCN/user/discovery" lang="zh-rCN" >中文 (简体)</a></li> <li><a href="/Meshtastic-Android/main/zh-rTW/user/discovery" lang="zh-rTW" >中文 (繁體)</a></li> </ul> </details> <a class="upstream-docs-link" href="https://meshtastic.org/docs/" title="Official Meshtastic documentation (meshtastic.org)">Meshtastic Docs ↗</a> </div> <script> function toggleMeshtasticTheme() { var current = localStorage.getItem('jtd-theme') || 'meshtastic'; var next = (current === 'meshtastic-dark') ? 'meshtastic' : 'meshtastic-dark'; if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(next); } localStorage.setItem('jtd-theme', next); var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (next === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (next === 'meshtastic-dark') ? 'Light' : 'Dark'; } } // Apply stored/OS theme on page load (function() { var theme = localStorage.getItem('jtd-theme') || 'meshtastic'; // Sync toggle label immediately var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (theme === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (theme === 'meshtastic-dark') ? 'Light' : 'Dark'; } // Apply theme once jtd is ready function tryApply() { if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(theme); } else { setTimeout(tryApply, 50); } } tryApply(); })(); </script> </div> <div class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/Meshtastic-Android/main/en/user.html">User Guide</a></li> <li class="breadcrumb-nav-list-item"><span>Local Mesh Discovery</span></li> </ol> </nav> <div id="main-content" class="main-content"> <main> <div class="locale-page-banner" > <p class="locale-notice"> 🌐 <strong>Српски (Ћирилица)</strong> — Community translation <a href="/Meshtastic-Android/main/en/user/discovery">View in English</a> </p> </div> <div lang="srp"> <h1 id="local-mesh-discovery"> <a href="#local-mesh-discovery" class="anchor-heading" aria-labelledby="local-mesh-discovery"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Local Mesh Discovery </h1> <p>Discovery tools help you understand <strong>how</strong> your mesh network is connected — which nodes can hear each other, what paths messages take, and where bottlenecks or weak links exist.</p> <p>The app offers two complementary approaches:</p> <ul> <li><strong>Local Mesh Discovery (Scanner)</strong> — an automated mode that cycles your connected node through different LoRa presets, listens on each, and ranks which preset performs best at your location.</li> <li><strong>Manual exploration</strong> — traceroute, Neighbor Info, and the node list, which you can use at any time to investigate specific paths and topology.</li> </ul> <h2 id="local-mesh-discovery-scanner"> <a href="#local-mesh-discovery-scanner" class="anchor-heading" aria-labelledby="local-mesh-discovery-scanner"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Local Mesh Discovery (Scanner) </h2> <p>Local Mesh Discovery is a dedicated scanning mode that helps you find the best LoRa modem preset for your location and see which nodes are active on each preset. It cycles your connected node through one or more presets you choose, dwells on each one — listens for a set time — to collect packets, then analyzes and ranks the results.</p> <p>Connect your node, then open <strong>Settings → Advanced → Local Mesh Discovery</strong>. On Android the <strong>Advanced</strong> section appears only for a locally connected node, never over remote admin, and stays grayed out until the app has finished reading the node’s configuration. On a managed device its entries are disabled, except <strong>Debug Panel</strong>, which reads app-local logs and stays available. On desktop, Local Mesh Discovery has its own entry on the Settings screen, with no such gate.</p> <blockquote> <p>ℹ️ <strong>Note:</strong> Discovery temporarily changes your node’s LoRa settings while it scans, then restores your original configuration when it finishes.</p> </blockquote> <h3 id="setting-up-a-scan"> <a href="#setting-up-a-scan" class="anchor-heading" aria-labelledby="setting-up-a-scan"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Setting up a scan </h3> <p>Before starting, configure these controls:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Control</th> <th>Опис</th> </tr> </thead> <tbody> <tr> <td><strong>LoRa preset picker</strong></td> <td>Select one or more presets to scan. Discovery dwells on each selected preset in turn.</td> </tr> <tr> <td><strong>Dwell time</strong></td> <td>Time to listen on each preset. Choose from 1, 5, 15, 30, 45, 60, 90, 120, or 180 minutes. Longer dwell times collect more packets and give a clearer picture, but take longer.</td> </tr> <tr> <td><strong>Keep screen awake</strong></td> <td>Keeps the display on for the scan. The scan itself holds a CPU wake lock for its whole run and posts a <strong>Scanning LoRa presets…</strong> notification, so it keeps collecting with the screen off or the app in the background.</td> </tr> </tbody> </table></div> <p>The <strong>Start Scan</strong> button stays disabled — with an explanation of why — until the scan can run. Common reasons it’s disabled:</p> <ul> <li>The node is <strong>not connected</strong>.</li> <li><strong>No presets</strong> have been selected to scan.</li> <li>The selected preset uses <strong>2.4 GHz</strong>, which your hardware doesn’t support.</li> </ul> <h3 id="live-progress"> <a href="#live-progress" class="anchor-heading" aria-labelledby="live-progress"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Live progress </h3> <p>While a scan runs, Discovery shows its current stage:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Stage</th> <th>What’s happening</th> </tr> </thead> <tbody> <tr> <td><strong>Preparing scan</strong></td> <td>Saving your current configuration and getting ready to scan.</td> </tr> <tr> <td><strong>Shifting to &lt;preset&gt;</strong></td> <td>Switching the node to the next preset to test.</td> </tr> <tr> <td><strong>Reconnecting on &lt;preset&gt;</strong></td> <td>Re-establishing the connection after the preset change.</td> </tr> <tr> <td><strong>Dwelling on &lt;preset&gt;</strong></td> <td>Listening on the current preset to collect packets, with a countdown to the next step.</td> </tr> <tr> <td><strong>Analyzing results</strong></td> <td>Processing the collected packets and ranking the presets.</td> </tr> <tr> <td><strong>Restoring home preset</strong></td> <td>Putting your original LoRa configuration back.</td> </tr> <tr> <td><strong>Cancelling scan</strong></td> <td>You tapped <strong>Stop Scan</strong>; partial results are saved before the original preset is restored.</td> </tr> <tr> <td><strong>Scan failed: &lt;reason&gt;</strong></td> <td>The scan could not continue — most often the node didn’t come back within a minute of a preset change. The results collected so far are saved, and the original preset is restored automatically.</td> </tr> </tbody> </table></div> <p><img src="../../assets/screenshots/discovery_dwell_progress.png" alt="Dwell countdown showing time remaining on the current preset" /></p> <p>If a scan is interrupted — the app is closed, or the node goes away — the app restores your original preset the next time it reconnects to that node, and tells you it has done so. Reconnect the same node to let that happen; until you do, the node stays on whichever preset the scan left it on.</p> <h3 id="reading-the-results"> <a href="#reading-the-results" class="anchor-heading" aria-labelledby="reading-the-results"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Reading the results </h3> <p>When the scan completes, Discovery presents a per-preset result card for each preset it tested, plus an overall summary.</p> <p><img src="../../assets/screenshots/discovery_preset_result.png" alt="Per-preset result card with ranking and collected metrics" /></p> <p>Metrics include:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Метрика</th> <th>What it tells you</th> </tr> </thead> <tbody> <tr> <td>RF health</td> <td>Overall quality of the radio environment on that preset.</td> </tr> <tr> <td>Channel utilization</td> <td>How busy the airwaves were during the dwell.</td> </tr> <tr> <td>Време емитовања</td> <td>Transmission time observed.</td> </tr> <tr> <td>Direct vs. relayed nodes</td> <td>How many mesh nodes were heard directly versus via a relay.</td> </tr> <tr> <td>Bad / duplicate packets</td> <td>Counts of corrupt and repeated packets, indicating congestion or interference.</td> </tr> </tbody> </table></div> <p>Additional features available from the results:</p> <ul> <li><strong>Scan History</strong> — saved sessions you can revisit; view or delete past scans.</li> <li><strong>Discovery Map</strong> — a map of the nodes found during the scan.</li> <li><strong>Report export</strong> — export a report as a PDF on Android, or as text on other platforms.</li> </ul> <blockquote> <p>💡 <strong>Tip:</strong> On <strong>Google Play</strong> builds, Discovery can generate an on-device AI summary (Gemini Nano) of your results. F-Droid builds always use the algorithmic summary — the proprietary ML Kit dependency is deliberately excluded from that flavor — so you get a readable interpretation of the scan either way.</p> </blockquote> <h2 id="mesh-beacon"> <a href="#mesh-beacon" class="anchor-heading" aria-labelledby="mesh-beacon"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Mesh Beacon </h2> <p>Mesh Beacon lets nodes invite others to join their mesh. A beaconing node periodically broadcasts an invitation — optionally advertising a channel, region, and modem preset — that nearby nodes can hear even before they share a configuration.</p> <p>Configure it under <strong>Settings → Module configuration → Mesh Beacon</strong>. The entry appears only on nodes running firmware 2.8.0 or newer. A read-only <strong>Region</strong> row at the top of the screen shows the region the beacon advertises: that region, and the preset, are always the ones the node itself uses, so a beacon can’t invite anyone onto settings your node isn’t running.</p> <ul> <li><strong>Listen for beacons</strong> — receive invitations broadcast by other nodes.</li> <li><strong>Broadcast a beacon</strong> — periodically advertise this mesh to nearby nodes, with an optional <strong>Beacon message</strong> of up to 100 bytes, a <strong>Broadcast interval</strong> picked from fixed intervals between 1 hour and 72 hours, and an <strong>Offered channel</strong> chosen from your node’s own channels. The offered channel is required, and defaults to your primary channel. Over remote admin the picker offers the primary channel only.</li> <li><strong>Broadcast targets</strong> — where the beacon actually transmits. The list always holds at least one row: the first is the beacon’s own transmission, not an extra. Each row picks a <strong>Channel</strong> and a <strong>Transmit preset</strong>. <strong>Add target</strong> appends a row, and <strong>Remove target</strong> deletes one — removing the last row replaces it with a fresh default rather than emptying the list.</li> </ul> <p>Two conditions block beacon setup:</p> <ul> <li><strong>The node has no region set.</strong> The screen shows nothing but <em>Set your node’s region before setting up a beacon.</em> Set the region on <strong>Settings → LoRa</strong> first.</li> <li><strong>The node uses custom LoRa settings.</strong> A beacon advertises a modem preset for others to join, so a node with <strong>Use Preset</strong> turned off has no standard preset to offer. In that state <strong>Broadcast a beacon</strong> can be turned off but not on, and the broadcast settings are read-only. Listening for beacons is unaffected.</li> </ul> <p>Received invitations appear as <strong>Mesh invitations</strong> cards on the Discovery screen. Each card shows the sender’s message plus the offered channel, region, preset, and signal quality, with these actions:</p> <ul> <li><strong>Join</strong> — switch to the offered channel and preset (retunes the node and reboots). When the offer matches your current frequency slot, an <strong>Add channel</strong> action adds it without a reboot.</li> <li><strong>Discover</strong> — seed a Discovery scan with the offered preset so you can survey that mesh before joining (shown only when the beacon offers a preset).</li> <li><strong>Dismiss</strong> — ignore the invitation.</li> </ul> <p>Channels advertised by beacons also show up in the scan setup as <strong>Beacon channels</strong> — select one to include it as a scan target.</p> <p>An invitation to a mesh your node is already on is suppressed: no card, no notification, and no <strong>Beacon channels</strong> entry. A channel counts as one you already have only when both its name and its key match a channel on your node — the same name with a different key is a different mesh, so that invitation still reaches you.</p> <h2 id="manual-exploration"> <a href="#manual-exploration" class="anchor-heading" aria-labelledby="manual-exploration"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Manual exploration </h2> <p>The following tools are available at any time from the node list and node detail screens. Use them to investigate specific paths and build a topology picture, alongside or instead of a full scan.</p> <h3 id="праћење-руте"> <a href="#праћење-руте" class="anchor-heading" aria-labelledby="праћење-руте"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Праћење руте </h3> <p>Traceroute reveals the exact path a message takes from your node to any other node on the mesh. It’s the single most useful tool for debugging connectivity problems.</p> <h4 id="running-a-traceroute"> <a href="#running-a-traceroute" class="anchor-heading" aria-labelledby="running-a-traceroute"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Running a Traceroute </h4> <ol> <li>Navigate to <strong>Nodes</strong> and tap the node you want to trace.</li> <li>On the node detail screen, find <strong>Traceroute</strong> in the <strong>Telemetry</strong> section and tap its request button. Once a result arrives, a second button on the same row opens the traceroute log, where each hop is listed with its signal quality.</li> </ol> <h4 id="reading-the-results-1"> <a href="#reading-the-results-1" class="anchor-heading" aria-labelledby="reading-the-results-1"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Reading the results </h4> <p>A traceroute result looks like this:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Route traced toward destination:
■ Your Node (YOUR)
⇊ 8.5 dB
■ Relay Node (RLAY)
⇊ -8.75 dB
■ Target Node (TGT1)
</code></pre></div></div> <p>Each <code class="language-plaintext highlighter-rouge">⇊</code> line between two nodes is one relay hop, and the SNR on that line is the quality of that segment alone. The app colors it against the demodulation floor of the preset in use, not a fixed number: green above the floor, yellow within 5.5 dB below it, orange within 7.5 dB, and red beyond that. The floor is −7.5 dB on Short Fast and improves 2.5 dB per spreading-factor step, so it is −17.5 dB on Long Fast — the same SNR reads differently on different presets. See <a href="signal-meter">Signal Meter</a>. A request that also gets a reply adds a second block under <strong>Route traced back to us:</strong>.</p> <div class="table-wrapper"><table> <thead> <tr> <th>What to look for</th> <th>What it means</th> </tr> </thead> <tbody> <tr> <td>All hops show Good SNR (green)</td> <td>Healthy path — messages flow reliably</td> </tr> <tr> <td>One hop shows a poor SNR (orange or red)</td> <td>Weak link — this relay segment is fragile</td> </tr> <tr> <td>Many hops (4+)</td> <td>Long path — consider repositioning a node to shorten it</td> </tr> <tr> <td>Different path on retry</td> <td>Mesh is adapting — multiple routes exist (this is good!)</td> </tr> </tbody> </table></div> <blockquote> <p>💡 <strong>Tip:</strong> Run traceroute several times over a few minutes. If the path changes, your mesh has redundant routes — a sign of a well-connected network.</p> </blockquote> <h4 id="troubleshooting-with-traceroute"> <a href="#troubleshooting-with-traceroute" class="anchor-heading" aria-labelledby="troubleshooting-with-traceroute"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Troubleshooting with Traceroute </h4> <ul> <li><strong>No Response</strong> — The traceroute got nothing back. The target node may be offline, out of range, or on a different channel. Check that both nodes share at least one channel with the same encryption key.</li> <li><strong>Traceroute times out</strong> — The path may be too long (exceeds hop limit) or a relay node is congested. Try increasing the hop limit in <strong>Settings → LoRa</strong>.</li> <li><strong>Cannot show traceroute map because the start or destination node has no position information</strong> — The path was traced, but one end has never shared a position.</li> <li><strong>Asymmetric paths</strong> — A traceroute from A→B may take a different path than B→A. This is normal — radio propagation isn’t always symmetric.</li> </ul> <h3 id="neighbor-info"> <a href="#neighbor-info" class="anchor-heading" aria-labelledby="neighbor-info"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Neighbor Info </h3> <p>The Neighbor Info module lets each node broadcast a list of the nodes it can <strong>directly hear</strong> (single-hop). When multiple nodes share their neighbor lists, you can piece together a topology map of the entire mesh.</p> <h4 id="enabling-neighbor-info"> <a href="#enabling-neighbor-info" class="anchor-heading" aria-labelledby="enabling-neighbor-info"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Enabling Neighbor Info </h4> <ol> <li>Navigate to <strong>Settings → Module configuration → Neighbor Info</strong>.</li> <li>Enable the module.</li> <li>Set <strong>Update interval (seconds)</strong>. The app accepts whatever you type; the firmware enforces its own minimum and resets a value below it.</li> <li>Turn on <strong>Transmit over LoRa</strong>. Without it, your neighbor list goes only to MQTT and to this app, never over the air.</li> </ol> <p>Once enabled and transmitting over LoRa, your node periodically broadcasts its neighbor list. Other nodes with Neighbor Info enabled do the same.</p> <h4 id="viewing-neighbor-data"> <a href="#viewing-neighbor-data" class="anchor-heading" aria-labelledby="viewing-neighbor-data"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Viewing neighbor data </h4> <ul> <li>Open a node’s detail screen and find <strong>Neighbor Info</strong> in the <strong>Telemetry</strong> section. The request button asks the node for its current neighbor list; once the app has received one, a second button on the same row opens the log of everything that node has reported. The row appears only on nodes that can answer a neighbor request, or that have already reported neighbors.</li> <li>Each neighbor entry shows the node that was directly heard and its signal quality.</li> <li>Combine neighbor data from multiple nodes to understand the full mesh topology.</li> </ul> <blockquote> <p>ℹ️ <strong>Note:</strong> Neighbor Info increases airtime usage because every enabled node periodically broadcasts its neighbor list. The firmware doesn’t accept an interval shorter than 14400 seconds (4 hours) for this reason; on busy meshes, leave it at the 21600-second default or raise it further.</p> </blockquote> <h3 id="node-list-as-a-discovery-tool"> <a href="#node-list-as-a-discovery-tool" class="anchor-heading" aria-labelledby="node-list-as-a-discovery-tool"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Node list as a discovery tool </h3> <p>The node list itself is a powerful discovery tool when you use its filtering and sorting features effectively.</p> <h4 id="finding-new-nodes"> <a href="#finding-new-nodes" class="anchor-heading" aria-labelledby="finding-new-nodes"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Finding new nodes </h4> <ul> <li>Sort by <strong>Last heard</strong> to see the most recently active nodes at the top.</li> <li>Enable <strong>Include unknown</strong> to see nodes that have appeared on the mesh but haven’t sent user info yet — these are often newly powered-on nodes.</li> </ul> <h4 id="assessing-connectivity"> <a href="#assessing-connectivity" class="anchor-heading" aria-labelledby="assessing-connectivity"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Assessing connectivity </h4> <ul> <li>Sort by <strong>Hops away</strong> to see which nodes are directly reachable (0 hops) versus relayed.</li> <li>Sort by <strong>Distance</strong> to find nearby nodes and verify they’re reachable.</li> <li>Use <strong>Exclude MQTT</strong> to focus on nodes reachable over LoRa (not via internet bridge).</li> </ul> <h4 id="infrastructure-audit"> <a href="#infrastructure-audit" class="anchor-heading" aria-labelledby="infrastructure-audit"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Infrastructure audit </h4> <ul> <li>Disable <strong>Exclude infrastructure</strong> to see Router, Router Late, and Client Base nodes.</li> <li>Check their signal quality and last-heard times to verify your infrastructure nodes are healthy.</li> </ul> <p>See <a href="nodes">Nodes</a> for full details on filtering and sorting options.</p> <h2 id="tips-for-mesh-exploration"> <a href="#tips-for-mesh-exploration" class="anchor-heading" aria-labelledby="tips-for-mesh-exploration"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Tips for Mesh exploration </h2> <ul> <li><strong>Start with traceroute</strong> — it gives you immediate, actionable information about a specific path.</li> <li><strong>Enable Neighbor Info on key nodes</strong> — especially routers and repeaters, to build a picture of the backbone.</li> <li><strong>Check the map</strong> — node positions on the <a href="map-and-waypoints">Map</a> combined with signal data help you understand why some links are strong and others are weak.</li> <li><strong>Compare signal over time</strong> — use the <a href="signal-meter">Signal Meter</a> guide to interpret SNR and RSSI values correctly.</li> </ul> <h2 id="related-topics"> <a href="#related-topics" class="anchor-heading" aria-labelledby="related-topics"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Related Topics </h2> <ul> <li><a href="nodes">Nodes</a> — the node list these scans populate</li> <li><a href="map-and-waypoints">Map &amp; Waypoints</a> — see discovered nodes geographically</li> <li><a href="signal-meter">Signal Meter</a> — interpret the SNR and RSSI a scan reports</li> <li><a href="settings-module-admin">Settings — Modules &amp; Admin</a> — configure the Mesh Beacon and Neighbor Info modules</li> <li><a href="messages-and-channels">Messages &amp; Channels</a> — join a mesh you found and start talking</li> </ul> </div> <style> .locale-page-banner { background: rgba(103, 234, 148, 0.1); border: 1px solid rgba(103, 234, 148, 0.3); border-radius: 12px; padding: 10px 16px; margin-bottom: 1.5rem; font-size: 0.85rem; } .locale-notice a { margin-left: 12px; font-weight: 500; } </style> </main> <hr> <footer> <footer class="site-footer"> Copyright &copy; 2026 Meshtastic LLC. Distributed under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL v3 License.</a> </footer> <div class="d-sm-block d-md-none"> <div class="mt-4 fs-2"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </footer> </div> </div> <div class="search-overlay"></div> </div> </body> </html>