All posts by M1GEO

Getting the best bit error rate (BER) from your Pi-star MMDVM

I noticed after a while, that my BER percentage of my MMDVM_HS_Hat and Pi-Star setup was significantly higher than other users, at around 3.5%. I know from setting up GB7KH that getting this correct takes patience. I also happen to know that the design of the MMDVM_HS_Hat uses inexpensive TCXOs to provide frequency and timing references. As such, some calibration can do wonders for the BER on DMR.

For this mini-guide, I shall use my TYT MD-380 handheld DMR radio. My hotspot is set to use a nominal frequency of 434.250 MHz as the carrier frequency.

Using the DMR handheld as a transmitter on low power, it should be possible to better match the frequency of the receiver to the transmitter – this process isn’t ideal, because it could equally be the handheld frequency which is incorrect – but at least they’ll match.

We’ll need to get SSH access to the underlying Linux system on the Pi-Star. You can either use the “SSH Access” tab from the Pi-Star Expert menu, as below:

Pi-Star SSH Access via Expert menu

Or you may prefer to SSH into the Pi-Star with your preferred SSH client – I use PuTTY. Either option will work here.

The program we need is called MMDVMCal. Fortunately, there’s a version compiled for us already in Pi-Star. From the Pi-Star console terminal, the following command will start the MMDVMCal program where we’ll do our testing:

$ sudo pistar-mmdvmcal

Using MMDVMCal

When the program starts, you’re greeted with the following command line instructions. You may also see some debug/warnings about

Starting Calibration…
Version: 1, description: MMDVM_HS_Hat-v1.4.17 20190529 14.7456MHz ADF7021 FW by CA6JAU GitID #cc451c4
The commands are:
H/h Display help
Q/q Quit
W/w Enable/disable modem debug messages
E/e Enter frequency (current: 433000000 Hz)
F Increase frequency
f Decrease frequency
Z/z Enter frequency step
T Increase deviation
t Decrease deviation
P Increase RF power
p Decrease RF power
C/c Carrier Only Mode
K/k Set FM Deviation Modes
D/d DMR Deviation Mode (Adjust for 2.75Khz Deviation)
M/m DMR Simplex 1031 Hz Test Pattern (CC1 ID1 TG9)
K/k BER Test Mode (FEC) for D-Star
b BER Test Mode (FEC) for DMR Simplex (CC1)
B BER Test Mode (1031 Hz Test Pattern) for DMR Simplex (CC1 ID1 TG9)
J BER Test Mode (FEC) for YSF
j BER Test Mode (FEC) for P25
n BER Test Mode (FEC) for NXDN
g POCSAG 600Hz Test Pattern
S/s RSSI Mode
I/i Interrupt Counter Mode
V/v Display version of MMDVMCal
<space> Toggle transmit

The first thing to do is to set the MMDVMCal frequency. I did this by pressing “E” followed by the frequency of my radio (434.250 MHz) in Hz.

e

434250000

You should see this frequency echoed back in brackets once the menu is reprinted to the screen. If you look at the example above, you’ll see that the frequency is 433000000 Hz (or 433.000 MHz). Pressing “b” will enter “BER Test Mode (FEC) for DMR Simplex” mode:

b

At this point, a quick transmission will show the exact BER:

DMR voice header received
DMR voice header received
DMR voice header received
DMR audio seq. 0, FEC BER % (errs): 2.837% (4/141)
DMR audio seq. 1, FEC BER % (errs): 2.837% (4/141)
DMR audio seq. 2, FEC BER % (errs): 3.546% (5/141)
DMR audio seq. 3, FEC BER % (errs): 1.418% (2/141)
DMR audio seq. 4, FEC BER % (errs): 0.709% (1/141)
DMR audio seq. 5, FEC BER % (errs): 2.128% (3/141)
DMR voice end received, total frames: 6, bits: 846, errors: 19, BER: 2.2459%

My BER is showing as 2.5%. Not awful, but with some room for improvement.

The process of finding the ‘perfect’ value is twofold. The first is to find the approximate frequency, and then dial in the exact value. Here, we’re trying to find out the difference between the nominal frequency (in my case 434.250 MHz) and the optimal working frequency.

From the menu above, you’ll note that both “F” and “f” (both upper and lower case) increase and decrease the frequency respectively. By holding your radio in transmit, repeatedly press the F key until you the MMDVM_HS_Hat looses the transmission from your handheld. You’ll see the TX frequency announced with each change of frequency – allow time between each step (around 10 seconds on each frequency).

DMR audio seq. 3, FEC BER % (errs): 1.418% (2/141)
DMR audio seq. 4, FEC BER % (errs): 0.709% (1/141)
DMR audio seq. 5, FEC BER % (errs): 4.255% (6/141)
TX frequency: 434250050
DMR audio seq. 0, FEC BER % (errs): 4.965% (7/141)
DMR audio seq. 1, FEC BER % (errs): 0.709% (1/141)
DMR audio seq. 2, FEC BER % (errs): 0.709% (1/141)
DMR audio seq. 3, FEC BER % (errs): 1.418% (2/141)
DMR audio seq. 4, FEC BER % (errs): 2.837% (4/141)
DMR audio seq. 5, FEC BER % (errs): 1.418% (2/141)
TX frequency: 434250100
DMR audio seq. 0, FEC BER % (errs): 2.837% (4/141)
DMR audio seq. 1, FEC BER % (errs): 0.000% (0/141)

Keep going in one direction until the software reports “Transmission Lost” – note the final frequency down. You can see this by pressing “H” or “h” to reprint the menu. For me, the first limit I reached was 434249800 Hz by repeatedly pressing “f” to lower the frequency.

TX frequency: 434249800
DMR audio seq. 0, FEC BER % (errs): 7.092% (10/141)
Transmission lost, total frames: 61, bits: 8601, errors: 743, BER: 8.63853%

Once you find one limiting frequency, travel though the other direction until you find the other limiting frequency.

TX frequency: 434250800
DMR audio seq. 0, FEC BER % (errs): 9.220% (13/141)
DMR audio seq. 1, FEC BER % (errs): 7.801% (11/141)
DMR audio seq. 2, FEC BER % (errs): 7.801% (11/141)
DMR audio seq. 3, FEC BER % (errs): 7.801% (11/141)
Transmission lost, total frames: 248, bits: 34968, errors: 2602, BER: 7.44109%

From here, you can find the mean (centre) frequency: (434249800 + 434250800)/2 = 434250300‬ Hz (300Hz higher than the nominal).

Use the “E” command once again and enter your new mean frequency – for me, this was 434250300‬ Hz.

e

434250300‬

You can then either enter frequencies yourself stepping 10 Hz at a time until you find the frequency yielding the best BER, or you can use the “Z” and “z” commands to increase or decrease the steps, and continue using the “F” and “f” commands to ‘home in’ on the value. I tabulated my results to give me a clear understanding of what was going on. I first went with 25 Hz steps (half the default 50 Hz steps) and found the following values for a 15 second transmission on each frequency. At the end of each transmission, status (including BER) are reported. You can see that the optimum value was very close to my mean value.

434250225‬, BER: 0.3208%
434250250‬, BER: 0.1470%
434250275, BER: 0.0887% (optimum value)
434250300‬, BER: 0.2175% (my mean calculated)
434250350‬, BER: 0.4816%

You can see that the optimum value was very close to my mean value. I experimented with even smaller steps, but didn’t really improve much on the 0.1% BER. This value is definitely good enough, and is an order of magnitude better than what I had previously!

Since I also use D-STAR, I quickly pressed “K” to enter D-STAR BER test mode, and, with the best settings from DMR, I keyed my Kenwood TH-D74 handheld – everything was fine here, too:

