From dec9145d65d50e9a7e55593ff49cdd7a6b385e0a Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Thu, 29 Aug 2024 17:02:22 +0200 Subject: [PATCH] Updated manual and documentation --- docs/Reticulum Manual.epub | Bin 2568147 -> 2569073 bytes docs/Reticulum Manual.pdf | Bin 2410322 -> 2411707 bytes docs/manual/_sources/using.rst.txt | 121 ++++++++++++++++++++++------- docs/manual/index.html | 1 + docs/manual/searchindex.js | 2 +- docs/manual/using.html | 117 +++++++++++++++++++++------- docs/source/using.rst | 121 ++++++++++++++++++++++------- 7 files changed, 280 insertions(+), 82 deletions(-) diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index a35729b64b8b35016c3634a5513b2e351019dc64..d1168ae7d6f209019fa1455a64dc9dd94687f5c9 100644 GIT binary patch delta 27593 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 delta 26589 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 diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf index 547fbfc75cfa905de66ed2dc944d6d74e2cae2a0..d5deb7366729e129eaf6df588777c24b8996e94b 100644 GIT binary patch delta 70949 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

; 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 delta 69354 zcmZU(V~}RSwys;YZQHhO+qUhm*k#+cZFkvLmuh@ZD$2oEDjmRHQW+Y7>Y z@GwoMELbQ4Xc2w4BoRo?J)I%(z6dnFJL0Q6X|Gw@A<#8%bSB6W-`I#!uluZukk_6> zwA~0e)&8a-UKj=O6+P90bE zWO9E7WoKeOj1G_$oe=+C6fjf&brH{3Rz>#LA@GT!rOvyT=Tz{N+KsU9_X_^dWL%6q zj)P~Ub80nHId$;OW9F`?B=^RKqG~NQ>+!MhQFv&zOxGIVyjXp7a;uqM)OGMrfgX7$ zXYK(1KKX09qQr`M(UreSlT1fu>6eQp%B+|gOfay3jJ#p3t#ma3rZKzj0n z!#Ky9sje!(E$c#nu=%0E{HLllz|*IOcSq$4kEd3ngxQHH>Wi!ltHK5{gAhg5lF#Hc z7sGl`dTSwWzV%RjGW(JFHqB3?6?M4N!jb9F1k<#-Q}+(zsEcz$A}#5a=iF&j?;nulBl5bb*L<|4 z{mhIvQ8n{!X!gL`1>1E_sn9m_u4qn#Jy+?r$64ql-B^2NQCwy@KCHga)_W|v=;dR} z%s2lQ_H_K2TY%vXB3T5e0J%#-Rn#vfREI>^IJ zu<-!|zuXc%hsN2c=${q+aPs$E*Yr?Me8bPx2US)0&PCvC%P#_sqa;0LuD92if2#0? zN`J+%A}j>#+;%F!Yf|U#{?0$yieYEW_$(k0FDxq>CwRt3$;=D1^L7fD21BbQ*n3Fu zx>Dnl?|8`}5CBQZ2C~_)1}BUjQWUyBOaKB5fdQe{OFhal=OQo~FYzBcr$WbfH$F~Z z6*cl-D$@=@O>K~$$tT^D8g40iF}5DjQ_^0dJKkzj>OAcDutvGxNx8}#)_U=0eSytv#nvU$!AOH}bEfaR5l{oPbzPTukOJoF z=Sg$0qe@ps@{BWrTzEmj%Z{hH5qm<}QsB&LLu@79efD(-OM)yV^B521(kj6n*w6QQZ&avmvs926-i z#$8LPNp~i){@o(nrm%ou5SR)ws{$)JfCrMPeyCkcJDBh+Dh;qoFX!rKU|J~5)bjwg zObpEGx)n2xkc$Z_2pMG?v5x65f^RD1ikyarceOlz7(Xt8W3X^ymo;r z`X5_bsS!~y2|e{f5Jjb+vEl7MG6E&Y=sN?nR2j`$LJ(TTW(y#bRN!e*rZZ7+I-_|>$a|yt=2K|6 zkKe;VTj_S>SWke|V&tH~fjmkkEEqR3CM>!LQYI|BK(jrBRu3jDn`B-j@SteCbybR#5Z zuu>x?5;O_02a+u@Bc>*}p>eEr_Xc{1cnl^iQa@26CJBHC7gkKAnWd=9`_cx52GYr( z5lsytzmFLKL1sAPoM29N_}p~w@p1XFTT@nU{`EWmrt9m>;aIURAux*KhZfq1F9Sp8 z+wYN_XlzVW1_6w|z1=lExz4x7oxh>ctkkpOtC><2khwCo-wg*Q-T)~2)`jnx5od`_ zxwWz_>pOrwJfr!WOmvNVZjJ7b$h5xH8Y7Ee;sQezYZPMZ!LJb6{bLnBZ}|NXD?->& za!kyjF-1Gjx;x*t*t6PkE516kA0&C*_pQ@|+mM${dD6?SpP&{wF{8tz%r|lG`u*pw z<4g);y55tJHf6$6)7To)0u66Nwt}?G1iZ_(O;v!UcMHf{eeb%&r^M7(7s7t$s=#aw zrYvxN_BG)5ac{F#<)KC4p~VI#uW0_Cxf!@MkG7BpscenIjx$v}-qq8v^`@jvF`LJ< zSy+Bti{Nf;^ry(dqAsW-C`&xDzq5C2GxZouQ zTXNm@9?VcyJe9?CJd}?rp_t}2Ob-z@>e7E+}kCX>doY{GQ)mLA7iU89CNzuF9 zD@vGe#r}So`AcZs+T`3#shoaO#xOFW6Crd0pKH*fY(mfnI%}ebYijIlf1cS0bOrEg ztaekUv_Y(9>zehk7#Z8*$uKgbin)5si`THMTgP&iz0=#*($hH8+30A0Gox-Gbsc0! zX&UtB+O~;tuyQyqH%0=FS7xF}shm zdcHBv-hFi^!>1h7TJ35|W%lX)NDM%@$z~QK` zF6hpa0rZy~Yu8f7^yHh`pA9_5c;AP#cAm?RGDg_GZ<9B`SLGNFjJboEtDB3tvHgF@ z(ZmLZot>G8iReGX$Cn;GK?L2LiWC8oUMK^C+RTJ11PaXB?2N$;mLAjrjN06bBM6p^ zhldb0?qKO= zMa0a-mF^5hNDXM!wsqVZMfsXFY$V+J4BFhz^amCW;;ZuoEwM6!JR6>X6xTp0tUQu& z%l`h%D_o;hEs`ovhp@XzI>_VpwXiTWn~|YiRZbL7OxZ73*D@Cok)He&u}I5;Kpx=w z)^3%ARjQm9x=V z@rcNeKLM1k8PY}UmK%t>Ni8tvs2u1hlovr*o8GTTLi|mvm@cMps6vcLvb;tdHcnZ4 zu>cq%jRcSv*lr$j0)5~jRDG1{EG{#-AdnH{cu(92uZbJD)W;% zh1ofM{NQW+*eSH5-GAm{kS?($Qh2>p7Y-Pj`ShjxDDl=N%69m{(4Sd7UK4*kuKrXr zOqDndGcU)jb~tpNYy49;b)E2f6JT5E$CLE8gvJ*;OZmc0?&}j|IqFF> zeJJELX50BuQ-3=E*XBl% z?5{efRu;&6;qptaUDxom&$tm6hnIofmvT(c=JJ<^qc&y_cq1b z!8cjT;Nvo>H{<-A5bMJD#M!7npML;0GE}qO{Ddv8>6iR&j4<1mbroACH(EbsxOkjl zrn;YBZj!2o-~DGiO`OXTf3rR$g4ecNzM6TJ-6UF@AIt<(dl}6zNY7J0AYwy=yUu6T zZ=-c)kTZw(Ut0t}i%zW1Kc)gs{m&FIry%2FC0@N9gDZdtB;jt%i#TIL|+GCBZL04hi|e-gr$tmkNKkAR#=n zoNN;G7AVtreB-)59{=T|+nm7~lqSm<{m$sj61(xn?R4B8E?+?JHXTD+Y!}!T zrlrk`#e1nTcyT{&UR>AyO#k_4(7kc9LAPkL!IEZXF28;~XJD7zoU#}Qw?rqsKZ7WP zDT8Ba5^BoU;?d$sl1t{j$S5o}qghYFKZwR=wCKsWH~IfS%Du{{EHcLh9DL)%RS|mD~Tw6~+<;}RN=PZYq zmnRu0C^b7)nU?$#(c6iiJS;CsN(sw5Pt08^S?4vfvqp?iHu+RIcxC%;W1Lu_ERf74 z5z!$`e??jXlU$kHB;6h~Xm^>g2o)`;@)gYCETQlf$w~ik;4sU3TAD}RKN~kw;(h>Sr zI^YR|w0?xjBQdKNufW3IYA7p^`lo5FS-%D(42B@QLnB9d-U-4IN5>N1{J{vYwrHtwO`I&GR7Nb@Ac+7!9wumPcdH_sdU%pcMt$bYdtU!P{d)aI*Lfa?rG2Eg&J-#jBX@7) zzUH>Zh~gi}*-WCHDE#|5YgGcBCU!W$mEpsI5d)uBJodWt8W0oYc@2E)29#wRD0CDA z6fP!^6ye?JSJdp~%;Uw1-@`MQhzZFoI-PCcjZ{QLQiv&n1cc|a)cLwF7Nmz4M+5*L z$ltl!hf>}&H0zj-_qmI9}gMnbI_^e+fR^@?3)?aZW}W~ z>8#kw)Z5o9ujg18u7NX{DT3Nw%UBvl7Rz!a};wUrnM=tC_ddaT>*W04wdK+Db-d6kIF?|U)s40oMgiu0vu z$B?8J^r?V5P zL7ir^068;NHP+NGPi;lAQLm%JjcI_5~SrczyJ@6 z@qXNvMepC8@e4qDTHOEq-lPs!U~#rTgvPs7N$L@T$Oz_OXhQ;>y?jJCiszq7R&obDaC$7 zL~r(oE9!SvD?2K(V|8Te1sMusJ2+PV`0Ns_xP_a^lI8`T<-2%E&pK8L|4CF157vS* zS%!$E-<+LaS>=-u?Ey(su@0dPq^#pwsZpxa@8z2a2szZ@W9N z$`iPHM;vgUKW0L;J<^C}aUrNaXQpp~+ugmZz42rH@e?H3$i6otmwE;l+b)hHa%Cgh zO)^!JXdn9WWc7#Vr2srrOCkY1nBtVZ^x}M?AIijd5}Bn$k|BZP zwFl`1Nu_^DBm1FQZb0;GV^g%5EvR{2-#t|foEBgh>&2AMkWr?QU-E=YAd0kQl-Z}^ ztTF5$()852ws>T9epDV^tmdsvj+unPdIMd@1fCvDl-e!u=i82D1A{)g!n6w@7rPp! z#OnVg8EEAn_?P$Y*YA~F!ti;6R49^ICHXS;kQ_vL^`EYbFO~2NV#zDr-&g7YqSfC7 zMQ(r{P69OX*)W|F>-sxT>1z?rlWNAKr0jYWx<|VOew8D=Q%{!YE9T;?4ak-D%09Z| zwjVFM=wrqeE)Sn={&P$o(n}Cqbf=5Ut@FKG;1od+L?7Y@Drh9w-VK+#d(^uVm-k!} zEXf`F=b}={46_URo{2rquj?AH9oy&$fG~N28jI8ty2+vbarYPO6GN}q|GyOFWcqKF z3ChgElnz`-L<7i{cg^O)8oT{Qjo|Nxo_~ zgr2C2?K$@#rF57cF*2Gr{dwv+`vC&u1PWdP)^jk00}o{0R|BXd26hVU2O}ZGV~mh7P6D#6Lb36_F^D=y~{YnZ%7HKq_-e#BB6f27L(M-+E zVsB-?$LxOpnq4nH`M|~7L8l>c^6IxfS&3lfiz!B4>VGWXR-*Rg6*(0Y#d<_vB+T>r zct8-pq5=>IW>}{xSfZLk8(37y(f1csbz3M+0({&)flz)76Ea3nd;}tO>)8%-Q)9C% z)wQc?lsm;g8oQ+M{}d?`s4^_<&#yzH?RM+@u!!PwYfd_9Ecnq&TsY3uy7r{$`8rqP z2%1F=2R&kuKB!4da7z4U=E>FkHSX_fD_v6RiU-I&kOR?uSmb`C81m7i?5lH^%jatu zZ-Z6H{jd@#cS<%7uS|sl71Cj z(Clk!>1@wT1&2X0Q77r8pR#EjIc^LMhjc%+YZo~VVrjNA?F;f@t6$`kwMAv`v6EF^ zBn9|mG=YGV%BIt1O*8e@b{$3@Ic-0SBPSb0WQzW6r0Vxt;1UjxdnKoq#fot`pvph4 zvWw~`D%9RY>q5It`vZOJd;?>NQWJB4a4O#I_F;2W7S`nLsmj}ex!hb;cpNrZ5cVN&^br_8*vM;t-8C%$toN&^5UN}FzeFEXZEbV8t;_GJAGj#NyBWdc^5 zI3J-XcScW9m051?e_c}RV3W$ffuB6Wl_2uVijLYHCbOZXRCSyIvss(nQR5xGi@_w3 zo+8>>lbV!y*?NoGoCl9jorctBk+_E&@mPk&*D%#y`?S=D&Wun$&l~{-gQ{yhRSV$Z z(E8MELOqk$(yVZtzchXIe#sH!Tl6WF;&=JTSr_^2y-;CpN%s1rq@b+Gf;V9n{yw-2 zVsX}fYI)hYzv@bW0*gWQ7u{MGx6tMuX4(Qb_27^_T#u0>Y+kH=$!( z{=QYs6M3bHIXB6%45HFZo_6g^c@022_LzxVAh>WSR6#?aX;qq&_t08(q)=uHU`%=W z7?2$(+c#>ir$6})k-}Tt(ai^^3)$~c*Jnpv#W!SrmY;y5MPzhXW9nww|^> zwaVmw2BJd#j-;FI4X9AMMsaqCbcEOYU80O1ms@_a5`3u>Cz3(5h?bsLJR`@5H&(gdu=J(T`S9zp; z8&TX?NIhtYC$Z28xQ&EqjuS_MJfvnm(fIQ|;wTpNfWPko+PqjcB*mV~UARAFb`kp$ zmasDkazTf^WUDEL_yYbT;br9^|3B@G3c}2kEDS@Dti*!=%$iQT_|IEu)s>IOYe(*# ztKVbpbQ(8NPXq%4Z38CSXtb509e98Bj-SGxielex$Q}UMURqN9 z>e3>tuj*K(D>0f8Wk4UpDdE7=RoZ_hn3iqG6OoTIMUZ!{l|75immSaK^nll%R$PTo zx@&chXer{VB=$X?p+5qo5%<0(beHc@gHKQ&l0hOLM?zA^QVJCfB?qHcQ$iv%E;@;e zNNWV2;>nDH@*m1jcW|dGwLH+mkFfSPDbW!5z9{La<}4RLXW%QbW#{pE_R!z))K!Tf z#z7utzNJddN8#$r%v-#5TFnbMv>9c3f!$KTgMj1UWq>nU&;J6zK114j6|%qv0+X|W z7>U1uBn(%ZB!HTCijW)Jv8$hg8~Prj8`(s19`@B;AC;PlH_*L_SBMxZ8PfZCrYg|` z_oON5Q>%;CidA6Plu%EB1yfUbtVw#-MBB#Uax!_PIL;b?BcR~y_bIH2gbl6TFc z7K)Jaqn2r(sdxjL!|NhB*XH4o@NQRwzK>Ro+5LD{`#d8&!&^(1y`-HWP=|B}%Nhjy zo?}=~v$*w$jt)iP=J zu-5|%-?VULSYi0Zv+{|CVn7&Qu?&>m)$0pSQ& zVMUw#JVQ0FA^wu9r0~LdO7p5+cTsUMeI0)DT|DIFj&)-_uGLxW8b=@H@^VGKnGEnsLBtx{z3nU^iC^nJwsfOSWC%g54o_=r7l14fAqpXvIl87T#JebUrDxS$i zg0F~SovZQbB-<-8@*UIUrXbTGM$6~*#CS4UGFOp<$eFFQRt%g85VjGMNj8*tDFY!$ z_hUd4$zg+ToZfurd&^XrOgsP9=BIHbd`nd?O!xJ)SUYnB&m< z?a!NK1)AJkiqq$QIAPz{m4Cq^6-+}B3(kT5G823#8gyrkgn{f)Yzu!Rp z?A-2lueWnZJIv{+Vt&};RCfN&aC^Vn^5fc17k6&|ue7ZL@0;OnPR?6M zNrLomkH@dAHN)*Mv|k|FU(1aGbB6uHj>^s@;h(>5b`LA*G9$v!mxk}}T{9(fC9?sN z`C~ls_5_4GkztF&&XdX1ie-G64`%-tXjKg|A0|^Y%X(OjQ>p9ayv-;7JLERGM6FoP zm;3Plg1Iuj><7EaX6pX~jylk^1|Dw&N5A?!4B&=CMkyR?@8HUA=@ayAFK`7*8W0;jzZ0@oN57y>55eHl0D zgMbM(qDEcq_mEAvb6bNxj8CsDJ1oZJ9}?Ppv_$)wV4)ZNDDIuaSPEM>%DWs3p^i)wB>klsKu!XF7w%0e{y0=4b>Q*qq^Cs>edCo6Wph>ig_ z!LcF+E{qOEVCM0c`MMS6!mwipR4Uyia(W|3qU2)K@i@_Y6jgxZzmVr+VcZUi3k`YP zOt~%Sedp;S=*6vA?5GR44pMr@{&-ZLy#3X4iIyNpW${V@(T!D^{Pj*C_(TOoVbqED zh33FDpv+-G&?bbxI4EF56k{LdgHFztW+jUcD`5iv7p!mE2boyICvM~t0#1-`Il6Ux z1{i)BsZk!Uh8$oR{}j-}FaS%V45TLgW(Vc;C~qW2o@~5qIc| zokPs&YenJ|4*!Q;XKQino?*&ak1!P8M;edh^sK2g9$a7wx&NafzHx-w9qT$xAnsNB z_uaZL!QmB4*%;OELz;l!;NK2}Ngk&P0XMZCyS<9BLn44X1uF>hgo@J$q8GFF^UnLnurS~$9tEJ9{^y|*MIo92HithYrKfx@BpV3T5`5(^5+H=l1KmS=8 z|5=j%(=K!DSG@tb%`-ff+3vF(|LIcKD|ow4R;wChKWwI~mGy8Ow^G;3d)rUi{_jwE zkHGOWb-kju|Kz2rLH@%>3Sh0g=bNa$j4l3s9Q(?w5O2`KBd@neiN+LcOQu^!^fGIM zwq10Pwe?iLd9BN&WK`bfPcG~l+s#8ShfnWb0=nv2u-}R4VY!R#eP5-m{*sf^C9^eP z{g=)tghiDtVitOrvJ+DqV&c(xj)N)UHUZo5TVzW^1;_WL(3NRFAAmL7;5i@M7gKA~ z^CsOk$NMI8unqm@kt?_~_vsRK9X94rI^11h$*gALtv%Fscnvo0PU3ZmyJhbl7eK&AD|Xqjd0UhlsgbK@c(q`7quXD!vO%Wx zXQ4dQc_489dmsPoh5HL7r@+}wf`t@S4X)eg8Ge6ZDNVGe+@H?nHvkxVfeM)G_JFgW zoTe;uqwu;C8}WJdAgMd(=>54tm~XT_8&(Ik@J9RJ>9dCg7GaDQY_?`O2t{$RnaH0{ zDAbKJd^()pmMWj=-H-<3B)QYj%Fg z7i?6?4&rtH9ASKkzrY~O-08#=#Hh^-Qn0fVq{{l_X!k7~iDYfdqfg-iyx!llPf5J5IS*v3GDuyce2y0!

