This is a budget Raspberry Pi SDR project by Yuan Wang (BG3MDO)
2021 Easter holiday project Apr 5, 2021 (first upload V0.01)
The aim is to make a cheaper PI HAT to do HF/6m band SDR TRX, while using Raspberry Pi to do the digital signal processing (DSP).
Frequency range: 3.2MHz to 58MHz, in this range, Si5351 can produce good 90-degree I Q signals. It can go down to 500k-1.5MHz where is used to receive MW band radios - VCO phase will not meet 90 degrees, but it is okay for demod AM signals.
Currently, it uses Quisk to process signals.
I have Quisk configuration files (Python scripts) attached.
Set up:
- Raspberray Pi official OS installed
- Raspberray Pi 4 with PI SDR HAT pluged in - this project PCB
- Install Quisk, and setup using the attached configuration Python scrips
- Extra CM108 USB sound card for speaker and micphone
Quisk install can be as easy as using:
sudo pip3 install quisk
Quisk uses wxpython, you might need to install the following to compile wxpython:
sudo apt install libjpeg-dev libtiff5-dev libnotify-dev libgtk2.0-dev libgtk-3-dev libsdl1.2-dev libgstreamer-plugins-base0.10-dev libwebkitgtk-dev freeglut3 freeglut3-dev
Then:
sudo pip3 install wxpython
you also need this:
sudo apt install libfftw3-dev
Sound card configurations:
Uninstall Pluseaudio, and fallback to alsa sound layer using
sudo apt remove pluseaudio
/boot/config.txt adding the following statements to enable i2c/i2s/i2s-mmap and wm8731 device tree for Linux
dtparam=i2c_arm=on
dtparam=i2s=on
dtoverlay=i2s-mmap
dtoverlay=audioinjector-wm8731-audio
You might use alsamixer to setting wm8731, enable input and adjust gains. Max. bandwidth is 96K.
To do list:
- Fix Quisk frequency offset issue, this is due to sound card crystal osc is not accurate.
- I Q need to be balanced, new HW design?
- Modify Linux kernel to overclock audio codec to do more bandwidth?
- Adding RF gain stage? or ATT stage?
- Adding VHF/UHF RX by placing a TV dongle silicon tuner - still using I2C bus to control?
- Adding VHF/UHF TX by adding AX5043/ADF7021 to produce a pure carrier, or maybe ADF4351? and a mixer, for example SA612, to do upconverter?
13/04 2021 update (V0.02):
- swap the audio output from line out to headphone output so alsamixer can control the TX I Q level -- yes, new PCB needed.
- carefully tuning the DAC (mixer bias) to get better DC offset (mine DAC I mcp4725 value to 1500, Q mcp4725 value to 1900)
- reduce the mixer cap from 47nF to 10nF (better using NPO caps), giving better 96k bandwidth, also reduce the I Q unbalance
- increase the RX OPA gain (Rf from 10k to 33k), and reduce feedback cap to flat bandwidth (1.5nF to 47pF)
- found I Q swapped, change the code
- wm8731 causes 300Hz offset (should be 12.288/128 = 96k), so change sound wm8731 to a 12.288MHz TCXO (cheaper one, for example 25ppm, is good enough - to get 12.288 is important, a lot of 12.28 crystal on the market)
This project idea is based many hams' SDR projects, this is a combine and development of current ideas, thanks to different contributors in this area.
This project will follow CC BY-SA4 license, you are free to use and modify to fit your idea in.
More to follow, many thanks, DE BG3MDO