From 8bbe6ae3ae5f146e0784c74a7f1306c91175085e Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sun, 1 Oct 2023 12:09:49 +0200 Subject: [PATCH] Updated docs and manual --- docs/Reticulum Manual.epub | Bin 2491405 -> 2491401 bytes docs/Reticulum Manual.pdf | Bin 2405552 -> 2405554 bytes docs/manual/examples.html | 6 +++--- docs/manual/reference.html | 2 +- docs/manual/searchindex.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index fa0a19ada2f3fb4550cf64e3dbcb475dc01b0ce4..d07e0aaefc79f07946b22bfdaa969385097fa3b7 100644 GIT binary patch delta 39565 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 diff --git a/docs/manual/examples.html b/docs/manual/examples.html index 2a0d913..0352c9c 100644 --- a/docs/manual/examples.html +++ b/docs/manual/examples.html @@ -396,7 +396,7 @@ notifications about announces from relevant destinations.

) # We configure the destinations to automatically prove all - # packets adressed to it. By doing this, RNS will automatically + # packets addressed to it. By doing this, RNS will automatically # generate a proof for each incoming packet and transmit it # back to the sender of that packet. This will let anyone that # tries to communicate with the destination know whether their @@ -697,7 +697,7 @@ the Packet interface.

) # We configure the destination to automatically prove all - # packets adressed to it. By doing this, RNS will automatically + # packets addressed to it. By doing this, RNS will automatically # generate a proof for each incoming packet and transmit it # back to the sender of that packet. echo_destination.set_proof_strategy(RNS.Destination.PROVE_ALL) @@ -3329,4 +3329,4 @@ interface to efficiently pass files of any size over a Reticulum
- + \ No newline at end of file diff --git a/docs/manual/reference.html b/docs/manual/reference.html index ec2163e..1499209 100644 --- a/docs/manual/reference.html +++ b/docs/manual/reference.html @@ -850,7 +850,7 @@ unless other app_data is specified in the announce method.

class RNS.Packet(destination, data, create_receipt=True)
#

The Packet class is used to create packet instances that can be sent over a Reticulum network. Packets will automatically be encrypted if -they are adressed to a RNS.Destination.SINGLE destination, +they are addressed to a RNS.Destination.SINGLE destination, RNS.Destination.GROUP destination or a RNS.Link.

For RNS.Destination.GROUP destinations, Reticulum will use the pre-shared key configured for the destination. All packets to group diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index dca9b56..a5f444d 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, 11], "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], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "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, 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, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 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, 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, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 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, 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], "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, 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], "autoomat": 0, "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], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "adress": [0, 7, 9], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 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, 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, 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, "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], "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, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 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], "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, 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, 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, 7, 9], "happen": [0, 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, "0": [0, 2, 5, 7, 9, 10, 11], "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, 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, 11], "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, 5, 9, 10], "sy": 0, "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, 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, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 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, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "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], "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, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "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, "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], "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, 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, 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, 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, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 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, 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, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 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, "sendig": 0, "perform": [0, 2, 5, 6, 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, 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], "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], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 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, 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, "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, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 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, 9], "compress": [0, 7, 9], "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, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 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], "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, 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, 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, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "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], "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, 2, 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, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "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, "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, "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], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 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, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 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], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "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, 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, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "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], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 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], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "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], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "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], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "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, "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], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 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, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "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, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 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], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "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], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "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], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "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, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 4, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 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], "directli": [3, 5, 7, 9, 10, 11], "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, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 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, 9, 11], "cheap": [3, 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, "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], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "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], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "ingress": 5, "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, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 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, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "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, "frequent": 5, "block": 5, "inbound": [5, 7], "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], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "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], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 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, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [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], "period": [5, 7, 9], "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], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "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, "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], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "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, "bitrat": 5, "report": [5, 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, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 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], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "annonuc": [], "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "sub": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "burst": 5, "temporarili": 5, "held": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 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, 11], "hellman": [6, 9, 11], "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, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "decid": [5, 6, 7, 9], "illustr": [6, 9], "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, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "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, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "individu": [5, 7, 9, 11], "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 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], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "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, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "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], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [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, "whenev": [7, 9], "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, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "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, "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, "solut": [9, 10], "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, "alter": 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, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 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, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "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, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 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, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "retransmit": [5, 9], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "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, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "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, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 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, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 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, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 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, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 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, "ref": [], "disrupt": 5, "subsid": 5, "bogu": 5}, "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, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[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, "", "encrypt"], [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, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [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_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_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"]], "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, "", "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, "", "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, "", "MTU"], [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, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "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, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "ingress": [], "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, "destin": [5, 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, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11, "outgo": [], "incom": [], "new": 5, "limit": 5}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "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"]], "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"]], "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"]], "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"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "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": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "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"]], "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"]], "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"]], "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"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-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"]]}, "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, 11], "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], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "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, 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, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 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, 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, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 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, 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], "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, 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, 3, 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, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 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, 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, 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, "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], "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, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 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], "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, 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, 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, 7, 9], "happen": [0, 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, "0": [0, 2, 5, 7, 9, 10, 11], "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, 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, 11], "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, 5, 9, 10], "sy": 0, "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, 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, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 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, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "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], "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, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "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, "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], "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, 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, 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, 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, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 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, 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, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 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, "sendig": 0, "perform": [0, 2, 5, 6, 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, 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], "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], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 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, 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, "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, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 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, 9], "compress": [0, 7, 9], "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, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 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], "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, 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, 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, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "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], "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, 2, 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, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "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, "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, "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], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 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, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 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], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "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, 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, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "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], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 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], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "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], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "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], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "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, "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], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 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, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "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, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 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], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "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], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "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], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "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, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 4, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 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], "directli": [3, 5, 7, 9, 10, 11], "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, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 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, 9, 11], "cheap": [3, 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, "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], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "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], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 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, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 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, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "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, "frequent": 5, "block": 5, "inbound": [5, 7], "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], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "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], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 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, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [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], "period": [5, 7, 9], "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], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": 5, "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, "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], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "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, "bitrat": 5, "report": [5, 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, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 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], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": 5, "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "ingress": 5, "individu": [5, 7, 9, 11], "sub": 5, "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], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 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, 11], "hellman": [6, 9, 11], "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, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "illustr": [6, 9], "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, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "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, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 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], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "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, "flag": [7, 9], "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, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "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], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [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, "whenev": [7, 9], "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, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "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, "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, "solut": [9, 10], "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, "alter": 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, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 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, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "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, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 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, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "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, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "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, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 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, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 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, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 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, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 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, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[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, "", "encrypt"], [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, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [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_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_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"]], "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, "", "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, "", "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, "", "MTU"], [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, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "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, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "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, "improv": 10, "fix": 10, "port": 10, "servic": 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": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "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"]], "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"]], "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"]], "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"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "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": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "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"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-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"]], "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"]], "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 (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "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"]], "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"]], "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"]], "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"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "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_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_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "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_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_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "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"]], "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"]], "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_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"]], "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_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_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"]], "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