D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star audio FEC BER % (errs): 0.000% (0/48)
D-Star voice end received, total frames: 214, bits: 10272, errors: 0, BER: 0.00000%

Taking the frequency for your lowest BER (in my case 434250275 Hz), the offset is easy to calculate: Simply subtract the best BER frequency from the nominal frequency to find the offset: 434250275 – 434250000 = 275 Hz (note, this can be negative).

Applying the Offset

We next need to apply our offset (in my case +275 Hz) to the main MMDVMHost application running on the Pi-Star. This is done through the expert configuration.

Inside the Pi-Star configuration, head to the Admin Expert menu once again and select MMDVMHost.

Inserting our calculated offset (in Hertz) from the above.

It’s then just a case of applying the changes!

Folding AT Home with CPU and Nvidia GPU on Ubuntu

With the outbreak of the novel coronavirus (COVID-19) in late 2019 and spreading through Europe early 2020, a lot of tech and IT media wrote to encouraging people to take up Folding at Home (FAH, F@H). I decided to join in, which for the most part was pretty easy, just a case of installing the software – more on this later. But on my larger PCs, I wanted to make use of my Nvidia GeForce GTX 1070. Using a GPU adds another workhorse to the project, and is often faster/more suited to some of the computation tasks (called Work Units or WU).

Installing the Software

The Folding at Home software comes in 3 parts: the client (FAHClient) which does the computation work; the controller (FAHControl) which provides a GUI for the client; and a viewer (FAHViewer) which renders pictures and illustrations of the molecules being computed, albeit at the expense of some compute performance.

The FAH Downloads Page has the files you need to get started. On Linux, you’ll need the following files:

These should be installed with the following command:

$ sudo dpkg -i <package_deb_file>
$ sudo apt --fix-missing install

The first line installs the package and the second will obtain any dependencies for the package. You may see errors after installing the first package, but after the second, you should have any dependencies met. You may need to tinker around and help the package manager fix any missing issues.

You’ll notice that I have supplied a modified version of FAHControl. This has one of the dependencies removed, which means it is possible to install on newer Ubuntu versions.

Once you have the programs installed, the client will start. You can stop and start it with:

$ sudo service FAHClient stop # stop the client
$ sudo service FAHClient start # start the client

You’re ready to go. Use the control program to make changes to settings, etc. You’re ready to start folding on your CPU!

You may be interested to benchmark your machine with FAHBench. The process takes a little over a minute to run a 1 minute test, and it reports if everything is working correctly. Fror

Setting up the Nvidia GPU

The more tricky part, for me at least, was getting the environment set up for the Nvidia display.

The first thing to do is to open the “Additional Drivers” dialogue box from the “Software and Updates” menu. You can jump directly to this by running the following in a terminal:

$ software-properties-gtk --open-tab=4

Typically, you should select the newest driver available. At the time of writing, “nvidia-driver-435”. If you are not running an X server and just want to install the driver without the requirement for X, you can install “nvidia-headless-435”. You may also care to install “nvidia-utils-435”.

After pressing Apply Changes, the system will download the latest drivers and install them with the required dependencies. We’ll add some extra packages of our own too:

  • nvidia-opencl-dev
  • ocl-icd-opencl-dev

Install the above libraries using the following:

$ sudo apt install nvidia-opencl-dev ocl-icd-opencl-dev

At this point, you should be ready to go…

Advanced GPU Tinkering

You may also wish to tinker with the GPU a little bit, choosing to either underclock or overclock the GPU to get either better reliability or improved performance. One thing to note with overclocking is that while the occasional glitch or artefact is acceptable during gameplay, it will cause a FAH WU to fail.

Initially with my configuration, I fount the factory overclock on my Asus ROG Strix GTX1070 O8G to be slightly unstable in FAHBench. I found that the GPU would fail at at between 7% and 9% of the way through the test.

Further investigation using the Unigine Superposition as a GPU stress test allowed me to tinker with the settings to find a reasonable GPU Core and Memory overclock parameters, as well as appropriate power limits. The Asus ROG Strix GTX1070 has good cooling and so I was able to get away with increasing the power limit and adjusting the clocks for long-term stability. Bear in mind that stability is way more important than getting that last couple of percent from the card.

Overclocking and tinkering was done using a mix of Green With Envy and the “nvidia-settings” tool on Xubuntu 19.10 which come with the driver and “nvidia-smi” which comes with the “nividia-utils-xxx” package.

Other Considerations

If you don’t fancy pushing your expensive graphics card hard, you may be able to find a custom GPU card previously used for mining crypto-currencies. These cards feature the same GPU chipsets, but are crippled such that they cannot easily (although it is possible) generate video. The Nvidia P106 offers features similar to the GTX 1060, while the Nvidia P104 offers features similar to the GTX 1070.

Since GPUs are no longer viable to generate crypto-currency, they’re often sold second hand on eBay and similar sites for relatively cheap prices. While a modest Nvidia GTX 1060 with 3GB of VRAM costs around £150 on eBay at the time of writing, an Nvidia P106-90 (GTX 1060 with 3GB VRAM) costs as little as £26 each or £20 in bulk! At a once off, that’s nearly a sixth the price.

Watch this space for an update on how these perform…

Air Particulate Sensor

Background

Around a year ago a colleague mentioned to me the Luftdaten project (en: air data project). It is a sort of citizen science project which measures and records particulate matter in the air. They also have a newer project concerning acoustic noise levels (build notes for this in German here), but I’ll be concentrating on particulate matter here. Often the sensors are combined to collect data on airborne particulate levels, acoustic noise, temperature, humidity and air pressure to name a few. The images below show 24h graphs for some of the measured parameters from various sensors around Europe.

I have long had a fondness for collecting data and the Luftdaten project has plenty! Their website features an interactive map of the world where they plot measurements taken.

The particulates detected include dust, dirt, soot, smoke, and liquid droplets emitted into the air which are small enough to be suspended in the atmosphere. Airborne particulates may be a complex mixture of organic and inorganic substances. The type of sensor used does not differentiate between the particle types, it just gives a measure of how many are present.

Parts

I purchased all of the parts cheaply from AliExpress (no affiliation). You’ll find the same parts on eBay, BangGood, etc., so use what you prefer.

The particulate matter sensor is a Nova SDS011 PM sensor (datasheet), which can be purchased for around £14.

You’ll probably also want a DHT22 temperature & humidity sensor (datasheet) which will cost around £2.

Finally a NodeMCU V3 is required. This is a module based on the ESP8622 WiFi chip, which includes a USB-UART interface, some voltage regulators, etc. In a later step, we’ll program this with the Luftdaten code.

A short length of plastic pipe can help to draw air into the SDS011 sensor. The datasheet for the SDS011 suggests an inside diameter of 6mm and outside diameter of 8mm.

The photo below shows my assembled parts! You’ll notice int he bottom right of the image that I have an Influencair V1.2 PCB. Influencair are a spin-off group of Luftdaten based in Belgium. CivicLabsBelgium produced PCBs for project participants to use and made the PCB Gerber Files available here. You can send these off for manufacture using any PCB service you like (for example, in no order JLCPCB, PCBWay, DirtyPCBs, Elecrow, and so on).

Build notes & Programming

The build process is explained thoroughly on the Luftdaten website under the construction manual page. As I won’t be able to do a better job of explaining this, I suggest you go ahead and read their documentation. Below shows the parts mounted on my Influencair V1.2 PCB. I used 3mm screws to hold everything together.

Programming, Configuration & Registering

The default programming proceedure requires setting up the ESP8622 in the Arduino software environment, but Piotr Dobrowolski has created a very useful tool: airrohr-firmware-flasher for the Luftdaten project. I used the Linux variant of the program the NodeMCU in one click, but Windows and macOS versions exist too! Be sure to find the “releases” button on GitHub to download the pre-compiled ready-to-use binaries!