VFuO4NM4|UT8}|g~-MEe_du4HnwzN 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

_* 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 AasU7T diff --git a/docs/manual/_sources/using.rst.txt b/docs/manual/_sources/using.rst.txt index 91c1018..20260c0 100644 --- a/docs/manual/_sources/using.rst.txt +++ b/docs/manual/_sources/using.rst.txt @@ -312,8 +312,9 @@ Filter output to only show some interfaces: .. code:: text - usage: rnstatus.py [-h] [--config CONFIG] [--version] [-a] [-A] [-s SORT] - [-r] [-j] [-v] [filter] + usage: rnstatus [-h] [--config CONFIG] [--version] [-a] [-A] + [-l] [-s SORT] [-r] [-j] [-R hash] [-i path] + [-w seconds] [-v] [filter] Reticulum Network Stack Status @@ -326,9 +327,13 @@ Filter output to only show some interfaces: --version show program's version number and exit -a, --all show all interfaces -A, --announce-stats show announce stats + -l, --link-stats show link stats -s SORT, --sort SORT sort interfaces by [rate, traffic, rx, tx, announces, arx, atx, held] -r, --reverse reverse sorting -j, --json output in JSON format + -R hash transport identity hash of remote instance to get status from + -i path path to identity used for remote management + -w seconds timeout before giving up on remote queries -v, --verbose @@ -452,8 +457,9 @@ Resolve path to a destination: .. code:: text - usage: rnpath.py [-h] [--config CONFIG] [--version] [-t] [-r] [-d] [-D] - [-x] [-w seconds] [-v] [destination] + usage: rnpath [-h] [--config CONFIG] [--version] [-t] [-m hops] + [-r] [-d] [-D] [-x] [-w seconds] [-R hash] [-i path] + [-W seconds] [-j] [-v] [destination] Reticulum Path Discovery Utility @@ -465,11 +471,16 @@ Resolve path to a destination: --config CONFIG path to alternative Reticulum config directory --version show program's version number and exit -t, --table show all known paths + -m hops, --max hops maximum hops to filter path table by -r, --rates show announce rate info -d, --drop remove the path to a destination -D, --drop-announces drop all queued announces -x, --drop-via drop all paths via specified transport instance -w seconds timeout before giving up + -R hash transport identity hash of remote instance to manage + -i path path to identity used for remote management + -W seconds timeout before giving up on remote queries + -j, --json output in JSON format -v, --verbose @@ -524,20 +535,27 @@ these as part of the result as well. .. code:: text - usage: rnprobe [-h] [--config CONFIG] [--version] [-v] [-s SIZE] + usage: rnprobe [-h] [--config CONFIG] [-s SIZE] [-n PROBES] + [-t seconds] [-w seconds] [--version] [-v] [full_name] [destination_hash] Reticulum Probe Utility positional arguments: - full_name full destination name in dotted notation - destination_hash hexadecimal hash of the destination + full_name full destination name in dotted notation + destination_hash hexadecimal hash of the destination - optional arguments: - -h, --help show this help message and exit - --config CONFIG path to alternative Reticulum config directory + options: + -h, --help show this help message and exit + --config CONFIG path to alternative Reticulum config directory -s SIZE, --size SIZE size of probe packet payload in bytes - --version show program's version number and exit + -n PROBES, --probes PROBES + number of probes to send + -t seconds, --timeout seconds + timeout before giving up + -w seconds, --wait seconds + time between each probe + --version show program's version number and exit -v, --verbose @@ -578,8 +596,9 @@ Or fetch a file from the remote system: .. code:: text - usage: rncp.py [-h] [--config path] [-v] [-q] [-S] [-l] [-f] [-b seconds] - [-a allowed_hash] [-n] [-p] [-w seconds] [--version] [file] [destination] + usage: rncp [-h] [--config path] [-v] [-q] [-S] [-l] [-F] [-f] + [-j path] [-b seconds] [-a allowed_hash] [-n] [-p] + [-w seconds] [--version] [file] [destination] Reticulum File Transfer Utility @@ -594,10 +613,12 @@ Or fetch a file from the remote system: -q, --quiet decrease verbosity -S, --silent disable transfer progress output -l, --listen listen for incoming transfer requests + -F, --allow-fetch allow authenticated clients to fetch files -f, --fetch fetch file from remote listener instead of sending + -j path, --jail path restrict fetch requests to specified path -b seconds announce interval, 0 to only announce at startup - -a allowed_hash accept from this identity - -n, --no-auth accept files and fetches from anyone + -a allowed_hash allow this identity + -n, --no-auth accept requests from anyone -p, --print-identity print identity and destination info and exit -w seconds sender timeout before giving up --version show program's version number and exit @@ -685,15 +706,19 @@ to create and provision new :ref:`RNodes` from any supported hardwar .. code:: text - usage: rnodeconf.py [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-e] - [-E] [-C] [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i] - [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate] - [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [-P] - [--trust-key hexbytes] [--version] [port] + usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version] + [--fw-url url] [--nocheck] [-e] [-E] [-C] + [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i] + [--display-addr byte] [--freq Hz] [--bw Hz] [--txp dBm] + [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump] + [--eeprom-wipe] [-P] [--trust-key hexbytes] [--version] [-f] + [-r] [-k] [-S] [-H FIRMWARE_HASH] [--platform platform] + [--product product] [--model model] [--hwrev revision] + [port] - RNode Configuration and firmware utility. This program allows you to change various - settings and startup modes of RNode. It can also install, flash and update the firmware - on supported devices. + RNode Configuration and firmware utility. This program allows you to change + various settings and startup modes of RNode. It can also install, flash and + update the firmware on supported devices. positional arguments: port serial port where RNode is attached @@ -703,20 +728,26 @@ to create and provision new :ref:`RNodes` from any supported hardwar -i, --info Show device info -a, --autoinstall Automatic installation on various supported devices -u, --update Update firmware to the latest version - -U, --force-update Update to specified firmware even if version matches or is older than installed version - --fw-version version Use a specific firmware version for update or autoinstall + -U, --force-update Update to specified firmware even if version matches + or is older than installed version + --fw-version version Use a specific firmware version for update or + autoinstall + --fw-url url Use an alternate firmware download URL --nocheck Don't check for firmware updates online -e, --extract Extract firmware from connected RNode for later use - -E, --use-extracted Use the extracted firmware for autoinstallation or update + -E, --use-extracted Use the extracted firmware for autoinstallation or + update -C, --clear-cache Clear locally cached firmware files --baud-flash baud_flash - Set specific baud rate when flashing device. Default is 921600 + Set specific baud rate when flashing device. Default + is 921600 -N, --normal Switch device to normal mode -T, --tnc Switch device to TNC mode -b, --bluetooth-on Turn device bluetooth on -B, --bluetooth-off Turn device bluetooth off -p, --bluetooth-pair Put device into bluetooth pairing mode -D i, --display i Set display intensity (0-255) + --display-addr byte Set display address as hex byte (00 - FF) --freq Hz Frequency in Hz for TNC mode --bw Hz Bandwidth in Hz for TNC mode --txp dBm TX power in dBm for TNC mode @@ -728,10 +759,46 @@ to create and provision new :ref:`RNodes` from any supported hardwar -P, --public Display public part of signing key --trust-key hexbytes Public key to trust for device verification --version Print program version and exit + -f, --flash Flash firmware and bootstrap EEPROM + -r, --rom Bootstrap EEPROM without flashing firmware + -k, --key Generate a new signing key and exit + -S, --sign Display public part of signing key + -H FIRMWARE_HASH, --firmware-hash FIRMWARE_HASH + Display installed firmware hash + --platform platform Platform specification for device bootstrap + --product product Product specification for device bootstrap + --model model Model code for device bootstrap + --hwrev revision Hardware revision for device bootstrap + For more information on how to create your own RNodes, please read the :ref:`Creating RNodes` section of this manual. +Remote Management +----------------- + +It is possible to allow remote management of Reticulum +systems using the various built-in utilities, such as +``rnstatus`` and ``rnpath``. To do so, you will need to set +the ``enable_remote_management`` directive in the ``[reticulum]`` +section of the configuration file. You will also need to specify +one or more Reticulum Identity hashes for authenticating the +queries from client programs. For this purpose, you can use +existing identity files, or generate new ones with the rnid utility. + +The following is a truncated example of enabling remote management +in the Reticulum configuration file: + +.. code:: text + + [reticulum] + ... + enable_remote_management = yes + remote_management_allowed = 9fb6d773498fb3feda407ed8ef2c3229, 2d882c5586e548d79b5af27bca1776dc + ... + +For a complete example configuration, you can run ``rnsd --exampleconfig``. + Improving System Configuration ------------------------------ diff --git a/docs/manual/index.html b/docs/manual/index.html index eca2666..7d08f24 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -281,6 +281,7 @@ to participate in the development of Reticulum itself.

  • The rnodeconf Utility
  • +
  • Remote Management
  • Improving System Configuration
    • Fixed Serial Port Names
    • Reticulum as a System Service
    • diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 561e9c6..e2435bf 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10, 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, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 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, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 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, 10, 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, 5, 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, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "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, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 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], "o": [0, 2, 9, 10, 11], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "load": [0, 2, 7, 10], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "randomlei": 0, "ifilepath": 0, "storag": 0, "identitiesi": 0, "configdir": [0, 7], "server_ident": 0, "from_fil": [0, 7], "log_verbos": 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, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "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], "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, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 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, "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, "teardown": [0, 7], "break": [0, 2, 7, 9, 11], "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], "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, 7, 9, 10, 11], "_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, 7], "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, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "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, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "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, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "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, 10, 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, 7, 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, "window": [2, 5], "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], "friendli": [2, 11], "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "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, 5, 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], "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, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 10, 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, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "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], "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, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "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, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "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, 5], "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, "meshchat": 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, 10], "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], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 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, 10], "communica": 5, "tion": 5, "usabl": [5, 9], "interface_en": [5, 10], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "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], "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "sub": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "highdatar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "wrote": 5, "vport": 5, "lowdatar": 5, "865": 5, "6": [5, 7, 10], "865600000": 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, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "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, 7], "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "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, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "ingress": 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], "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, 10], "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], "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, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "alter": [7, 9], "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "remote_management_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, "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, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "qualiti": 7, "get_rssi": 7, "signal": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "get_establishment_r": 7, "ocur": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "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, 11], "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, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "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, "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, "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, "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], "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, "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, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 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, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "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, "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, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 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, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 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_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "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, "meshchat": 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], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "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"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "minimum_bitrate (rns.reticulum attribute)": [[7, "RNS.Reticulum.MINIMUM_BITRATE"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "concluded() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.concluded"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "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_age() (rns.link method)": [[7, "RNS.Link.get_age"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_instance() (rns.reticulum static method)": [[7, "RNS.Reticulum.get_instance"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_q() (rns.link method)": [[7, "RNS.Link.get_q"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rssi() (rns.link method)": [[7, "RNS.Link.get_rssi"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_snr() (rns.link method)": [[7, "RNS.Link.get_snr"]], "get_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_data_for() (rns.link method)": [[7, "RNS.Link.no_data_for"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remote_management_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.remote_management_enabled"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_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"]], "track_phy_stats() (rns.link method)": [[7, "RNS.Link.track_phy_stats"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10, 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, 5], "minimum": [0, 5, 6, 7, 9], "setup": [0, 2, 4, 5, 10], "requir": [0, 2, 5, 6, 7, 9, 10, 11], "connect": [0, 3, 4, 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, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 10, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 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, 10, 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, 10], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 10, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 5, 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, 2, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 5, 7, 9], "happen": [0, 2, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "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, 2, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 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, 10], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "o": [0, 2, 9, 10, 11], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 7, 9, 11], "load": [0, 2, 7, 10], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "randomlei": 0, "ifilepath": 0, "storag": 0, "identitiesi": 0, "configdir": [0, 7], "server_ident": 0, "from_fil": [0, 7], "log_verbos": 0, "queri": [0, 2, 7, 10], "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, 10], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10, 11], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9, 10], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 7, 10], "dbm": [0, 5, 10], "snr": [0, 7, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9, 10], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": [0, 10], "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "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, 7, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7], "forth": 0, "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, "teardown": [0, 7], "break": [0, 2, 7, 9, 11], "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], "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, 7, 9, 10, 11], "_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, 7], "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, 7], "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "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, 7, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 7, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 7, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 2, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "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, "daemon": [0, 2, 5, 7, 10], "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": [0, 10], "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "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, 4, 6, 7, 9, 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, 10, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 5, 6, 9, 10, 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, 7, 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, 10, 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, "window": [2, 5], "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], "friendli": [2, 11], "voic": 2, "interest": [2, 9], "cours": [2, 5, 9], "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, 5, 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], "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, 7], "guarante": [2, 9], "weird": 2, "goe": 2, "sai": 2, "hardcod": 2, "ship": 2, "practic": [2, 9, 11], "solut": [2, 9, 10], "leav": [2, 6, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 10, 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, 10], "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, 5, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "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], "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, "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "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, 7, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "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, 10], "esp32": 3, "manufactur": [3, 5], "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, "meshchat": 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, 10], "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], "multi": [4, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 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, 10], "communica": 5, "tion": 5, "usabl": [5, 9], "interface_en": [5, 10], "spe": 5, "cific": 5, "lan": 5, "group": [5, 7, 9], "group_id": 5, "multicast": 5, "temporari": 5, "perman": [5, 10], "multicast_address_typ": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "autodiscov": 5, "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], "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "sub": 5, "individu": [5, 7, 9, 11], "rnodemultiinterfac": 5, "ttyacm0": 5, "subinterfac": 5, "highdatar": 5, "themselv": 5, "4ghz": 5, "2400000000": 5, "1625": 5, "1625000": 5, "person": [5, 9], "wrote": 5, "vport": 5, "lowdatar": 5, "865": 5, "6": [5, 7, 10], "865600000": 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, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "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, 10], "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, 7], "report": [5, 7, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "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, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "ingress": 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], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": [6, 10], "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, 10], "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], "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, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "alter": [7, 9], "minimum_bitr": 7, "static": 7, "get_inst": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "remote_management_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, 10], "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, "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, "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "track_phy_stat": 7, "track": 7, "retriev": 7, "stat": [7, 10], "qualiti": 7, "get_rssi": 7, "signal": 7, "strength": [7, 11], "get_snr": 7, "nois": 7, "ratio": 7, "get_q": 7, "get_establishment_r": 7, "ocur": 7, "get_ag": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "no_data_for": 7, "travers": [7, 9], "exclud": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "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, 11], "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, "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "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, "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, "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, "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], "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, "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, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 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, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "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, "enable_remote_manag": 10, "remote_management_allow": 10, "9fb6d773498fb3feda407ed8ef2c3229": 10, "2d882c5586e548d79b5af27bca1776dc": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "whole": 10, "regular": 10, "rns_bin_dir": 10, "eg": 10, "reload": 10, "loginctl": 10, "linger": 10, "readili": 11, "advers": 11, "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, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11, "url": 10, "addr": 10, "firmware_hash": 10, "product": 10, "model": 10, "hwrev": 10, "revis": 10, "ff": 10, "bootstrap": 10, "rom": 10, "jail": 10}, "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_age"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_q"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "get_rssi"], [7, 1, 1, "", "get_snr"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_data_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"], [7, 1, 1, "", "track_phy_stats"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "concluded"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MINIMUM_BITRATE"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "get_instance"], [7, 1, 1, "", "remote_management_enabled"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "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, 10], "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "meshchat": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "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], "multi": 5, "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "manag": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "systemwid": 10, "userspac": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "MeshChat": [[2, "meshchat"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "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"]], "RNode Multi Interface": [[5, "rnode-multi-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "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"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Remote Management": [[10, "remote-management"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "Systemwide Service": [[10, "systemwide-service"]], "Userspace Service": [[10, "userspace-service"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/manual/using.html b/docs/manual/using.html index bbd05c5..1b28c6e 100644 --- a/docs/manual/using.html +++ b/docs/manual/using.html @@ -492,8 +492,9 @@ Reticulum Transport Instance <5245a8efe1788c6a1cd36144a270e13b> running

      All Command-Line Options

      -
      usage: rnstatus.py [-h] [--config CONFIG] [--version] [-a] [-A] [-s SORT]
      -                   [-r] [-j] [-v] [filter]
      +
      usage: rnstatus [-h] [--config CONFIG] [--version] [-a] [-A]
      +                [-l] [-s SORT] [-r] [-j] [-R hash] [-i path]
      +                [-w seconds] [-v] [filter]
       
       Reticulum Network Stack Status
       
      @@ -506,9 +507,13 @@ options:
         --version             show program's version number and exit
         -a, --all             show all interfaces
         -A, --announce-stats  show announce stats
      +  -l, --link-stats      show link stats
         -s SORT, --sort SORT  sort interfaces by [rate, traffic, rx, tx, announces, arx, atx, held]
         -r, --reverse         reverse sorting
         -j, --json            output in JSON format
      +  -R hash               transport identity hash of remote instance to get status from
      +  -i path               path to identity used for remote management
      +  -w seconds            timeout before giving up on remote queries
         -v, --verbose
       
      @@ -609,8 +614,9 @@ Path found, destination <c89b4da064bf66d280f0e4d8abfd9806> is 4 hops away

      All Command-Line Options

      -
      usage: rnpath.py [-h] [--config CONFIG] [--version] [-t] [-r] [-d] [-D]
      -                 [-x] [-w seconds] [-v] [destination]
      +
      usage: rnpath [-h] [--config CONFIG] [--version] [-t] [-m hops]
      +              [-r] [-d] [-D] [-x] [-w seconds] [-R hash] [-i path]
      +              [-W seconds] [-j] [-v] [destination]
       
       Reticulum Path Discovery Utility
       
      @@ -622,11 +628,16 @@ options:
         --config CONFIG       path to alternative Reticulum config directory
         --version             show program's version number and exit
         -t, --table           show all known paths
      +  -m hops, --max hops   maximum hops to filter path table by
         -r, --rates           show announce rate info
         -d, --drop            remove the path to a destination
         -D, --drop-announces  drop all queued announces
         -x, --drop-via        drop all paths via specified transport instance
         -w seconds            timeout before giving up
      +  -R hash               transport identity hash of remote instance to manage
      +  -i path               path to identity used for remote management
      +  -W seconds            timeout before giving up on remote queries
      +  -j, --json            output in JSON format
         -v, --verbose
       
      @@ -669,20 +680,27 @@ Round-trip time is 1.809 seconds over 1 hop [RSSI -73 dBm] [SNR 12.0 dB]

      All Command-Line Options

      -
      usage: rnprobe [-h] [--config CONFIG] [--version] [-v] [-s SIZE]
      +
      usage: rnprobe [-h] [--config CONFIG] [-s SIZE] [-n PROBES]
      +               [-t seconds] [-w seconds] [--version] [-v]
                      [full_name] [destination_hash]
       
       Reticulum Probe Utility
       
       positional arguments:
      -  full_name         full destination name in dotted notation
      -  destination_hash  hexadecimal hash of the destination
      +  full_name             full destination name in dotted notation
      +  destination_hash      hexadecimal hash of the destination
       
      -optional arguments:
      -  -h, --help        show this help message and exit
      -  --config CONFIG   path to alternative Reticulum config directory
      +options:
      +  -h, --help            show this help message and exit
      +  --config CONFIG       path to alternative Reticulum config directory
         -s SIZE, --size SIZE  size of probe packet payload in bytes
      -  --version         show program's version number and exit
      +  -n PROBES, --probes PROBES
      +                        number of probes to send
      +  -t seconds, --timeout seconds
      +                        timeout before giving up
      +  -w seconds, --wait seconds
      +                        time between each probe
      +  --version             show program's version number and exit
         -v, --verbose
       
      @@ -710,8 +728,9 @@ and simply running the program in listener mode:

      All Command-Line Options

      -
      usage: rncp.py [-h] [--config path] [-v] [-q] [-S] [-l] [-f] [-b seconds]
      -               [-a allowed_hash] [-n] [-p] [-w seconds] [--version] [file] [destination]
      +
      usage: rncp [-h] [--config path] [-v] [-q] [-S] [-l] [-F] [-f]
      +            [-j path] [-b seconds] [-a allowed_hash] [-n] [-p]
      +            [-w seconds] [--version] [file] [destination]
       
       Reticulum File Transfer Utility
       
      @@ -726,10 +745,12 @@ options:
         -q, --quiet           decrease verbosity
         -S, --silent          disable transfer progress output
         -l, --listen          listen for incoming transfer requests
      +  -F, --allow-fetch     allow authenticated clients to fetch files
         -f, --fetch           fetch file from remote listener instead of sending
      +  -j path, --jail path  restrict fetch requests to specified path
         -b seconds            announce interval, 0 to only announce at startup
      -  -a allowed_hash       accept from this identity
      -  -n, --no-auth         accept files and fetches from anyone
      +  -a allowed_hash       allow this identity
      +  -n, --no-auth         accept requests from anyone
         -p, --print-identity  print identity and destination info and exit
         -w seconds            sender timeout before giving up
         --version             show program's version number and exit
      @@ -800,15 +821,19 @@ optional arguments:
       

      The rnodeconf utility allows you to inspect and configure existing RNodes, and to create and provision new RNodes from any supported hardware devices.

      All Command-Line Options

      -
      usage: rnodeconf.py [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-e]
      -                    [-E] [-C] [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i]
      -                    [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate]
      -                    [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [-P]
      -                    [--trust-key hexbytes] [--version] [port]
      +
      usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version]
      +                 [--fw-url url] [--nocheck] [-e] [-E] [-C]
      +                 [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i]
      +                 [--display-addr byte] [--freq Hz] [--bw Hz] [--txp dBm]
      +                 [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump]
      +                 [--eeprom-wipe] [-P] [--trust-key hexbytes] [--version] [-f]
      +                 [-r] [-k] [-S] [-H FIRMWARE_HASH] [--platform platform]
      +                 [--product product] [--model model] [--hwrev revision]
      +                 [port]
       
      -RNode Configuration and firmware utility. This program allows you to change various
      -settings and startup modes of RNode. It can also install, flash and update the firmware
      -on supported devices.
      +RNode Configuration and firmware utility. This program allows you to change
      +various settings and startup modes of RNode. It can also install, flash and
      +update the firmware on supported devices.
       
       positional arguments:
         port                  serial port where RNode is attached
      @@ -818,20 +843,26 @@ options:
         -i, --info            Show device info
         -a, --autoinstall     Automatic installation on various supported devices
         -u, --update          Update firmware to the latest version
      -  -U, --force-update    Update to specified firmware even if version matches or is older than installed version
      -  --fw-version version  Use a specific firmware version for update or autoinstall
      +  -U, --force-update    Update to specified firmware even if version matches
      +                        or is older than installed version
      +  --fw-version version  Use a specific firmware version for update or
      +                        autoinstall
      +  --fw-url url          Use an alternate firmware download URL
         --nocheck             Don't check for firmware updates online
         -e, --extract         Extract firmware from connected RNode for later use
      -  -E, --use-extracted   Use the extracted firmware for autoinstallation or update
      +  -E, --use-extracted   Use the extracted firmware for autoinstallation or
      +                        update
         -C, --clear-cache     Clear locally cached firmware files
         --baud-flash baud_flash
      -                        Set specific baud rate when flashing device. Default is 921600
      +                        Set specific baud rate when flashing device. Default
      +                        is 921600
         -N, --normal          Switch device to normal mode
         -T, --tnc             Switch device to TNC mode
         -b, --bluetooth-on    Turn device bluetooth on
         -B, --bluetooth-off   Turn device bluetooth off
         -p, --bluetooth-pair  Put device into bluetooth pairing mode
         -D i, --display i     Set display intensity (0-255)
      +  --display-addr byte   Set display address as hex byte (00 - FF)
         --freq Hz             Frequency in Hz for TNC mode
         --bw Hz               Bandwidth in Hz for TNC mode
         --txp dBm             TX power in dBm for TNC mode
      @@ -843,12 +874,43 @@ options:
         -P, --public          Display public part of signing key
         --trust-key hexbytes  Public key to trust for device verification
         --version             Print program version and exit
      +  -f, --flash           Flash firmware and bootstrap EEPROM
      +  -r, --rom             Bootstrap EEPROM without flashing firmware
      +  -k, --key             Generate a new signing key and exit
      +  -S, --sign            Display public part of signing key
      +  -H FIRMWARE_HASH, --firmware-hash FIRMWARE_HASH
      +                        Display installed firmware hash
      +  --platform platform   Platform specification for device bootstrap
      +  --product product     Product specification for device bootstrap
      +  --model model         Model code for device bootstrap
      +  --hwrev revision      Hardware revision for device bootstrap
       

      For more information on how to create your own RNodes, please read the Creating RNodes section of this manual.

      +
      +

      Remote Management#

      +

      It is possible to allow remote management of Reticulum +systems using the various built-in utilities, such as +rnstatus and rnpath. To do so, you will need to set +the enable_remote_management directive in the [reticulum] +section of the configuration file. You will also need to specify +one or more Reticulum Identity hashes for authenticating the +queries from client programs. For this purpose, you can use +existing identity files, or generate new ones with the rnid utility.

      +

      The following is a truncated example of enabling remote management +in the Reticulum configuration file:

      +
      [reticulum]
      +...
      +enable_remote_management = yes
      +remote_management_allowed = 9fb6d773498fb3feda407ed8ef2c3229, 2d882c5586e548d79b5af27bca1776dc
      +...
      +
      +
      +

      For a complete example configuration, you can run rnsd --exampleconfig.

      +

      Improving System Configuration#

      If you are setting up a system for permanent use with Reticulum, there is a @@ -1037,6 +1099,7 @@ systemctl --user enable rnsd.service

    • The rnodeconf Utility
  • +
  • Remote Management
  • Improving System Configuration
    • Fixed Serial Port Names
    • Reticulum as a System Service
        diff --git a/docs/source/using.rst b/docs/source/using.rst index 91c1018..20260c0 100644 --- a/docs/source/using.rst +++ b/docs/source/using.rst @@ -312,8 +312,9 @@ Filter output to only show some interfaces: .. code:: text - usage: rnstatus.py [-h] [--config CONFIG] [--version] [-a] [-A] [-s SORT] - [-r] [-j] [-v] [filter] + usage: rnstatus [-h] [--config CONFIG] [--version] [-a] [-A] + [-l] [-s SORT] [-r] [-j] [-R hash] [-i path] + [-w seconds] [-v] [filter] Reticulum Network Stack Status @@ -326,9 +327,13 @@ Filter output to only show some interfaces: --version show program's version number and exit -a, --all show all interfaces -A, --announce-stats show announce stats + -l, --link-stats show link stats -s SORT, --sort SORT sort interfaces by [rate, traffic, rx, tx, announces, arx, atx, held] -r, --reverse reverse sorting -j, --json output in JSON format + -R hash transport identity hash of remote instance to get status from + -i path path to identity used for remote management + -w seconds timeout before giving up on remote queries -v, --verbose @@ -452,8 +457,9 @@ Resolve path to a destination: .. code:: text - usage: rnpath.py [-h] [--config CONFIG] [--version] [-t] [-r] [-d] [-D] - [-x] [-w seconds] [-v] [destination] + usage: rnpath [-h] [--config CONFIG] [--version] [-t] [-m hops] + [-r] [-d] [-D] [-x] [-w seconds] [-R hash] [-i path] + [-W seconds] [-j] [-v] [destination] Reticulum Path Discovery Utility @@ -465,11 +471,16 @@ Resolve path to a destination: --config CONFIG path to alternative Reticulum config directory --version show program's version number and exit -t, --table show all known paths + -m hops, --max hops maximum hops to filter path table by -r, --rates show announce rate info -d, --drop remove the path to a destination -D, --drop-announces drop all queued announces -x, --drop-via drop all paths via specified transport instance -w seconds timeout before giving up + -R hash transport identity hash of remote instance to manage + -i path path to identity used for remote management + -W seconds timeout before giving up on remote queries + -j, --json output in JSON format -v, --verbose @@ -524,20 +535,27 @@ these as part of the result as well. .. code:: text - usage: rnprobe [-h] [--config CONFIG] [--version] [-v] [-s SIZE] + usage: rnprobe [-h] [--config CONFIG] [-s SIZE] [-n PROBES] + [-t seconds] [-w seconds] [--version] [-v] [full_name] [destination_hash] Reticulum Probe Utility positional arguments: - full_name full destination name in dotted notation - destination_hash hexadecimal hash of the destination + full_name full destination name in dotted notation + destination_hash hexadecimal hash of the destination - optional arguments: - -h, --help show this help message and exit - --config CONFIG path to alternative Reticulum config directory + options: + -h, --help show this help message and exit + --config CONFIG path to alternative Reticulum config directory -s SIZE, --size SIZE size of probe packet payload in bytes - --version show program's version number and exit + -n PROBES, --probes PROBES + number of probes to send + -t seconds, --timeout seconds + timeout before giving up + -w seconds, --wait seconds + time between each probe + --version show program's version number and exit -v, --verbose @@ -578,8 +596,9 @@ Or fetch a file from the remote system: .. code:: text - usage: rncp.py [-h] [--config path] [-v] [-q] [-S] [-l] [-f] [-b seconds] - [-a allowed_hash] [-n] [-p] [-w seconds] [--version] [file] [destination] + usage: rncp [-h] [--config path] [-v] [-q] [-S] [-l] [-F] [-f] + [-j path] [-b seconds] [-a allowed_hash] [-n] [-p] + [-w seconds] [--version] [file] [destination] Reticulum File Transfer Utility @@ -594,10 +613,12 @@ Or fetch a file from the remote system: -q, --quiet decrease verbosity -S, --silent disable transfer progress output -l, --listen listen for incoming transfer requests + -F, --allow-fetch allow authenticated clients to fetch files -f, --fetch fetch file from remote listener instead of sending + -j path, --jail path restrict fetch requests to specified path -b seconds announce interval, 0 to only announce at startup - -a allowed_hash accept from this identity - -n, --no-auth accept files and fetches from anyone + -a allowed_hash allow this identity + -n, --no-auth accept requests from anyone -p, --print-identity print identity and destination info and exit -w seconds sender timeout before giving up --version show program's version number and exit @@ -685,15 +706,19 @@ to create and provision new :ref:`RNodes` from any supported hardwar .. code:: text - usage: rnodeconf.py [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-e] - [-E] [-C] [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i] - [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate] - [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [-P] - [--trust-key hexbytes] [--version] [port] + usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version] + [--fw-url url] [--nocheck] [-e] [-E] [-C] + [--baud-flash baud_flash] [-N] [-T] [-b] [-B] [-p] [-D i] + [--display-addr byte] [--freq Hz] [--bw Hz] [--txp dBm] + [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump] + [--eeprom-wipe] [-P] [--trust-key hexbytes] [--version] [-f] + [-r] [-k] [-S] [-H FIRMWARE_HASH] [--platform platform] + [--product product] [--model model] [--hwrev revision] + [port] - RNode Configuration and firmware utility. This program allows you to change various - settings and startup modes of RNode. It can also install, flash and update the firmware - on supported devices. + RNode Configuration and firmware utility. This program allows you to change + various settings and startup modes of RNode. It can also install, flash and + update the firmware on supported devices. positional arguments: port serial port where RNode is attached @@ -703,20 +728,26 @@ to create and provision new :ref:`RNodes` from any supported hardwar -i, --info Show device info -a, --autoinstall Automatic installation on various supported devices -u, --update Update firmware to the latest version - -U, --force-update Update to specified firmware even if version matches or is older than installed version - --fw-version version Use a specific firmware version for update or autoinstall + -U, --force-update Update to specified firmware even if version matches + or is older than installed version + --fw-version version Use a specific firmware version for update or + autoinstall + --fw-url url Use an alternate firmware download URL --nocheck Don't check for firmware updates online -e, --extract Extract firmware from connected RNode for later use - -E, --use-extracted Use the extracted firmware for autoinstallation or update + -E, --use-extracted Use the extracted firmware for autoinstallation or + update -C, --clear-cache Clear locally cached firmware files --baud-flash baud_flash - Set specific baud rate when flashing device. Default is 921600 + Set specific baud rate when flashing device. Default + is 921600 -N, --normal Switch device to normal mode -T, --tnc Switch device to TNC mode -b, --bluetooth-on Turn device bluetooth on -B, --bluetooth-off Turn device bluetooth off -p, --bluetooth-pair Put device into bluetooth pairing mode -D i, --display i Set display intensity (0-255) + --display-addr byte Set display address as hex byte (00 - FF) --freq Hz Frequency in Hz for TNC mode --bw Hz Bandwidth in Hz for TNC mode --txp dBm TX power in dBm for TNC mode @@ -728,10 +759,46 @@ to create and provision new :ref:`RNodes` from any supported hardwar -P, --public Display public part of signing key --trust-key hexbytes Public key to trust for device verification --version Print program version and exit + -f, --flash Flash firmware and bootstrap EEPROM + -r, --rom Bootstrap EEPROM without flashing firmware + -k, --key Generate a new signing key and exit + -S, --sign Display public part of signing key + -H FIRMWARE_HASH, --firmware-hash FIRMWARE_HASH + Display installed firmware hash + --platform platform Platform specification for device bootstrap + --product product Product specification for device bootstrap + --model model Model code for device bootstrap + --hwrev revision Hardware revision for device bootstrap + For more information on how to create your own RNodes, please read the :ref:`Creating RNodes` section of this manual. +Remote Management +----------------- + +It is possible to allow remote management of Reticulum +systems using the various built-in utilities, such as +``rnstatus`` and ``rnpath``. To do so, you will need to set +the ``enable_remote_management`` directive in the ``[reticulum]`` +section of the configuration file. You will also need to specify +one or more Reticulum Identity hashes for authenticating the +queries from client programs. For this purpose, you can use +existing identity files, or generate new ones with the rnid utility. + +The following is a truncated example of enabling remote management +in the Reticulum configuration file: + +.. code:: text + + [reticulum] + ... + enable_remote_management = yes + remote_management_allowed = 9fb6d773498fb3feda407ed8ef2c3229, 2d882c5586e548d79b5af27bca1776dc + ... + +For a complete example configuration, you can run ``rnsd --exampleconfig``. + Improving System Configuration ------------------------------