Close
0%
0%

Build Any RF Frontend With a Transistor

A BJT, a bad mixer, a microcontroller ADC, and entirely too much software.

Similar projects worth following
What happens if you build an RF frontend from crude discrete parts and make software deal with the consequences? This project explores how far DSP can compensate for bad analog hardware: noisy mixers, drifting oscillators, poor gain, limited selectivity, DC offsets, frequency errors, and all the other things dedicated RF ICs normally hide from you. The rule is simple: avoid specialized receiver/transceiver ICs whenever possible. Use transistors, filters, cheap clock sources, ADCs, and a lot of software instead. The first experiment is an FM broadcast receiver built around a crude BJT mixer. The goal isn't to outperform an RTL-SDR — it obviously won't. The goal is to expose the entire signal path and find out exactly what can be rescued algorithmically, what needs another transistor or filter, and where physics finally says no.

Building crude SDR with RP2040 and BJT transistor

high-on-60s.wav

First distinguishable FM radio reception

Waveform Audio File Format (WAV) - 5.49 MB - 09/09/2026 at 19:06

Download

  • 1 × Raspberry Pi Pico
  • 1 × Transistor like 2N2222

  • The first audio I like enough to share!

    Oleg Kulyk • 09/09/2026 at 19:25 • 0 comments

    I managed to get the first audio that I intended to receive.

    The final solution includes 2 cheap transistors: one for RF amplification and one for mixing.

    The whole project idea isn't novel, but most PicoSDRs require some sort of LO that is stable enough and usable, so they build it around a SI5351 or similar synth IC. I wanted to prove that I can do it more easily and more cheaply, so Raspberry Pi Pico's PLL is used to generate arbitrary LO to drive the mixer.

    The only caveat is that the integer dividers are stable enough to use as LO. Still, other options would just lead to more noise, which is doable, but isn't great.

    The trick is that I was using the HackRF to tune the analog part a lot. It was quite difficult to tune the RF amp collector load, but luckily it is pretty good enough.

    The testbench was:
    HackRF sends signal via coax -> 30db attenuator -> my crude SDR

    This way, I was able to use the RP Pico ADC to test all the samples after my changes and kind of characterize the RF frontend.

    Once RF amplification was tuned on my crude board, it was just a matter of DSP magic on the RP Pico side to demodulate FM and send chunks via USB to the computer.

    You can find a reception sample in the files of this project.

    So yeah, if you have 2 transistors, a bunch of time and passives, together with some MCU that can both digest hundreds of kHz via ADC and produce the needed frequency (harmonics count) - you can build an RF receiver.

    I'm interested in experimenting with higher frequencies and different modulations, as LoRa shouldn't be something hard for RP Pico-like hardware.

    The current version looks like this.

    While experimenting, I improved SNR by 1.2dB just by connecting the ground wire directly to the RP Pico pin, so this is a successful attempt at creating hardware bad enough for further DSP experiments.

  • Schematics and HackRF results

    Oleg Kulyk • 09/07/2026 at 14:46 • 0 comments

    I made myself document the current schematics, since I did a few experiments and found that some passives could help a lot and ease my life while I'm trying to get audio from an FM broadcast using my Raspberry Pi Pico and one BJT transistor.

    It's a well-known superheterodyne, but crude.

    Initially, I was experimenting with the transistor alone, with almost no passives, since I was able to detect LO±RF on the ADC.

    The goal then is to extract IF from the frequency soup on the BJT's collector and DSP it using affordable hardware, aka RP Pico.

    A band-pass filter on the antenna was added later, as I got quite good results extracting melody sent from HackRF as FM broadcast via coax, but failed to pick up a live station.

    Since I'm trying to limit myself to only 1 transistor now, I would test the RF bandpass first, and later on, the next candidate for amplification could be an IF stage, which sits on the collector, as I'm trying to avoid things like oscillations while building an LNA and amplifying RF.

    The funniest part is that, while testing tone transmission with HackRF, it managed to pick up a real station when HackRF's TX was off. So band-pass could do ok, as the ADC doesn't seem to be a limiting factor.

  • The transistor rules them all

    Oleg Kulyk • 09/06/2026 at 20:38 • 0 comments

    I started with the stupidest version I could think of: one BJT used as a mixer.

    HackRF provides the LO, an FM broadcast signal goes into the transistor, and I look at whatever comes out of the collector.

    The first circuit was too crude even by the standards of this project. I later added a capacitor and resistor around the transistor and got somewhat more sensible behavior, but I want to keep this version here because this is where the experiment actually started.

    Long wires that could pick up everything around are an essential part of this project.

    This first version didn't involve much RF engineering. The point was mostly to answer one question: will this thing produce a measurable downconverted signal at all?


    And apparently, yes.

    I tried different LO frequencies and checked the output both on the oscilloscope and by capturing samples for FFTs. The signal is tiny - only a few millivolts - and my oscilloscope isn't particularly helpful at that level, but something is clearly happening at the expected difference frequency.

    Moving the LO also moves the interesting part of the spectrum, which is a good indication that I'm seeing mixing rather than random setup noise.

    At this point I don't have an FM radio yet.

    I have a shitty mixer producing a very small signal that seems to contain a downconverted FM station.

    The next step is amplification / better biasing and getting those samples into the Pico. Then we'll see if DSP can turn this mess into audio.

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates