Mimo iż przetworniki zastosowane w PlutoSDR pozwalają na odbiór i nadawanie z maksymalną prędkością 61 MSPS (co przekłada się na 61 MHz szerokości pasma), w praktyce czynnikiem ograniczającym jest interfejs USB 2.0 – więcej na ten temat można przeczytać tutaj: https://wiki.analog.com/university/tools/pluto/users/name#digital_issues
Przeprowadziłem mały test, sprawdzający jaki wycinek pasma można w praktyce obserwować za pomocą PlutoSDR i jak szerokość odbieranego pasma (MSPS) przekłada się na ilość transmitowanych danych (Mbit/s).
Do testów wykorzystałem:
- PlutoSDR, firmware v0.31 i oryginalny kabel USB
- Laptop Lenovo ThinkPad L440 (i7-4702MQ, 16GB RAM), Debian
- gqrx 2.11.5
- glances – aplikacja pokazująca ruch sieciowy
0,6 MSPS → 19,0 Mb/s
1,5 MSPS → 47,5 Mb/s
2,0 MSPS → 63,3 Mb/s
3,0 MSPS → 95,1 Mb/s
4,0 MSPS → 127 Mb/s
4,2 MSPS → 133 Mb/s
Ustawienie wyższych wartości niż 4,2 miliona sampli na sekundę, powoduje gubienie sampli. Maksymalna wartość transferu jaką udało mi się uzyskać to 137 Mbit/s na komputerze z procesorem i7 oraz 140 Mbit/s na nowszym komputerze z procesorem i5-8250U.
Wykorzystując adapter microUSB – ethernet firmy Gembird, maksymalna przepustowość jaką udało mi się uzyskać to ok. 67 Mbit/s, odpowiadająca szerokości pasma 2 MHz.
Pluto jest wyposażone w dwukanałowy przetwornik ADC o rozdzielczości 12 bitów na próbkę, aczkolwiek każda próbka jest domyślnie zapisywana na dwóch bajtach. Tak więc przesłanie strumienia 4 MSPS wymaga 16 bitów * 2 kanały * 4000000 próbek/s ~= 122 Mb/s – uwzględniając dodatkowy narzut na nagłówki transmisji, pokrywa się to bardzo dobrze z wartością zmierzoną.
Po zalogowaniu się na PlutoSDR używając ssh, stworzyłem plik o rozmiarze 100 MB używając komendy:
dd if=/dev/zero of=/tmp/test100m bs=1M count=100
po czym uruchomiłem serwer http na porcie 1500:
httpd -p 1500 -h /tmp
i pobrałem na swoim komputerze utworzony uprzednio plik:
wget http://192.168.2.1:1500/test100m -O /dev/null
Czas pobierania jest stały i wynosi za każdym razem 4,6 sekundy, prędkość wynosi ~174 Mb/s, jest więc o około 25% większa niż w przypadku przesyłania sampli. Z dużym prawdopodobieństwem można założyć, że jest to maksymalna prędkość jaką może osiągnąć PlutoSDR wykorzystując Ethernet.
Pakowanie par 12-bitowych próbek do trzech bajtów mogłoby zaoszczędzić 25% danych (które aktualnie stanowią zera), umożliwiając samplowanie zbliżone do 6 MSPS (12*2*5.5 MSPS = 125 Mbit/s).