Wednesday, April 10, 2019

Eshail-2 QA-100 CW and SSB transmitter using My Rpitx Board and Mixer with LO Boards

Eshail-2 QA-100 CW and SSB transmitter using My rpitx Board and Mixer with LO Boards.

PI TX HAT sends SSB to Upconverter mix and it is mixed with LO with SSB and send to PA

I wanted to transmit to Eshail-2 (QA-100) with my Raspberry Pi and External Mixer and LO Oscillator and a power amp.

So here is my configuration.

1)Raspberry Pi
Raspberry Pi 3B +

 2) Raspberry Pi hat rpitx Boards.
This unit is available from Giga Technology

Giga Technology rpitx Hat
3) Mixer and power amp board. Up-converter.

Hannes ZS6BZP Up Converter Board

4.1) Local oscillator boards.

This Display and 3D printed box is Available from Giga Technology
3D Printed Enclosure for LO

or 4.2) Local oscillator boards
ADF4351 Dev Board fits in 3D printed Box with LCD and Arduino

Software for the Raspberry Pi Hat Transmitter.

sudo apt-get update 
sudo apt-get install git
sudo apt-get install gnuradio
git clone
cd rpitx
Make sure your Raspberry Pi has internet connectivity before running the following command (Answer yes if you are asked to update the config file)
If Instillation was successful then reboot your Raspberry Pi
sudo reboot

Do Not use this application if you are not a license Amateur Operator and have the correct Filter board or The Giga Technology filter Hat board.

cd rpitx
Now run the test script and monitor your output frequency on Spectrum analyzer

easytest menu

Choose your choice with arrows and enter to start it. 
Don't forget, some test are made in loop, you have to press CTRL^C to exit and back to menu.
Easy way to monitor what you are doing is by using a SDR software and a SDR receiver like a rtl-sdr one and set the frequency to 434MHZ.
Carrier Test
SDR Signal Monitor

Test the Single Side Band modulation (SSB)

SSB Test

Ok Now we need to send Audio from Raspberry Pi Microphone input to To SSB Modulator.
We now need to setup the raspberry pi to read the Audio microphone from the 3.5mm Earphone jack.
The raspberry pi can be configerd to use the hdni for audio out or the earphone jack.
We need to configure it read the earphone jack
This can be done by running the command sudo rasp-config.
You should then see the following menu.
Advance Options
Select Advance Options
Then select
Pres ok
Then select option 0Auto

and then pres ok
Then press finish.

We now can check the ALSA sound configuration by running the following commands
sudo arecord -L
    Discard all samples (playback) or generate zero samples (capture)

If you get null you need to reboot the raspberry pi
sudo shutdown -r 0

We now need to check out the Gnuradio radio project and startup script for rpitx
git clone
cd eshail2
cd  rpitx_scripts
OK we are now ready to start Gnuradio and load the Eshail USB Transmitter project.
cd eshail2
Please note the following command needs a desktop so you cant run this via ssh exsept if you have X forwarding enabled and xserver running on you desktop.
sudo gnuradio-companion
Load the following gnu radio project 

Then reboot the raspberry pi and plugin the USB sound module

Then Plugin your Microphone in the Mic input.
You could aslo use the usb microphone module like this below in place of Sound module but it is only for transmiting you cant receve.

Edit the following file and change the RED card 0 with card 1
sudo vi /usr/share/alsa/alsa.conf
# then replace:
#defaults.ctl.card 0 
#defaults.pcm.card 0 
# with:
defaults.ctl.card 1 
defaults.pcm.card 1
Save and reboot the Raspberry pi.
Ok now we get all the gnuradio project files
git clone

Now start gnuradio-companion and test the Microphone Audio
sudo gnuradio-companion

Load the Audio_test_one.grc Project
Then Load the gnuradio project from the eshail2 directory
Run the project by clicking on the play button.
You should the see a application with an osiliscope showing the microphone audio.
Scope View of microphone input.
 Ok we now no that the Mic Audio input works.
We now need to load the Gnuradio ssb transmitter that will transmit via rpitx utility.
Lets start the rpitx utility
run the command in the eshail2/rpitx_scripts/ directory
sudo /home/pi/eshail2/rpitx_scripts/
Warning : rpitx V2 is only to try to be compatible with version 1

We now will load the SSB transmitter in gnuradio by loading the following gnuradio project

SSB Transmitter for rpitx

We can now run the SSB transmitter and monitor your audio on a sdr setting the frequency at 144.100Mhz (need to be at the lower end of band as my low pass on rpitx board filters 3db point is in mid band.)

The LO using thr ADF4351 and Arduino 34,5 to 4400 MHz

Giga Technology Arduino,Display and LO

This LO build out of the following 3 boards.

1) LCD Display Unit and red connection pins to adf4351
LCD Display Unit
2) Arduino R3

Arduino R3

4) Arduino connection diagram to adf4351
Connection Diagram

3) adf4351 Development Boards
ADF4351 Dev Boards.
Output Power +- 0dbm
Rf output power of ADF4351 DEV Board

Software for the above LO display and arduino is avalible here

Frequency configuration

2.4Ghz Eshail-2 QO-100 Transmition

Here is a nother option as an USB LO Boards.

138MHz-4.4GHz USB SMA signal source spectrum analyzer.
ADF4350 Signal generator 13804.4Ghz
Software for the 138MHz-4.4GHz USB SMA signal source.
Install python for the application to work
sudo apt-get install python

1) The source code to enable the frequency is available here
Check the code out on your Rasberry pi from github

git clone

You can control the frequency with command line or application.
Command Line
./ 2400270000
To run the application below

Here is the Application I have created to change the LO on USB device.

Hardware Details of the USB Signal Generator
Software for the USB LO signal Generator
I have developed an Pythob Aplication to controle the Signal Generator and ist in my github

Here is exsample code to set the frequency
Run the following program

./ 1000000000

Here is the code
import sys, serial ser = serial.Serial('/dev/ttyUSB0', 57600, timeout=1)
# Linux first FTDI
# sys.argv[1] is frequency in Herz
cmd = "\x8f" + "f" + '{:09d}'.format(int(sys.argv[1])/10) ser.write(cmd)