Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Osmo-fl2k - radio definiowane programowo na konwerterze VGA->USB

ghost666 07 May 2018 16:57 7083 5
  • Osmo-fl2k - radio definiowane programowo na konwerterze VGA->USB
    Od czasu, kiedy ukazał się rtl-sdr - czyli kilka lat temu - tanie odbiorniki SDR (radio definiowane programowo) są popularne i szeroko dostępne. Oczywiście podobne nadajniki także są dostępne i coraz tańsze, jednakże są to nadal urządzenia istotnie droższe niż odbiorniki. Teraz ma się to zmienić - oprogramowanie osmo-fl2k, wykorzystujące konwertery z USB 3.0 na VGA, pozwala na konstrukcję niedrogich nadajników SDR. Konwertery, z którymi współpracuje osmo-fl2k oparte są o układ FL2000 firmy Fresco Logic. Urządzenia takie kosztują około 5 dolarów. Nowy sterownik, opisany poniżej, generuje z układu ciągły strumień danych analogowych pomijając interwały wygaszania dla impulsów synchronizacji (HSYNC oraz VSYNC).

    Historia samego pomysłu, tj. wykorzystania adapterów VGA jako nadajników SDR jest dosyć długa:

    W 2001 roku Erik Thiele opublikował oprogramowanie Tempest for Eliza, które pozwalało na nadawanie sygnałów, które odbierać można z pomocą radia AM.
    W 2005 toku Fabrice Bellard wykorzystał kartę graficzną ATI Radeon 9200 SE do nadawania sygnałów FVB-T - PAL i NTSC.
    W 2009 roku Bartek Kania zaprezentował VGASIG, które mogło transmitować szerokopasmowe radio FM w czasie rzeczywistym, korzystając z SDL i zwykłej karty graficznej.
    W 2013 roku siro at das Labor zaprezentował system w którym wykorzystał wszystkie trzy przetworniki cyfrowo-analogowe (DAC) w karcie VGA - dobudowany modulator I/Q pozwalał na generację zupełnie arbitralnych przebiegów.

    Niestety układy te nie były pozbawione wad, które wynikały głównie z tego, w jaki sposób działają karty graficzne. Użytkownik takiego systemu nie ma pełnego wpływu na to, jakie przebiegu generuje RAMDAC i dodatkowo VGA wykorzystuje linie pionowego i poziomego wygaszania, przerywając okresowo nadawanie sygnału. Tak działały także układy z interfejsem USB 2.0 i 3.0, np. produkowane przez DisplayLink. Freesco Logic jednak wyszło z innego założenia w ich opatentowanej konstrukcji konwertera z USB na VGA.

    W układzie FL2000 zamiast bufora ramek dla VGA DACa zintegrowanego w samym układzie, system wykorzystuje pamięć operacyjną komputera i podaje przez USB ciągły strumień danych. Dzięki temu układy te są bardzo tanie - urządzenie składa się z pojedynczego układu scalonego, który w ogóle nie wymaga wewnętrznej ani zewnętrznej pamięci. Główną wadą jest konieczność ciągłego nadawania danych przez komputer, co objawia się np. mruganiem ekranu bądź niestabilną pracą w momencie, gdy interfejs USB jest zajęty i nie nadąża z dosyłaniem próbek.

    Steve Markgraf, autor osmo-fl2k rozpoczął w 2016 roku badanie protokołu USB, wykorzystywanego przez układ i metodą inżynierii wstecznej opracował metodę komunikacji, która nie dość że polega na podawaniu własnych danych do układu, to jeszcze pozwala na eliminację wygaszania w obi kierunkach, co oznacza, że na wyjściu układu mamy nieprzerwany strumień sygnału. Rezultatami tych prac jest właśnie osmo-fl2k, które jest w stanie nadawać sygnały FM, DAB, DVB-T, GSM, UMTS oraz GPS.

    Wspierany sprzęt

    Adapter USB 3.0 na VGA

    Wspierane są tylko układy, wykorzystujące układ FL2000 firmy Freesco Logic. Sprzedawane są one zazwyczaj pod nazwą konwerterów "USB 3.0 to VGA". Maksymalna rozdzielczość, jaką osiągać mają te kontrolery, to 1920 x 1080 dla USB 3.0 i 800 x 600 dla USB 2.0. Czasami działać ma też z rozdzielczością 1920 x 1200, jednakże ten tryb działa tylko z kontrolerami typu xHCI, które obsługują kompresję RLE.

    Jeśli w instrukcji czytamy o rozdzielczości maksymalnej 2048 x 1152, lub o wsparciu dla Mac OS X, albo też mają jedynie interfejs USB 2.0 najpewniej mamy do czynienia z urządzeniem opartym o układ DisplayLink - takie urządzenie nie będzie współpracowało z osmo-fl2k.

    Ceny adapterów z układem FL2000 wahają się od 5 do 15 dolarów, natomiast z układem DisplayLink kosztować będą powyżej 25 dolarów.

    Dodatkowo, natknąć można się na konwertery z gniazdem USB typu C, które de facto są konwerterami z DisplayPorta na VGA, opartymi na zupełnie innych chipsetach, takich jak na przykład RTD2166 od Realteka.

    Adapter, jakiego potrzebujemy do współpracy z osmo-fl2k kupić możemy na Aliexpres, eBay, Amazonie, Allegro etc. Układy te wyposażone są w USB i gniazdo VGA, a czasami także DVI. Na zdjęciach poniżej zaprezentowano zdjęcia dwóch przykładowych konwerterów tego rodzaju.

    Osmo-fl2k - radio definiowane programowo na konwerterze VGA->USB
    Osmo-fl2k - radio definiowane programowo na konwerterze VGA->USB


    Porównanie kontrolerów hosta USB po stronie komputera

    W poniższej tabeli zamieszczono porównanie naszego układu SDR (w ilości próbek na sekundę) dla różnych kontrolerów xHCI, które wbudowane są w komputer. Rezultaty te możemy wykorzystać jako punkt odniesienia dla naszego systemu.

    Aby przetestować nasz kontroler hosta USB, wpisujemy komendę:

    Code: bash
    Log in, to see the code


    W odpowiedzi powinniśmy dostać tego rodzaju informację:

    Code: bash
    Log in, to see the code


    Oznacza to, że układ nie może działać z prędkością wyższą niż 157 MS/s (razy trzy kanały DACa, czyli 471 MB/s). Można ponowić test fl2k_test z mniejszą częstotliwością próbkowania niż maksymalna, by sprawdzić, czy układ działa stabilnie i zmierzyć błąd zegara.

    Kontroler hosta urządzenia USB 3.0Osiągalna przepustowość maksymalna
    Intel Corporation 8 Series USB xHCI HC (rev 04)157 MS/s
    Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)157 MS/s
    Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)155 MS/s
    Samsung Galaxy S5 msm-dwc3 (based on Synopsys DesignWare USB3.0 IP)148 MS/s
    Odroid XU4 (based on Synopsys DesignWare USB3.0 IP)147 MS/s
    ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller140 MS/s
    Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)140 MS/s
    Fresco Logic FL1100 USB 3.0 Host Controller (rev 01)136 MS/s
    Fresco Logic FL1009 USB 3.0 Host Controller (rev 02)136 MS/s
    Etron Technology, Inc. EJ188/EJ198 USB 3.0 Host Controller129 MS/s
    VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)123 MS/s
    Etron Technology, Inc. EJ168 USB 3.0 Host Controller (rev 01)117 MS/s
    Renesas Technology Corp. uPD720202 USB 3.0 Host Controller (rev 02)115 MS/s
    Intel USB 2.0 EHCI Controller14 MS/s


    Ograniczenie prędkości w PCI Express w starszych systemach

    Jeśli wykorzystujesz w swoim systemie kartę z interfejsem USB 3.0 na PCI Express, szczególnie w laptopach z slotem ExpressCard, to jakkolwiek kontroler hosta w karcie może być dostatecznie szybki, ale sam interfejs PCI-E może ograniczać prędkość transmisji. Aby sprawdzić, jak sytuacja wygląda w naszym systemie, musimy w linuksowej linii komend wpisać:

    Code: bash
    Log in, to see the code


    W odpowiedzi uzyskamy między innymi informację na temat kontrolera hosta USB, który nas interesuje. Wygląda ona mniej więcej tak:

    Code: bash
    Log in, to see the code


    To, co nas najbardziej interesuje to rejestr LnkSta; w tym przypadku możemy w nim odczytać, że łącze PCI Express pracuje z prędkością 2,5 GT/s - połowę tego, ile potrzebne jest, by osiągnąć pełną prędkość USB 3.0 (5 GT/s).

    Pobranie osmo-fl2k

    Kod źródłowy dostępny jest na repozytorium autora: git.osmocom.org
    Dostęp poprzez sieć: http://git.osmocom.org/osmo-fl2k
    Dostęp (tylko do odczytu) do sklonowania:

    Code: bash
    Log in, to see the code


    Kompilowanie

    W celu skompilowaniu i instalacji pakietu musimy w pierwszej kolejności zainstalować nagłówki libusb. Dla uproszczenia załóżmy, że pracujemy na Linuksie, będącym jakąś dystrybucją Debiana:

    Code: bash
    Log in, to see the code


    Po zainstalowaniu tej biblioteki możemy sklonować repozytorium i przystąpić do jej kompilacji i instalacji:

    Code: bash
    Log in, to see the code


    Jednakże zanim będziemy w stanie wykorzystać urządzenie wraz z tymi sterownikami, poza kontem roota musimy przeładować zasady udev:

    Code: bash
    Log in, to see the code


    Wykorzystanie oprogramowania

    Transmista WBFM

    Wykorzystując fl2k_fm możemy transmitować szerokopasmowy sygnał radiowy zawierający dokładnie to samo, co podamy na wyjście karty dźwiękowej. Jednakże, by to wszystko działało w ten sposób, potrzebujemy jeszcze kilka dodatkowych narzędzi:

    Code: bash
    Log in, to see the code


    Dalej możemy przejść do uruchamiania układu. Po pierwsze musimy znać nazwę naszego urządzenia audio, by wiedzieć co układ ma monitorować:

    Code: bash
    Log in, to see the code


    Komputer powinien nam zwrócić nazwę urządzenia audio:

    Code: bash
    Log in, to see the code


    Następnie możemy skonfigurować nadajnik WBFM do nadawania przy np. 95 kHz:

    Code: bash
    Log in, to see the code


    W powyższym przypadku SoX realizuje 15 kHz filtr dolnoprzepustowy sygnału, konwersję z stereo do mono i preemfazę dla FM z wykorzystaniem filtra typu biquad. Z kolei pv zapewnia dodatkowe buforowanie, aczkolwiek ten krok jest opcjonalny.

    Możemy do naszego sygnału radiowego dodać jeszcze obsługę RDS. Aby to zrobić korzystamy z poniższych koment:

    Code: bash
    Log in, to see the code


    W powyższym przykładzie SoX zajmuje się jeszcze resamplowaniem dźwięku do częstotliwości próbkowania równej 228 kHz, czego wymaga modulator RDS.

    Osmo-fl2k - radio definiowane programowo na konwerterze VGA->USB

    Transmisja GSM

    Do transmisji GSM potrzebny są próbki i inne informacje, które odnaleźć można tutaj: https://github.com/steve-m/fl2k-examples. Tam także znajdziemy informacje jak uruchomić ten rodzaj transmisji z wykorzystaniem osmo-fl2k.

    Kwestie prawne i utrzymanie pasma RF w czystości

    Jeśli chcesz korzystać z jakiegokolwiek nadajnika DIY czy SDR koniecznie musisz wiedzieć jakie są aspekty prawne tego działania w swoim kraju. Koniecznie trzeba też znać się trochę na technice radiowej, co nie jest ujęte w powyższym artykule.

    Do nadawania w opisanych powyżej pasmach wymagana jest co najmniej licencja.

    Dodatkowo, istotnym aspektem nadajnika opartego o przejściówkę VGA jest kwestia czystości pasma. Sygnał generowany przez wbudowany przetwornik DAC należy do bardzo "zanieczyszczonych" harmonicznymi etc., co wynika z tego, że DAC pracuje znacznie powyżej swojego typowego pasma (ok 165 MHz). Zanim zacznie wykorzystywać się nadajnik oparty o FL2000 dobrze jest skorzystać z analizatora widma, by obejrzeć, co się wypuszcza w eter i zastosować odpowiednie filtry, by tłumić niepożądane sygnały.

    Dodatkowo, należy pamiętać, że przebywanie blisko promieniującej anteny jest niebezpieczne dla zdrowia. Nigdy nie uruchamiaj urządzenia z dołączoną anteną, będąc blisko niej.

    Źródło: https://osmocom.org/projects/osmo-fl2k/wiki/Osmo-fl2k

    Cool? Ranking DIY
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11701 posts with rating 9875, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • #3
    sp3rat
    Level 11  
    Jestem tym postem bardzo zaciekawiony.
    Robię pierwsze próby. Na razie nie udane, ze względu na braki w znajomości linuxa :)
  • #6
    BANANvanDYK
    Level 41  
    W kontekście karty graficznej na USB? Przecież Thunderbolt to nic innego jak PCIe. Dawno temu pewien polak opracował identyczne rozwiązanie, podłączając kartę graficzną do laptopa wykorzystując złącze Expresscard, złącze karty Wifi i parę innych punktów gdzie na płycie dostępne są porty PCIe (im szersza szyna, tym większa wydajność karty). Poza tym takie złącza wyprowadzone na zewnątrz to duże zagrożenie pod względem bezpieczeństwa IT, szczególnie w Apple.