mirror of
https://github.com/fr33n0w/rmap-rnode-web-flasher
synced 2026-08-12 18:08:52 -04:00
205 lines
12 KiB
HTML
205 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>RNode Flasher · Simple</title>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
|
<link rel="stylesheet" href="rmap.css?v=26">
|
|
</head>
|
|
<body class="dropdownpage">
|
|
|
|
<div class="topbar">
|
|
<a class="back" href="https://rmap.world"><i class="fa-solid fa-arrow-left"></i> Back to RMAP</a>
|
|
<div class="logo"><i class="fa-solid fa-tower-broadcast"></i> RNode Flasher <span class="badge">rmap.world</span></div>
|
|
<div class="topbar-right">
|
|
<div id="google_translate_element" title="Translate this page"></div>
|
|
<a class="iconbtn" href="flasher.html" title="Switch to Graphic Mode"><i class="fa-solid fa-table-cells-large"></i> <span>Graphic Mode</span></a>
|
|
<button id="consoleToggle" class="console-toggle" title="Show / hide the console (log)"><i class="fa-solid fa-terminal"></i> <span>Console</span></button>
|
|
<button id="toolsBtn" class="console-toggle" title="Show / hide RNode Tools"><i class="fa-solid fa-toolbox"></i> <span>RNode Tools</span></button>
|
|
<button id="aboutBtn" class="console-toggle" title="About, repo & stats"><i class="fa-solid fa-question"></i></button>
|
|
<button id="infoBtn" class="console-toggle" title="Credits & help"><i class="fa-solid fa-circle-info"></i></button>
|
|
<div class="serial-status" id="serialStatus" style="visibility:hidden"><span class="dot on" id="statusDot"></span><span id="statusText">Connected</span></div>
|
|
</div>
|
|
</div>
|
|
|
|
<main class="layout">
|
|
<div class="wizard">
|
|
<section class="block">
|
|
<h2><i class="fa-solid fa-bolt"></i> Flash a Reticulum RNode</h2>
|
|
|
|
<div class="guideterm" id="guideBar" style="margin:2px 0 16px"><span class="gdot"></span><span id="guideText">Choose your device from the dropdown to begin.</span></div>
|
|
|
|
<label>Device</label>
|
|
<select id="deviceSelect"><option value="">- choose your board -</option></select>
|
|
|
|
<label>Frequency / model</label>
|
|
<select id="modelSelect" disabled><option value="">- pick a device first -</option></select>
|
|
|
|
<label>Firmware project</label>
|
|
<select id="srcSelect">
|
|
<option value="official">RNode Official (markqvist)</option>
|
|
<option value="ce">RNode Community Edition (CE)</option>
|
|
<option value="tn">microReticulum / Transport Node (attermann)</option>
|
|
<option value="rtnode">RTNode v4 (jrl290) - Heltec V3/V4</option>
|
|
<option value="t1000e">RNode T1000-E (idan2025) - SenseCAP</option>
|
|
</select>
|
|
|
|
<label>Version</label>
|
|
<select id="versionSelect"><option value="">- pick a device first -</option></select>
|
|
|
|
<p class="status" id="fwStatus">Firmware is fetched on demand and discarded after flashing.</p>
|
|
<p class="status" id="supportedFw"></p>
|
|
|
|
<div class="summary" id="flashSummary"></div>
|
|
|
|
<div class="flash-actions">
|
|
<button id="btnConnect"><i class="fa-solid fa-plug"></i> Connect</button>
|
|
<button class="btn-erase" id="btnEraseTop" disabled><i class="fa-solid fa-eraser"></i> Full erase (clean chip)</button>
|
|
<button class="primary" id="btnOneClick" disabled><i class="fa-solid fa-bolt"></i> Flash now (1 click)</button>
|
|
</div>
|
|
<div class="progress hidden" id="progressWrap"><div class="bar" id="progressBar"></div></div>
|
|
<p class="flash-status" id="flashStatus">Idle.</p>
|
|
</section>
|
|
</div>
|
|
|
|
<aside class="rightcol">
|
|
<div class="sidepanel" id="consoleSide">
|
|
<div class="logpanel">
|
|
<div class="logtitle">
|
|
<span><i class="fa-solid fa-terminal"></i> Console</span>
|
|
<span class="logbtns">
|
|
<button id="logClear" class="logbtn" title="Clear console"><i class="fa-solid fa-trash"></i></button>
|
|
<button id="logCopy" class="logbtn" title="Copy to clipboard"><i class="fa-solid fa-copy"></i></button>
|
|
<button id="logExport" class="logbtn" title="Export .txt"><i class="fa-solid fa-download"></i></button>
|
|
<button id="logCollapse" class="logbtn" title="Hide console"><i class="fa-solid fa-xmark"></i></button>
|
|
</span>
|
|
</div>
|
|
<div id="log" class="log"></div>
|
|
</div>
|
|
</div>
|
|
<div class="sidepanel" id="toolsSide">
|
|
<div class="logpanel">
|
|
<div class="logtitle">
|
|
<span><i class="fa-solid fa-toolbox"></i> RNode Tools</span>
|
|
<span class="logbtns">
|
|
<button id="btnConnect2" class="logbtn" title="Connect to the device"><i class="fa-solid fa-plug"></i></button>
|
|
<button id="toolsClose" class="logbtn" title="Hide tools"><i class="fa-solid fa-xmark"></i></button>
|
|
</span>
|
|
</div>
|
|
<div class="toolsbody">
|
|
<p class="adv-hint">Use on a connected, flashed RNode. Press the plug icon above to Connect first.</p>
|
|
<div class="cfg-grid">
|
|
<div class="cfg-group wide">
|
|
<h4><i class="fa-solid fa-screwdriver-wrench"></i> Manual flash & maintenance</h4>
|
|
<div class="btns">
|
|
<button id="btnFlash" disabled>① Flash firmware</button>
|
|
<button id="btnProvision" disabled>② Provision EEPROM</button>
|
|
<button id="btnHash" disabled>③ Set firmware hash</button>
|
|
</div>
|
|
<div class="btns danger">
|
|
<button id="btnWipe" disabled>Wipe EEPROM</button>
|
|
<button id="btnErase" disabled>Full erase (chip)</button>
|
|
</div>
|
|
<label style="margin-top:10px">Custom firmware from your PC (.zip or .bin):</label>
|
|
<input type="file" id="customFile" accept=".zip,.bin">
|
|
<button id="btnCustomFlash" disabled style="width:100%;margin-top:8px"><i class="fa-solid fa-upload"></i> Flash this file</button>
|
|
</div>
|
|
<div class="cfg-group">
|
|
<h4><i class="fa-brands fa-bluetooth-b"></i> Bluetooth</h4>
|
|
<div class="btns">
|
|
<button id="btnBtOn" disabled>Enable</button>
|
|
<button id="btnBtOff" disabled>Disable</button>
|
|
<button id="btnBtPair" disabled>Pairing mode</button>
|
|
</div>
|
|
</div>
|
|
<div class="cfg-group">
|
|
<h4><i class="fa-solid fa-display"></i> Display</h4>
|
|
<div class="btns rotbtns">
|
|
<button class="rot" data-rot="0" disabled>0°</button>
|
|
<button class="rot" data-rot="1" disabled>90°</button>
|
|
<button class="rot" data-rot="2" disabled>180°</button>
|
|
<button class="rot" data-rot="3" disabled>270°</button>
|
|
</div>
|
|
<label>Brightness <span class="exp">(experimental)</span>: <span id="briVal">200</span></label>
|
|
<input id="cfgBri" type="range" min="0" max="255" value="200" disabled>
|
|
</div>
|
|
<div class="cfg-group wide">
|
|
<h4><i class="fa-solid fa-satellite-dish"></i> LoRa parameters & TNC mode</h4>
|
|
<div class="cfg-fields">
|
|
<label>Frequency (MHz)<input id="cfgFreq" type="number" step="0.001" placeholder="868.000"></label>
|
|
<label>Bandwidth<select id="cfgBw"></select></label>
|
|
<label>Spreading factor<select id="cfgSf"></select></label>
|
|
<label>Coding rate<select id="cfgCr"></select></label>
|
|
<label>TX power (dBm)<input id="cfgTxp" type="number" min="0" max="22" placeholder="17"></label>
|
|
</div>
|
|
<div class="btns">
|
|
<button id="btnReadConf" disabled>Read current</button>
|
|
<button id="btnTncSave" disabled>Save as TNC node</button>
|
|
<button id="btnNormalMode" disabled>Set to normal mode</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
|
|
</main>
|
|
|
|
<div id="infoModal" class="modal hidden">
|
|
<div class="backdrop" id="infoBackdrop"></div>
|
|
<div class="box">
|
|
<button class="mclose" id="infoClose" title="Close"><i class="fa-solid fa-xmark"></i></button>
|
|
<h2><i class="fa-solid fa-tower-broadcast"></i> About this RNode Flasher</h2>
|
|
<p>A browser-based flasher for <b>Reticulum RNode</b> firmware - flash, provision and configure LoRa boards over USB with Web Serial. Firmware is fetched on demand and discarded after flashing; nothing is installed on your computer.</p>
|
|
<h4><i class="fa-solid fa-circle-question"></i> Quick help</h4>
|
|
<ol class="help">
|
|
<li>Pick your <b>device</b>, then its <b>frequency / model</b>.</li>
|
|
<li>Choose the <b>firmware</b> project & version (latest is fine).</li>
|
|
<li>Plug the board in, press <b>Connect</b>, then <b>Flash now</b>.</li>
|
|
<li>Use <b>Chrome / Edge</b> (or Firefox with <code>dom.serial.enabled</code>).</li>
|
|
</ol>
|
|
<h4><i class="fa-solid fa-heart"></i> Built on the great work of:</h4>
|
|
<ul class="credits">
|
|
<li><b>rnode.js & the original web flasher</b> - Liam Cottle (<a href="https://github.com/liamcottle/rnode-flasher" target="_blank" rel="noopener">github</a>, MIT). Our flashing & provisioning engine.</li>
|
|
<li><b>esptool-js</b> - Espressif (<a href="https://github.com/espressif/esptool-js" target="_blank" rel="noopener">github</a>). ESP32 flashing in the browser.</li>
|
|
<li><b>RNode Firmware</b> & <b>Reticulum</b> - Mark Qvist / markqvist (<a href="https://github.com/markqvist/RNode_Firmware" target="_blank" rel="noopener">github</a>).</li>
|
|
<li><b>RNode Firmware CE</b> - Liberated Embedded Systems (<a href="https://github.com/liberatedsystems/RNode_Firmware_CE" target="_blank" rel="noopener">github</a>).</li>
|
|
<li><b>microReticulum / Transport Node</b> - attermann (<a href="https://github.com/attermann/microReticulum_Firmware" target="_blank" rel="noopener">github</a>).</li>
|
|
<li><b>RTNode v4</b> - jrl290 (<a href="https://github.com/jrl290/RTNode-HeltecV4" target="_blank" rel="noopener">github</a>).</li>
|
|
<li><b>RNode T1000-E</b> - idan2025 (<a href="https://github.com/idan2025/Rnode_Firmware" target="_blank" rel="noopener">github</a>).</li>
|
|
</ul>
|
|
<p style="margin-top:12px"><i class="fa-solid fa-plus"></i> <b>Firmware author?</b> Want your RNode firmware listed here? <a href="https://github.com/fr33n0w/rmap-rnode-web-flasher/issues" target="_blank" rel="noopener">Open a request / issue on GitHub</a>.</p>
|
|
<p style="margin-top:14px; font-size:12px">Community (unsigned) EEPROM provisioning. Huge thanks to all the authors above. 💛</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="aboutModal" class="modal hidden">
|
|
<div class="backdrop" id="aboutBackdrop"></div>
|
|
<div class="box">
|
|
<button class="mclose" id="aboutClose" title="Close"><i class="fa-solid fa-xmark"></i></button>
|
|
<h2><i class="fa-solid fa-circle-question"></i> RMAP RNode Flasher</h2>
|
|
<p>An open-source, browser-based flasher for Reticulum RNode firmware, made for <a href="https://rmap.world" target="_blank" rel="noopener">rmap.world</a>.</p>
|
|
<p><i class="fa-brands fa-github"></i> Source & issues: <a id="repoLink" href="https://github.com/fr33n0w/rmap-rnode-web-flasher" target="_blank" rel="noopener">github.com/fr33n0w/rmap-rnode-web-flasher</a></p>
|
|
<div class="statbox">
|
|
<div class="stat"><i class="fa-solid fa-eye"></i><span>Visits</span><b id="statVisits">-</b></div>
|
|
<div class="stat"><i class="fa-solid fa-bolt"></i><span>Devices flashed</span><b id="statFlashed">-</b></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Google Translate overlay -->
|
|
<script>function googleTranslateElementInit(){new google.translate.TranslateElement({pageLanguage:'en',autoDisplay:false},'google_translate_element');}</script>
|
|
<script src="https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
|
|
|
|
<script src="js/crypto-js@3.9.1-1/core.js"></script>
|
|
<script src="js/crypto-js@3.9.1-1/md5.js"></script>
|
|
<script src="js/zip.min.js"></script>
|
|
<script src="js/rnode.js"></script>
|
|
<script src="js/nrf52_dfu_flasher.js"></script>
|
|
<script src="devices.js?v=26"></script>
|
|
<script type="module" src="flasher2.js?v=26"></script>
|
|
|
|
</body>
|
|
</html>
|