With the NodeMCU connected to the PC with a USB cable, I selected “latest_en.bin” from the version list (en being English), and pressed Upload. As you can see from the figure below, it took just over 8 seconds and it was done!

Power cycling the board resulted in a WiFi device being created by the newly created sensor! I connected my mobile phone to “airRohr-11189671” and was greeted with the following screen.

I tapped on my house WiFi “SmartLAN”, entered my super-secret passkey and we were away! The device power cycled and was then visible from the flasher once again.

From this, I was able to see the sensor was assigned an IP address on my network, and double-clicking on the entry whisked me off to my default web browser viewing the sensor’s internal webpages.

There are many configuration options, but the defaults were suitable for my hardware configuration. There are options for OLED and LCD screens, extra/different sensors and many other configurations which are out of the scope of this article. However you can click “Current Data” to see the sensors latest measurement data. The image below was taken with the sensor indoors.

The final thing to do is to create an account on the Luftdaten project website so your sensor can contribute measurements. There are already a reasonable number of sensors in the UK contributing data to Luftdaten. You can create your account and submit your sensor data here: https://meine.luftdaten.info

I have positioned my sensor in the garden shed with a short section of plastic pipe poking outside of the shed where the wind blows. I live near a busy roundabout and buy a petrol filling station, so it will be interesting to compare my measurements with other local sensor readings.

Experiments with Phase-Frequency Detectors

Over the past few evenings, I have been experimenting with phase-frequency detectors. I have an upcoming project that requires the use of one, and, I figured I’d refresh my memory on them. I ended up using my Lattice MachXO2 breakout board as the development platform.

The first step was to divide a 10 MHz crystal oscillator down to 10 kHz. That was easily done with a counter, counting from 0 to 499, and then resetting to 0. Every reset would simultaneously toggle an output bit, with the net result being a square-wave clock on the output bit, periodic every 1000 cycles of the input. A divide by 1000 counter.

Next was to understand the Phase-Frequency Detector (PFD). This is commonly referred to as a Type 2 detector, since it detects not only phase difference but frequency difference. This means that the PLL will only ever lock to the fundamental frequency, and not harmonics. It also means that when the loop is unlocked, the PFD knows which way to drive the VCO to regain lock. A Type 1 detector only uses phase information, and so drives the oscillator in the direction of the phase difference until the loop locks – as a result, Type 2 detectors lock quicker.

The Type 2 detector has two outputs, up and down, which pulse for the required direction with a duty cycle proportional to the phase difference.

I spent a few days designing and simulating the PFD using the Aldec Active-HDL simulator to confirm that my circuit did indeed perform as expected:

I then added a simple lock detector, which set a locked signal high if the phases were in lock for the past 10 cycles as a proof of concept. In reality, a much longer observation window will be used. It is possible to see the lock signal becomes high after 10 cycles.

The final stage of this project snippet was to test on real hardware. The Verilog code was pushed through synthesis, place and route, and a configuration file for the Lattice FPGA generated. This was then programmed into the board, and the board taken to the lab – you can see all the main parts of the setup in the photo below.

Below, you can see the scope traces from the probes in the lab bench photo. The yellow trace shows the 10 MHz VCO frequency from the Trimble 34310-T2 OCXO. The green trace is a debug from the FPGA output showing the 10 MHz signal divided down 10 kHz. The blue trace is GPS locked 10 kHz reference output. Finally, the purple is phase detector output, here from the ‘down’ output of the detector since we see that the divided VCO output (green) slightly leads the GPS reference (blue). The ‘up’ output is at logic-0 throughout.

The next part of the project was to create the charge pump circuit which converts the ‘up’ and ‘down’ pulsed signals into an analogue control voltage for the VCO.

The parts for the charge pump took a few days to arrive, and while waiting I contrived the following circuit. Since the OCXO generates a 6V reference voltage for use with the VCO input (actually 5.4V in my case), it seemed wise to use that. Some crude experiments had lead me to a tune voltage of around 3.5V. The circuit uses a PNP transistor (Q1) to put pulses of energy into the filter network via R1. Similarly, it uses an NPN transistor (Q2) to remove pulses of energy from the filter via R1. R5 and R6 serve as a current limit in case both Q1 and Q2 are both powered. A further NPN transistor (Q3) acts as a voltage interface between the ~6V on the base of Q1 and the FPGA IO at 3V3 maximum. Only the values of components in the filter section are critical (R1, R7, C1, C2, C3); the others were chosen from what I had laying around.

The loop filter was tested and tweaked in LTspice using the values above. The loop filter has around 62 dB of attenuation at 10 kHz (our reference [and thus up/down pulse] frequency).

A look in the time domain shows we can expect about 1.5mVp-p at 10 kHz from visual estimation. An output of 1.5mVp-p is approximately 0.53 mVrms, which gives us around -66 dBV of attenuation (similar to we saw above). The curve of the waveform is the DC levels settling out at the start of the simulation.

And finally the steady-state ripple; for a 1V square wave (0V-1V) input, a 1.23 mV ripple exists at the output (455.719-454.486).

The penultimate step was to build the circuit and confirm it worked in real life. I made the charge pump on a scrap of strip-board, with pin headers for the main signals. On the left, +6V VCO reference input, the up and down signals from the FPGA, and on the right, ground and the VCO tuning input. The circuit is pretty much laid out as per the schematic, with the addition of an LED.

The final step was to watch the PLL lock on the scope! In the short video clip below, you can see the yellow trace is the 10 kHz reference frequency from the GPS. The green trace is the 10 MHz from the VCO. The blue trace is the 10 MHz divided down to 10 kHz. The purple trace is the VCO tune voltage – the output of the charge pump.

The closing remark is that this project was a learning exercise. The Verilog code & TB is presented here on GitHub and you’re invited to take a look.

2.4 GHz TX with LimeSDR & EDUP WiFi PA

Following on from my Receiving Es’Hail-2 GeoSat article, the obvious next thing to write something about transmitting. I created a draft of this article, but it seemed to mix heavily with the specifics of my station and was less generic. So I felt it better to create this page first, detailing my 2.4 GHz transmitting station, which I have just cobbled together in the time since writing the original article.

About the LimeSDR

Let me first start by saying that I’ll be using a LimeSDR USB which has a continuous frequency range of 100 kHz to 3.8 GHz. Clearly acceptable for our requirements of 2.4 GHz. The bandwidth the SDR can support is staggering 61.44 MHz. The SDR is based around an Altera Cyclone IV FPGA with 256 MB of DDR2 RAM and a Rakon RPT7050A reference clock at 30.72 MHz. It has 6 inputs and 4 outputs, and boasts a CW transmitter power of up to +10 dBm (10 mW).

Clearly the LimeSDR is nothing without some fancy software to drive it; and there are plenty of good offerings. I decided to opt for SDRConsole V3 by Simon Brown G4ELI, which at the time of writing was version 3.0.5 (Feb 2019).

SDRConsole with the LimeSDR

The process of setting the LimeSDR up was easy. I had to collect the LimeSDR drivers for Windows and install those. That process is nicely described on the Miriad RF LimeSDR USB Driver Install page, but the crux of it is: (a) download the drivers from their GitHub page [direct link to master here], (b) use Device Manager to find the LimeSDR, and replace the driver with that in the zip.

Once the driver is installed, you’re ready to set up SDRConsole. When the program starts, it will state that you do not have any radios defined, and give you the opportunity to define one. Simply select “Search” and then “LimeSDR” and it will find your radio. Accept the changes you’ve made.

Radio Definitions: Define your LimeSDR

