Skip to content
Peter Watkins edited this page Sep 3, 2020 · 6 revisions

Introduction

This project is a fork of https://git.osmocom.org/osmo-fl2k. It aims to provide SoapySDR support to osmo-fl2k. You can read more about osmo-fl2k on Osmocom's web page on the topic.

I started this fork because I couldn't find anyone else who had written a SoapySDR driver for osmo-fl2k.

Status

The code compiles, but the SoapySDR driver doesn't actually work. At best, it'll send a garbage signal out the VGA dongle. At worst, it'll crash.

How I Made the Repository

This is how I made this repository (for better or for worse) using these instructions:

git clone --bare https://git.osmocom.org/osmo-fl2k/
cd osmo-fl2k.git/
git push --mirror https://github.com/watkipet/osmo-fl2k.git
cd ..
rm -rf osmo-fl2k.git/
# Setup my local repo so that pushing pushes to GitHub, but pulling still pulls from osmocom
git remote set-url --push origin https://github.com/watkipet/osmo-fl2k.git`

Bugs

Sample rate is wrong.

I don't quite have the sample rate handling correct. The FL2K will only support certain sample rates. I try to pick the closest based on what's requested, but it's way off.

Glitches in the output

There are glitches in the output. This is roughly a 1kHz cosine wave, but almost every wave peak has a glitch. (TODO: add a scope image when I can figure out how).

Testing

You can test using the following (JSON) flow (TODO: upload flow somehow):

PothosUtil --run-topology fl2k_test.json

It should output a 1kHz cosine wave out the red channel.

Output Impedance

Most scopes, ham radio antennas, the RTL-SDR, etc. use a 50 ohm input impedance. The FL2K chip is meant to drive a VGA cable which has a characteristic impedance of 75 ohms. It appears that the FL2K uses a IDACS for each channel and the dongle PCBs use a 75 ohm resistor to ground to achieve the 75 ohm output impedance. You can remove the 75 ohm resistors and replace them with 50 ohm ones to get a 50 ohm output impedance.

You can also use an adapter board with a resistor divider to get the proper output impedance.