From 3120a1eb697de18ad56b955430f8743f5cbdf594 Mon Sep 17 00:00:00 2001 From: marcel Date: Mon, 24 Jan 2022 20:59:32 +0100 Subject: [PATCH] instructions added on how to make it work with the ax25-stack --- INSTALL.md | 67 ++++++++++++++++-- LoraAprsKissTnc.py | 6 +- __pycache__/AXUDPServer.cpython-39.pyc | Bin 0 -> 6825 bytes __pycache__/KissHelper.cpython-39.pyc | Bin 0 -> 4488 bytes __pycache__/LoraAprsKissTnc.cpython-39.pyc | Bin 0 -> 4068 bytes __pycache__/TCPServer.cpython-39.pyc | Bin 0 -> 2710 bytes __pycache__/config.cpython-39.pyc | Bin 0 -> 336 bytes .../SX127x/__pycache__/LoRa.cpython-39.pyc | Bin 0 -> 35681 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 173 bytes .../__pycache__/board_config.cpython-39.pyc | Bin 0 -> 3431 bytes .../__pycache__/constants.cpython-39.pyc | Bin 0 -> 5003 bytes start_all.sh | 7 ++ 12 files changed, 71 insertions(+), 9 deletions(-) create mode 100644 __pycache__/AXUDPServer.cpython-39.pyc create mode 100644 __pycache__/KissHelper.cpython-39.pyc create mode 100644 __pycache__/LoraAprsKissTnc.cpython-39.pyc create mode 100644 __pycache__/TCPServer.cpython-39.pyc create mode 100644 __pycache__/config.cpython-39.pyc create mode 100644 pySX127x/SX127x/__pycache__/LoRa.cpython-39.pyc create mode 100644 pySX127x/SX127x/__pycache__/__init__.cpython-39.pyc create mode 100644 pySX127x/SX127x/__pycache__/board_config.cpython-39.pyc create mode 100644 pySX127x/SX127x/__pycache__/constants.cpython-39.pyc create mode 100755 start_all.sh diff --git a/INSTALL.md b/INSTALL.md index 6725005..6f406d2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -9,17 +9,72 @@ sudo apt install python3 python3-rpi.gpio python3-spidev aprx screen git python3 Clone this repository. -## Configuration +## Configuration of APRX -Edit /etc/aprx.conf according to example in aprx/aprx.conf.lora-aprs +``` +In /etc/aprx.conf: + + + tcp-device 127.0.0.1 10001 KISS + callsign NOCALL-4 # callsign defaults to $mycall + tx-ok true # transmitter enable defaults to false + # #telem-to-is true # set to 'false' to disable + +``` + +## Start the LoRa KISS TNC + +``` +python3 Start_lora-tnc.py & +``` + +# Alternative method using the AX.25 stack + +This method is more complicated, but also more versitile as not all programs can communicate to a KISS device over TCP. + +## Install needed packages + +``` +sudo apt install python3 python3-rpi.gpio python3-spidev aprx screen git python3-pil python3-smbus +``` + +## Checkout the code + +Clone this repository. + +## Configuration of APRX + +``` +In /etc/aprx.conf + + + ax25-device $mycall + tx-ok true # transmitter enable defaults to false + # #telem-to-is true # set to 'false' to disable + +``` + +## Install and configure AX.25 stack + +``` +sudo apt install socat libax25 ax25-apps ax25-tools + +sudo nano /etc/ax25/axports + +add: + ax0 NOCALL-3 9600 255 2 430.775 MHz LoRa +``` + +## Start the LoRa KISS TNC -## Start the LoRa KISS TNC and aprx server instance ``` python3 Start_lora-tnc.py & -sudo aprx ``` -## Stop the server's +## Redirect KISS over TCP to AX.25 device + ``` -sudo killall aprx python3 +sudo socat PTY,raw,echo=0,link=/tmp/kisstnc TCP4:127.0.0.1:10001 +sudo kissattach /tmp/kisstnc ax0 ``` + diff --git a/LoraAprsKissTnc.py b/LoraAprsKissTnc.py index ae070f9..4cde9de 100644 --- a/LoraAprsKissTnc.py +++ b/LoraAprsKissTnc.py @@ -38,7 +38,7 @@ class LoraAprsKissTnc(LoRa): # init has LoRa APRS default config settings - might be initialized different when creating object with parameters def __init__(self, queue, server, frequency=433.775, preamble=8, spreadingFactor=12, bandwidth=BW.BW125, - codingrate=CODING_RATE.CR4_5, appendSignalReport = True, paSelect = 1, outputPower = 15, verbose=False): + codingrate=CODING_RATE.CR4_5, appendSignalReport = True, paSelect = 1, MaxoutputPower = 15, outputPower = 15, verbose=False): # Init SX127x BOARD.setup() @@ -56,7 +56,7 @@ class LoraAprsKissTnc(LoRa): self.set_coding_rate(codingrate) self.set_ocp_trim(100) - self.set_pa_config(paSelect, outputPower) + self.set_pa_config(paSelect, MaxoutputPower, outputPower) self.set_max_payload_length(255) self.set_dio_mapping([0] * 6) self.server = server @@ -137,4 +137,4 @@ class LoraAprsKissTnc(LoRa): try: return lora_aprs_frame[delimiter_position + 1] except IndexError: - return "" \ No newline at end of file + return "" diff --git a/__pycache__/AXUDPServer.cpython-39.pyc b/__pycache__/AXUDPServer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..121e3acd56ca6d460921a6e8ad1c015eb9588ec5 GIT binary patch literal 6825 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 literal 0 HcmV?d00001 diff --git a/__pycache__/KissHelper.cpython-39.pyc b/__pycache__/KissHelper.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e1315ca8a935364e5bbae613148f5c3a037f2f0 GIT binary patch literal 4488 zcmb_f&2QYs6`vV$N$#grSN@0_q-+|v-qiZA{1v;3EZLS5!HH~m)f8oHF!T;3t+iho za${TJ0!EcydU7v422xN24bVf5J@gRB|3tvHr{kt2SN{syE@S_s#{S1ZV-_WfAtaN$$vh^7$ED#3X?ljtd8V|a{W0@$ z(vf+*Em@F7ylq*MWxSoYn5@V{A2WGqQ+WBXAV=1O>dGH@MR{2M5IstA)GLSiu(Zj& zN?6%C6qdI+$Jc7CdSn-0W{bODLhk;J#NSE$1EMYI4&zZEaB>ui(vO=h{7TfT2m1(<~d93MX2Ds)x;q)u1(T=XPW4oz9(L?B+tPHny~QZQ^Dlirx;J-B68p zAE$-sW+RI0omO||EZls9!ZuzF+x3nN{Xj|;M$!0mvr`Y6(F`iX&Wa|n`#(IpuT$*_ zgvwLx1Bj}T=Av%15vN8oY^O$}9apWCM`>=k(GHra33rfD)R0~&`qJ!4fVbpqc_jqp*NngkH_63u82gM*Wj;eG_o zp-Xfag7K3$DVz=;M>#G`u1-RGAPh=SI4JszR)MoYgqI{DV;J3%Vi9MCSU0wDa%c%U zL!2hH&0}COI!oAd+Z;TASlu$Dz+Ri!cWYDh&BTOup9iwUh_;AvntkFzz=x3q^GjZ5H>`maC1>Dwz@k2R$;tN~#fY5V6!eO6fCPE34bnot(o zV4MFYcI?FY74m1Ve+{j(CZ2M2RO<_SdOOLyqmLB*d~7Eeli0^tjPD-H8#nTBG6XIcvcgm>Im6#FoloOJTa1g zV}9}aUbS{DEokkMR`1oJ&)hk;T7DC<4?=DboJmFBvNxTOSQq3@?adc2xCk*aI* zLau78G$PNU00?8GFf_e_CZViDCA0WpR1dnLR0KZHSp!G<^_KJsx|aF2I=#5ti(iC# zaX?Dca}lGXHz1gBxCut8@R!A?cnz(id{h+hJ7JhWKCxASS40V|!(1RDDq5?4fw2do zff#Eq-+iE?p$~il?Z{flPsW-Nol3xC2{M-iE;F6Ffy}3S9JFl;;L$e~rQ^7-m1=E+O@T#}75b?jV?xkMxk)?Om! zruo6+U08~H7P^U)78Oye4gy6vS;v5SnQEs=`~)NbX^e2kL@`QYL_>50pgk-cQ-f7F zXq^CHHLOVrbp<}^^hkr zTqg@MheIf*rCO*OLGyN?qEKx-tTkHQX6SZx(?t$*i77JLiN@W9*j)|UvKdBh3;Wxk zzB+6pBBxH9MiK=STo>J3x@$ykyc+7-eVE+kUb`MQI@H+>gZgSVJVSxL*bo#J58Nh5 zLq%sQN^gh?=4+-VrxuYg`sMuh1$~G(!9TL{hfKb z8U%5u&cTxAaS!nIe5+i|L-WG?)OG0oiZYm*!#55en3`VUfqf!S&^q)!{TY>nBjbHa z97gkdz`+#f5^51=e1^Aydl7OqCu@%OblpTvx6tFkUf(5TRg3l-{BdxUeP9&jRr2uM z@9=A+b<`*D~}?ItpM~4OCFa zPDYE>ym}ieRd11)B(VUIS^*MaTMl=h@|@n#q2l`7(ws&`)yOvgr!{{ zVT@b|$~Prslwm30223qTVL`rdM0#))&@84vTN|0v_tS#!w>q-dq6_SrL&jD z-?%XU{@JN1w5BHJ-kh8~b9VBAdo_sTH_wh=y7b<&C*O(@1E07yoKMUsQ*QEM4#?s| zX#P%36?PTkfVg|#()7O(ryV}jaq=~}qPSyR{Sva*MIe6X5_(udzjkYBZf5SbS37gz z^wPE43%5_-n!mJk^X;)SldoUCJgC3nUY?$dqKP}<@{BuuLxt;jy^B9)Gw%CDVE6Fq zv|3?1zW33^`@yp(-_JKET92DS6vO5H@6F}FVf}k^7<ssfi5`dleIv&z@9A)Q_?E z879wAZHff_snz$;EEUuBN+&LjI(3Vh`fTakyuDAQyV7FS+=}4-(#Jqj;=40o* z`MnRi)oO{r^Vk3U)BV#NA^*V6$;X1uEoey}2q&BdgyGu==)hnG&15Ds1=+F2IT$gI zGN~2h2L)EpGjf65!tyYPersT8@X^`|rH_{@yYSS@)uj3vc>1klgK!mCmY%%T7L8H4r3EfC$1UC(PiK zncQF&H(8EbEYEYS0L|ukJc=mpltg)_!i&7b%kZo8OV3H4@+z-AE3zuD^Tsp6YJ7&z z!n@AT@i}-m_<24L?-{txcaCt z;TqhSa5JOgs5B}cneZ(#o&^-(SIPJsx3($I%@N%<;QMnRJ&$LcoMRqGH~~}T+r48B zN*sR;L~51uz_k`6>d115P`h!OOLk)+C61)F;(ZXAn{cm3_q4LTx@ zq)KgA=L{k)QtQ)=)isvu-dkJSWLn&p;xVh>gjfo9uoVb4hrI;5+z+>%zU!$-vOG$+ zp0Wje2hmf9yUKN>tArE9${(;g4tSAXgW_!0$cr5%VYrIJu?sW8zQ4`pu{&`0Kr{>@ zmpg$7x7EW`@522E#^M-0pTc+L6Cu-z6nY0G9l4k0JNNHww0o^;Y9%7*%ULwo0vf4^ z8tsbE8#4Q)O7)lO+|9HpZn+_U>T~swm9jJAk>xqu!H(Uo2!y9t?NfIz+Ewwc+KiqG z$;u}>X#q~P6(!ON>2pK58c6XXVbre&U)pO^=|h{ zuYG6vj6*ENLpcMV{ywziyFiF(8x5MLd81;K=!u_EgC2|+Hr>B)c9$s@JVeg)F@Qlo zx&tlwGm!n?0`ABWM6yMa{AxsY=-4;{ZvQ99??7na<_mfN{sO)OhzDuzks%p)5FLZ> z?0{!*YXK1Z3uBSsyq&^`E&!)&o>RpUJ%rw2hW--nK*?t$oVAE555J&*drBUV(6~xe zWnAUjyB-@b<29I38~!nyq3YuX`baiYdq<%S7}L0RxKMCEg5Sl^w-rR*BUwh(ifHC$ z@Ba1XHgw_n`-iO=*4Rd@0saS0qFl9`Xt<;~fnhZ@VKl9|5S}tft6?nC^Q$Yp6{q)L zbIs{}yxv)LHdi{m2dUNfL!LJ7ZFE+gmCa7q`FL$*b*+=;V(Et}wWNq;YAfl6$-q|< zZJ%1;90Hs+5F$=zJ`uyM$d!CO1h~oFSY@tlD*?jjY51ifU(>75z2xh_X5`x_tikc6 zy5}cKgy0+cN^uIIhFLL7)SxxmFfM3_)My1@(g3>u`dOfy-sTisFwhjB>43TfK!WQ9 zsBl9=f+iOg%?qnAc1Y##VWpixXQv1m2!Ev)Sx7A*9NCjBa4^e zYhND-FE0cig=vZm4rTrC)B$bZ2;GZ^flH~WM@-{KWKao?CH?~?<3)q`rhvI$K_mN1XJHYA5Lz7`g<|Oj_>>zYH-VWhY#FTRNzVb; zLOLkHOawMW#QkPRc*1`onrk?8xyk*+12h9dn|p%P`V)HaEKKz4eVYW~`96a@x;XVRC3@;W_0Gap@8g z?fUN`r(M7F&E+rydDUN8p8?V-KGTB47nm$t((^{fMAuQ-% z_Y7PNLlSBNGP(^_{U4@1s4RCNbWC)#+NTVMTVm|&LQ5JzwAb2@Ch7lrth@>nQtF*i zPNKmNp~-7N_Aj5kvuS>LrI+Tlr8E2DEuP_8IaYlteW==|-g4UJ%;?>hS8(0w+#_2c z`#H1(>rMiAs=cBDnV#&FmC+n8D-dmEidH_N2gZI4stSV}3uF;$gf2i%(c$H+0(by6 z?~#21lbew=&SPP=^~*uhvjz&0S?OVl7kh-Zh(BnaUSowK{k?wgb!eQ zHuEwXIG?U{yDJ~9Ni6nG6tBkZ&sgsEXYagwjg{|gtgg2|aylzLsMzmx-gB<$8c{Ce zk`IyGLW1{_1)J)m3Wc&WaGVoLUc@OFMf86L>?KGbaF`YZ56gfC)kE#;+PCZl`#W~t z&gq#@U7N`;VFfoChMpf~^-K{i*%Mo?_b9bu7fSZLA3}|;*xdBr=~DJ574l2Rm3aGX z@$3-%3xFadR0+Fyc4!OBqsiX{T^z}`r$;}blSZeGjP{Mp@Her7)-H$9&(>F{IqSdl CgyN6@ literal 0 HcmV?d00001 diff --git a/__pycache__/TCPServer.cpython-39.pyc b/__pycache__/TCPServer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f8ad08f4f40372d0d253f1ab0ab7277a95bf68f GIT binary patch literal 2710 zcmZ`*O>Y~=8Q$3sa=E0ak2tnt1Puc;Xj#iXy%BH_$!w+*7dEoP6mI$fbSWAr&h|JH)*6Jv;L}&-)Ie zxw*hXdiSe;NB=_YYigWNE*f``vwy+}OR(7LG0vDJY;L3N#13~*y0P2yxQBk~EARqJ zFD~|c?$7#)yeJBy_`>3)Pb}e!(hEzJq<7-*K$b=D*jE2AYb(5hvK-I#s=SJ|6+SQK z_=2pSSbR|ia$YXTMXXwqOXIgh^%Q48?ZT;L%D2V5=~*0KJhk{Gd08yTcjToLcF8)y z%%ibzT2_7W6>ekISzhg{Zlc4zLDJFPH0fHnZv*{>_JNX-K&{e}svE_-k;fZujcLv>9D}@M)`cwcXfSX>aY~SWl!{?my4nINjfy zqeIv*7E=}24pq-52aP+(*=-nUaV9Jf$UvUWT`?~_QFy_)CyK%cMFmk30m`B%iwa6# z%!w+>lCW{Bg*a$lB&^vsDw_{cc}I zTB^o3rM2}N%d7aUy;}SMPD?nRC8~SK23LWKw#IB^5v|%D+uA;Kklj;zWQE9w_Si$a zfLs*p)L~!&eg4QEIeRv(GVKz^Xouhg?XWz;jv<5wJ2zwM6%ksmDncsv!?2rlbr^!F zwDVYMUfjGFe%jb>^Kxrv>p|FRH@7!`#)C|1nvnK24_Z49LmI@SN^2)BeQ zrlyP`wFq+wIa`3SSiqLp1-8H{%x48QeCstu%V(GQj(!Pe$_D2HR7k&v?1UXd8#8R3 zv3qL$+8}*wkJ#8FH`4{dMz*luu`U{?GWZs?f69)Xk)zs}R~k8l_R&o<7SO7r;OOR2 zV6b)?!}pAqr>fbgZA}G(%h&c)+N*t#DMLnC(E;=F5n&YWsi-H_Mf50gH(rQ39og5p zrzBV~vgfXnohSKHb9?La@Z--454RhiwC{7TPcEE$ojA>8-BpAfFPKintDU$j z5eOn7uvw-q&_~D}U&Ea{YLL8-u8al&w_O0(K3lLW%w-ijV8iM;$T7KN{E;Rjk*dB$ z`#KsL!Bn#m@IFDbfU=zt6nbo<-yYf22khKK4@f)0{WhX_jbWLv15iL?W9Z+Nom5D% zaSyS?dlW;9^@1wk139qhtEsErmvLVzUKVC@_!!=6iY*y1*V@Ja_SPTzyAwL?{7bj-%qi#=m^|OP47U|QZ z&dkByI740xLm}fZyn#(-F>knZ?gX>p4ncmFD4-CZ=IhT;8CFeLA;_IySjnmj3ZCC) z*0Ia1;brXz5JM-U(O**O{?<((Un*At!N?KTV@Ji9X=``noV_r(m8Ue>abfBNiH|uL zpWV}K4A%{TG68YjWWV+l%Bww9DXKq|&q&hb2u~02YSc)dm{T8?+vzOGZq$aC|KA4n zqIwUP<7KnCG(_j6?XyjdF4Xrh!?+PIW-<{`9M`=m(4=hc_oR-9dtRCDB8(DpCf_6i zVJZz zAc|)rM0eT=LnBxd^whhw1xZnnL#pqSdF`#HW+EiLiWDU?`lioZ+jWA#pZANtqiBr2 z-;26Q7?SgtNIWdkvxJ{HVtdfQw3lC4liy9olfO*CV!s%UQNE7{Au#XBj@Gc z-~Y*t^$(XnTx+bXuHL$KYx(B&?O$D6Uq@?wW%Hxe)wOG@*J~d~T7PtH`PQw^Uw$#X z(3Bn7eS+uloFmt-a6qs(&;tbs6nToeLZ(RPENSz91WGW^lkpS7v44X_9*x z!hkj)=gvL?tqG14VWvv@AHe7SPp4$wCLhdx3{$aP1WS6GkR9J$*zlne>UEt0LTG?q Km)ZYu(feN{Hh!%D literal 0 HcmV?d00001 diff --git a/__pycache__/config.cpython-39.pyc b/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f82cc6352454e29e6506178f7ed36093d478dc90 GIT binary patch literal 336 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 z zF3LSKuam>o5!m|VhS(k*fmwmRR^5vx>@N`ZxAWd^eYd(VcHV@61vggc6xg5aUcl}Y zY^S)S@rV0fz1-Tz8s5X$+f3&+SYHzG#PU#DF8D=Xoogli36T8*x^Tuice&arSojC) zW6#d}Vn3v-wzr75o4SzV-n;t-E~e3}`kf*EICo!!U8EPcEwCq{uebLw8>Cw}p!!y>mBCr;jEflQ;i%HSxq_dR{&BxYVbiR$5C+IvuXP(YAI=@0^ z2a@!pWi=ubD-~hulg~P2qI2^L{o)RYdoaT<9l%hJuMA`&;EqfLG_EIPb%PkxUKy;` zFou;m%7wx^@gY~|A2+1an70+rt@zh%|Lc-x7pCj2{&8~8RGi{7my>QgHo7~0{d84q zX-H3GX2#l$cJvry{2v(~#}%{oGl>`Z!v#8xzChA2vsw2NVpsSLTh7X}*;+cw(Q0*x z{`PG4{Av!6VT}F^aC~~DFp_^>Pj#G=aC!KfE5fXnteM0B!^j)PRgf&T@P}g_TCnWY!`sV2foe6>eC|`xjKStjt=+x1> z&|@9Z3$F;{eVRFHbUs7p59xfC&R^2`D>{Eo=Wpr!9UK^;#-ALWn#rDe-1-~?{|B9a zpz|$s{wJM(q9d&N@AL_$QjNnUH$%^yo){X*o*o^4bmpYy*E2|y*>Yy+>16Tl>39M_d@1HI;SgTs+mIp&{*TJP zbU3{~8S(v#B|Gphj$b4hOD62MWV$n%N_M3?@y|%(zBc^2lIdg;u0OZ-cLHUfPq!!S zC*F+Et0*CojN)ILxX~p3(h1a%NJi3aD2jO#=>*E=FYcBbN6pbBzF=tATlbV0=1AH( z`P3~mP_F)^`9y{7cru>vDf~8xe^*lXBA$#1oO&>p!W>YVgUmPynBnte&Icef?X#tv yg-;TTg`k0+}1{5=DXZV-N=!FakLaKwJz`mco$E7{!pn7|fu_6vY-CVQ6Gt;it)X zi#+KmFtQ+Fz otY1(GF+?9q#m8snWtPOp>lIYq;;_lhPbtkwwF5cfGY~TX0D-6|w*UYD literal 0 HcmV?d00001 diff --git a/pySX127x/SX127x/__pycache__/board_config.cpython-39.pyc b/pySX127x/SX127x/__pycache__/board_config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ce30a6ccb8642a16b4eceab94d074ec96b72f1d GIT binary patch literal 3431 zcmZ`+OOM+|5@z!uaWtCo_>r-lI7#mYyNIx{|h`EjMk1ej%HSxzyX1TOR-xc z$`naADL({dFERG!Yk=frAN>ac6mvkW-#-q#>_8t z$6|U{t67szXp{GYh^I6gaJqMJtJ9=@=%pxo8TI2R^MXi?_F_*kngkIYc?rCZQ|d*G zc5c&A%*G+7AKY%-y-kCtAJ^##Xr#4$q|1*9!cA!Dmq57Y5YSp@1hmv0lNq3w>6Dn| zlv&BKS=m`*wo_qi&N{EM3R{1weLt$4iqQ7vc#$45;$RqaYj5IO6o~Kble}4;_+;I0_!a7jFgP&wEOd6AMs3xrpQv zlFLXSu(T8OOZ(^*cM<3+LEDFx{s%~=Jtvtq)L#&Sypfqh3*^!Z2sV(*C^Mp@A&%NG zx(2Pn^k)XlF^B8Ws?au|ZT8Kk_UWb1VeQbEB3+vM;3zYnpTU5|{g?%ADNX)L_h(4+ z6)f%?whq!c*1IBml5o09+kncvSD-;P;#8Ay7`o%cMIRo2{S`jn{{2LU(ROVsH*qhg zobn7nV-jcAM~(~lOT2>eqL(gHQ4#*y~ZFO@y5s#J`WoMZ`9}<23POK z9q;Ogt#0?~QG36UJn4S2bNx?`8?%>;09OTIJ$WM5VWS(+(oG!CP9-wr0tp| zFj+ZeU(J}Il_o)M`C*)LY2*^Y59M}on3^D^7=@Z)lgXx1wHTDH^HIg(K^|vIm46S6 zQaRIILn%GgrZN;6LD{vCN)x`PEjZ3nbpc)#kqo7o6>)FK{cIjGyK2TR{gvUw6W)k| ziEeM4?$RSXpKvU@hb;;nG>hpt<-7D6jRoCV?7CRyudMP1K|)g=f)c;FS_XHa(tOk4 z=7)FTjN~QIhVh3Gl+rKK3j$AkZpI0Zoa)GX?4}9l%pFW>It04X-ob^gpRPDaya7x9 z2`#mOXm*8c67Ww|`A2=@7mmR!vlL51B2TwIC5&Jmkfq0%{EyxfUIH~l#A7HUnA|X^ z>KjiV8VE$Mz?>lQL zR6l><`n?q(^U55u^xyD>vuDAV1GCs5@pE%p_9{%hD8q zAd~;nu2e#Xa3W%et8@_Xkfm6WSA+4P7mhI}G zYOz&O;DTt8tX`T5)D6&6fsZEFNN&l+tN4^cNC9y)ggGkjmN)0;S`Gc8Mw|+Ts`#_| z@P`5lyo!KnOB%~u3wF=DWKtLJpte~4mWZqjWvN8JpUoAtK*0^=wAt7zna6;Ma}7Hn zV6@-YMHS<9QPHMwQG|QPyPxYB)HZOWy3JU!-YxgY3i#j(tdwIi>h-p|MU)i4zk{#j zmhhruo|_ocgRW4+z^svWjfmeO_gZedZsftY+`Qtt>N*a5)pZ|?y>K>CcHzq7yY8vy5o1N2 zM_DZFFn;9r;Ci1|(+uvb{)lITn92Kvz-yx{3_>37-=K(4NVBCqOEya1qDLiUnDXR* zD`2K&f~m8g0g|qh$`&+BC)FyvZFsM#Rw?U5uCJ9u9ky`n&S6l;a-m}Wb=?2m;v=Vh WJ-7d&VEG$jC##uxu}W;+HvSK|dm0J= literal 0 HcmV?d00001 diff --git a/pySX127x/SX127x/__pycache__/constants.cpython-39.pyc b/pySX127x/SX127x/__pycache__/constants.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..54ac9cc2ff23cbc62eb8cd51690bc636943ab494 GIT binary patch literal 5003 zcmcIoNpsuC6($L8BB|Z`GNyOawiZ&GlQ@n+5|S8^AP0bLsVk`t%!V!6l&EPy8B67< zN+KuYOLE95RjEqN94EgeKOoiDoN&n{x191`Lkmesvm8RZzwY@Wk{R@fiUlfR^(A>WOun-BcFpGQ$k+2h93NeL6KZICxFR~XV5y^?MIB?>U zqexDIC4rNaoT%gsuoQ4ok`t4hG|K=dBRO%&8DvAi8Iqg?>@>_qfF9Y4kR(u}Yz(L| zpa$5u8Ooj6{du=-czleB=k6@qokv%0G`WONkqq~32s#)eVJKXj9onab|}EMOgU&cqgPZF;TE*L_N(0nqW|sPq^Bs2ln!{2l_}>&W}is|ctQ z)^ib&q!eYQR4A_U)vn_{3a}vX50NH^xvONt#>w@sSTSqo%Ynay)k7pS`*cd zVNa}7Omo80OH*4rf$gXEyF(XFZtaNVu=lG#tLfFS>Y7TUc6W}|@}CLgyuO}p(r zfk7}$#Dgcfq=>(2wZYdyaXl^)Eq8ls%i$cg6VbQMjw_-ly->h_BH=oo?Rh+>a8z9+ z_cd|(0FWGGfMXEwI6h4sNpJyZHwh3@#=_^qnJ`C-HIdQ%!(E?3bEg3uI6!ciA}mZ4 z79mllkQj@SIE#@4i<2ZvKwu|HiVcu7OM$i1B3i4LHUBrT*#9lU?-2G7J|O%a;SUI3 zBH(U%E`tt2cYuRZl)`b?ZsRyZ>1W$^d;dwytZG_A#7wJPTqDs%(^?e~YZXVvs)!q_ zrMhmBq_JvN^rfmsl#*H&1B>Pgl`8_%Nc%`Y`*4h$>(FHMBqPyq??3tcbQ8_O${%JT zl3{5uQ$|FJFML=X;utM{1OdI~qfdR5&qw+E1OhtENAK#nL4Fl_{t3c001_*{SfGzc zy!awNO=o34N9VCGOanhrd@+-!g*jx*=IH|V^94F5U|k;A&=uyUv74KoKG8zAVV6m0 zE@a)%aSKJm9A}(vBh>G78-Xq2B3-JN!DZA?Elt{k--Si|9zqU4&n5cQ7O|2sOF?|> z=7Vk_=pLP@1qSnDXz~CYXu*+ty5zY3>5_LJ0MKGUM3>Zx&hNmYlXT$s@xcQCJ(ud& zCaKpg`pneIB(ju;R)97GZ5G-bwD}WtD!|Li(A*(_1D%5S<@oG$&Cr#{H3Kc8VxXZ? zQ>$tv>qr$n7weOlD8^!4Bw=o`UN@~1#lyoAjDr=y zcvh|s#&FCJ=L9bb_>cw;`FXiPz|VKR6H>>vd!iHPLEC50+$=zEjP+(pq&Ut#=3oVw zPocS&01g}swUMmPSOjV#g())jqBYfAIkx`rLP8H6tpDx{3Er669l|$GR*X;SVpUx- z11IAl3>=TiB}g+e;b5wgp`z!~ef|{##yhLE;dHh=xM|*%JDZLeZrD5Rj?GHEsd3)n zBK_QMx7e~{Gq}s+Rxm43vYDJdy14GTrFDDrwS&0nv?1}qGskn9p2JQuzZf_a{SC}>bYp2z#Q2py_5eG9<-pjcLDBW&@QaUO*-Nki` z#lY}!p%~iIv6mit@*nW#@9#-0ExzrjlW{gi&aiQEmYpHz*jaL(og)|6d2*3mAeY!h za+zHsSJ-88m0cm9u&d-6`-EiKHFBM0$qja$++;V%Eq0UKX1B;4cAMN~cgQ_*f{IW?SV5>E*a$BX(62s2*aFaVGku{a zqKg%{9TN2h#ad9r7Y$l7i$wO7vh1s7QC>ArvMpAYWa1D?z0?p&RaeCzzJRLbvOyb` zAx0%>tGZhc}Rb*85XU4 zDn^25FrQk>hGs5{0dq|+(HC{2EC$P!I+(iAz;Z6%OBO@|-eKZKQLD6C7jd|q%W8=v z)TI(Nv_+D^LGV(V@1Y7k)C^G?)#^#fO+@hsehy*j{tDo`F0A8M*bn3IKf@-cr@2*l z`u|CDkaEuMCNSl|=S_bm!TXx8A^Za2mjFKAbUv1#J|-m}lai0cjxURyDI8&@_va8~ zKEk8UQ8ztzuJ3^J&wvd@&ME{C9$%J7w@+qrgs@VazfWea$nqyF9B>r+y7*VghvXIu;juQgh;?& zG&)U6kZ|FYVaiB;b4a^Xq)z~3!`@9igeJ-c{|M9(J&V7m;oL1+nR MDQGch<3pMM0ju~NCIA2c literal 0 HcmV?d00001 diff --git a/start_all.sh b/start_all.sh new file mode 100755 index 0000000..66a4c1f --- /dev/null +++ b/start_all.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +python3 Start_lora-tnc.py & +sleep 1 +sudo socat PTY,raw,echo=0,link=/tmp/kisstnc TCP4:127.0.0.1:10001 & +sleep 1 +sudo kissattach /tmp/kisstnc ax0 &