Once you have defined your radio, you should select it from the box that pops up following the definition (and subsequently each time you start SDRConsole). Select the LimeSDR you have just defined, make sure you select a bandwidth that supports transmitting “(TX)” in the “Bandwidth” option, and “Start” will become clickable in the bottom left. You should see the console spring to life.

Select Radio: Make sure you select a bandwidth what supports TX.

From the Receiving Es’Hail-2 GeoSat article, you will recall that the narrowband transponder input is 2400.050 MHz to 2400.300 MHz. Taking the middle of this band to be 2400.175 MHz. The screenshot below shows the radio on this frequency. I have put boxes and tails on some of the important settings.

From the figure above, you can see the receive frequency on the top left box, with the transmit frequency on the top right box. The “Sync RX” options for frequency and mode show that the TX frequency and more are locked to that of the receiver.

The “Drive” control on the top right box controls the RF power on the output and we shall try to characterise that later. Just above it is a “TX” button which causes the transmitter system to be engaged, and the receiver to be muted.

Finally, in the bottom left there are controls which select which of the LimeSDR’s 6 receive sockets and 4 transmit sockets are in use.

LimeSDR Output Power

The next thing to do is measure the LimeSDR’s TX power on the frequency of interest: 2400.175 MHz, the centre of the NB transponder uplink. A CW signal is used to generate a constant power level.

To achieve this, I have used a known calibrated R&S NRP18A, which will measure power from 100 pW to 200 mW. We are expecting a maximum of 10 mW, so we should be easily safe to use this.

The drive level is a percentage, ranging from 0 to 100. My basic plan was to take a reading every 10%, and if there is a large non-linearity, I’ll take further measurements in those areas. At this point, the LimeSDR is only powered via the USB bus, and has no external power source. With drive levels below 50%, the reading was noisy, so I concentrated on the linear part of the curve.

Drive Level (%)Power (dBm)Power (mW)
50-41.620.000069
60-34.350.000367
70-26.50.002239
80-18.310.014757
90-9.690.107399
100-1.620.688652
Graph of LimeSDR output power vs drive level at 2400.175 MHz

EDUP 8W WiFi Power Amplifier

I purchased an EDUP 8W WiFi power amplifier for £35 in February 2019 for use with the LimeSDR and Es’Hail-2 uplink. There had been talk on Twitter of these amplifiers being suitable, so I decided to give one a go.

EDUP 8W WiFi Amplifier cost around £35 delivered

Without getting into details, the amplifier has a system which detects if the WiFi radio is transmitting, and enables the PA’s TX path, or if the radio is receiving, and enables a separate RX path. This is exactly like “VOX” on an amateur radio amplifier. However, since the packets are very short on WiFi, with guard times in the order of 400 nanoseconds, the hang time is very short, and thus not suitable for SSB. We thus need to modify this behaviour, so that the amplifier is in TX all of the time, or, even better, when the LimeSDR is transmitting – perhaps using a GPIO pin to drive the amplifier – but that’s unimportant for now.

PTT Modification: EDUP 8W Amplifier

Here’s a snap of the insides of the amplifier. It’s clear that there is some room for improvement in gain with this amplifier, such as removing the (likely lossy) TX/RX switching, etc., as we don’t need these parts. However, for now, we’ll leave it. Swapping the RF-OUT RP-SMA connector for a standard SMA connector is probably a wise decision for the radio amateur.

Inside the EDUP 8W WiFi Amplifier

The mod, in its basic form, is just a solder bridge across pins 4 (VS) and 5 (+IN2) of the ADA4851-4 quad rail-to-rail op-amp on the opposite corner of the board to the DC power socket. The mod makes it appear that the diode detector is detecting a huge signal (5.787 V, the supply rail). The reference voltage (-IN2) is set at 0.189 V. When the voltage at +IN2 exceeds -IN2, the device enters transmit mode.

If the amplifier is in receive mode, the status LED illuminates red. Conversely, if the amplifier is in transmit mode, the status LED illuminates green.

Measurements with the EDUP Amplifier

In terms of the experiment, the EDUP amplifier input is connected with an SMA barrel to the LimeSDR output, and the EDUP amplifier output is connected (via RP-SMA on the included short RG174 patch cable) to a 20 dB attenuator which in turn connects to the power meter.

Using this configuration, I do not expect that the output power will be come very high, since their is not enough drive level from the LimeSDR at −1.62 dBm. I see about 13 dB of gain, with an output of around +11dB (~10mW) of RF output power.

At this point the EDUP amplifier is drive limited. Working backwards, to achieve a theoretical +39 dBm (8 W) output, we would need to input +26 dBm (0.4 W) input.

The amplifier draws around 170 mA in receive, and about 380 mA in transmit with no RF (just quiescent bias).

More Gain!

Clearly connecting the EDUP directly to the LimeSDR does not provide enough power. There is a need for some more gain. Looking around what options are available cheaply, you quickly come across some options.

Qorvo SPF5189Z

SPF5189Z breakout module available from eBay, AliExpress, etc.

The Qorvo SPF5189Z has a small signal gain of 11.9 dB at 2.2 GHz (the closest listed frequency to the required 2.4 GHz) and an output P1dB of 22.7 dBm. This output power is close to the 26 dBm input required for the EDUP, although it is not recommended to run the system close to the 1 dB compression point (P1dB). With the SPF5189Z in line, we see approximately 20 dBm output (100 mW) from the EDUP.

Adding another SPF5189Z following the first gives around 30 dBm (1 W). Adding another 10 dB of gain early on in the drive chain will get us closer to the goal of 8 W output, but the system was becoming unwieldy and would probably not be suitable for use on air without inter-stage filtering as the parts used are wide-band.

Analog Devices CN0417 Evaluation Board

Analog Devices CN0417 Evaluation Board (bottom side) [source]

Another part brought to my attention by @Manawyrm on Twitter is the Analog Devices CN0417 evaluation board (EVAL-CN0417-EBZ). It is a USB Powered 2.4 GHz RF Power Amplifier, and can be purchased for around £26 ($35 USD).

I have not used this part yet, but I know that others have with some success. The EVAL-CN0417-EBZ is based on the ADL5606 is a broadband, two-stage, 1 W RF driver amplifier which operates over a frequency range of 1800 MHz to 2700 MHz.

Nearly there…

With some tidying of the interconnects, I was able to get to 32.98 dBm (1.95 W). More filtering will be required before letting this loose on air.

Screenshot of SDRConsole with RF Power Meter inset. +32.89 dBm = 1.95 W

Getting it on air!

At this point I was pretty keen to see if I could make it to the Es’Hail-2 satellite. The day I tried, 2 March 2019, followed an announcement by AMSAT that the narrowband transponder gain had been reduced, so I was keen to

AMSAT-DL reduced the transponder gain by several decibels on 28/02/2019

Using a WA5VJB quad-patch antenna purchased from Sam G4DDK, I was able to get going sooner than if I had held out to wait for the dual-feed solution that Mike G0MJW and others had been working on. The patch can be seen connected to the amplifier with a simple SMA barrel connector.

Patch antenna and EDUP PA

Balancing the amplifier and patch antenna on the back of a large reclining chair in the garden, I was able to align the patch antenna to the satellite’s location. Setting the TX frequency of the LimeSDR to the centre of the transponder band (2400.175 MHz), with an output power of around 1W of I was able to hear a single tone through the Es’Hail-2 narrowband transponder, I quickly added a CW paddle and was able to confirm my signal by sending “M1GEO TEST” several times, listening via the BATC NB WebSDR as discussed in my Receiving Es’Hail-2 GeoSat article.

I took a short recording using the BATC WebSDR:

“M1GEO TEST” received at BATC Goonhilly Web SDR

Some filtering?

