ELFf44 (444444vvP   HHHDDPtd#Qtd/lib/ld-linux.so.2GNU GNUn *XO>sE##"#$)8K9nj kd' %rS*eM v26 J zlibm.so.6_ITM_deregisterTMCloneTable__gmon_start___Jv_RegisterClasses_ITM_registerTMCloneTablesqrtflogcossinsqrtlibrt.so.1libc.so.6_IO_stdin_usedsocketfflushexitsignalstrncpytime__assert_failreadstdoutfputcstrnlenlseekmemcpymallocstderrcreat__fxstatusleepcloseopenfprintfsendto__ctype_toupper_locfcntl__libc_start_mainwritefreeGLIBC_2.0GLIBC_2.3 ii pii pii z$# $(,0 4 8 < @ DHLPTX\`dhlptx|!"S?#÷yt[5 %%h%h%h% h%$h %(h(%,h0%0h8p%4h@`%8hHP%<hP@%@hX0%Dh` %Hhh%Lhp%Phx%Th%Xh%\h%`h%dh%hh%lh%php%th`%xhP%|h@%h0%h %h%hUWVS4D$$T$L$ hD$(Pl$,D$$1ƅD$|$w}:tED11)t$ @JЀ wk \܉T$ u|$w,}:ti|.uw܋D$|$D$ ؉C|$u4}:D$t |$D$ ؉>:uv1wD$BD$|$)1ۃ U:<[^_]ÍL$qUWVSQhHh-1jqQ ;=@ WЗ]${EɃ uաX 4ulujEVjhL jL(X jVjhE6=X jVjhEHtB9uX jVjhE\X jVjhE2X jVjhHE_H PP1ҡj50I#1]E L$u wvB(hZ@X9wŃ$;|$tv'؋D$|$9tt$ D$D$$[^_]ffffffSD$wb؃;X sDvD۞ztvv#&ٍ[Ít&w[Í&ÐD$$td&t&BrZ vs &؋u% ėw vكÍv'Bv2 wvɋZ됍t&ڋHsfffVSÉփu)jhzjV[^Ívjhzffj hzXZjt$TYXjhfSӃ D$RD$PXZjh%z]YXSt$QXZjh-zC$WfffUWVSփL=X D$ @T$1҉D$D$bXBBt@9uD$`|$D$l$jj\$,$D$$ljD$ -X l$ D$49r}9ߋ0@ډD$H t&9\t҉yD$9\uL$D$nYt%t&<Ћl@ɉ8h\9uߋD$D$ D$l$ٞztxȗ\$D$1x6t&l$D$l$L$ % З$ \$,D$,C[K[9uD$ ̗1۽|$t&01҉؉5X )T$@ɍPvt&;\$uɋ|$ٞzOuMt$AɍAYtt&X@X9u؍t&L[^_]=믐&=ȗT$ % З$oۉxrD؃xxHX؃xi-HX9d +t$pD$@r뎍D$D؃yD$(뀍vD$$돉H1|$(pt$2t$$4v}~t;D$u܀= |$(AD$D$<ËT$$ &td)?vލD$<=X H\$$D$ D$ɋT$$1ۉT$$9t0HX vٍD$h XZjFh4Y[jDh|^_j-h]Xj[hԭXZjHhLƭY[jTh踭^_jfh読]XjNhP蜭XZjih莭Y[jNh 耭^_jNh\r]XjFhdXZjXhVY[j/hLH^_j=h|:]Xj6h,XZj_hY[jghT^_jMh]Xjsh XZjdhY[jthج^_jRhXʬ]Xj}h輬XZj[h,讬Y[jOh蠬^_jkh؎蒬]XjhH}脬XZhhDsY[hh܏b^_hhQ]Xhh0@XZjWhđ2Y[hh!^_jhh]XjGhXZjh{Y[jh|^_j5hd۫]Xjh+|ͫXZj h9|迫Y[j!h豫^_j"h裫]Xj hE|蕫XZjhR|臫Y[j-hy^_jhY|k]Xjhw|]$a<$hS D$8PhSutD$41)ʃ \HP|$  $"T$ 'hh n <-t>z'hS2$P=/ƃ#vjh|i 1҉T$D$l$ٞz=jj$XZjh|2j h|jh|Y^jr_]jh|Ģjh|褢j h}蒢Y^jP!_]jh}s jj!XZjh}SD$D$l$ٞzh؋jj$XZjh}كv$j h }ϡ jj}"jhH}莡WWj$h``fD$D$ٛ $D$,$ ٛvD$B J0vJ7L$A P0vP7T$@hD$LPؠ/jPet&؋t&`vj h*}聠'\$PPjhz3ZYhS&[^j h?}$,X 7= Iز!cUUhS覟 hSD$HP賐z)WWhSl hSh<yjVVhSA hSh8N? WQQhS   hSP& zRRhSȞ= LJvDЉ$@9tP>tKܭPЀ vP-Dɉ$@9u|$zT jPPj)h@~\PPhS  PhS耎t xz{؀= uPPhS訝 hShH 赎 {+QQhSn^_hS1h  @PPhS3  hSP:<$E ـ/=$B6H A X   ƀ  PPj D$DP2t$HqPPhSfF hSPt8PPhS<F hSPJFFv ^^؋D$8D D%H C UUhS› h(hSϋ QQj h|ڛ[^j5X k_]jh|轛 jj50kD$<`Z=Dt|PPj h|zDD$Ht^v'jhQ jjD$Dp_]jh|0 jjD$DpݔD$HD$HuPPjhH}WWhS虚 h\ hS覊t =\ d3{@  ƀ  s 4}ٞX ] M 'PPj h|) jjt$HٓXZjh+ r@   ƀ" ƀ#  ƀ$_zL  D xB l z {غ| zszUUhSΘ$PÍ+G>Í+=wV>Í+(>+2ffVS\t=v )‰Љ$$L$[^VSӋh`47h`7L$PXZ[^fffffffUWVS׉΃jht$8Q/H\=L= D=j ˹؍\$SjKj St$HVG<[^_]fffWVS v )щʍp1jhhZmVGj k}|$WjRH j WhVGjhshV{G0[^_ff< D$ t <^wjD$P_[Ð&jh|A[fffffUWVSR9w> &<@t9u9vD7uB[^_]Í&,7 &M?9uD7tjhO}Z |$w?̃)֍F0D$jWdZ[^_]É'D$1jW@ZfffffUWVS<$X $$//fL$.KD$ $xD$1jdt$@Vj$p Hjhh$QSE jdVhSEjhhSE $p~IjdVj$|FjhhS_E jdVhSNEjhhSZ$8L$$j vjhliR jj$LY^jhHRjPK_]jh'R&jj$KXZjhQijPKY^jhsQ(j hhS=Z$P荌$T$@D$@TLD$@щL$$r jj t$ NǍ$t$K?D$>?D$?jhhS=L$4 %tT$0$$D<vD$DD$ LjD$?ٜ$ v @)lj|$vD$DD$ Lih$(B;$ٜ$D$0L1T$0ʃ?1ЀvjdVjD$ D$$ $Y>jdVhS < jh-hS;D$@9$T1ɉD$0ЃD$@||D$@׉%$4jdVjP: jdVhS8jhshS8D$P Tу?v @)Ȁv$$ Lٔ$jdVj$:jdVhSY8 jhhSD8D$@PDT$@<v$$ ٔ$ jdVj$D:jdVhS7 jhhS7D$@PDT$@ih$8jdVjP8 jdVhS7jhhS7D$Pjj W!IjhښhSj7 jdVkj:P8jdVhS=7 jhhS(7@jhǙhS7j hThS6D$@T$RD$@$9jhhS6D$P|D$Pj7$jhhSz6 D$0jhhSR6j"hhS86/_fD$.j!hhS6L$@D D ЉD$D$ LTٔ$0jdVj$8 jdVhS5jhhS5D$P &/_fD$.j hhS5D$@DfD$D$ Xٔ$,jdVj$7 jdVhSH5jhhS65D$P /_fD$.jhhS 5D$@Dih$8jdVjP)6 jdVhS4jhhS4D$PPDT$P <v$$ Pٔ$ jdVj$6jdVhSx4D$P j hhS^4D$@D<v$$ Pٔ$jdVj$e6jdVhS4 jhhS4D$@_/_fD$.j hphS3T$@fDT$@fD$D$ ٔ$(jdVj$5 jdVhS3jh}hS3 j hhSe3}1jhzhSD3D$@jhzhS%3D$@jhhS3_$PT$@$[T$@DT$@jjPcD$lj$?D$>?D$?jhhSr2D$@TD$@(+P JjhChS20j hhS1jhhS1t$jhhS1$jhhS1 D$4DjdVjjdVhS{1D$P jh^hS\1j h9hSB1L$@$PD$@Cj h0c D$@PL$HT$@pL$@$D$@PT$@jdVjDihP 2 jdVhS0jh'ffffffS1Ɂh\$Sj hSD([S1ɺh\$Sj hSSD([fffffUWVS$L$L$D|$@\$ P %$9wRPW$ )P$|P$P$3O&jhh-V=jhjhj h*j h* jj$ jj$ j j$ j j $b j j ȝ$C$x"oPjj $ ҝJt&j hr)PPjh)$x$x1ۍx t&9CPPH}$9uΉ&jhk1)D$D$s0h$D$xXZhD$tP)%Y[jD$oP(D$x1Ƀ9rPtȺ%I$)))уt:j2h`( t$t8j h@z(؃jhqv(D$x8^_jhvZ(D$x1D$h@ PPjh2(9vd8uUjh'D$xD$x8yu<xjh{'D$x랋D$h<0P@ L$ЉD$Hjh}m'q 2D$/yCZc;=FD$@DŽ$h v^-+D$T$@jЍt P&F9|jhH}&19w'vtjhH}]&19vT$h2 t݄PPjhH}&zRRjh&D$xD0V[QQjh%:SSjh%WWjh%PPjh%PPjh%PPjh%PPjhl%nPPjhV%0$ XZj$ S6%0$ Y_jS%PPjh%0$ XZj$ S$QQjhSSjh뽋$1tL$d9  u= t$d4j h#h-Vmv D$l}(D$jhDh-V@D$9$xsL$ɍl9 1ۄu1[v9$xsu;\$<9$x/|$uЅD$p8h-$ Qjh-$ Ph-V 닃D$p(h-$ Qj蹮h-$ Ph-VQ jh_h-V<h-$ Pj$f8fD$`D$` $G h-$ Ph-Vjhh-V jhzh-Vjhah-VƄ$ Ƅ$cƄ$|$@T|$@|$@|$t |$@  = t[h-VQ"XZh-$P="Y[jh/"^_h-$P"]Xh-$_P! t$xX1jhh-V D$p8h-$ Sjh-Sh-V jhh-V D$pD8h-Sj謬h-Sh-VK jhh-V6 L$| D9D9h-SjкTh-Sh-V jh_h-V 9$xv4D$l-8苬h-Sh-V 9$xwjhah-V ,t&jhKh-Vn D$p8h-$ Sj蕫h-Sh-V4 jhKoeh-V D$p8h-$ Sj>h-Sh-V jhRh-V T$| h-SD:#D:"D:!T: Ph-Sh-V} $D8dD$`D$( jhYh-VT h-SjD$膪h-Sh-V% GmD$h 9$xD$D$lT8hT8gʉT8fʉ(ʉT$T8lD$ԗT8kʉT8jD8iT$ЉD$D$\$\w`D$|$@T$\$h-hhl$~U.D$@<<W<uPh-h$P.$T$lP:D:D:T:h-ȍ$Qj1кh-$| Wjt$H jhh-Wu h-Sjt$D h-Sh-WP jhh-W> h-Vh-W* jhh-W h-$Ph-Wh-$gPh-WL$Xt$8t$0t$Dt$@jt$OD$1 <t9vT$4t{|$4.xvRD$4,>v Djj\$$D$0D$ED$9u؋D$4| ؉'> v'؃[^_]ÍX~&HH9u-E&jj\$${ D$D$D$\$WVjP >OD$1ffVSL$ \$t$PЀ wI0t7Q  L 9tHЀ v[^É'[^1ffUW1VSt$|$ \$-9؉$w4jЉ wM1jЉ w* ;$LJЉv1-u[^_]Ðt&!1fUWVS|$D$ t$/X< G1ŃH u"9v<-q1[^_]Ð͉<-P1퐍& A< jt& A< v D0 $$ &ك9vظuB_9ڸT<H ؍&[^_]1'붐&ظ.u9w  $0 w $L A< wdʃ0 $9$vى^wt&9T 1ىu 1HUWE.VS$\$8t$jhUV &D$0sD$0fffUWE.VSЃd$(|$,D$sm$jhdj iµl$U)iuD$ 1D$9v)D59r$QjhH}JՋT$8kdL$jh|T$@)jh|T$HljhًT$PX ųd$(jh_Ѻ RT$8)d$0jh_ىk<k<)ыT$@L$8jhH}T$H),[^_]ffffffUWVSl$t$xM<.  Vtf22 9 u؈L..[^_]Ðt&11.L.[^_]UWVS\$t$@Ut$,VL$TT$PRtKD$|>t [^_]fD$jpjj,j:t$@UVL$TT$P ut&[^_]fL$$ D v'<,؉L$j0j*j,j:t$@UVL$TT$Pt,$tL$D <*uL$D$vSD$x%I$D$)׋T$4Dt+D$D$4)|$)׋T$4v@9uD K<: D$4|$4DPDQT$L tc|$09<$wU|$89|$v;$w/;D$|$4 LủT$3t$fffffpD$ Pt$xj]D$(%-|S  9D$[Í Zt$4t$ [fffffff uD$ D$ ÐWVSt$|$ VtV7P'[^_fffffffD$ D$(wpD$,ٞwe|$D$ fD$ l$ T$l$L$ɉL$ٞD$vvȃÍv'vhʣhhhN{fffffff$|$D$D$(D$ fD$l$|$l$D$$,$vЃ$ffft$ dtT$ fjfVSL$t$ t ~19[^Ðt&D$ [^!Ív19~ދD$ މ[!^fffL$1;L$sD$ ffUWVS|$ D$$l$t$\TtX$UWTt7$\G$LADC; $u[^_]ÐWVSt$|$ Pt%Vt$D$PS6Xt$ t [^_Ðt& S_fffff (kD$ٞr#&؍ȃ Ív'1sjj$ȃ fffffkffffffffffffffffffff+fffffKffffffffffKfffff ffffft$Tá u  fffffS jjjXZjS PjS[ffffffff$D$,ffD$D$0D$D$ȉD$ jRjt$-f u8|i8|i16|f32-s [-]5..[-]12-a (0.03)-c 4..8-b 0..9-l 2..255-g -r -w 2..4096-o -S -o 0..1 (-1)-M -P -n -R 0..100-U or -L ip:port number-u ip:port number-J out of memory-J ip:port number-Y d|f iq-filename create-Y b -Y d|f|b iq-filename -h thisimport json, base64, socketIP=("0.0.0.0",5100)sock.bind(IP)while True: print(obj) try: print("payload=",payload) except: passcannot open udp socket-o shift outside iq bandFIR length= ratio= offset= notches:..bw= cr=from header sf= id=Off optimize= drpll= drc=ppm squelch= inverted-X < use -h b~^- n= f+1 f-1%head crc error notch at:open iq file jump:wrong first syn nibble state=SYN 1 OK state=SYN state=NETID wrong second syn nibble state=REVERS1 state=REVERS2 jump/4:rev chirp timeout state=DATA dcd-lost-count=Warning: only one bw = input samplerate!-Z (0.01 0.9999)-W (0 = off) Decode lora out of IQ-File/Pipe (samplerate must be exact +/-0.00001) output data in raw udp, axudp or json, view aprs, pr, lorawan, fanet, ... -A (*) enable frame chaining for ax25 longframes -a (*)follow frequency drift, 0 off (0.03), off sf<7, try on hard to decode frame in iq-file -b kHz 0:7.8 1:10.4 2:15.6 3:20.8 4:31.25 5:41.7 6:62.5 7:125 8:250 9:500 (7) -C (*)use crc on implicit header -c (*)coding rate and enable implicit header (4..8) (else from header) -D (*)if dcd lost go on decoding until frame length limit (for external FEC or monitoring) -d (*)switch off collision detection (less cpu but loose stronger frames starting inside weaker -E switch off using crc to repair 1 chirp (stresses crc, does not repair much) (on) -F max. block energy FEC off (hamming code fec remains on) (on), try on/off for decode iq file -f u8|i8|i16|f32 IQ data format -g add this to measured signal level for absolute values (no autogain in sdr) (0.0) -H show -v data in ascii if printable else in [hex] -i IQ-filename or pipe -J send demodulated data(base64) with metadata in json, may be repeated -j write demodulated data(base64) with metadata in json to file or (unbreakable) pipe -K do not exit on broken iq pipe -L (*)same as -U but AXUDPv2 with metadata for igate individual destinations per sf: -L 127.0.0.1:9012 -s 12 -L 127.0.0.1:9010 -s 10 -l (*)fixed data length for implicit header else guess from dcd -M pass through rx frequency to json metadata -M 433.775 -N if verbous add empty line after data line -n <[-]Hz> <[-]Hz> notchfilter baseband from to Hz (may be repeatet) -O <0..1> (*)optimize on off else automatic on sf/bw (-1) -o shift input iq band +-Hz -P <+/-ppm> (*)tune datarate (chirp samplerate) or preset for auto (-a) in ppm (0) -Q verbous only for frames with crc and crc ok, see -v -q (*)invers chirps or swapped I/Q (prefer negative spread factor) -R <%> try to correct drifted symbols from multipath or IF-filters, 0 off, 100 full (75) -r downsample input, give exact input samplerate in Hz (off) -S (*)modifiy squelch level critical for implicit header frame length guess (automatic) -s [-] (*)spread factor (5..12) (12) and start a new demodulator negativ value (-s -12) for invers chirps or swapped I/Q -T send json udp with DCD-state+sf valid for this sf -t (*)send raw frame bytes in udp frame only if has crc and crc ok -U (*)send frame in AXUDP -u (*)send raw frame bytes in udp frame -V very verbous for debugging frames -v verbous +++++:cr=4 or hamming ok, -:hamming error, h:by hamming corrected, ~:weakest chirp replaced, b:noisy chirp replaced, c/C:tried until crc ok/not ok, ^:bins with decending power sum tried until hamming ok -W every n*firlen samples update notch filter 0=off, ok:50 (0), less for pulsing narrowband noise -w downsample fir length (higher is sharper/more cpu) else automatic (4..4096) (0) -X (*)filter network-id (sync), 1xx stops decode on wrong id so fast ready for new frame if set -d 0 is wildcard, 20 will pass 2*, 03 for *3, 00 pass all (00) -Y d|f|b iq debug output in float32-iq (d)echirped or only (f)iltered, view spectrum, or bins , sets -d -y (*)aprs needs 3c,ff,01 header else all junk removed until first letter -Z add pulse noise filter (noise blanker) (0.05 0.999)(*) may be repeated for more demodulators, to start next demodulator apply -s before other pramaetersexample1: aprs with autonotch for birdies: rtl_sdr -f 433.775m -s 1000000 - | ./lorarx -i /dev/stdin -f u8 -v -H -N -b 7 -s 12 -w 64 -r 1000000 -W 50example2: lorawan all modulations: rtl_sdr -f 869.525m -s 1000000 - | ./lorarx -i /dev/stdin -f u8 -Q -b 7 -s 12 -s 11 -s 10 -s 9 -s 8 -s 7 -s -12 -s -11 -s -10 -s -9 -s -8 -s -7 -w 64 -r 1000000example3: fanet and axudp to aprsmap: rtl_sdr -f 868.2m -s 1000000 - | ./lorarx -i /dev/stdin -f u8 -Q -L 127.0.0.1:9002 -b 8 -s 7 -r 1000000example3: fanet with plutosdr: rx_sdr -f 868.2 -s 1000000 -d driver=plutosdr -F CS16 - | ./lorarx -i /dev/stdin -f i16 -Q -N -b 8 -s 7 -r 1000000example4: meshtastic + meshcore and frames in json via udp to decypter: mknod iqpipe p rtl_sdr -f 869.5m -s 1000000 - | tee iqpipe | ./lorarx -i /dev/stdin -f u8 -r 1000000 -o 118000 -b 6 -s 8 -N -Q -M 869.618 -J 127.0.0.1:7001 ./lorarx -i iqpipe -K -f u8 -r 1000000 -o 25000 -b 8 -s 11 -N -Q -M 869.525 -J 127.0.0.1:7002example: decode payload from udp json with python3: -J 127.0.0.1:5100sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) data, addr=sock.recvfrom(1500) obj = json.loads(data.decode()) payload=base64.b64decode(obj["payload"])enable FIR (-r) for notches (-n)no FIR (-w) set so no filtert outputwarning: sf<7 needs implizit header… /^xƍ4hР@#G8qĉ%K.\p 2dɒ$I&M7nܹrȐ A +V[mڵk֬Ye˖,XaÇ>}۷o޽z׮]tѢD!C 6lرcǏ?@'7I@75?w?9wL?w+2>$H<@AKGOzBq=J0A$tI=(šBg@@HCzD@38>@>?@A`@_p0 #<333?L=q= ףp?HzG?rϥwwSkytraxxBitBroker.euAirWhereWindlineBurnair.chSoftRFGXAircomAirtribunealfapilotFANET+FLARMXC TracerOGN Tracker4aviationVariousEspressif based base stationUnregistered Devices[Multicast]fw:[] axudp: beacon encode error:!Clb=m/s FNTalt:dB MHz Ext Header ACK none requested requested via forward unknown unicast broadcast Signature:no payload tracking:Online Tracking deg/s QNE:Message:Message subheader:Service:Internet Gateway Temperature:C Wind:deg km/h Gusts:km/h Humidity:% hPa State of Charge Extended Header Thermal:qual:HW-Info Ground Track:online Remote configuration:Acknowledge configuration Request Geofence Broadcast Reply Landmarks FANETFanet:Clb:Forward geobased fwd ///g/g/O/g/'/X/n///[/>/b/s/e\o/'/a\!\!{"dcd":,"sf": ill-id: cr: len: dcd-lost crc:okerrno lev:(/)dB snr:dB nf:)dB txd: t: q: fc: fec: dre:MHz"net":,"crc":,"invers":,"bw":,"cr":,"preamb":,"duration":,"level":,"afc":,"dre":,"eye":,"nfloor":,"pknfloor":,"snr":,"fec":,"rxmhz":,"ver":"lorarx","payload":""} cannot write json-fileJoin-requestJoin-acceptUnconfirmed Data UpUnconfirmed Data DownConfirmed Data UpConfirmed Data DownRejoin-requestProprietary RFU: Major: AppEUI: DevEUI: DevNonce: NetID: DevAddr: DLSettings: RxDelay: CFList: ADR: ACK: FPending: ADRACKReq: ClassB: FOptsLen: FCnt: FOpts: FPort: Payload: MIC:ax25 part 2ax25 chain hash missmatchax25 part 1AX25::fm to * ctl RRRNRREJUIDMSABMDISCUAFRMRv1 pid TRANSPORT_FLOODTRANSPORT_DIRECTRESPONSETXT_MSGACKADVERTGRP_TXTGRP_DATAANON_REQPATHTRACEMULTIPARTCONTROLRAW_CUSTOMUNDEF TRANS: Trace[ Path[ Hash: Time: App: [ pos:\gChatNode/lRepeater/rRoomServer/BSensordB afc:MSHCOR Dst: Src: Mac: Auth: Flag:Meshtastic: Dest: SRC: MID: HopLim: HopStart: WantAck viaMQTT NextHop: RelayNode: Msg:[Meshcore: viaaxudp encode: too much junk in data (-y for prefilter aprs)Other,Paraglider,Hangglider,Balloon,Glider,Powered Aircraft,Helicopter,UAVBarometric pressure normailized Support for Remote Configuration Other,Walking,Vehicle,Bike,Boot,Need a ride,Landed well,Need technical support,Need medical help,Distress call,Distress call automaticallyText,Line,Arrow,Area,Area Filled,Circle,Circle Filled,3D Line,3D Area,3D CylinderInfo,Warning,Keep out,Touch down,No airspace warn zoneframe deleted, wrong sync word no ax.25 (no address end mark) no ax.25 (address field size not multiples of 7)`FIF2FFFgEwFkaaaaaUb;b!bbbobbaaaS@0  |IE?: ?ff?B@F AHQ@=L>CQ8B4C3303232332323 #|AAB=pC<4E.؂;E.;5<.eB%.*s%*lu%*d%*.*f%*Xosic.c*aX2C_TRUNCI(kN(k(knO;b4L|X | l  , d< <,L8<L,!"dl== _|L``cdd@|el `FNoL[oPj 88s BPP |HH#wpppp Ryz)@#'O   @0@Ё