From 4d2ba28934bca023954b8d0a9486bce7cc5eaec9 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Thu, 17 Apr 2025 23:04:00 +0200 Subject: [PATCH] Docs build --- docs/Reticulum Manual.epub | Bin 3546627 -> 3546778 bytes docs/Reticulum Manual.pdf | Bin 4171939 -> 4172150 bytes docs/manual/examples.html | 4 +--- docs/manual/searchindex.js | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index 23d25b684869821dfa4fe5885807594f6f445efc..93c58a5f48ad8a3fa8752ab2265760c2cf4bc485 100644 GIT binary patch delta 10523 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 delta 10348 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 L&aR@XivNEAVM{ru delta 42797 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
2g&785 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 modes and common configuration options.

-
# MIT License - Copyright (c) 2024 Mark Qvist / unsigned.io
-
-# This example illustrates creating a custom interface
+
# This example illustrates creating a custom interface
 # definition, that can be loaded and used by Reticulum at
 # runtime. Any number of custom interfaces can be created
 # and loaded. To use the interface place it in the folder
diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js
index 0044622..4839425 100644
--- a/docs/manual/searchindex.js
+++ b/docs/manual/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9, 11], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10, 11], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": [0, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "sy": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 2, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 5, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 10, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 10, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 7, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 2, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 2, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": [0, 2], "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7, 10], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 2, 10], "get": [0, 3, 4, 5, 7, 10, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5, 7], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 5, 6, 10], "action": 0, "store": [0, 7, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 2, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 2, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "0": [0, 2, 5, 7, 9, 10, 11], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 5, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 4, 9, 10], "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 2, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": [0, 2], "channelarg": 0, "between": [0, 5, 6, 7, 9, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "server_ident": 0, "queri": [0, 2, 7, 10], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 2, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": [0, 10], "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10, 11], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 5, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 2, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7], "forth": 0, "o": [0, 2, 5, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 7, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 7, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "5": [0, 2, 5, 7, 9, 10, 11], "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 5, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "perform": [0, 2, 5, 6, 7, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 2, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3, 11], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10, 11], "stringmessag": 0, "convei": 0, "timestamp": [0, 9], "msgtype": [0, 7], "variabl": [0, 2, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6, 7], "0xf000": [0, 7], "reserv": [0, 7], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 7, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 2, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": [0, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 2, 5, 10], "resourc": [0, 2, 4, 5, 7, 8], "effici": [0, 2, 5, 7, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 5, 9], "compress": [0, 7, 9, 11], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 5, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": [0, 5], "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10, 11], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 7, 9, 11], "job": 0, "potenti": [0, 2, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": [0, 10], "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "exampleinterfac": 0, "utilis": [0, 2, 5, 6, 7, 9, 10, 11], "fulli": [0, 2, 3, 5, 9, 10, 11], "par": [0, 2], "nativ": 0, "common": [0, 3, 4, 6, 9, 10, 11], "mit": 0, "licens": [0, 9], "copyright": 0, "2024": 0, "mark": [0, 7, 9], "qvist": 0, "unsign": 0, "io": [0, 3], "illustr": [0, 5, 6, 9], "runtim": [0, 9], "place": [0, 2, 5, 6, 9, 10], "folder": [0, 2], "similar": [0, 2, 3, 5, 6, 7, 10, 11], "enabl": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gatewai": [0, 2, 5, 6, 9], "port": [0, 3, 4, 5, 6, 9, 11], "dev": [0, 2, 5, 10], "ttyusb0": [0, 5, 10], "speed": [0, 5, 7, 9, 10], "115200": [0, 5, 10], "databit": [0, 5, 10], "pariti": [0, 5, 10], "stopbit": [0, 5, 10], "hdlc": 0, "helper": 0, "delimit": 0, "physic": [0, 2, 3, 5, 7, 9, 10, 11], "medium": [0, 3, 5, 6, 7, 9, 11], "case": [0, 2, 3, 5, 6, 9, 10], "simplifi": 0, "frame": [0, 5], "ppp": 0, "flag": [0, 2, 7, 9], "0x7e": 0, "esc": 0, "0x7d": 0, "esc_mask": 0, "0x20": 0, "staticmethod": 0, "escap": 0, "replac": [0, 2, 7, 9, 10], "sub": [0, 5], "ifac": [0, 9, 10], "default_ifac_s": 0, "particular": [0, 3, 9], "owner": 0, "posit": [0, 10], "dict": 0, "depend": [0, 3, 4, 6, 7, 9, 10], "importlib": 0, "find_spec": 0, "instal": [0, 4, 5, 6, 9, 10, 11], "log_crit": 0, "python3": [0, 2, 3], "pip": [0, 2, 3, 10], "pyseri": [0, 2], "panic": [0, 10], "super": 0, "sure": [0, 2, 3, 10], "through": [0, 2, 3, 5, 6, 7, 9, 10, 11], "step": [0, 2, 3], "compat": [0, 2, 3, 5, 7, 9], "platform": [0, 3, 4, 9, 10], "ifconf": 0, "get_config_obj": 0, "suppli": [0, 5, 6, 7, 9, 11], "miss": [0, 2], "9600": 0, "abort": 0, "f": [0, 2, 10], "No": [0, 2, 5, 9, 10, 11], "hardwar": [0, 2, 4, 5, 6, 7, 9, 10, 11], "mtu": [0, 7, 9, 11], "maximum": [0, 5, 7, 9, 10], "underli": [0, 5, 6, 7, 11], "capabl": [0, 9], "without": [0, 2, 3, 5, 6, 9, 10, 11], "segment": [0, 5, 6, 7, 9, 11], "hw_mtu": 0, "564": 0, "onlin": [0, 10], "bitrat": [0, 5, 7], "intern": [0, 5, 7, 9], "accord": [0, 2, 9], "parity_non": 0, "lower": [0, 2, 5, 10], "even": [0, 2, 5, 6, 7, 9, 10, 11], "parity_even": 0, "odd": 0, "parity_odd": 0, "open_port": 0, "succeed": [0, 7], "post": 0, "is_open": 0, "configure_devic": 0, "ioerror": 0, "log_verbos": 0, "baudrat": 0, "bytes": 0, "xonxoff": 0, "rtsct": 0, "inter_byte_timeout": 0, "write_timeout": 0, "dsrdtr": 0, "thing": [0, 2], "amount": [0, 5, 6, 7, 9, 11], "devic": [0, 2, 4, 5, 6, 7, 9, 10], "read_loop": 0, "whenev": [0, 7, 9], "process_incom": 0, "rxb": 0, "process": [0, 2, 3, 5, 7, 9], "inbound": [0, 5, 7], "process_outgo": 0, "Then": [0, 2], "written": [0, 9], "txb": 0, "wrote": [0, 5], "contin": 0, "meth": 0, "turn": [0, 5, 10], "in_fram": 0, "data_buff": 0, "last_read_m": 0, "in_wait": 0, "ord": 0, "time_since_last": 0, "08": [0, 10], "occur": [0, 5, 10, 11], "experienc": 0, "unrecover": [0, 10], "offlin": [0, 2], "panic_on_interface_error": [0, 10], "attempt": [0, 2, 3, 7], "reconnect": 0, "period": [0, 5, 7, 9], "reconnect_port": 0, "signal": [0, 7, 9], "ingress": [0, 5], "limit": [0, 3, 4, 6, 9], "should_ingress_limit": 0, "extern": [0, 2, 5, 7, 11], "__str__": 0, "interface_class": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "manag": [2, 4, 6, 7, 9, 11], "sudo": [2, 10], "apt": 2, "pamac": 2, "dowload": 2, "releas": [2, 5, 7, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "py3": 2, "whl": 2, "For": [2, 5, 6, 7, 9, 10, 11], "instruct": 2, "section": [2, 3, 5, 6, 9, 10], "might": [2, 5, 6, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "mai": [2, 5, 7, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "pre": [2, 7, 9], "built": [2, 5, 9, 10, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "enough": [2, 3, 9], "rnsh": [2, 10], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 5, 7, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 7, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "reboot": 2, "again": [2, 5, 9, 10], "environ": [2, 6, 9], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 5, 9], "peopl": [2, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "friendli": 2, "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "come": [2, 5, 9], "easier": [2, 5, 6, 10, 11], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "locat": [2, 5, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": [2, 9], "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 5, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": [2, 9], "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 7, 9, 10], "anymor": 2, "invis": [2, 5], "parallel": 2, "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10, 11], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10, 11], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": [2, 5], "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "wide": [2, 3, 5, 9, 10, 11], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9, 10], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "flexibl": [2, 3, 5, 11], "broad": [2, 3], "cover": [2, 3, 9, 11], "conceiv": [2, 3], "therefor": [2, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "subject": [2, 11], "code": [2, 3, 4, 5, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "api": [2, 4, 9, 11], "document": [2, 7, 9], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": [2, 9], "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "h": [2, 10], "ping": [2, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10, 11], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 5, 9], "termux": 2, "droid": 2, "emul": 2, "abil": [2, 3, 11], "pkg": 2, "upgrad": [2, 7, 9], "reason": [2, 5, 9], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "apk": 2, "tutori": 2, "architectur": 2, "precompil": 2, "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "shot": 2, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "especi": [2, 3, 5], "vari": [2, 5, 9, 10], "doubt": 2, "pip3": 2, "addition": [2, 3, 5, 9], "init": 2, "zshrc": 2, "9": [2, 7, 10], "bin": [2, 10], "adjust": [2, 7], "storag": 2, "memori": [2, 9], "opkg": 2, "At": [2, 6, 9], "underwai": 2, "uci": 2, "feed": [2, 7], "debug": [2, 10], "vvv": 2, "21": 2, "02": 2, "alter": [2, 7, 9], "free": [2, 6, 8, 11], "overlai": 2, "ram": [2, 5], "rule": [2, 4, 5], "proper": 2, "laucnh": 2, "boot": [2, 10], "ipv6": [2, 5, 10], "intend": [2, 5, 6, 9], "show": [2, 10], "fe80": 2, "question": [2, 3, 5], "64": [2, 9, 10], "32": [2, 7, 9], "rasperri": 2, "os": 2, "oper": [2, 3, 5, 6, 7, 9, 10, 11], "either": [2, 3, 6, 7, 9, 10], "powershel": 2, "12": [2, 5, 10], "7": [2, 5, 9, 10], "directli": [2, 3, 5, 7, 9, 10, 11], "rnspure": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "obscur": 2, "matter": [2, 5], "perfectli": 2, "One": [3, 7, 9], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "kind": [3, 5, 6, 9], "interfac": [3, 4, 6, 7, 10], "wireless": [3, 6], "decad": 3, "modern": 3, "millimet": 3, "wave": 3, "backhaul": [3, 6], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "abund": 3, "sometim": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 5, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": [3, 4], "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": [3, 5], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "plaform": 3, "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1262": 3, "sx1268": 3, "esp32": 3, "manufactur": [3, 5], "sx1276": 3, "sx1278": 3, "nrf52": 3, "rak": 3, "sx1280": 3, "dual": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "configuraion": 3, "air": 3, "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 7, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 5, 9], "cheap": [3, 5, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": [3, 5], "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "itself": [4, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "resolv": [4, 5, 10], "issu": [4, 5, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "meshchat": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "custom": [4, 7, 9, 11], "android": [4, 5, 10], "arm64": 4, "debian": [4, 9, 10], "bookworm": 4, "maco": 4, "openwrt": 4, "raspberri": [4, 6, 9, 10, 11], "risc": 4, "v": [4, 10], "ubuntu": [4, 10], "lunar": 4, "window": [4, 5], "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5, 11], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 5, 7, 9, 11], "buffer": [4, 5, 7, 11], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": [4, 7], "distinct": [5, 9], "topologi": [5, 9, 11], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "extens": [5, 11], "straightforward": 5, "discover": 5, "discoveri": [5, 7, 9, 10], "router": [5, 10], "sort": [5, 9, 10], "present": 5, "cabl": [5, 6], "intermediari": [5, 7, 9], "desktop": 5, "mobil": [5, 9], "subset": 5, "block": 5, "seen": [5, 9], "isp": 5, "off": [5, 9, 10, 11], "communica": 5, "tion": 5, "usabl": [5, 9], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "id": [5, 7, 9, 10], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "primarili": 5, "event": 5, "backend": [5, 9], "thousand": [5, 9], "interchang": 5, "cross": 5, "backboneinterfac": 5, "socket": [5, 10, 11], "ipv4": 5, "gracefulli": 5, "intermitt": 5, "loss": [5, 9], "listen_on": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "prefer_ipv6": 5, "yggdrasil": 5, "4343": 5, "4251": 5, "201": 5, "5d78": 5, "af73": 5, "5caf": 5, "a4d": 5, "a79f": 5, "3278": 5, "71e5": 5, "listen_ip": 5, "listen_port": 5, "tunnel": [5, 9, 11], "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "toler": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": [5, 9], "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "15": 5, "16": [5, 9, 10], "frequent": 5, "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "simplest": [5, 9], "degre": 5, "retain": [5, 7], "eas": [5, 9], "simpler": [5, 11], "spectrum": [5, 9], "legal": 5, "legisl": 5, "around": [5, 9], "regul": 5, "decis": [5, 9], "ble": 5, "pair": [5, 7, 9, 10], "mac": [5, 9], "3b87": 5, "f4": 5, "73": [5, 10], "29": 5, "4e": 5, "89": 5, "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "approxim": 5, "enforc": [5, 7], "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "datar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "vport": 5, "865": 5, "6": [5, 7, 10], "865600000": 5, "laser": 5, "baud": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 7, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": [5, 7], "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10, 11], "512": [5, 7, 9, 11], "announce_cap": [5, 7], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": [5, 7], "impact": [5, 7, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "natur": 5, "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10, 11], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 7, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 7, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9], "hellman": [6, 9], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "trustless": [6, 9, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": [6, 10], "legaci": 6, "unifi": 6, "carrier": [6, 11], "involv": 6, "hardlin": 6, "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": [6, 10], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": [6, 7], "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "require_shared_inst": 7, "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "500": [7, 9, 11], "adher": 7, "prerequisit": 7, "link_mtu_discoveri": 7, "throughput": [7, 9, 11], "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "highest": 7, "remote_management_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x": [7, 9, 10], "25519": 7, "concaten": 7, "ratchets": 7, "ratchet": [7, 9], "ratchet_expiri": 7, "2592000": 7, "recent": [7, 9], "rememb": [7, 9], "discard": [7, 9], "newer": [7, 9], "meantim": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9, 10], "target_hash": 7, "from_identity_hash": 7, "bool": 7, "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "current_ratchet_id": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9, 11], "keyerror": 7, "ciphertext_token": 7, "enforce_ratchet": 7, "ratchet_id_receiv": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "ratchet_count": 7, "ratchet_interv": 7, "1800": 7, "rotat": [7, 9], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "enable_ratchet": 7, "ratchets_path": 7, "secreci": [7, 9, 11], "outsid": [7, 11], "set_retained_ratchet": 7, "retained_ratchet": 7, "set_ratchet_interv": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_rssi": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "qualiti": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "get_establishment_r": 7, "ocur": 7, "get_mtu": 7, "get_mdu": 7, "get_expected_r": 7, "flight": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9, 11], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "announce_packet_hash": 7, "receive_path_respons": 7, "live": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "condit": [9, 11], "pmr": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "asymmetr": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": [9, 11], "recap": 9, "indirectli": 9, "ledger": 9, "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "topic": 9, "necessarili": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newest": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "thereaft": 9, "297": [9, 11], "neglig": 9, "1200": 9, "96": 9, "x25519": [9, 11], "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "compos": 9, "field": 9, "context": 9, "465": 9, "unset": 9, "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": 9, "spec": 9, "cbc": [9, 11], "pkcs7": [9, 11], "pad": [9, 11], "hmac": [9, 11], "sha256": [9, 11], "iv": [9, 11], "urandom": [9, 11], "hashlib": 9, "trivial": [9, 11], "consequ": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "ie": 10, "breviti": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "unus": 10, "interface_en": 10, "teach": 10, "task": 10, "18": 10, "17": 10, "59": 10, "56": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "w": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "max": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "jail": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "fw": 10, "url": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "addr": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "firmware_hash": 10, "product": 10, "model": 10, "hwrev": 10, "revis": 10, "attach": 10, "older": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "ff": 10, "consol": 10, "unlock": 10, "bootstrap": 10, "rom": 10, "enable_remote_manag": 10, "remote_management_allow": 10, "9fb6d773498fb3feda407ed8ef2c3229": 10, "2d882c5586e548d79b5af27bca1776dc": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 10, "readili": 11, "advers": 11, "autoconfigur": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "planetari": 11, "hierarch": 11, "bureaucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "heterogen": 11, "scalabl": 11, "mixtur": 11, "foundat": 11, "keyset": 11, "intuit": 11, "decentralis": 11, "gigabyt": 11, "lightweight": 11, "44": 11, "sequenti": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11, "consider": 9, "safe": 9, "pitfal": 9, "authorit": 9, "claim": 9, "compromis": 9, "weaken": 9}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 2, 1, "", "mdu"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 3, 1, "", "RATCHET_COUNT"], [7, 3, 1, "", "RATCHET_INTERVAL"], [7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "enable_ratchets"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "enforce_ratchets"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "set_ratchet_interval"], [7, 1, 1, "", "set_retained_ratchets"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "RATCHETSIZE"], [7, 3, 1, "", "RATCHET_EXPIRY"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "current_ratchet_id"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_expected_rate"], [7, 1, 1, "", "get_mdu"], [7, 1, 1, "", "get_mtu"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "LINK_MTU_DISCOVERY"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "link_mtu_discovery"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": [0, 3], "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "custom": [0, 2, 5], "interfac": [0, 2, 5, 9, 11], "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": [2, 5, 10], "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "meshchat": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": [2, 5], "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "debian": 2, "bookworm": 2, "maco": 2, "openwrt": 2, "raspberri": 2, "pi": 2, "risc": 2, "v": 2, "ubuntu": 2, "lunar": 2, "window": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "devic": [3, 11], "lilygo": 3, "t": 3, "beam": 3, "suprem": 3, "t3s3": 3, "rak4631": 3, "opencom": 3, "xl": 3, "unsign": 3, "v2": 3, "x": 3, "lora32": 3, "1": 3, "0": 3, "v1": 3, "deck": 3, "heltec": 3, "t114": 3, "v3": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "backbon": 5, "listen": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "i2p": 5, "lora": [5, 6], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "manag": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "Custom Interfaces": [[0, "custom-interfaces"], [5, "custom-interfaces"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Creating and Using Custom Interfaces": [[2, "creating-and-using-custom-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Debian Bookworm": [[2, "debian-bookworm"]], "MacOS": [[2, "macos"]], "OpenWRT": [[2, "openwrt"]], "Raspberry Pi": [[2, "raspberry-pi"]], "RISC-V": [[2, "risc-v"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Windows": [[2, "windows"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards and Devices": [[3, "supported-boards-and-devices"]], "LilyGO T-Beam Supreme": [[3, "lilygo-t-beam-supreme"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "LilyGO T3S3": [[3, "lilygo-t3s3"]], "RAK4631-based Boards": [[3, "rak4631-based-boards"]], "OpenCom XL": [[3, "opencom-xl"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO LoRa32 v1.0": [[3, "lilygo-lora32-v1-0"]], "LilyGO T-Deck": [[3, "lilygo-t-deck"]], "LilyGO T-Echo": [[3, "lilygo-t-echo"]], "Heltec T114": [[3, "heltec-t114"]], "Heltec LoRa32 v3.0": [[3, "heltec-lora32-v3-0"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "Backbone Interface": [[5, "backbone-interface"]], "Listeners": [[5, "listeners"]], "Connecting Remotes": [[5, "connecting-remotes"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "I2P Interface": [[5, "i2p-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Remote Management": [[10, "remote-management"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]], "API Reference": [[7, "api-reference"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]]}, "indexentries": {}})
\ No newline at end of file
+Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9, 11], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10, 11], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": [0, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "sy": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 2, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 5, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 10, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 10, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 7, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 2, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 2, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": [0, 2], "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7, 10], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 2, 10], "get": [0, 3, 4, 5, 7, 10, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5, 7], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 5, 6, 10], "action": 0, "store": [0, 7, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 2, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 2, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "0": [0, 2, 5, 7, 9, 10, 11], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 5, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 4, 9, 10], "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 2, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": [0, 2], "channelarg": 0, "between": [0, 5, 6, 7, 9, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "server_ident": 0, "queri": [0, 2, 7, 10], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 2, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": [0, 10], "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10, 11], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 5, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 2, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7], "forth": 0, "o": [0, 2, 5, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 7, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 7, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "5": [0, 2, 5, 7, 9, 10, 11], "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 5, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "perform": [0, 2, 5, 6, 7, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 2, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3, 11], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10, 11], "stringmessag": 0, "convei": 0, "timestamp": [0, 9], "msgtype": [0, 7], "variabl": [0, 2, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6, 7], "0xf000": [0, 7], "reserv": [0, 7], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 7, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 2, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": [0, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 2, 5, 10], "resourc": [0, 2, 4, 5, 7, 8], "effici": [0, 2, 5, 7, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 5, 9], "compress": [0, 7, 9, 11], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 5, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": [0, 5], "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10, 11], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 7, 9, 11], "job": 0, "potenti": [0, 2, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": [0, 10], "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "exampleinterfac": 0, "utilis": [0, 2, 5, 6, 7, 9, 10, 11], "fulli": [0, 2, 3, 5, 9, 10, 11], "par": [0, 2], "nativ": 0, "common": [0, 3, 4, 6, 9, 10, 11], "illustr": [0, 5, 6, 9], "runtim": [0, 9], "place": [0, 2, 5, 6, 9, 10], "folder": [0, 2], "similar": [0, 2, 3, 5, 6, 7, 10, 11], "enabl": [0, 2, 3, 5, 6, 7, 9, 10, 11], "gatewai": [0, 2, 5, 6, 9], "port": [0, 3, 4, 5, 6, 9, 11], "dev": [0, 2, 5, 10], "ttyusb0": [0, 5, 10], "speed": [0, 5, 7, 9, 10], "115200": [0, 5, 10], "databit": [0, 5, 10], "pariti": [0, 5, 10], "stopbit": [0, 5, 10], "hdlc": 0, "helper": 0, "delimit": 0, "physic": [0, 2, 3, 5, 7, 9, 10, 11], "medium": [0, 3, 5, 6, 7, 9, 11], "case": [0, 2, 3, 5, 6, 9, 10], "simplifi": 0, "frame": [0, 5], "ppp": 0, "flag": [0, 2, 7, 9], "0x7e": 0, "esc": 0, "0x7d": 0, "esc_mask": 0, "0x20": 0, "staticmethod": 0, "escap": 0, "replac": [0, 2, 7, 9, 10], "sub": [0, 5], "ifac": [0, 9, 10], "default_ifac_s": 0, "particular": [0, 3, 9], "owner": 0, "posit": [0, 10], "dict": 0, "depend": [0, 3, 4, 6, 7, 9, 10], "importlib": 0, "find_spec": 0, "instal": [0, 4, 5, 6, 9, 10, 11], "log_crit": 0, "python3": [0, 2, 3], "pip": [0, 2, 3, 10], "pyseri": [0, 2], "panic": [0, 10], "super": 0, "sure": [0, 2, 3, 10], "through": [0, 2, 3, 5, 6, 7, 9, 10, 11], "step": [0, 2, 3], "compat": [0, 2, 3, 5, 7, 9], "platform": [0, 3, 4, 9, 10], "ifconf": 0, "get_config_obj": 0, "suppli": [0, 5, 6, 7, 9, 11], "miss": [0, 2], "9600": 0, "abort": 0, "f": [0, 2, 10], "No": [0, 2, 5, 9, 10, 11], "hardwar": [0, 2, 4, 5, 6, 7, 9, 10, 11], "mtu": [0, 7, 9, 11], "maximum": [0, 5, 7, 9, 10], "underli": [0, 5, 6, 7, 11], "capabl": [0, 9], "without": [0, 2, 3, 5, 6, 9, 10, 11], "segment": [0, 5, 6, 7, 9, 11], "hw_mtu": 0, "564": 0, "onlin": [0, 10], "bitrat": [0, 5, 7], "intern": [0, 5, 7, 9], "accord": [0, 2, 9], "parity_non": 0, "lower": [0, 2, 5, 10], "even": [0, 2, 5, 6, 7, 9, 10, 11], "parity_even": 0, "odd": 0, "parity_odd": 0, "open_port": 0, "succeed": [0, 7], "post": 0, "is_open": 0, "configure_devic": 0, "ioerror": 0, "log_verbos": 0, "baudrat": 0, "bytes": 0, "xonxoff": 0, "rtsct": 0, "inter_byte_timeout": 0, "write_timeout": 0, "dsrdtr": 0, "thing": [0, 2], "amount": [0, 5, 6, 7, 9, 11], "devic": [0, 2, 4, 5, 6, 7, 9, 10], "read_loop": 0, "whenev": [0, 7, 9], "process_incom": 0, "rxb": 0, "process": [0, 2, 3, 5, 7, 9], "inbound": [0, 5, 7], "process_outgo": 0, "Then": [0, 2], "written": [0, 9], "txb": 0, "wrote": [0, 5], "contin": 0, "meth": 0, "turn": [0, 5, 10], "in_fram": 0, "data_buff": 0, "last_read_m": 0, "in_wait": 0, "ord": 0, "time_since_last": 0, "08": [0, 10], "occur": [0, 5, 10, 11], "experienc": 0, "unrecover": [0, 10], "offlin": [0, 2], "panic_on_interface_error": [0, 10], "attempt": [0, 2, 3, 7], "reconnect": 0, "period": [0, 5, 7, 9], "reconnect_port": 0, "signal": [0, 7, 9], "ingress": [0, 5], "limit": [0, 3, 4, 6, 9], "should_ingress_limit": 0, "extern": [0, 2, 5, 7, 11], "__str__": 0, "interface_class": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "manag": [2, 4, 6, 7, 9, 11], "sudo": [2, 10], "apt": 2, "pamac": 2, "dowload": 2, "releas": [2, 5, 7, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "py3": 2, "whl": 2, "For": [2, 5, 6, 7, 9, 10, 11], "instruct": 2, "section": [2, 3, 5, 6, 9, 10], "might": [2, 5, 6, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "mai": [2, 5, 7, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "pre": [2, 7, 9], "built": [2, 5, 9, 10, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "enough": [2, 3, 9], "rnsh": [2, 10], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 5, 7, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 10, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 7, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "reboot": 2, "again": [2, 5, 9, 10], "environ": [2, 6, 9], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 5, 9], "peopl": [2, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "friendli": 2, "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "come": [2, 5, 9], "easier": [2, 5, 6, 10, 11], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "locat": [2, 5, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": [2, 9], "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 5, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": [2, 9], "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 7, 9, 10], "anymor": 2, "invis": [2, 5], "parallel": 2, "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10, 11], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10, 11], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": [2, 5], "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "wide": [2, 3, 5, 9, 10, 11], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9, 10], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "flexibl": [2, 3, 5, 11], "broad": [2, 3], "cover": [2, 3, 9, 11], "conceiv": [2, 3], "therefor": [2, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "subject": [2, 11], "code": [2, 3, 4, 5, 10], "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "api": [2, 4, 9, 11], "document": [2, 7, 9], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": [2, 9], "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "h": [2, 10], "ping": [2, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10, 11], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 5, 9], "termux": 2, "droid": 2, "emul": 2, "abil": [2, 3, 11], "pkg": 2, "upgrad": [2, 7, 9], "reason": [2, 5, 9], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "apk": 2, "tutori": 2, "architectur": 2, "precompil": 2, "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "shot": 2, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "especi": [2, 3, 5], "vari": [2, 5, 9, 10], "doubt": 2, "pip3": 2, "addition": [2, 3, 5, 9], "init": 2, "zshrc": 2, "9": [2, 7, 10], "bin": [2, 10], "adjust": [2, 7], "storag": 2, "memori": [2, 9], "opkg": 2, "At": [2, 6, 9], "underwai": 2, "uci": 2, "feed": [2, 7], "debug": [2, 10], "vvv": 2, "21": 2, "02": 2, "alter": [2, 7, 9], "free": [2, 6, 8, 11], "overlai": 2, "ram": [2, 5], "rule": [2, 4, 5], "proper": 2, "laucnh": 2, "boot": [2, 10], "ipv6": [2, 5, 10], "intend": [2, 5, 6, 9], "show": [2, 10], "fe80": 2, "question": [2, 3, 5], "64": [2, 9, 10], "32": [2, 7, 9], "rasperri": 2, "os": 2, "oper": [2, 3, 5, 6, 7, 9, 10, 11], "either": [2, 3, 6, 7, 9, 10], "powershel": 2, "12": [2, 5, 10], "7": [2, 5, 9, 10], "directli": [2, 3, 5, 7, 9, 10, 11], "rnspure": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "obscur": 2, "matter": [2, 5], "perfectli": 2, "One": [3, 7, 9], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "kind": [3, 5, 6, 9], "interfac": [3, 4, 6, 7, 10], "wireless": [3, 6], "decad": 3, "modern": 3, "millimet": 3, "wave": 3, "backhaul": [3, 6], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "abund": 3, "sometim": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 5, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": [3, 4], "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": [3, 5], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "plaform": 3, "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1262": 3, "sx1268": 3, "esp32": 3, "manufactur": [3, 5], "sx1276": 3, "sx1278": 3, "nrf52": 3, "rak": 3, "sx1280": 3, "dual": 3, "io": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "configuraion": 3, "air": 3, "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 7, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 5, 9], "cheap": [3, 5, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": [3, 5], "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "itself": [4, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "resolv": [4, 5, 10], "issu": [4, 5, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "meshchat": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "custom": [4, 7, 9, 11], "android": [4, 5, 10], "arm64": 4, "debian": [4, 9, 10], "bookworm": 4, "maco": 4, "openwrt": 4, "raspberri": [4, 6, 9, 10, 11], "risc": 4, "v": [4, 10], "ubuntu": [4, 10], "lunar": 4, "window": [4, 5], "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5, 11], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 5, 7, 9, 11], "buffer": [4, 5, 7, 11], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": [4, 7], "distinct": [5, 9], "topologi": [5, 9, 11], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "extens": [5, 11], "straightforward": 5, "discover": 5, "discoveri": [5, 7, 9, 10], "router": [5, 10], "sort": [5, 9, 10], "present": 5, "cabl": [5, 6], "intermediari": [5, 7, 9], "desktop": 5, "mobil": [5, 9], "subset": 5, "block": 5, "seen": [5, 9], "isp": 5, "off": [5, 9, 10, 11], "communica": 5, "tion": 5, "usabl": [5, 9], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "id": [5, 7, 9, 10], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "primarili": 5, "event": 5, "backend": [5, 9], "thousand": [5, 9], "interchang": 5, "cross": 5, "backboneinterfac": 5, "socket": [5, 10, 11], "ipv4": 5, "gracefulli": 5, "intermitt": 5, "loss": [5, 9], "listen_on": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "prefer_ipv6": 5, "yggdrasil": 5, "4343": 5, "4251": 5, "201": 5, "5d78": 5, "af73": 5, "5caf": 5, "a4d": 5, "a79f": 5, "3278": 5, "71e5": 5, "listen_ip": 5, "listen_port": 5, "tunnel": [5, 9, 11], "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "toler": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": [5, 9], "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "15": 5, "16": [5, 9, 10], "frequent": 5, "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "simplest": [5, 9], "degre": 5, "retain": [5, 7], "eas": [5, 9], "simpler": [5, 11], "spectrum": [5, 9], "legal": 5, "legisl": 5, "around": [5, 9], "regul": 5, "decis": [5, 9], "ble": 5, "pair": [5, 7, 9, 10], "mac": [5, 9], "3b87": 5, "f4": 5, "73": [5, 10], "29": 5, "4e": 5, "89": 5, "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "approxim": 5, "enforc": [5, 7], "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "datar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "vport": 5, "865": 5, "6": [5, 7, 10], "865600000": 5, "laser": 5, "baud": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 7, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": [5, 7], "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10, 11], "512": [5, 7, 9, 11], "announce_cap": [5, 7], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": [5, 7], "impact": [5, 7, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "natur": 5, "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10, 11], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 7, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 7, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9], "hellman": [6, 9], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "trustless": [6, 9, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": [6, 10], "legaci": 6, "unifi": 6, "carrier": [6, 11], "involv": 6, "hardlin": 6, "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": [6, 10], "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": [6, 7], "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "require_shared_inst": 7, "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "500": [7, 9, 11], "adher": 7, "prerequisit": 7, "link_mtu_discoveri": 7, "throughput": [7, 9, 11], "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "highest": 7, "remote_management_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x": [7, 9, 10], "25519": 7, "concaten": 7, "ratchets": 7, "ratchet": [7, 9], "ratchet_expiri": 7, "2592000": 7, "recent": [7, 9], "rememb": [7, 9], "discard": [7, 9], "newer": [7, 9], "meantim": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9, 10], "target_hash": 7, "from_identity_hash": 7, "bool": 7, "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "current_ratchet_id": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9, 11], "keyerror": 7, "ciphertext_token": 7, "enforce_ratchet": 7, "ratchet_id_receiv": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "ratchet_count": 7, "ratchet_interv": 7, "1800": 7, "rotat": [7, 9], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "enable_ratchet": 7, "ratchets_path": 7, "secreci": [7, 9, 11], "outsid": [7, 11], "set_retained_ratchet": 7, "retained_ratchet": 7, "set_ratchet_interv": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_rssi": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "qualiti": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "get_establishment_r": 7, "ocur": 7, "get_mtu": 7, "get_mdu": 7, "get_expected_r": 7, "flight": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9, 11], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "announce_packet_hash": 7, "receive_path_respons": 7, "live": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "asymmetr": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": [9, 11], "recap": 9, "indirectli": 9, "ledger": 9, "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "topic": 9, "necessarili": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newest": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "thereaft": 9, "297": [9, 11], "neglig": 9, "1200": 9, "96": 9, "x25519": [9, 11], "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "compos": 9, "field": 9, "context": 9, "465": 9, "unset": 9, "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "consider": 9, "safe": 9, "pitfal": 9, "authorit": 9, "claim": 9, "compromis": 9, "weaken": 9, "hkdf": 9, "fernet": 9, "spec": 9, "cbc": [9, 11], "pkcs7": [9, 11], "pad": [9, 11], "hmac": [9, 11], "sha256": [9, 11], "iv": [9, 11], "urandom": [9, 11], "hashlib": 9, "trivial": [9, 11], "consequ": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "ie": 10, "breviti": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "unus": 10, "interface_en": 10, "teach": 10, "task": 10, "18": 10, "17": 10, "59": 10, "56": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "w": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "max": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "jail": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "fw": 10, "url": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "addr": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "firmware_hash": 10, "product": 10, "model": 10, "hwrev": 10, "revis": 10, "attach": 10, "older": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "ff": 10, "consol": 10, "unlock": 10, "bootstrap": 10, "rom": 10, "enable_remote_manag": 10, "remote_management_allow": 10, "9fb6d773498fb3feda407ed8ef2c3229": 10, "2d882c5586e548d79b5af27bca1776dc": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 10, "readili": 11, "advers": 11, "autoconfigur": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "planetari": 11, "hierarch": 11, "bureaucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "heterogen": 11, "scalabl": 11, "mixtur": 11, "foundat": 11, "keyset": 11, "intuit": 11, "decentralis": 11, "gigabyt": 11, "lightweight": 11, "44": 11, "sequenti": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 2, 1, "", "mdu"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 3, 1, "", "RATCHET_COUNT"], [7, 3, 1, "", "RATCHET_INTERVAL"], [7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "enable_ratchets"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "enforce_ratchets"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "set_ratchet_interval"], [7, 1, 1, "", "set_retained_ratchets"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "RATCHETSIZE"], [7, 3, 1, "", "RATCHET_EXPIRY"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "current_ratchet_id"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_expected_rate"], [7, 1, 1, "", "get_mdu"], [7, 1, 1, "", "get_mtu"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "LINK_MTU_DISCOVERY"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "link_mtu_discovery"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": [0, 3], "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "custom": [0, 2, 5], "interfac": [0, 2, 5, 9, 11], "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": [2, 5, 10], "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "meshchat": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": [2, 5], "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "debian": 2, "bookworm": 2, "maco": 2, "openwrt": 2, "raspberri": 2, "pi": 2, "risc": 2, "v": 2, "ubuntu": 2, "lunar": 2, "window": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "devic": [3, 11], "lilygo": 3, "t": 3, "beam": 3, "suprem": 3, "t3s3": 3, "rak4631": 3, "opencom": 3, "xl": 3, "unsign": 3, "v2": 3, "x": 3, "lora32": 3, "1": 3, "0": 3, "v1": 3, "deck": 3, "heltec": 3, "t114": 3, "v3": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "backbon": 5, "listen": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "i2p": 5, "lora": [5, 6], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "manag": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "Custom Interfaces": [[0, "custom-interfaces"], [5, "custom-interfaces"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Creating and Using Custom Interfaces": [[2, "creating-and-using-custom-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Debian Bookworm": [[2, "debian-bookworm"]], "MacOS": [[2, "macos"]], "OpenWRT": [[2, "openwrt"]], "Raspberry Pi": [[2, "raspberry-pi"]], "RISC-V": [[2, "risc-v"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Windows": [[2, "windows"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards and Devices": [[3, "supported-boards-and-devices"]], "LilyGO T-Beam Supreme": [[3, "lilygo-t-beam-supreme"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "LilyGO T3S3": [[3, "lilygo-t3s3"]], "RAK4631-based Boards": [[3, "rak4631-based-boards"]], "OpenCom XL": [[3, "opencom-xl"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO LoRa32 v1.0": [[3, "lilygo-lora32-v1-0"]], "LilyGO T-Deck": [[3, "lilygo-t-deck"]], "LilyGO T-Echo": [[3, "lilygo-t-echo"]], "Heltec T114": [[3, "heltec-t114"]], "Heltec LoRa32 v3.0": [[3, "heltec-lora32-v3-0"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "Backbone Interface": [[5, "backbone-interface"]], "Listeners": [[5, "listeners"]], "Connecting Remotes": [[5, "connecting-remotes"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "I2P Interface": [[5, "i2p-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Remote Management": [[10, "remote-management"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link_mtu_discovery (rns.reticulum attribute)": [[7, "RNS.Reticulum.LINK_MTU_DISCOVERY"]], "link (class in rns)": [[7, "RNS.Link"]], "minimum_bitrate (rns.reticulum attribute)": [[7, "RNS.Reticulum.MINIMUM_BITRATE"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "ratchetsize (rns.identity attribute)": [[7, "RNS.Identity.RATCHETSIZE"]], "ratchet_count (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_COUNT"]], "ratchet_expiry (rns.identity attribute)": [[7, "RNS.Identity.RATCHET_EXPIRY"]], "ratchet_interval (rns.destination attribute)": [[7, "RNS.Destination.RATCHET_INTERVAL"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "concluded() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.concluded"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "current_ratchet_id() (rns.identity static method)": [[7, "RNS.Identity.current_ratchet_id"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "enable_ratchets() (rns.destination method)": [[7, "RNS.Destination.enable_ratchets"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "enforce_ratchets() (rns.destination method)": [[7, "RNS.Destination.enforce_ratchets"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_age() (rns.link method)": [[7, "RNS.Link.get_age"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_expected_rate() (rns.link method)": [[7, "RNS.Link.get_expected_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_instance() (rns.reticulum static method)": [[7, "RNS.Reticulum.get_instance"]], "get_mdu() (rns.link method)": [[7, "RNS.Link.get_mdu"]], "get_mtu() (rns.link method)": [[7, "RNS.Link.get_mtu"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_q() (rns.link method)": [[7, "RNS.Link.get_q"]], "get_q() (rns.packet method)": [[7, "RNS.Packet.get_q"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rssi() (rns.link method)": [[7, "RNS.Link.get_rssi"]], "get_rssi() (rns.packet method)": [[7, "RNS.Packet.get_rssi"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_snr() (rns.link method)": [[7, "RNS.Link.get_snr"]], "get_snr() (rns.packet method)": [[7, "RNS.Packet.get_snr"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "link_mtu_discovery() (rns.reticulum static method)": [[7, "RNS.Reticulum.link_mtu_discovery"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.mdu"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_data_for() (rns.link method)": [[7, "RNS.Link.no_data_for"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remote_management_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.remote_management_enabled"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_ratchet_interval() (rns.destination method)": [[7, "RNS.Destination.set_ratchet_interval"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_retained_ratchets() (rns.destination method)": [[7, "RNS.Destination.set_retained_ratchets"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "track_phy_stats() (rns.link method)": [[7, "RNS.Link.track_phy_stats"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}})
\ No newline at end of file