W1GHZ has a nice study on pipe-cap filters and there are other articles that describe their construction such as KO4BB Pipe Cap Filters construction page. Other options include inter-digital filters and similar.

Not much to report here… I still have some experimentation to do.

Where next?

The next article in this set describes making a dual-band feed. It is still being written…

Receiving Es’Hail-2 GeoSat

First of all, let me say that I am in no way an expert with regard to satellites, microwave operations, or anything else. This is meant to be more of a crude beginners guide. Experts will probably cringe – that’s fine!

A little bit about Es’Hail-2

Es’Hail-2 (QO-100) is a geostationary satellite at 25.5° East which carries transponders (devices for receiving and re-transmitting signals) usable by radio amateurs. These two transponders are the first amateur radio transponders to be put into geostationary orbit and are expected to link radio amateurs from Brazil to Thailand.

Es’hail-2 will carry two such transponders, operating from the 2400 MHz band into the 10450 MHz band. A 250 kHz bandwidth linear transponder intended for conventional analogue operations (SSB, CW, etc.) and an 8 MHz bandwidth transponder for experimental digital modulation schemes and DVB amateur television. The operating guide provided by AMSAT-DL asks that users refrain from using FM on the narrowband transponder.

Narrowband Linear transponder
2400.050 - 2400.300 MHz Uplink
10489.550 - 10489.800 MHz Downlink (Vertical Polarisation)
Wideband digital transponder
2401.500 - 2409.500 MHz Uplink
10491.000 - 10499.000 MHz Downlink (Horizontal Polarisation)
Image taken without permission from Amsat-UK/DL [source]

With these linear transponders, any signal that the satellite receives in the input frequency range will be linearly translated to the output frequency range. As a signal power increases, so will the signal at the output; as the signal frequency increases, so will the output signal. And so it goes.

You can find out lots more information about the Es’Hail-2 satellite (and others) from the AMSAT-UK Es’Hail-2 website.

Why this page?

Following Noel G8GTZ‘s talk on Es’Hail-2 at the RSGB Convention 2018, I started collecting the parts required to put together a receive system. At the time of Noel’s talk, I remember thinking how he’d made the process sound simple. It wasn’t until I started playing with the setup that I actually found how simple the process was. More on this later…

Yesterday, I stumbled across a link to the BATC’s Es’hail-2 Ground Station website which has links to their wideband (think HD TV) and their narrowband (think SSB, CW) web receivers. The hardware is located at the Goonhilly Earth Station in Cornwall (IO70JB). More details can be found on the Es’Hail-2 BATC website.

If you have used a WebSDR online before, then the narrowband SDR will be familiar to you. The wideband monitor will probably not be familiar, but it is very useful if you are looking to experiment with digital amateur television (DATV) transmissions – more on this later. Since we’re interested in doing the receiving ourselves, we just note is that such web SDRs and monitors are a fantastically useful resource. There are of course many other similar resources.

Ultimately, this is the page that I wish I had found when I started out on this path a couple of days ago… You are welcome to contact me if you spot errors, etc.

Antenna talk: Dishes, LNBs & Feeder

A satellite dish is a type of parabolic antenna that is highly directive and therefore has a high gain. In simple terms, the dish collects incoming radio-waves over a large area and focuses them towards a central point.
This point is usually the front of an low-noise block (LNB). The larger the dish diameter the more gain the dish will have – but – the sharper the beam, and so the more critical the alignment. Common dish sizes for receiving Es’Hail-2 are in the range 80 centimetres to 1.2 metres diameter. My dish, pictured below, is 1.2 metres diameter. Because the dish is highly directive (i.e., it’s beam is very sharp, like a laser pointer is with light), it requires careful adjustment.

Where do I aim the dish?

The AMSAT-UK Es’Hail-2 website tells us that the satellite is at 25.5° East. This means that the satellite is at 25.5° East of the meridian line. You will need to find the azimuth and elevation, i.e., the direction and tilt of the dish, yourself, since this depends on your longitude (distance from the meridian line) and latitude (distance from the equator). I have used the SatLex tool (below image), but many other online tools exist (DishPointer, SatSig) to help you. When using such tools, if they don’t have Es’Hail-2 in their index, BADR4/5/6 or EutelSat25B are close enough for now.

Satellite location calculated by SatLex for Es’Hail-2 from Norwich, UK.

As you can see, the top half of the above image shows you a view due south, and the satellite location in your field of view. You’ll see the elevation angle of 25.88°, which I’ve rounded to 25.9°. You’ll have to tweak a little for maximum signal, regardless of how well you do this step, but it really helps to get the alignment as good as you can before you start. You will also see the ‘true’ azimuth angle, here 150.50°, which is the angle your dish should point to, and corresponds to a simple calculation between your longitude, the satellite’s position in space, and the meridian line.

The only other point to note in the above figure is the “LNB Tilt” of −17.4° (note, minus). Without proper knowledge, it is tricky to set the LNB skew without the LNB receiving a signal, so for now, lets press on with getting the dish mounted. We’ll come back to LNBs later.

Getting the dish pointed at the satellite is, without doubt, the hardest part of the entire undertaking. On the right, you see Chris G8OCV helping to align the dish holding a spirit level. Since it is my policy to only ever do antenna work in the dark, on a cold evening, preferably in rain, he’s very enthusiastic! But he always helps!

For my QTH in Norfolk UK, the elevation worked out to be 25.9°. This is the elevation, i.e., the angle of the dish’s beam to the horizon. The dish’s beam points upwards 25.9°. We also know the azimuth of the satellite is 25.5° East, which corresponds to a true heading of 150.5°. These are the two coordinates we need to know to aim the dish.

Once the dish support pole was absolutely vertical, the elevation adjustment on the satellite dish can be done using the angle markers on the dish bracket. The azimuth 25.5° East is translated to 150.5° as taken from the satellite pointer website. I used a compass to initially align the dish. Some warning/disclaimer about the difference between ‘true’ North and ‘magnetic’ North belongs here. It didn’t cause me any trouble, but your experiences may be different. If you’re using a temporary post in the ground/umbrella stand, make sure it is heavy enough not to blow around in the wind. Mine wasn’t until we added some concrete weights.

Satellite dish mounted on an aluminium pole in an umbrella stand. Scrap metal was slid under the stand to help achieve the optimal angle.

Some words on LNBs

This section may sound a little scary, but I have tried to explain some of what is going on inside the LNB – don’t be put off! The low-noise block (LNB) is something that sits at the focus point of many commercial satellite dishes. The dish focuses the radio signals to a point – usually into the LNB. The LNB has a low noise amplifier to increase the level of the weak signals received by the dish. Since satellite downlink frequencies are well over 10 GHz, that would require some very fancy coax to get the signal into your house. So the LNB also mixes the received signal with a local oscillator (LO) frequency that it generates itself, in order to reduce the frequency of the received signal – this LO frequency is switchable to allow different frequency ranges to be received. Finally, the LNB has a polarisation switch, changing between horizontal and vertical polarisation. This is, of course, a gross simplification of what is going on, but is enough for now.

Without going into too much detail beyond what feels strictly necessary, the switching of LO frequency and polarisation are controlled by signals fed to the LNB from the shack-end of the coax. The LO frequency defaults to 9.75 GHz, but is switched to 10.6 GHz when the LNB receives a 22 kHz tone on the feeder. Since the LO is outside in the cold, the frequency reference is prone to thermal drift. You are strongly recommended to find an LNB that has it’s LO frequencies derived from a phase locked loop (PLL) as opposed to an dielectric resonator oscillator (DRO). A more advanced configuration is to purchase a dual-port LNB, and use one port for the feeder return to the shack, and ‘hack’ the LNB such that the second port serves to accept a frequency reference that can be provided. You do not need to do this, an off the shelf LNB will work, but a PLL variant is strongly recommended. If you hear very garbled or warbling sounding sideband or it is unresolvable altogether, it may be that your LNB is using a DRO as the frequency reference.

