38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
# Pico SDR
|
|
|
|
Using RP2040 / Raspberry Pi Pico as a software-defined radio receiver.
|
|
|
|
See the [blog post](https://blog.porucha.net/2024/pico-sdr/) for more information. Older code the article is mostly referring to can be found in the branch `old` and a more up-to-date approach in the branch `master`.
|
|
|
|
This branch contains code to use RP2040 and some passives as a superheterodyne receiver. It is still very much work in progress.
|
|
|
|
## Circuit
|
|
|
|
Please refer to [the simulation](https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCBMB0CsCmBaMAGEAOW0AsLboHYA2SWSIsWMIkAtFaFFCWNBZMAKEoE5wV06ENiE8ekYULZpUTOfM4BzfoMnhU2NfU4AlED2ybERTeh41jmmfpHyZ0IrHAOn9OJ0goC4AMyQhiOa+RGiBNE4AkgBi3ESihiBh-LiJQehgBlAgPtA+IGg5Pro2Rn4l4DSaTj52ctm5+Y0MsJwATrRkiRkSBJ1JMrWcAO7Jod2jqTQonADGILAhkyCOFkEySN7IDthi4tjE6agE4l0unAA2ywtLvRL9+Yzyu88vz4k5uAQ+dARmPASQTzfDb5WYdO5BW5NcBIIRgFzySDYI7ofYmZyOJTgxpQ6hNYbYpKogJrAnEpYGIyk9o+OJLbDo+6sDzMKAApaAqlTGwheSSOoMJ6vYVicDiOScCITZAnSldE7WQoEhahIIqrScABubIhNFpJO5EEEnj59Ca7naGlVNDAYFpS2kWLt-kazrh3OmczdS29ZrAsMSDEoDKIPFpngBcTt3mmlzAkDKSW990FQpFr0Dj2+ZkBsDE6V22HIoJGcplEnJ5ZLGBE8p6fXG0wARhgiJskTJkRB-qCAB6tpyIUh8Ax8IfXTRIkA6AAKnlwnH7BHZQ5QeXQU9XaE0eIA4jOIgB5AA6AGcWkvQ10UDQNxBkGvhBUQPuj2f0ASrYl0V+ytNSyctbqrW0xLgQEA+HwG55EWT57geJ6njwyqLEkDJcqCLYZPelAQAyeSID4UiLtkdLIEQlREAR1AwVAmgAIIAHYAC7wIxjEAIZgra9pJgmurmnYEDwlRdA+NQ+BgDsrAnCJLQAPbZPM8auj4sDYD4VhwN8FE8OgJjUBpoauI8rJoBIeRFEAA).
|
|
|
|
## Software
|
|
|
|
1. Clone using `git clone --recursive` as this package is using a custom USB
|
|
stdio library for better throughput and to avoid deadlocks.
|
|
|
|
2. Build and flash the firmware as usual:
|
|
|
|
```bash
|
|
export PICO_SDK_PATH=/path/to/pico-sdk
|
|
cmake -B build src
|
|
cmake --build build
|
|
picotool load -f build/pico_sdr.uf2
|
|
```
|
|
|
|
3. Start the USB serial to TCP bridge:
|
|
|
|
```bash
|
|
python util/bridge.py
|
|
```
|
|
|
|
You need to have PySerial and Click packages installed.
|
|
|
|
4. Open `grc/PicoSDR-WBFM.grc` in GNU Radio Companion, adjust carrier frequency to match your favorite FM radio station and press `F6`.
|
|
|
|
5. Alternatively [gqrx](https://www.gqrx.dk/) works fine with `rtl_tcp` input mode. Maximum sample rate seem to be 400 ksps, above that the samples are dropped. Make sure to set LNA gain to 0, gain control is digital and does not provide any benefits unless you lower your sampling rate significantly.
|