{"id":278,"date":"2017-04-19T21:17:33","date_gmt":"2017-04-19T21:17:33","guid":{"rendered":"https:\/\/klubnl.pl\/wpr\/?page_id=278"},"modified":"2017-05-03T19:42:50","modified_gmt":"2017-05-03T19:42:50","slug":"uzywanie-vlfrx-tools","status":"publish","type":"page","link":"https:\/\/klubnl.pl\/wpr\/artykuly\/uzywanie-vlfrx-tools\/","title":{"rendered":"U\u017cywanie vlfrx-tools"},"content":{"rendered":"<h4>Wst\u0119p<\/h4>\n<p>Spo\u015br\u00f3d oprogramowania u\u017cywanego wsr\u00f3d entuzjast\u00f3w VLF warto zauwa\u017cy\u0107 vlfrx-tools autorstwa Paula Nicholsona. Poprzednie artyku\u0142y <a href=\"https:\/\/klubnl.pl\/wpr\/\">KLUBNL.PL <\/a>pokazywa\u0142y sprz\u0119t s\u0142u\u017c\u0105cy od odbioru:<\/p>\n<p><a href=\"https:\/\/klubnl.pl\/wpr\/index.php\/artykuly\/proste-zrodlo-sygnalu-1pps\/\">Proste \u017ar\u00f3d\u0142o sygna\u0142u 1PPS<\/a><\/p>\n<p><a href=\"https:\/\/klubnl.pl\/wpr\/index.php\/artykuly\/sprzet-do-monitorowania-vlf-za-pomoca-vlfrx-tools\/\">Sprz\u0119t do monitorowania VLF za pomoc\u0105 vlfrx-tools<\/a><\/p>\n<p>Tak jak ju\u017c wcze\u015bniej pisa\u0142em, opis ten nie ma by\u0107 instrukcj\u0105 u\u017cycia vlfrx-tools (poniewa\u017c ju\u017c taka istnieje), ani system\u00f3w unix\/linux (poniewa\u017c ju\u017c takie istniej\u0105), a raczej opisem szczeg\u00f3lnego typu instalacji. Do pr\u00f3bkowania u\u017cyta zosta\u0142a karta d\u017awi\u0119kowa zewn\u0119trzna Creative EMU-0204, cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania jest kalibrowana za pomoc\u0105 sygna\u0142u 1PPS z odbiornika GPS.<\/p>\n<h4>Instalacja VLFRX-TOOLS i EBNAUT<\/h4>\n<p>Oprogramowanie vlfrx-tools jest dost\u0119pne pod adresem:<\/p>\n<p><a href=\"http:\/\/abelian.org\/vlfrx-tools\/\">http:\/\/abelian.org\/vlfrx-tools\/<\/a> (aktualna wersja to 0.7p)<\/p>\n<p>Przed instalacj\u0105 nale\u017cy si\u0119 zapozna\u0107 z <a href=\"http:\/\/abelian.org\/vlfrx-tools\/notes.html\">instrukcj\u0105 do vlfrx-tools<\/a>.<\/p>\n<p>Instalacja wykonana zosta\u0142a na systemie Debian GNU\/Linux 8 64-bitowym. W odr\u00f3\u017cnieniu od <a href=\"http:\/\/abelian.org\/vlfrx-tools\/notes.html#Installation\">orginalnej<\/a> instrukcji zainstalujemy oprogramowanie w katalogu<em> \/opt\/vlfrx :<\/em><\/p>\n<pre>apt-get update\r\n\r\napt-get upgrade #aby mie\u0107 aktualny system\r\n\r\napt-get install build-essential\r\napt-get install libasound2-dev libvorbis-dev libflac-dev libx11-dev libpng12-dev libxpm-dev libncurses5-dev libforms2 libforms-dev libshout3-dev libsamplerate0-dev libfftw3-dev sox gnuplot\r\n\r\nmkdir -p \/opt\/vlfrx\/bin\r\n\r\n#\u015bci\u0105gamy program ebnaut\r\nwget http:\/\/abelian.org\/ebnaut\/ebnaut.c\r\ngcc -std=gnu99 -Wall -O3 -lpthread -lm -mtune=native -march=native -mcpu=native ebnaut.c -o \/opt\/vlfrx\/bin\/ebnaut\r\n\r\n\r\n#\u015bci\u0105gamy i rozpakowujemy ze strony projektu archiwum .tar.gz z kodem \u017ar\u00f3d\u0142owym oprogramowania \r\n\r\n#uwaga: nale\u017cy u\u017cy\u0107 najnowszej wersji oprogramowania ze strony http:\/\/abelian.org\/vlfrx-tools\/ \r\n#obecnie jest to 0.7p\r\n\r\nwget http:\/\/abelian.org\/vlfrx-tools\/vlfrx-tools-0.7p.tgz\r\ntar xzf http:\/\/abelian.org\/vlfrx-tools\/vlfrx-tools-0.7p.tgz\r\ncd vlfrx-tools-0.7p\r\n.\/configure --prefix=\/opt\/vlfrx\r\nmake \r\nmake install<\/pre>\n<p>Instalacj\u0119 w katalogu <em>\/opt\/vlfrx <\/em>wykonujemy dlatego aby wszystkie pliki od vlfrx-tools by\u0142y w jednym miejscu.<\/p>\n<h4>Podstawowa Rejestracja widma za pomoca vlfrx-tools<\/h4>\n<p>Oprogramowanie vlfrx-tools napisane jest zgodnie z filozofi\u0105 unix-a: sk\u0142ada si\u0119 ono z wielu program\u00f3w, z kt\u00f3rych ka\u017cdy realizuje tylko jedn\u0105 funkcj\u0119, u\u017cytkownik sam ma sobie po\u0142\u0105czy\u0107 te programy w tak\u0105 funkcjonalno\u015b\u0107 jaka jest mu potrzebna. Po\u0142\u0105czenia pomi\u0119dzy programami mog\u0105 by\u0107 wykonane klasycznie za pomoc\u0105 potok\u00f3w, ale r\u00f3wnie\u017c za pomoc\u0105 bufor\u00f3w kt\u00f3re mog\u0105 by\u0107 wsp\u00f3lne dla wielu program\u00f3w. Warto przeczyta\u0107 <a href=\"http:\/\/abelian.org\/vlfrx-tools\/notes.html#Streams%20and%20Buffers\">pe\u0142en opis przekazywania danych przez vlfrx-tools<\/a>.<\/p>\n<p>Dla uproszczenia b\u0119dziemy uruchamia\u0107 oprogramowanie jako <em>root<\/em> (bardziej eleganckim rozwi\u0105zaniem by\u0142oby stworzenie nieuprzywilejowanego u\u017cytkownika kt\u00f3ty mia\u0142by dost\u0119p do karty d\u017awi\u0119kowej). W przypadku karty EMU-0204 pod\u0142\u0105czonej po USB dla podsystemu ALSA karta w moim laptopie jest widziana jako <em>hw:1,0<\/em> (<em>hw:0,0<\/em> to wewn\u0119trzna karta d\u017awi\u0119kowa w laptopie). Karta EMU-0204 umo\u017cliwia tylko pr\u00f3bkowanie z rozdzielczo\u015bci\u0105 24-bitow\u0105 (inne karty umo\u017cliwiaj\u0105 rozdzielczo\u015b\u0107 8 i 16-bitow\u0105, ustawia sie to parametrem -b).<\/p>\n<p>Zgodnie z opisem z <a href=\"https:\/\/klubnl.pl\/wpr\/index.php\/artykuly\/sprzet-do-monitorowania-vlf-za-pomoca-vlfrx-tools\/\">artyku\u0142u Sprz\u0119t do monitorowania VLF za pomoc\u0105 vlfrx-tools<\/a> na kana\u0142 L karty podawany jest sygna\u0142 1PPS, a na kana\u0142 R karty sygna\u0142 z anteny na pasmo VLF.<\/p>\n<p>Pr\u00f3bki z karty d\u017awi\u0119kowej b\u0119dziemy umieszcza\u0107 w buforze @rawch1:<\/p>\n<pre>\/opt\/vlfrx\/bin\/vtcard -vv -A b=262144,p=2048 -r 48000 -d hw:1,0 -b24 @rawch1<\/pre>\n<p>Warto zapozna\u0107 si\u0119 z <a href=\"http:\/\/abelian.org\/vlfrx-tools\/notes.html#Using%20a%20pulse-per-second\">dokumentacj\u0105 autora dotycz\u0105c\u0105 znakowania strumienia danych za pomoc\u0105 sygna\u0142u 1PPS<\/a>.<\/p>\n<p>Przyj\u017cymy si\u0119 sygna\u0142owi 1PPS w buforze @rawch1. Najpro\u015bciej u\u017cy\u0107 do tego oprogramowania vtscope z vlfrx-tools:<\/p>\n<pre>\/opt\/vlfrx\/bin\/vtscope @rawch1<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-293\" src=\"https:\/\/klubnl.pl\/wpr\/wp-content\/uploads\/2017\/03\/vtscope1.png\" alt=\"\" width=\"723\" height=\"477\" \/><\/p>\n<p>Rys 1. Sygna\u0142 z karty d\u017awi\u0119kowej sygna\u0142 1PPS jest na kanale pierwszym<\/p>\n<p>Sygna\u0142 powinien wygl\u0105da\u0107 podobnie do Rys 1. Prosz\u0119 zwr\u00f3ci\u0107 uwag\u0119 na ustawienie Resolution, Trig Level, Pre-trig, znaczenie jest podobne jak w oscyloskopie. Poziom sygna\u0142u 1PPS regulujemy za pomoc\u0105 potencjometru L w karcie EMU-0204, powinien mie\u0107 on amplitud\u0119 oko\u0142o 80% rodzielczo\u015bci przetwornika.<\/p>\n<p>U\u017cyjemy programu vttime do resamplowania sygna\u0142u tak, aby mia\u0142 od dok\u0142adnie cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania tak\u0105 jak deklarowana przez strumie\u0144 wej\u015bciowy (w tym wypadku b\u0119dzie to 48kHz). Jako wej\u015bcie pos\u0142u\u017cy nam sygna\u0142 z bufora @rawch1, sygna\u0142 wyj\u015bciowy (po korekcji) umieszczony b\u0119dzie w nowym buforze <em>@output1<\/em>. Do korekcji u\u017cyjemy kana\u0142u 1 (parametr -c1), zastosujemy korekcj\u0119 na narastaj\u0105cym zboczu impulsu (parametr ppsbase+), szeroko\u015b\u0107 impulsu to oko\u0142o 1.5ms (parametr w), a odleg\u0142o\u015b\u0107 pomi\u0119dzy pocz\u0105tkiem ka\u017cdej sekundy i \u015brodkiem impulsu u\u017cywana do kalibracji oko\u0142o 100ms (parametr c).<\/p>\n<pre>\/opt\/vlfrx\/bin\/vttime -v -c1 -m ppsbase+,c=0.001,w=0.0015 @rawch1 @output1<\/pre>\n<p>Bufor <em>@output1<\/em> zawiera sygna\u0142 ju\u017c resamplowany do dok\u0142adnie 48000 pr\u00f3bek\/s.<\/p>\n<p>Sygna\u0142 z kana\u0142u 2 (2 to kana\u0142 R &#8211; sygna\u0142 z anteny VLF, 1 to kana\u0142 L &#8211; sygna\u0142 1PPS z gps)\u00a0 wyodr\u0119bnimy za pomoc\u0105 programu vtcat przekierujemy go do programu vtwrite aby zapisa\u0107 go na dysk (parametr i4: pr\u00f3bki zapisane jaki 4-bajtowa warto\u015b\u0107, w przypadku je\u015bli \u017ar\u00f3d\u0142o ma rozdzielczo\u015b\u0107 16 bit\u00f3w lepiej jest u\u017cy\u0107 opcji i2). Dane b\u0119dziemy zapisywa\u0107 w katalogu \/mnt\/rawvlf , b\u0119dziemy tworzy\u0107 nowy plik co 3h (10800 sekund):<\/p>\n<pre>\/opt\/vlfrx\/bin\/vtcat @output1:2 -- -,i4 | \/opt\/vlfrx\/bin\/vtwrite -v -G 10800 \/mnt\/rawvlf\/<\/pre>\n<p>Uwaga: pliki w katalogu \/mnt\/rawvlf b\u0119d\u0105 przyrasta\u0107, aby unikn\u0105\u0107 wyczerpania miejsca na dysku nale\u017cy usuwa\u0107 najstarsze pliki (albo r\u0119cznie albo mo\u017cna to zautomatyzowa\u0107 skryptem). Katalog \/mnt\/rawvlf nale\u017cy zmieni\u0107 na taki w kt\u00f3rym mamy du\u017co wolnego miejsca.<\/p>\n<h4>Wykorzystanie danych zarejestrowanych przez vlfrx-tools<\/h4>\n<p>Maj\u0105c zarejestrowane widmo mo\u017cemy wykona\u0107 jego analiz\u0119. Poni\u017csze przyk\u0142ady zawieraj\u0105 analiz\u0119<\/p>\n<p>Szybki spektrogram VLF:<\/p>\n<pre> \/opt\/vlfrx\/bin\/vtcat -E20 @output1:2 | \/opt\/vlfrx\/bin\/vtsgram -p100 &gt; \/tmp\/out.png<\/pre>\n<p>Plik \/tmp\/out.png zawiera spektrogram z 20 sekund z rozdzielczo\u015bci\u0105 100 pixeli\/sekund\u0119.<\/p>\n<p>W\u0105skopasmowa analiza sygna\u0142\u00f3w VLF za pomoc\u0105 prstego skryptu gen.sh:<\/p>\n<pre>#!\/bin\/bash\r\n# simple vlfrx-tools spectrum graph script --sq5bpf\r\n\r\nexport PATH=$PATH:\/opt\/vlfrx\/bin\r\n\r\ngen() {\r\n\r\nTI=\"$1\"\r\nPL=`echo \"$TI\"|tr :,+- ____`\r\n #vtcat -v -v -p -T$TI | \r\nvtread -T$TI \/mnt\/rawvlf\/ | \\\r\n vtfilter -h bp,f=${F},w=3000 | \\\r\n vtblank -a2 -d0 -t10 | \\\r\n vtnspec -f ${F} -w0.040 -r46.3e-6 &gt; ${PL}.dat\r\n\r\necho \"set terminal png small\r\nset output \\\"${PL}.png\\\"\r\n set style data lines\r\n set xlabel 'Frequency - ${F}'\r\n set ylabel 'Relative amplitude'\r\n unset title\r\n plot \\\"${PL}.dat\\\" using (\\$1 - ${F}):4\r\n \" | gnuplot \r\n\r\n\r\n}\r\n\r\n#zmieni\u0107 na analizowan\u0105 cz\u0119stotliwo\u015b\u0107\r\nF=8270\r\n\r\n#prosz\u0119 zamie\u015bci\u0107 czasy w formacie ROK-MIESIAC-DZIEN_GODZINA:MINUTA:SEKUNDA,+CZAS \r\n\r\n#w nast\u0119pnej linijce\r\n\r\nfor i in 2017-01-27_20:00:00,+6h 2017-01-27_23:00:00,+6h \r\n do\r\n echo -n \"$i start: `date`\" \r\n gen $i\r\necho \" end:`date`\"\r\n done\r\n\r\n<\/pre>\n<p>Skrypt najlepiej jest uruchomi\u0107 tak aby nie konkurowa\u0142 z innymi programami o dost\u0119p do dysku za pomoc\u0105 narz\u0119dzia ionice:<\/p>\n<pre>ionice -c Idle .\/gen.sh<\/pre>\n<p>Skrypt generuje takie wykresy:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-297\" src=\"https:\/\/klubnl.pl\/wpr\/wp-content\/uploads\/2017\/03\/2017_01_27_20_00_00__6h.png\" alt=\"\" width=\"640\" height=\"480\" \/><\/p>\n<h4>\u00a0Odbi\u00f3r transmisji Ebnaut<\/h4>\n<p>Aby odebra\u0107 transmisj\u0119 nale\u017cy wybra\u0107 interesuj\u0105cy nas odcinek widma, oraz przekazac go do programu ebanut. Skrypt ten filtruje odcinek 3000Hz w okolicy odbieranej cz\u0119stotliwosci, uruchamia na nim noiseblanker (ogranicznik trzask\u00f3w), oraz przekszta\u0142ca go do strumienia o cz\u0119stotliwo\u015bci pr\u00f3bkowania 240pr\u00f3bek\/s. Strumie\u0144 ten jest zapisywany w pliku wskazanym przez zmienn\u0105 $PLIK. Plik ten jest dalej dekodowany przez program ebanut. Do prawid\u0142owego dzia\u0142ania skryptu trzeba przynajmniej zmieni\u0107 parametr TT (okres czasy kiedy ma by\u0107 wykonanaa analiza), FREQ (cz\u0119stotliwo\u015b\u0107 sygna\u0142u w Hz), oraz PLIK (nazwa pliku wynikowego), oraz parametry wywo\u0142ania programu ebnaut. Wyj\u015bcie odbiornika jest zapisywane do pliku, poniewa\u017c u\u0142atwia to dalsze eksperymenty z r\u00f3\u017cnymi ustawieniami dekodera.<\/p>\n<pre>#!\/bin\/bash\r\nexport PATH=$PATH:\/opt\/vlfrx\/bin\r\nTT=2017-03-11_22:00:00,+30720\r\nFREQ=8270.0333333\r\nPLIK=plik_df6nm_20170311_2\r\n\r\nrenice -n 10 -p $$\r\n\r\nvtread -T$TT \/mnt\/rawvlf | vtcat -p -T$TT | vtfilter -h bp,f=${FREQ},w=3000 | vtblank -v -a2 -d0 -t10 | vtmult -f ${FREQ} | vtresample -r 240 &gt; $PLIK\r\n\r\nvtraw -oa &lt; $PLIK | ebnaut -d -N5 -p 8K19A -S60 -k 16 -r240 -c2 -PS -v\r\n\r\n<\/pre>\n<p>Przyk\u0142adowy wynik dzia\u0142ania dekodera (w tym wypadku wiadomo\u015bc to &#8222;DF6NM&#8221;):<\/p>\n<pre>padded 0.267 seconds at end\r\ninitial reference phase 46.9 amplitude 9.668e-02\r\nprep [ 0 0 0 0 0]\r\nfound rank 1251 ber 3.8281e-01 Eb\/N0 -1.0 M -1.514229536e+00 [N;:4J] ps [ 0 0 0 0 0]\r\ncarrier phase: 5.5\r\ncarrier Eb\/N0: -0.0\r\ncarrier S\/N: 14.54 dB in 32.6 uHz\r\nelapsed 23\r\nprep [ 1 180 180 180 180]\r\nfound rank 0 ber 3.3984e-01 Eb\/N0 1.9 M -2.094666243e+00 [<span style=\"color: #ff0000;\">DF6NM<\/span>] ps [ 1 180 180 180 180]\r\ncarrier phase: 8.2\r\ncarrier Eb\/N0: 2.9\r\ncarrier S\/N: 17.41 dB in 32.6 uHz\r\nelapsed 24<\/pre>\n<p>Autor: Jacek \/ SQ5BPF<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wst\u0119p Spo\u015br\u00f3d oprogramowania u\u017cywanego wsr\u00f3d entuzjast\u00f3w VLF warto zauwa\u017cy\u0107 vlfrx-tools autorstwa Paula Nicholsona. Poprzednie artyku\u0142y KLUBNL.PL pokazywa\u0142y sprz\u0119t s\u0142u\u017c\u0105cy od odbioru: Proste \u017ar\u00f3d\u0142o sygna\u0142u 1PPS Sprz\u0119t do monitorowania VLF za pomoc\u0105 vlfrx-tools Tak jak ju\u017c wcze\u015bniej pisa\u0142em, opis ten nie ma by\u0107 instrukcj\u0105 u\u017cycia vlfrx-tools (poniewa\u017c ju\u017c taka istnieje), ani system\u00f3w unix\/linux (poniewa\u017c ju\u017c takie &hellip; <a href=\"https:\/\/klubnl.pl\/wpr\/artykuly\/uzywanie-vlfrx-tools\/\" class=\"more-link\">Czytaj dalej<span class=\"screen-reader-text\"> \u201eU\u017cywanie vlfrx-tools\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":125,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-278","page","type-page","status-publish","hentry"],"translation":{"provider":"WPGlobus","version":"3.0.1","language":"pl","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\/wp-json\/wp\/v2\/pages\/278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/comments?post=278"}],"version-history":[{"count":26,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/pages\/278\/revisions"}],"predecessor-version":[{"id":341,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/pages\/278\/revisions\/341"}],"up":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/pages\/125"}],"wp:attachment":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/media?parent=278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}