The polarisation is either vertical when the LNB is powered at 12V DC, or horizontal when powered at 18V DC. Often hams will only use the 9.75 GHz LO frequency, since then no 22 kHz tone is required. Some ham’s rotate the LNB physically to change polarisation, while others set the LNB between vertical and horizontal, thus receiving both simultaneously but with losses. I opted for supplying either 12V or 18V to the LNB and switching polarisation electronically from inside the shack. I have not, as yet, needed to change the LO frequency.

Goobay 67269 Single Universal LNB – retails at under £6 with free postage

Everything on this page was done with a Goobay 67269 Single Universal LNB. There is lots and lots of information on LNBs if you search around online. The BATC has some information on LNBs, as does UHF-SatCom Ku Band PLL LNB’s page. The key point is get a PLL based LNB, as recommended by others. Some of the recommended ones carry a heavy price tag as at the time of writing there is a huge demand, and relatively small supply. A few years ago I bought an Octagon PLL-based LNB for less than £10 delivered; now they cost over £130! I would have used that, but it was in boxes packed for moving! Unfortunately for radio hams, sellers have realised that PLL based LNBs are more valuable to us, and so their price is gradually increasing.

Feeder

I had a bit of discussion with friends online about what feeders were being used. Most people have, I guess obviously, opted for satellite coax. This is RG6 coax, and has a solid centre pin suitable for use in F-connectors. This is also available cheaply on eBay, often kitted with ten F-connectors. I paid around £9 for 50 metres. In an early instance, I got away with using RG213 (which is 50 Ohm, not 75 Ohm) and some F-connector adaptors, but the LNB gain makes up for a lot of small misdemeanours. RG6 satellite coax is the way to go! The image below shows my mash of connectors and adapters to overcome my lack of a solid centred feeder such as required by F-connectors.

How not to do it. My first attempt worked perfectly but isn’t best practice!

Connecting it all up

Terminate the LNB end of the feeder with an F-connector, and seal it up to keep the rain out. Mount the LNB in the dish’s LNB mount. You need to be able to twist the LNB to adjust the LNB tilt, but don’t want anything to move of it’s own accord.

The next obstacle is to power the LNB. I did this by hacking about with an RTL-SDR dongle and building in a bias tee inside – details in the “LNB Bias inside an RTL-SDR Dongle” section, below. If you have a bias tee already, you may be able to use that provided it is suitable for use at around 740 MHz. Power the LNB with 12V to select vertical polarisation with 9.75 GHz LO, ideal for the narrowband transponder of Es’Hail-2.

The centre of the Es’Hail-2 narrowband transverter downlink is 10.489675 GHz. If we use the 9.75 GHz LO, we expect to see an intermediate frequency (IF) of 10.489675 − 9.75 = 0.739675 GHz = 739.675 MHz.

We are expecting to see signals in the 250 kHz bandwidth centred on 739.675 MHz. On an RTL-SDR dongle waterfall, you should see an increase in the noise floor between when the LNB is powered and when it is unpowered. If you do not, check your wiring. My LNB draws around 100 mA.

Tweaking the dish

As we alluded to earlier on in the dish section, we need to tweak the dish’s alignment. But to do this, we need to be receiving signals, and then take an opticians approach, of ‘better or worse’ with very tiny adjustments each time.

If you have followed these notes so far, you will have a receiver, or spectrum analyser or similar centred on 739.675 MHz, with your LNB in horizontal polarisation and a 9.75 GHz LO frequency.

The Es’Hail-2 narrowband transponder has will appear as a wide lump of raised noise floor, similar to what you see below. The raised bump is the transponder bandwidth, and the two signals present are the upper and lower band markers. They send CW and binary data, too. The transponder bandplan is outside the scope of these notes, but you can find it on the
AMSAT-UK Es’Hail-2 website. It roughly follows the usual bandplans for all-modes, with CW at the lower end, then digital modes, then SSB at the top.

Es’Hail-2 Narrowband Transponder Downlink

When tweaking the satellite dish, adjust for the largest (highest) bump above the noise floor. You equally want the two beacons to be high above the transponder noise floor. Very slowly, in small steps, adjust the azimuth (rotation) of the dish stopping at the point that maximises the signal. Then adjust the elevation (tilt) of the dish to further maximise the signal. If you do not see anything on the waterfall, then you may need to make larger sweeps of the dish to find the satellite in the first place. This is where your care previously helps. As mentioned before, this is the trickiest step.

LNB Tilt/Skew

Once you have a good signal-to-noise (high bump above the noise with large beacon signals), you should adjust the LNB within the dish mount.

If you can electrically switch polarisation to horizontal (by feeding the LNB with 18V) then you should do this. With the antenna now ‘cross-polarised’ to the narrowband transverter, rotate the LNB to receive the minimum signal you can. What you are doing is looking for the maximum amount of cross-polarisation. It is easier to adjust for the null than for the signal itself, and you will achieve a better adjustment this way. If you cannot switch the LNB polarisation electronically, then you should adjust for the maximum signal with rotating. Rotate the LNB towards the LNB tilt angle (for me this was −17.4°), going past that angle to ensure you find the minimum or maximum as appropriate.

You may also like to adjust your LNB backward and forward in the mount to try and find the optimum focal point, although this point is usually specified pretty clearly on the dish’s paperwork. Either way, with the LNB now in the correct polarisation (12V feed, vertical for the NB transponder), move the LNB backd and forth looking for the largest signal.

These steps may be difficult to do, as your body will cast an ‘shadow’ on the dish – either hide out of the way as you adjust, or, tweak and step back. You get the idea.

You’ve you’ve done that, bolt everything up tight. You’re good to go!

Receiving Narrrowband Modes

If we zoom in a little from the spectrum display we saw when aligning the dish; such that the markers are now on the outsides of the waterfall, we see more of a ‘band view’, and the transponder frequency response looks relatively flat. This screen-grab was also taken with several signals visible.

Es’Hail-2 NB transponder, showing 2 beacon signals, 4 SSB signals and a CW signal

As with any other SDR you may have used, clicking on the signals will allow you to demodulate them.

G4EML calls CQ and OZ2OE answers – signal variability caused by my error

Below, OH1ZAA calling CQ:

OH1ZAA calling CQ

OH1ZAA calling CQ and UN6PD returning

Receiving Digital Video Amateur TV

The Es’Hail-2’s wideband DVB-S2 beacon on 10.492,500 GHz is always transmitting video. This beacon was my very first reception of DATV. I am still finding out about this, so my experience here is minimal, but perhaps it is of some use. You should defer to the BATC’s Receiving DATV guide for detailed information.

Digital television has many different standards, as you might expect. The key factors are the modulation type (how data is encoded onto the RF carrier), sample rate (in samples per second), picture mode (DVB-S, DVB-S2, etc) and FEC (or forward error-correction). As well as this, streams have a PID (packet identifier) which identifies the program – all we need to do is set this correctly. The standard is set out in the ETSI EN300-468 specification if you want to learn more. You don’t need to.

Most amateur signals vary in the above listed parameters to what is used commercially. While a standard digital TV multiplex may be 8 MHz wide, radio amateurs typically use much smaller bandwidths, and what is called Reduced Bandwidth TV (RB-TV). Commercial receivers usually do not support these configurations, so a special receiver (the MiniTiouner by F6DZP and others) was developed from modules and allows fine control over all of the parameters associated with digital video transmission.

This remainder of this section concentrates on the MiniTiouner. However, there are two SDR based options available. I cannot offer any words on these, except to highlight their existence:

  • Lean SDR: A lightweight, portable software-defined radio (C++)
  • SDRAngel: SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube (C/C++)
  • DATV Express: Software and (discontinued?) hardware

