{"id":368,"date":"2017-06-24T21:38:53","date_gmt":"2017-06-24T21:38:53","guid":{"rendered":"https:\/\/klubnl.pl\/wpr\/?p=368"},"modified":"2017-07-12T20:51:58","modified_gmt":"2017-07-12T20:51:58","slug":"dekodowanie-7-znakowej-wiadomosci-na-6470hz","status":"publish","type":"post","link":"https:\/\/klubnl.pl\/wpr\/en\/2017\/06\/24\/dekodowanie-7-znakowej-wiadomosci-na-6470hz\/","title":{"rendered":"Decoding a 7-character ebnaut message on 6470Hz"},"content":{"rendered":"<p>On 3 June 2017 Stefan DK7FC did an 7 hour ebnaut transmission on 6470Hz with 7 characters. Previously i&#8217;ve been able to receive 2-3 character massages sent in a similar amount of time, however 7 characters seemed to be unreceivable. This article shows how the message was decoded, and may be useful to people starting to use linux and\/or vlfrx-tools.<br \/>\n<!--more--><br \/>\nThe transmission had the following parameters:<\/p>\n<pre>f = 6470.100000 Hz\r\nStart time: 03.Jun.2017 \u00a0 3:00:00 UTC\r\nSymbol period: 24 s\r\nCharacters: 7\r\nCRC bits: 5\r\nCoding 16K21A\r\nDuration: 7h, 8min, 48 sec\r\nAntenna current: ~ 440 mA<\/pre>\n<p>I used my usual receive setup, described here: <a href=\"https:\/\/klubnl.pl\/wpr\/en\/index.php\/artykuly\/uzywanie-vlfrx-tools\/\">Using vlfrx-tools<\/a><\/p>\n<p>Unfortunately the message didn&#8217;t decode correctly at first with the noiseblanker settings i&#8217;ve used (-a2 -d0 -t 10). resampled_file is the file produced by the ebnaut decode script in the\u00a0<a href=\"https:\/\/klubnl.pl\/wpr\/en\/index.php\/artykuly\/uzywanie-vlfrx-tools\/\">Using vlfrx-tools<\/a> article. I&#8217;ve fed it to vtraw and ebnaut, but with the -f9 option (copied the last line of the script and added -f9 and logging to a file named decwy):<\/p>\n<pre>$ vtraw -oa &lt; resampled_file | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 20000 2&gt;&amp;1 |tee decwy<\/pre>\n<p>Let&#8217;s extract all messages in the decwy file (the ebnaut decoder output), sort and display only unique messages and count them. Unfortunately with only 5 bits of crc there are many decodes:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u | wc -l\r\n67495<\/pre>\n<p>67495 of unique decodes is not good, we can&#8217;t sift through this manually and it will have a lot of valid looking messages.<\/p>\n<p>Let&#8217;s cheat a bit: Paul Nicholson, who decoded the message, wrote that it is a famous name, so we can hypothesize that it will be only letters. Let&#8217;s extract all messages which are only letters:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u |egrep '^[A-Z]+$' |wc -l\r\n352<\/pre>\n<p>352 is much better, i can look through all of the messages manually:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u |egrep '^[A-Z]+$' | less<\/pre>\n<p>And the only message which makes sense is MARCONI \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p>I dug out the best message from the ebnaut decoder logs (decwy file):<\/p>\n<pre>found rank 13961 ber 4.0858e-01 Eb\/N0 -1.4 M -8.404992819e-01 [MARCONI] ps[ 83 -90 -60 -90 -60]\r\ncarrier phase: 5.1 deg\r\ncarrier Eb\/N0: -4.1 dB\r\ncarrier Es\/N0: -18.44 dB\r\ncarrier S\/N: 11.87 dB in 38.9 uHz, -32.24 dB in 1Hz, -66.22 dB in 2.5kHz\r\nelapsed 1334<\/pre>\n<p>&nbsp;<\/p>\n<p>Now let&#8217;s try to find the best noiseblanker settings. The ones which i&#8217;ve used have been optimised for 8270Hz, while the optimal settings for 6470Hz may be completely different. We&#8217;ll extract a 3kHz segment around 6470.1Hz to the filename set by the PLIK2 variable. Then we&#8217;ll try to loop through possible combinations of the vtblank -a (i&#8217;ve tried1.2 1.4 1.6 1.8 2 2.2 2.4 2.6) and -t (i&#8217;ve tried 10 and 100) parameters, resample to 240 samples\/s, and put the result in files named like in PLIK2, but with _A_T appended to the name (where A is the value of the -a parameter, and T is the value of the -t parameter)<\/p>\n<p>The following script does this:<\/p>\n<pre>#!\/bin\/bash\r\n\r\nPLIK2=plik_dk7fc_20170603_1_raw1\r\nFREQ=6470.1\r\nTT=2017-06-03_03:00:00,+25728\r\nvtread -T$TT \/mnt\/rawvlf | vtfilter -h bp,f=${FREQ},w=3000 &gt; $PLIK2\r\n\r\nfor a in 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6\r\ndo\r\nfor t in 10 100\r\ndo\r\n echo a=$a t=$t\r\n vtblank -v -a$a -d0 -t$t &lt; $PLIK2 | \\ vtmult -f ${FREQ} | \\ vtresample -r 240 &gt; ${PLIK2}_${a}_${t}\r\ndone\r\ndone<\/pre>\n<p>This will create files called plik_dk7fc_20170603_1_raw1_XX_YY (where XX is the -a vtblank setting and YY is the -t setting). Lets go through these files and see how they match our hypothesis that the message is MARCONI. For this we&#8217;ll use ebnaut in message analysis mode:<\/p>\n<p>&nbsp;<\/p>\n<pre>$ for i in plik_dk7fc_20170603_1_raw1_*; do echo $i; vtraw -oa &lt; $i | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 20000 -f15 -f16 -M MARCONI;\r\necho; done<\/pre>\n<p>&#8230; after a lot of output this one looks best (carrier Eb\/N0 and carrier S\/N\u00a0 is the highest):<\/p>\n<pre>plik_dk7fc_20170603_1_raw1_1.4_100\r\npadded 0.267 seconds at end\r\ninitial reference phase -0.2 amplitude 2.277e-02\r\ncarrier phase: 2.4\r\ncarrier Eb\/N0: -2.7 dB\r\ncarrier S\/N: 13.28 dB in 38.9 uHz<\/pre>\n<p>&nbsp;<\/p>\n<p>Let&#8217;s try to decode the plik_dk7fc_20170603_1_raw1_1.4_100 file without the -f9 option and see how that works:<\/p>\n<pre>$ vtraw -oa &lt; plik_dk7fc_20170603_1_raw1_1.4_100 | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 200000\r\n\r\npadded 0.267 seconds at end\r\ninitial reference phase -0.2 amplitude 2.277e-02\r\nprep [ 0 0 0 0 0]\r\nfound rank 141 ber 4.1884e-01 Eb\/N0 -2.4 M -6.664184332e-01 [MARCONI] ps [ 0 0 0 0 0]\r\ncarrier phase: 2.6 deg\r\ncarrier Eb\/N0: -2.7 dB\r\ncarrier Es\/N0: -17.02 dB\r\ncarrier S\/N: 13.28 dB in 38.9 uHz, -30.82 dB in 1Hz, -64.80 dB in 2.5kHz\r\nelapsed 42<\/pre>\n<p>&nbsp;<\/p>\n<p>Yes, it works, and decodes the MARCONI message on the first try. Turns out that the best vtblank settings among the ones which were tested for this transmission were -a1.4 -d0 -t100.<\/p>\n<p>&nbsp;<\/p>\n<p>Recently i&#8217;ve run a script to try to find the best noiseblanker parameters for a much wider range of parameters, and it turned out that the optimal parameters were much higher: vtblank -a 1.7 -t 8050 -d0. Maybe this will be described in another article.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>3 lipca 2017 roku Stefan DK7FC nada\u0142 7-godzinn\u0105 transmisj\u0119 ebnaut zawieraj\u0105c\u0105 7 znak\u00f3w. Poprzednio by\u0142em w stanie zdekodowa\u01072-3 znakowe transmisje wys\u0142ane w podobnym czasie, wi\u0119c 7 znak\u00f3w wydawa\u0142o si\u0119 by\u0107 nie do odebrania. Artyku\u0142 pokazuje w jaki spos\u00f3b ta transmisja zosta\u0142a jednak zdekodowana i mo\u017ce by\u0107 ciekawym przewodnikiem dla os\u00f3b kt\u00f3re zaczynaj\u0105 uzywa\u0107 linuxa i\/lub &hellip; <a href=\"https:\/\/klubnl.pl\/wpr\/en\/2017\/06\/24\/dekodowanie-7-znakowej-wiadomosci-na-6470hz\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Decoding a 7-character ebnaut message on 6470Hz&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-368","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"translation":{"provider":"WPGlobus","version":"3.0.1","language":"en","enabled_languages":["pl","en"],"languages":{"pl":{"title":true,"content":true,"excerpt":false},"en":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/posts\/368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/comments?post=368"}],"version-history":[{"count":9,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/posts\/368\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/posts\/368\/revisions\/467"}],"wp:attachment":[{"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/media?parent=368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/categories?post=368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/en\/wp-json\/wp\/v2\/tags?post=368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}