Repository navigation
Releases: jochenhammes/esp32-sdr-trx
Release list
v1.0.0-rc4
esp32-sdr-trx turns one ESP32-S3 dev board into a software-defined transceiver for 13 cm: an rtl_tcp receiver for SDR++ (1.84 to 2.79 GHz, 250 or 333 ksps, no FPGA) and an
experimental FM/SSB voice transmitter (2320 to 2450 MHz). Built on eSpDR by h0m3us3r.
Install (Linux, Python 3.10+)
Download the wheel and install-linux.sh below, then:
chmod +x install-linux.sh
./install-linux.sh esp32_sdr_trx-*.whl --audio # --audio: a sound card as a transmit source
espdr-rx # receiver: rtl_tcp server on 127.0.0.1:1234 for SDR++
espdr-tx --accept-licence -f 2350 -m usb -i soundcard # transmitter: read docs/transmitter.md firstThe wheel contains the firmware images and the tools load the right one into the board's RAM by themselves. Step by step, including the virtual environment and the
udev rule: docs/install.md. esp32-sdr-trx-rx.bin and esp32-sdr-trx-tx.bin are the bare images,
SHA256SUMS lists everything.
Tested
One board (a generic ESP32-S3-WROOM-1 dev board with two USB-C ports), one Linux host, a PlutoSDR and a HackRF as test equipment. Receiver: 20 to 120 s runs without lost samples at
250 and 333 ksps, SDR++ over the bridge. Transmitter: FM and SSB voice from a WAV file, a pipe and a sound card (20 to 30 s without an underrun), five frequencies over the band,
the carrier stops 0.54 s after the host disappears, crystal correction with --ppm. Measured with the carrier suppressed: unwanted sideband 61 to 63 dB and third-order
intermodulation 33 dB below the wanted tones. All numbers: docs/research/TX-RESEARCH.md.
Read before you transmit
Transmitting takes an amateur radio licence. The firmware only sends in 2320 to 2450 MHz. The power is not calibrated (an estimate: microwatts at the antenna of a plain dev board), harmonics and
spurious emissions were not measured, and the frequency is only as good as the board's crystal (use --ppm). Windows and macOS are untested. Much of the code and the documentation was written
with Claude (Anthropic) as the coding assistant; every number in the documentation was measured.
What's Changed
- espdr-tx: --thermal auto (default), per-board model files, tested on two boards by @jochenhammes in #3
Full Changelog: v1.0.0-rc3...v1.0.0-rc4
v1.0.0-rc3
esp32-sdr-trx turns one ESP32-S3 dev board into a software-defined transceiver for 13 cm: an rtl_tcp receiver for SDR++ (1.84 to 2.79 GHz, 250 or 333 ksps, no FPGA) and an
experimental FM/SSB voice transmitter (2320 to 2450 MHz). Built on eSpDR by h0m3us3r.
Install (Linux, Python 3.10+)
Download the wheel and install-linux.sh below, then:
chmod +x install-linux.sh
./install-linux.sh esp32_sdr_trx-*.whl --audio # --audio: a sound card as a transmit source
espdr-rx # receiver: rtl_tcp server on 127.0.0.1:1234 for SDR++
espdr-tx --accept-licence -f 2350 -m usb -i soundcard # transmitter: read docs/transmitter.md firstThe wheel contains the firmware images and the tools load the right one into the board's RAM by themselves. Step by step, including the virtual environment and the
udev rule: docs/install.md. esp32-sdr-trx-rx.bin and esp32-sdr-trx-tx.bin are the bare images,
SHA256SUMS lists everything.
Tested
One board (a generic ESP32-S3-WROOM-1 dev board with two USB-C ports), one Linux host, a PlutoSDR and a HackRF as test equipment. Receiver: 20 to 120 s runs without lost samples at
250 and 333 ksps, SDR++ over the bridge. Transmitter: FM and SSB voice from a WAV file, a pipe and a sound card (20 to 30 s without an underrun), five frequencies over the band,
the carrier stops 0.54 s after the host disappears, crystal correction with --ppm. Measured with the carrier suppressed: unwanted sideband 61 to 63 dB and third-order
intermodulation 33 dB below the wanted tones. All numbers: docs/research/TX-RESEARCH.md.
Read before you transmit
Transmitting takes an amateur radio licence. The firmware only sends in 2320 to 2450 MHz. The power is not calibrated (an estimate: microwatts at the antenna of a plain dev board), harmonics and
spurious emissions were not measured, and the frequency is only as good as the board's crystal (use --ppm). Windows and macOS are untested. Much of the code and the documentation was written
with Claude (Anthropic) as the coding assistant; every number in the documentation was measured.
What's Changed
- Docs: the transmitter does not use the I/Q playback engine; it exists… by @jochenhammes in #1
- espdr-tx: RTTY mode and --thermal drift correction by @jochenhammes in #2
New Contributors
- @jochenhammes made their first contribution in #1
Full Changelog: v1.0.0-rc2...v1.0.0-rc3
v1.0.0-rc2
esp32-sdr-trx turns one ESP32-S3 dev board into a software-defined transceiver for 13 cm: an rtl_tcp receiver for SDR++ (1.84 to 2.79 GHz, 250 or 333 ksps, no FPGA) and an
experimental FM/SSB voice transmitter (2320 to 2450 MHz). Built on eSpDR by h0m3us3r.
Install (Linux, Python 3.10+)
Download the wheel and install-linux.sh below, then:
chmod +x install-linux.sh
./install-linux.sh esp32_sdr_trx-*.whl --audio # --audio: a sound card as a transmit source
espdr-rx # receiver: rtl_tcp server on 127.0.0.1:1234 for SDR++
espdr-tx --accept-licence -f 2350 -m usb -i soundcard # transmitter: read docs/transmitter.md firstThe wheel contains the firmware images and the tools load the right one into the board's RAM by themselves. Step by step, including the virtual environment and the
udev rule: docs/install.md. esp32-sdr-trx-rx.bin and esp32-sdr-trx-tx.bin are the bare images,
SHA256SUMS lists everything.
Tested
One board (a generic ESP32-S3-WROOM-1 dev board with two USB-C ports), one Linux host, a PlutoSDR and a HackRF as test equipment. Receiver: 20 to 120 s runs without lost samples at
250 and 333 ksps, SDR++ over the bridge. Transmitter: FM and SSB voice from a WAV file, a pipe and a sound card (20 to 30 s without an underrun), five frequencies over the band,
the carrier stops 0.54 s after the host disappears, crystal correction with --ppm. Measured with the carrier suppressed: unwanted sideband 61 to 63 dB and third-order
intermodulation 33 dB below the wanted tones. All numbers: docs/research/TX-RESEARCH.md.
Read before you transmit
Transmitting takes an amateur radio licence. The firmware only sends in 2320 to 2450 MHz. The power is not calibrated (an estimate: microwatts at the antenna of a plain dev board), harmonics and
spurious emissions were not measured, and the frequency is only as good as the board's crystal (use --ppm). Windows and macOS are untested. Much of the code and the documentation was written
with Claude (Anthropic) as the coding assistant; every number in the documentation was measured.
Full Changelog: v1.0.0-rc1...v1.0.0-rc2
v1.0.0-rc1
esp32-sdr-trx turns one ESP32-S3 dev board into a software-defined transceiver for 13 cm: an rtl_tcp receiver for SDR++ (1.84 to 2.79 GHz, 250 or 333 ksps, no FPGA) and an
experimental FM/SSB voice transmitter (2320 to 2450 MHz). Built on eSpDR by h0m3us3r.
Install (Linux, Python 3.10+)
Download the wheel and install-linux.sh below, then:
chmod +x install-linux.sh
./install-linux.sh esp32_sdr_trx-*.whl --audio # --audio: a sound card as a transmit source
espdr-rx # receiver: rtl_tcp server on 127.0.0.1:1234 for SDR++
espdr-tx --accept-licence -f 2350 -m usb -i soundcard # transmitter: read docs/transmitter.md firstThe wheel contains the firmware images and the tools load the right one into the board's RAM by themselves. Step by step, including the virtual environment and the
udev rule: docs/install.md. esp32-sdr-trx-rx.bin and esp32-sdr-trx-tx.bin are the bare images,
SHA256SUMS lists everything.
Tested
One board (a generic ESP32-S3-WROOM-1 dev board with two USB-C ports), one Linux host, a PlutoSDR and a HackRF as test equipment. Receiver: 20 to 120 s runs without lost samples at
250 and 333 ksps, SDR++ over the bridge. Transmitter: FM and SSB voice from a WAV file, a pipe and a sound card (20 to 30 s without an underrun), five frequencies over the band,
the carrier stops 0.54 s after the host disappears, crystal correction with --ppm. Measured with the carrier suppressed: unwanted sideband 61 to 63 dB and third-order
intermodulation 33 dB below the wanted tones. All numbers: docs/research/TX-RESEARCH.md.
Read before you transmit
Transmitting takes an amateur radio licence. The firmware only sends in 2320 to 2450 MHz. The power is not calibrated (an estimate: microwatts at the antenna of a plain dev board), harmonics and
spurious emissions were not measured, and the frequency is only as good as the board's crystal (use --ppm). Windows and macOS are untested. Much of the code and the documentation was written
with Claude (Anthropic) as the coding assistant; every number in the documentation was measured.
Full Changelog: https://github.com/jochenhammes/esp32-sdr-trx/commits/v1.0.0-rc1