The ‘MiniTiouner’ Receiver

The MiniTiouner by F6DZP and others is a USB tuner designed specifically for Amateur TV use which natively covers 143 MHz to 2450 MHz and is suitable to receive Es’Hail-2 and a number of other amateur bands with no modifications or additional up-converter. It is available from the BATC and other sources. See the BATC MiniTioune page for more details.

As a short note, the term ‘MiniTiouner’ with an ‘R’ at the end refers to the hardware PCB; the term ‘MiniTioune’ (no ‘R’) refers to the software.

Most amateur TV transmissions are made using Reduced Bandwidth DATV (RB-TV) with a bandwidth below 1 MHz. To date, 90% of the DATV transmissions on Es’Hail-2 (QO-100) have used RB-TV.
The MiniTiouner comes as a kit from BATC, and took me roughly an hour to build. Follow the build notes on the BATC website.

I then had to register on the VivaDATV forum to obtain F6DZP’s MiniTioune software (post link here) – I’m not sure why I had to register, but, I did. At the time of writing, this is software version 0.8s. For instructions on how to install this, visit the BATC’s MiniTiouner Software page. Don’t forget to install the accompanying USRC and LAVFilters packages, too. I did; you get no video! 🙁

An issue that I faced is that the USB connection between my computer would drop randomly causing the MiniTioune software to crash. This is supposedly solved by using a Lindy Cromo Lindy cable USB 2.0 type A/mini-B 1m long, but after spending £10, the issue still persists.

Before you fire up the software, open the minitioune.ini file and edit the following fields: OM_ID (callsign), ForumPassword (forum password), Locator (QRA locator), Ville (location) and anything else you see fit. You’ll probably want to come back to this file from time-to-time.

The ‘MiniTioune’ Software

When the software first starts, you’ll see something like the image below – just wait a few seconds:

MiniTiouner Splash Screen

After a few seconds, you will see the main MiniTioune program window:

MiniTiouner in ‘Expert’ mode receiving Es’Hail-2’s main beacon.

My advice would be to make sure you can receive the beacon before you move on to anything else, since the beacon has known parameters.

Receiving the Es’Hail-2 DVB Beacon

The first thing to note is that the wideband transponder is horizontally polarised, so you will need to supply 18V to your LNB to switch polarisation, or, rotate the LNB 90° in either direction. The MiniTiouner hardware has two jumpers which allow you to feed the input DC supply voltage into the LNB F-connectors via the Serit module. These are labelled LNB_A1 and LNB_A2 on the PCB, and can be found between by the DC input power jack. Then the whole MiniTiouner receiver is powered from either 12V or 18V as required.

Next look to the top-left of the main MiniTioune window; you’ll see a place to enter the sample rate (SR) and a frequency (in kHz). The beacon frequency is centred on 10.492,500 GHz, and transmits DVB-S2 with 2 MS/s QPSK modulation using 2/3 FEC forward error correction.

If we enter 10492500 kHz into the frequency box, we also need to tell the MiniTioune software to accommodate for the frequency translation the LNB is performing. It is enough to say that the LNB provides a frequency offset of −9.75 GHz, so we indicate −9750000 kHz (note, minuses).

We’re told the sample rate is 2 MS/s, so we can enter this as 2000 KS/s in the SR box at the top left. Make sure you have selected either AUTO or DVB-S2 for the mode, and that you have the checkbox for 2/3 FEC enabled.

Looking at the BATC’s Wideband Transponder Monitor, it is possible to see the beacon transmission on the left at 10.492,500 GHz. You may also see other transmissions besides the beacons and we’ll look at that those in the next section.

Es’Hail-2 wideband transponder monitor with beacon clearly visible on the left

As you enter the sample-rate and frequency, you should start to see some of the indicators at the bottom left of the MiniTioune window turn from red to green. Once the Viterbi decoder error goes to 0% (bottom centre-right), you should see video and hear sound! If you do not, then toggle the Auto PID button in the top right. This makes MiniTioune decode the incoming stream to find the video and audio transport streams and understand their codecs.

The clip below is a short section of the Es’Hail-2 DATV beacon:

Clip from Es’Hail-2 DATV beacon from wideband transponder

Receiving the Es’Hail-2 DVB Beacon

The process of receiving an amateur transmission is very similar to receiving the beacon. The only difference is that you may not know the properties of the signal being transmitted. In this case, I have found that using the BATC’s Wideband Transponder Monitor to look at the signals can be very useful to help guess. You can see from the spectrum that the signal is much narrower than the beacon, so we can take a guess at the sample rate by knowing a few commonly used values. 125, 333, and 500 kS/s seem to be common, while some use 1000 kS/s in the simplex DATV window.

BATC wideband transponder monitor

If you leave the common FEC options ticked and use AUTO mode selection, the MiniTioune software will magically recognise things after a few seconds, if you have chosen the right combination of options. There is, of course, another way:

BATC wideband transponder monitor also includes a chat window

The BATC wideband transponder monitor page also includes a simple chat system, where users can advertise their settings. Above you can see F8CED and M0DTS advertising their settings.

Using a mixture of trial and error, as well as watching others talk in the chat, I have been able to observe a considerable amount of amateur test transmissions via Es’Hail-2.

LNB Bias inside an RTL-SDR Dongle

In order to tweak the dish alignment and also to receive narrowband transponder signals, I needed to power the LNB for use with an RTL-SDR Dongle. I had heard that some dongles have a bias tee included, and I was hoping to repurpose some of this since clearly it would only supply 5V.

I opened the New Gen RTL2832 SDR I had to look inside and noticed a DC bypass inductor to ground for static discharge, with capacitors leading to a DC blocking capacitor, limiting diodes and on into the receiver.

By standing the DC bypass inductor on end, and adding a decoupling capacitor on the now unused pad, I could create a very crude bias tee. I used a 1000pF and a 47nF capacitor to create some further blocking and add mechanical stability, and then I soldered on two power wires.

RTL-SDR Dongle modified to have a bias tee for LNB power

It doesn’t look pretty at all, but it does work, and is small!

Where next?

The next step is to get a transmitting station put together for 2.4 GHz. You may be interested in how I did this: 2.4 GHz TX with LimeSDR & EDUP WiFi PA.

WSPR from the Car

At work, I park on the top of a huge multi-story steel-frame carpark. I often wondered about using it as a ground for a HF vertical (yes, I’m that much of a nerd). I hatched a plan to give it a try!

Using a 80m HF mobile whip (borrowed from Rob M0VFC) fixed to a large triple-magmount base on the roof of my car, I was able to connect a ground strap using some wire to the car body, and trim the HF whip in to resonance with my EU1KY Antenna Analyser (which is awesome!). The plan was to connect to the ground strap to the carpark frame when at work.

In previous projects, I had made a WSPR beacon in a small project box with an OLED display on the front. The beacon takes a GPS antenna on SMA and outputs WSPR transmissions on frequency for direct connection to a low-pass filter and antenna.

Over the course of a day, I left the WSPR MEPT transmitting from the car, parked on my driveway, and achieved some impressive distances considering how inefficient these antennas are. The transmitter was set to a power of 1W, and I wasn’t expecting great results considering the antenna compromise. The results were not bad for something less than 3 metres long on the vehicle roof!

The transmitter was powered from a 12V/12Ah sealed lead acid battery with a low-voltage cut-off relay.


A table of spots, sorted by distance can be found below:

