Open tomaszmrugalski opened 3 years ago
Próby konwersji za pomocą bin2fil-py były bardzo nieudane: 1, 2.
Natknąłem się na kilka problemów:
Najpoważniejszy problem jest taki, że program bin2fil nie umożliwia podania, czy próbki są 8 czy 12 bitowe. Dlatego podejrzewam, że kompletnie nie obsługuje on 12-bitowych próbek z AirSpy mini.
Dane wynikowe wyglądają jak śmieci. Tutaj próba analizy za pomocą rfifind, co wg tutoriala do PRESTO jest jednym z pierwszych kroków. Poniżej zawartość pliku dla obserwacji 2021-10-24: Na pierwszy rzut oka widać wiele problemów:
-f 463
(częstotliwość podawana w MHz) i -sr 6000000
(sampling rate, 6 MSPS) wynikowy plik miał Central freq (MHz) = 472
, Low channel (MHz) = 469.12
, High channel (MHz) = 474.88
.Wniosek: bin2fil jest nieużywalny w obecnej formie. Być może po odpowiedniej modyfikacji źródeł udałoby się uzdatnić go do użytku.
Kolejnym programem, którego próbowałem użyć do konwersji jest AirSystem. Jest on dedykowany do obserwacji pulsarów za pomocą AirSpy. Tutaj należy zaznaczyć, że dostępne są 2 wersje AirSpy: R2 oraz Mini. Wg producenta wspierają one 10MSPS (R2), a mini wspiera jeszcze dodatkowo 6 i 3 MSPS. Dostępne pliki zostały nagrane z 3 oraz 6 MSPS. Niestety, w konfiguracji programu AirSystem można wybrać 10 i 2,5MHz sampling rate. Zatem wygląda na to, że nie ma możliwości konwersji plików przy samplowaniu innym niż 10 lub 2,5MHz.
Chyba udało mi się zmusić AirSystemSuite do pracy. Potrzebne są następujące kroki:
AirSpyConf.xml
z parametrami. W moim przypadku system nie miał podłączengo dongle'a AirSpy, ale nie ma to znaczenia. Utworzył się plik .xml..xml
, zwłaszcza następujące parametry:
<SampleRate xmlns:n9="ObservationParameters" n9:SampleRate="2.5e+06"/>
<BinfileName xmlns:n21="ObservationParameters" n21:BinFileName="/sciezka/do/plik.raw"/>
<FilFileName xmlns:n22="ObservationParameters" n22:FilFileName="/sciezka/do/pliku/plik.fil"/>
Niepokojące jest to, że zmiana Sample rate na 6MSPS została nadpisana na 2.5MSPS.
AirSpySuite przy konwersji stara się użyć katalogu psrcat
. Program można pobrać stąd. UWAGA: Pulsar B0329+54 ma kilka oznaczeń w różnych katalogach (lista tutaj w sekcji identifiers. Katalog PSRCAT używa oznaczenia J0332+5434
i taką właśnie nazwę należy podać w pliku AirSpyConf.xml
, żeby udało się wyciągnięcie danych z PSRCAT.
Dane z katalogu mogą być użyteczne do dobrania parametrów filtrów.
Trzeci program to Pulsar filterbank. Niestety, również ten na współczesnym Ubuntu wywala szereg problemów. Wygląda na to, że był pisany w pythonie 2. Spędziłem nad tym ładnych parę godzin, ale w końcu udało mi się go uruchomić. Przy okazji wysłałem autorom swoje poprawki.
Pulsar filterbank ma taką ogromną zaletę, że korzysta z GNU Radio, więc jest łatwo modyfikowalny i potencjalnie można go będzie używać do odbioru.
Jest wymagany jeszcze jeden krok - definiowany flow zakłada, że dane wejściowe odczytywane są z urządzenia (airspy, sdr-rtl lub USRP), a nie z pliku. Wydaje mi się, że to tylko kwestia podmiany bloczku wejściowego. To jednak zadanie na jakiś inny wieczór.
Jeszcze w ramach ciekawostki wrzucę zrzut flowu z Pulsar filterbank:
Ok, jest spory postęp. Zaczynam powoli ogarniać podstawy, jak działa pulsar_filterbank.
Próbowałem kilku ścieżek. Po pierwsze, trzeba zmodyfikować bloki wejściowe, żeby używało osmocom source zamiast usrp source. W parametrze device można podać "file=p4_626M_2M4.raw,rate=2.4e6,freq=626e6". To spowoduje, że osmocom zamiast czytać z urządzenia, będzie czytał z pliku. Niestety, wywalalo mi jakieś exception.
Udało mi się jednak zrobić coś innego. Trafiłem na ten wątek, gdzie csete (autor gqrx) wyjaśnia, jak oczytywać pliki raw z gqrxa w GNU Radio: trzeba dodać 2 bloczki: file reader i throttle. Wszystkie typy danych powinny być ustawione na complex.
Warto też w dwóch blokach FFT (zwłaszcza tego z fft size 2048k) zmienić ilość wątków na coś większego niż 1.
Zmieniałem też wartość runtime, która podaje w sekundach, ile danych wejściowych nagrania przetwarzać.
Wersja poprawiona na pythona 3 dostępna jest tutaj: https://github.com/tomaszmrugalski/pulsar_filterbank. Instrukcja użytkowania:
File Source
, żeby wskazywał na lokalny plik.Throttle
, żeby odpowiadał próbkowaniu nagranego pliku.Parameter freq
, żeby odpowiadał częstotliwości nagrania.Parameter runtime
, żeby przetwarzać np. pierwsze 10 sekund, co znacznie przyspiesza eksperymenty.Parameter wide
, żeby wynikowe pliki fil były 16 bitowe.Program można uruchomić Generate the flow graph i potem execute flow graph w Gnu Radio Companion. Można też w konsoli skompilować za pomocą grcc
. W obu przypadkach pod spodem generuje się plik pulsar_filterbank.py
, z którym można dalej eksperymentować ręcznie.
Po zakończeniu pracy, flowgraph generuje kilka plików: .fil (który zawiera sam nagłówek) oraz .filtmp (dane). Zapewne należy je połączyć, ale póki co taki rozdział jest bardzo wygodny, bo można łatwo analizować ich zawartość.
W celu użycia zestawu narzędzi Presto, konieczna jest konwersja plików raw (zawierających wartości IQ nagranych za pomocą gqrx) na format filterbank. Potencjalnie użyteczne są do tego następujące narzędzia: