Teensy Convolution SDR (Software Defined Radio)

Almost everything looks ok now, could copy first signals, just looking for getting preselector switching to work

Sounds good!

Have a look at the function switch_RF_filters() in the code and alter it according to your needs and pin selections! Do not forget to define the Band1, Band2 etc. pins to your specific needs in the setup
I am trying to compile Teensy Convolution SDR (Windows 10, Arduino 1.8.13, Teensy 1.53, HARDWARE_DD4WH uncommented using Teensy_Convolution_SDR.ino dated 2020_09_08). After installing the required libraries, I am still getting errors when I compile. On first compile I get "'EEPROM_LOAD' was not declared in this scope". If I comment out EEPROM_LOAD(); on line 3069 and try to compile again, I get "'prepare_spectrum_display' was not declared in this scope (line 3217).

I have tried compiling the same file on a different Windows 10 machine with Arduino 1.8.12 and Teensy 1.52, and the errors are the same. Any suggestions?
Last edited:
Hi Rudolf: no, there is no complete schematic / es gibt keinen kompletten Schaltplan. Its the very nature of the project that the Teensy Convolution SDR can cope with every I & Q input from many different frontends and that builders have their own plan of the hardware. But you can find an incomplete suggestion in:

https://github.com/DD4WH/Teensy-ConvolutionSDR/blob/master/Teensy Convolution SDR english.pdf

and a pin connection diagram (for Teensy 4 !) in:

https://github.com/DD4WH/Teensy-Con.../Pin connection TEENSY 4 Convolution SDR.xlsx

Others have even used the Teensy Convolution SDR successfully with the highly advanced Msi001 receiver chip!

Hi Forest (KD9JCD): which Teensy do you plan to use? And which hardware are you using? Compile time switches (#define . . .) are dependent on your hardware. Of course, the software should compile with your settings, but I think you should try to compile with the exact configuration that is approproiate for your hardware.

73 DD4WH
I have tried to compile with the exact configuration that is appropriate for my hardware. I am trying to compile for a Teensy 3.6 with the #define HARDWARE_DD4WH uncommented. I've tried compiling for other hardware (HARDWARE_DO7JBH, HARDWARE_FRANKB, etc.) but get similar errors. The only other default define I changed (for the DD4WH hardware) was #define Si_5351_crystal 25000000 for using an Adafruit Si5351 board for frequency generation. It's almost as if there is a missing #endif in the code. My hardware is not yet assembled, since I wanted to make sure I could compile the code before I started wiring things up.
Last edited:
@KD9JCD: sorry for the late answer: I will have to look at the new Teensyduino version, which could potentially make problems because of the SD lib change. So I still need some time to dive deeper into that.

@kyrillic letters: are you using the Si5351 that is mentioned in the Teensy script? Or are you using a different lib? What do you mean by "rebuild". Are you compiling a second time? Not quite sure what you mean. Could you clarify?
Hallo ,please help again ;)

Hallo ,please help again ;)

I have downloaded:
Teensy_Convolution_SDR_Msi001_v3_5_2020_07_24.rar > TEENSY 4.0 Msi001 + Menu
DD:(c) Frank DD4WH 2020_05_8

When compiling I get the following error message:

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\ADC\RingBufferDMA.cpp:33:19: error: 'ADC0_RA' was not declared in this scope
, ADC_RA(&ADC0_RA + (uint32_t)0x20000*ADC_number) ^

C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\ADC\RingBufferDMA.cpp: In member function 'void RingBufferDMA::start(void (*)())':
C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\ADC\RingBufferDMA.cpp:64:30: error: 'DMAMUX_SOURCE_ADC0' was not declared in this scope

Error compiling for board Teensy 4.0.

Henk - PA0HAH
Hi Frank, and the other enthusiasts!
In 2018 I built my first Teensy Convolution Receiver with a Teensy3.6, was very happy with it and it's possibilities.
Now I brought the actual software in an error free compilable status. (Some functions were not declared before their using, some CMSIS files had to be included and so on.)
But one problem remains: RAM overflow (45404 bytes).
For the Teensy4.0/4.1 no problem...
My question is: Where can I get the latest version of Teensy Convolution Receiver- software, which is running on a Teensy3.6 ??
Or would it be better to upgrade to Teensy4.0 ?

Best regards, and a Happy New Year, may it be a better one!
Wolfgang, DH1AKF
Hi Frank,
Just finished a prototype SDR receiver using your code. I am interested in expanding the project to a full transceiver. I sent you a private message with more details, but your inbox is full. Look forward to hearing from you
SDR Protoype.jpg
@DD4WH: I could never get any of the options for the Teensy 3.6 to compile correctly, so I have ordered a Teensy 4.0. I was able to compile successfully for Teensy 4.0, but I have been away from the project for a few weeks while I awaited the arrival of the Teensy 4.0. I'll be getting back to the project soon.
KD9JCD: Try the Teensy 4.1 instead. Lots more memory and pins. You may have to be sure you have the correct Arm_Math library modifications - search here for info.
KD9JCD: Try the Teensy 4.1 instead. Lots more memory and pins. You may have to be sure you have the correct Arm_Math library modifications - search here for info.

AC8GY: I haven't seen anything in the forum for modifying the Arm_Math library for the Teensy 4.0., and most of the postings I've seen for modifying the library for Teensy 3.6 are several years old.
KD9JCD: I believe it still applies. I modified the libraries as suggested and that solved at least part of my problems getting it to compile. the pic you see in my post above is with the T4.1 and the modified AR_Math libraries. I also had problems with the SPI speed with the ILI9341. Had to reduce it 1/2 the values in the code. The T4.1 also heated up at 600MHz try 300MHz and the move up to the point where it becomes unstable and back off a bit. At those rates and setting the sample rate up to 192KHz it uses about 38% of the CPU and the temp is at 52 deg C. Runs very stable now. At 96KHz sample rate it uses about 19% CPU.
AC8GY: Can you give me a link to the modifications you used? The only modifications to the math libraries that I have found affect only the Teensy 3.X. In your message above you said "search here for info" -- and I assumed that the "here" meant this forum, since there was no embedded link. I have searched the forum and found no information on updating the math libraries for the Teensy 4.X.
KD9JCD: Search for "Canoe:" then scroll down in Convolution SDR to his post on 01-02-2017. I just followed the directions and it worked.
@AC8GY, @KD9JCD, @DH1AKF: I will try to answer your questions below:

Sorry for my late reply!

Teensy Convolution SDR & T3.6:
* I am afraid I ruined the T3.6 support in one of my last additions to the software
* that is also the reason for the memory overflow
* the new wideband FM demodulation procedure is too heavy for the T3.6, so probably it should be commented out for the T3.6
* I am not sure when/if I will be able to repair that . . . sorry Wolfgang ! (it was not intended, my fault)
That all means: FOR THE MOMENT, the current software obviously only supports T4.0 and T4.1

CMSIS lib:
* for T4.0 or T4.1, there is no need to do anything with the library, Teensyduino already has a newer version of CMSIS included and it works without altering that lib
* for T3.6, there is the need to install a newer version and the mentioned post by Canoe is the right hint to do this

SPI speed ILI9341:
* I do not have extensive experience with different displays, but it seems that displays of different brand and sizes react differently to SPI speed, so this seems a matter of trial and error to alter the SPI speed

Heat production of T4 processor:
* my recommendation is using a heatsink: I use one with a heavy copper base and copper blades on it attached to the processor with thermal glue. This keeps the processor temperature below 45 degrees Celsius even at full speed.
* but I also speed down the processor to 300MHz often if possible in order to lower power supply drain (processor speed is a menu entry in T4.x)
* overclocking (above 600MHz) is not recommended, the software becomes unreliable and often crashes above 600MHz

Expansion to TRX:
* yes, please!
* go ahead!
* why not share your plans on this forum?

@Henk: please contact the Msi001 specialists for details of the software addressing the Msi001 (Esteban and tisho).
You for sure don't have my Hardware (Yes, it is confusing with all the Franks here.. :) -use the default setting!
Ah..OK :)
Does the I2C scanner (from Teensyduino-examples) find the PCF8547? Which address? It should be the same as in the SDR.
you can send me a compiled sketch #define HARDWARE_FRANKB. On my e-mail.I will be very grateful

Sorry, at the moment I don't have a compiled version myself. I can't test anything either, because my hardware is disassembled in the basement.
I don't use the program anymore.

Is the interrupt PIN of the PCF connected? Default would be a connection with PIN 22 of the Teensy.
If I remember correctly the interrupt pin is needed it does not work without.