TimestampMHzSNRGridReporterRGridkmaz# Spots
 2019-02-07 23:48  3.570109  -27  JO02  K9AN  EN50wc  6536  297  2 
 2019-02-08 04:14  3.570109  -28  JO02  W8AC  EN91jm  6004  294  5 
 2019-02-08 05:52  3.570108  -22  JO02  KD2OM  FN12gx  5664  293  29 
 2019-02-08 06:46  3.570109  -26  JO02  N2NOM  FN22bg  5615  291  3 
 2019-02-08 04:42  3.570113  -26  JO02  N2HQI  FN13sa  5598  292  24 
 2019-02-08 06:22  3.570110  -25  JO02  KK1D  FN31vi  5445  288  6 
 2019-02-08 04:02  3.570109  -25  JO02  WA9WTK  FN42fk  5327  288  2 
 2019-02-08 04:02  3.570106  -26  JO02  EA8DBU  IL18oe  3073  215  6 
 2019-02-08 05:52  3.570109  -20  JO02  EA8BFK  IL38bo  2923  211  64 
 2019-02-08 03:32  3.570110  -25  JO02  OH8GKP  KP24rt  1949  36  42 
 2019-02-08 05:52  3.570109  -26  JO02  LY2BGP  KO24ao  1536  72  26 
 2019-02-08 04:02  3.570109  -24  JO02  IZ6BYY  JN62wv  1435  133  42 
 2019-02-07 23:16  3.570111  -22  JO02  9A3ZI  JN86fj  1305  115  10 
 2019-02-08 17:22  3.570112  -20  JO02  OE6PJD  JN77uc  1213  114  10 
 2019-02-08 03:54  3.570110  -17  JO02  OE3GAS  JN88bn  1155  106  7 
 2019-02-07 20:22  3.570113  -13  JO02  F5OWL  JN33cc  1113  157  3 
 2019-02-08 03:26  3.570111  -25  JO02  IW2DMO  JN45uj  1013  138  44

Some VHF Tinkering

On the way home from work on Friday, my attention was brought to my mobile APRS setup, which was showing received callsigns from Germany, Netherlands, Belgium and France. Once home I decided to connect up my KAM KPC-9612+ TNC to an old Kenwood PMR and see what I heard. The antenna is just a loft-mounted Diamond V-2000, so nothing fancy. About 1 metre of RG58 into the radio. The map is pretty impressive, showing what good conditions were around on VHF at the time. The orange circle shows the ALOHA circle (local reliable APRS network size) – more here – basically the area to which your transmissions would normally be in contention with.

 

My usual small station EME setup consists of two 9 element DK7ZB Yagi’s bayed at 13 metres. Combined with a Yaseu G5400 Az/El, K3NG’s Arduino rotator interface and YO3SMU’s PstRotator, this is a reasonable attempt at a small station EME setup. Of course you can do it with less, but, it becomes somewhat laborious. With the moon tracking facility of PstRotator, I can set up once, and allow the software to keep the antennas pointing in the correct direction.

The antennas look like this:

At least we don’t have neighbours!

In the shack, I used my Icom IC7100 (since my Anglian transverter was having issues), a homebrew 1kW solid state amplifier, and PGA144 preamp based on the PGA-103+.

Most of the spare time during the weekend was taken up by relearning everything I had forgotten since I last tried EME and VHF data modes. I was able to confirm the setup was working correctly using GB3NGI beacon as well as some others on the make-more-miles on VHF site. Within around an hour I was successfully receiving SP4KM, ZS4TX and K5QE via the moon on 144 MHz.

The screens above are rather busy with the rotator controller, NetworkTime program for keeping the PC clock synchronised via NTP, and CAT7200 which usefully translates the DTS/RTS line style PTT interface to a newer CAT/CI-V instruction.

As mentioned, when the moon was below the horizon, I also played around with other modes. SSB resulted in few contacts, but more than the ‘none’ I managed on CW. I quickly found my feet again on FT8, working into Germany, Denmark and the Netherlands. At the end of the weekend, PskReporter was showing the below map for M1GEO on VHF:

I have promised myself two things:

  1. To get on VHF more often. Well, do do more radio, basically!
  2. To finish the 144 MHz amplifier off. I have the basic functionality, but it’s lacking a user interface and other nice features. The hardware is there, but there’s no translation onto the nice graphics LCD.

Installing Eclipse IDE and PyDev onto Ubuntu 18.04

This page assumes some basic familiarity with Linux. It assumes a clean install of Ubuntu 18.04 and installs Eclipse Photon. I install the CPP version, but you’re free to choose when the option presents itself!

Update the OS

First thing to do is to update the operating system. This is easily achieved by running the following two commands:

sudo apt update

sudo apt upgrade

These commands may take a while to complete, depending on what there is to update and how fast your internet connection is.

Installing Java Development Kit (JDK) 8

Since Eclipse is written in Java, we will need the latest version. I’m not sure if the Java Runtime Environment (JRE) alone is enough, but I have installed the full JDK anyway.

Firstly we add the third party JDK PPA repository and update the package manger index

sudo add-apt-repository ppa:webupd8team/java

sudo apt update

Next we must actually install the JDK:

sudo apt install oracle-java8-installer

This will pull in a few extra packages, such as java-common, oracle-java8-set-default (which makes sure that this installed version of Java is the system default), font packages and so on. You’ll be guided through the Java 8 installation with an ncurses based installer:

You must accept the Oracle Binary Code licence. The download for Java 8-1u171 was 182 MB. To confirm the installer completed correctly, scroll up in the terminal window. You should see something explaining that the installation finished successfully. To confirm this, and check the version installed, you can run the following from the terminal:

javac -version

javac 1.8.0_171 [or similar result expected]

Installing Eclipse

The Eclipse installer can be found on the Eclipse project download page: https://www.eclipse.org/downloads/. At the time of writing, the Eclipse Photon installer was 45.9 MB. I downloaded it using the Mozilla Firefox browser, and saved the installer into my user’s download folder (/home/geosma01/Downloads/).

Once downloaded, switch back to your terminal program, and change directory into the downloads folder and extract the downloaded TAR/GZIP archive and change directory into it:

cd ~/Downloads/

tar xvfz eclipse-inst-linux64.tar.gz

We’re now ready to run the installer. If we change into the newly extracted folder and then run the installer, we should be good to go:

cd eclipse-installer

./eclipse-inst

I ran into trouble installing Eclipse as root, so I install it into my own user space: ~/eclipse/cpp-photon

Accept any licences it prompts for:

Once the installer has finished, you can start Eclipse by pressing Launch. We’ll make a desktop shortcut in a few moments…

And eventually…

Now we have Eclipse running, we should get ourselves an icon to easily start it.

Creating a Menu Icon

Next we will create a menu shortcut. We will create this using a basic terminal-based text editor (nano). Running the following will open the file:

nano ~/.local/share/applications/eclipse.desktop

Then, copy and paste the following, as you see appropriate – you should change my username (geosma01) to your own at the very least:

[Desktop Entry]
Name=Eclipse CPP Photon
Type=Application
Exec=/home/geosma01/eclipse/cpp-photon/eclipse/eclipse
Terminal=false
Icon=/home/geosma01/eclipse/cpp-photon/eclipse/icon.xpm
Comment=Integrated Development Environment
NoDisplay=false
Categories=Development;IDE;
Name[en]=Eclipse

If all has gone well, you’ll see something like the following inside the menu:

Installing PyDev

PyDev can be easily installed through the Eclipse Marketplace. From inside Eclipse, click Help on the menu, and select Eclipse Marketplace. You should be presented with the following window. You can then enter “pydev” into the search, and then click Install on the entry shown below:

Confirm your selections, accept the licence conditions, and you’re good to go! Once installed, click on Restart Now and you’re done!

Once restarted, you can open a PyDev Perspective by selecting Window from the menu, selecting Perspective > Open Perspective > Other and selecting PyDev:

You’re ready to go!