Category Archives: Ham Radio

Finding Local Unactivated POTAs

With Parks on the Air (POTA) becoming a relatively new thing in the UK, I decided to activate a few local parks. It quickly became apparent that many of the local parks had never been activated before. I decided that I would concentrate on those.

I suspect that they hadn’t been activated before because they required a bit of a walk to get to. What with it being winter and wanting to get out of the house, I kitted up my backpack with my Icom IC-705, my EcoWorthy 8Ah LiFePo4 battery (see my notes on IC705 power vs voltage) and a few antenna options. Over the course of a few evenings, heading to a different park each night after work, I activated the parks I had seen on the POTA App Map. I wanted a way to find any parks that were local, but that hadn’t been activated.

With services like SOTL.AS for Summits on the Air (SOTA), it’s easy to filter the map to only show specific things, like removing summits you’ve activated, or setting a minimum number of activator points, or showing only summits that haven’t been activated before. Unfortunately no such service exists for POTA (yet). If you’re reading this and considering doing something similar, check out SOTLAS first 🙂

The POTA website does offer all_parks.csv (list of all POTAs) and all_parks_ext.csv (list of all POTAs with location information). However, neither of these files have the information I was looking for: the number of activations or attempted activations. Disappointing, but I didn’t give up that easily! I did some digging!

By searching the POTA ParkList for parks in my country, in my case “GB-ENG”, I was able to see the information I needed. At this stage, you could just sort the columns by activations, and skim through looking for close places. However, I wanted to do better than that! I wanted to create a program that would list them by how close they were to me.

The observant amongst us will have noticed the “DOWNLOAD” button, that yields a CSV file for us. You may have to be logged in to see this, as it contains information personal to you (your activations, and hunts). I missed this the first time and subsequently copied and pasted the information manually from the webpage into a spreadsheet and exported it to a CSV which took about 5 minutes!

Regardless of how you chose to obtain the information, you’ll end up with a CSV file. Mine was called “England.csv”. The data inside is really useful and includes the latitude and longitude of each marker. Any program would just need to work out how far each site is from a given location (say, your home QTH) and then sort the output by distance. It could filter on attempts or activations, too.

The Program

So I set about writing a simple Python program (really more of a script) that lets you explore your POTA CSV file and (most importantly for me) find the closest unactivated POTA parks.

The code can be found on GitHub: https://github.com/m1geo/POTA-Finder. It runs in a command terminal window on any OS that will run Python3. It has a simple help function, and minimal error checking as it was an evening project. The source code should be easy enough to tinker with should you wish to add, change, remove functionality.

Calling the program with the -h help flag will output the above information to help you get started. You can set the --max-activations to 0 to show unactivated parks, like this:

You can also use the shorter command-line options as below, and supply a lat/long as here:

And with that, you can pack your kit in the car and head out for a POTA activation…

Measuring the Icom IC-705 RF Power vs DC Input Voltage

Introduction

In the summer of 2024 during a Camb-Hams trip to Friedrichshafen, I was drawn into the world of SOTA (summits on the air). A key requirement for SOTA activations is a compact, lightweight and effective station.

When I got started, I was able to use Rob M0VFC‘s Elecraft KX2 portable transceiver. However, from our third SOTA activation of the holiday I was taking my own Icom IC-705. My CW is not great, and so I was activating on SSB mainly on HF (and some FM on VHF/UHF). The IC-705 was a little easier than the internal microphone on the KX2. Rob M0VFC was kind enough to loan me use of his 3S LiPo battery, but I noted that as soon as the voltage dropped a little from full (4.2V * 3S = 12.6V), the IC-705 power was reduced considerably. This was also apparent on the KX2, but isn’t usually an issue because the SOTA pro’s use CW. Anyway, a challenge to know what I needed to do was born… I needed to understand how the IC-705’s RF output power changed as a function to the DC input voltage. I set up a simple test…

The radio specification states 13.8V ± 15%, which gives us an absolute voltage range of 11.73V (13.8V-15%) to 15.87V (13.8V+15%).

Setup & Method

The test setup was simple. My IC-705 connected to a high quality lab power-supply (Rigol DP821), accurate voltage and current readings for DC input power (two Keysight 34401A multi-meters) and a way to measure RF output power (Keysight N9010B spectrum analyser & 30dB attenuator).

The input voltage and current could be measured and adjusted in real time and the input power would be calculated for each test. The RF output power was measured at the frequency of interest.

During all testing the external battery was removed from the radio so that the battery charging current did not confuse measurement. To generate RF, the radio was set into RTTY mode at 100% power (thus creating a pure tone at full power). Each test was automated, and tested quickly to avoid heating issues in the PA.

Initial Results

I measured things at both ends of HF (160m and 10m), and on 6m, 2m and 70cm. The results were consistent with the drop of output power I had noted. More importantly for the initial results, I could see that the behaviour was consistent across all bands, so I could concentrate testing on a single band, and take more detailed steps without creating extra work.

In every test, the power above 13V was very consistent, likely due to ALC on the PA. The efficiency slowly dropped as the input voltage increased. Below 13V, the power was observed to fall.

Further Testing

After the initial testing, I started digging a bit more into what happens between 11 and 13 Volts input. Working downwards from 13V there is a clear linear drop-off until around 11.8V where the software senses the falling voltage and drops to the 5W mode. At 11.6V the radio alternates between the 5W battery limit and the higher power (about 7.5W). This 11.73V threshold that the specification mentions (13.8V-15%).

For useful purposes, we need to keep the DC IN voltage above 11.8V (and below the maximum of 15.87V).

Battery Choices

Assuming we want to keep with a modern battery technology (so, excluding NiCd and NiMH), we have two obvious choices of lithium-ion battery:

  • Lithium Polymer (LiPo) battery
  • Lithium Iron Phosphate (LiFePO4) battery

For each battery pack, there are different combinations of series (S) and parallel (P) configurations, detailed using this “S” and “P” notation. For example, you may see a “3S4P”, referring to three series sets of four parallel batteries. Parallel-ing the batteries increases current handling and overall power, and the voltage is unchanged. Series-ing the batteries increases the voltage and overall power, but the current is unchanged.

Each battery technology has a different nominal voltage (the assumed cell voltage), charged voltage (the maximum cell voltage) and the discharge voltage (the minimum cell voltage). A battery will often have a BMS (battery management system) to take care of protecting the battery from over-charging, over-discharging, balancing (keeping the voltage across series cells equal), etc., but these are out of scope for this page.

LiPo

Typical Lithium Polymer (LiPo) cells have a nominal voltage of 3.7V. Fully charged, each cell is 4.2V. Fully discharged, each cell is 3.2V.

See more on LiPo cells on Wikipedia.

LiFePO4

Typical Lithium Iron Phosphate (LFP, or more commonly LiFePO4) batteries have a nominal voltage of 3.2V. Fully charged, each cell is 3.65V. Fully discharged, each cell is 2.5V.

They have a higher cycle rating than standard LiPo batteries, meaning they can be charged and discharged more many more (>60% more) times before they start to fail.

See more on LiFePO4 cells on Wikipedia.

Why not use X?

I have tried to limit my choice to batteries that are widely known and in production. I have seen AliExpress selling Sodium-Ion batteries and other similarly novel battery technologies, but without easy access and known reliability, I didn’t include them.

See more experimental battery types on Wikipedia.

Battery Comparison

From the IC-705 testing and the specification as well our two battery choices, we can see what options are available.

Extrapolating from the two battery types above, we can see that configurations in the right kind of area are as follows:

Unfortunately, there is no ideal solution with these battery technologies. It is kind of disappointing that Icom did not consider this when designing the radio – a small design tweak to take 17V would have allowed LiPo 4S battery packs to be used. Instead, the best option is LiFePO4 4S. However, as the battery discharges, the lower voltage becomes an issue.

From the tables above it is possible to see that the only real options are LiPo 3S and LiFePO4 4S since the other combinations have the ability to supply excessive voltage (>15.87V) to the radio. Of these two, the LiFePO4 4S has a higher maximum voltage (14.6V vs LiPo 3S at 12.6V). For this reason, the LiFePO4 4S is my preferred choice. LiFePO4 has the added advantage of a higher cycle count and increased safety too, so those are further marks on the LiFePO4 scorecard.

The voltage decision is made: LiFePO4 4S. Now for the capacity of the battery…

Battery Capacity

The 4S battery fixes the pack voltage to a nominal 12.8V. For the capacity, it’s just a case of estimating how much current the radio will draw and then using this to infer the battery capacity you require in “Amp-Hours”.

The IC-705 draws around 220mA (0.22A) in receive from the external power supply at 12.8V (our nominal LiFePO4 4S voltage). If we would like the radio to run on receive for an evening, say 6 hours, we’d need a battery to run 0.22A * 6h = 1.32Ah.

In reality a SOTA activation will be around 50% transmit (at ~2.1A) and 50% receive (at ~0.22A). However, the activation will probably be quite short, perhaps 30 minutes, perhaps 2 hours. By working out the average current used during an hour, an approximate runtime can be calculated for any battery or a battery capacity specified for a given desired operating period.

The final, and perhaps most important consideration for battery capacity is weight! The typical way to expand the current capability of the battery is to parallelise cells; which in effect means doubling the number of them – in our case, doubling or 4-series-connected cells, thus creating two interconnected strings of 4 cells, totalling 8 cells. This becomes a 4S2P battery pack as we discussed earlier. The capacity is doubled. But, so is the weight!

So, what did I buy?

In the end I bought a LiFePO4 4S1P battery made from 3Ah cells. This gives me a 12.8V nominal, 3Ah battery which will run the IC-705 on receive for around 13 hours, or a mix of SSB TX and receive for around 4 hours.

Feeling Brave? Try a LiPo 4S?

Shortly after writing this, I was on a discussion online and someone told me that they had run their IC-705 on a 4S LiPo pack for years and the radio had been fine. They mentioned that it stops charging the battery when the input voltage was above 16V (already out of spec) but that they had happily used 16.8V inputs (actually in excess of 17V) with no damage to the radio.

In a moment of madness, I tried 17V input and noted that (a) the IC-705 does stop charging the internal battery, (b) the HF noise floor was quieter (likely due to the battery charger powering off) and (c) that the radio didn’t explode and still delivered 10W. The radio’s voltage readout caps at 16V on the meter display and the voltage quick menu shows “Hi Voltage” instead of a number. See the two images below showing the difference at 16.9V input (from my 4S LiPo pack).

Maybe not the best thing to do long term, but it could help get you that that much needed QSO on a wet and windy SOTA…

Marconi 2955 Firmware Upgrade

At Friedrichshafen Ham Radio flea-market 2022, I bought an old tired Marconi Instruments Radio Communications Test Set 2955 which I have spent a bit of time restoring. I now have it passing all of it self test, and the functionality seems good.

During the time I spent digging through the service manuals (link here) for the unit and my time exploring the Marconi Instruments GroupsIO, I noticed there was an updated firmware for the unit. Mine shipped with the very earliest V10 firmware. I saw ROM files in the forum Files section for V16. There are some upgrades from V10 to V16, though, rumour has it that anything above V13 isn’t much of an upgrade unless you’re using some of the cellular testing accessories. The V16 firmware files can be found here inside the Marconi Instruments GroupsIO Files section (along with many other useful things). Definitely a very useful group with knowledgeable people inside!

Below, we see the original version 10 firmware, dated 1986.

The EPROMs which need upgrading are IC9, IC10, IC11 & IC12 on the processor board. These are three of 27C128 128kbit (16kByte) EPROMs [IC9-IC11] and one of 27C64 64kbit (8kByte) EPROM [IC12]. I replaced all mine with the larger 128kbit 27C128 parts, copying the 27C64 binary image into both the lower (offset 0x0000) and upper (offset 0x2000) halves of the EPROM, so irrespective of the state of pin A13, the data output would be the same.

Rather than UV erase the original EPROMs in the machine, I purchased additional ones online (I got mine from AliExpress, but eBay, etc., all sell them). Mine ended up being brand new, never used, but previous ones I’ve bought were pulled from old equipment and needed erasing beforehand.

Using an EPROM programmer, I programmed the four 16kB ROMs onto the blank chips. This took around 10 seconds each using my TL866ii+ programmer.

To change the EPROMs in the Marconi 2955, you need to remove the top cover to be greeted with the insides of the 2955. The CPU board (AB4) we need is inside the locked metal cover. These are rotate-clips, not screws, so go easy on them!

Once you’re inside the metal screening box, you’ll see some boards stacked into the main motherboard along the bottom. We need CPU board AB4, which is the 3rd board up from the bottom of the picture (closest the screen). Use the ‘ears’ on the side to help lever the board from the motherboard socket below and slide the board out.

The CPU board AB4 is shown below. You can see the manufacturer stickers on 3 of the 4 larger EPROMs and the smaller flash EEPROM. From left to right, the 4 stickered devices are IC13, IC12, IC11, IC10 and the final, rightmost is IC9 with missing sticker (it had fallen off inside the machine).

IC13 is a flash chip (Xicor X2816AP) with your unit’s calibration data stored within – don’t overwrite this one any online! You can of course read/back up your calibration data if needed. I decided to copy my flash EEPROM IC13 into a new part, so that I could keep all of my older V10 PROMS together. I was worried that if something went wrong and the V16 firmware had ‘updated’ the formatting of the data in IC13, I may not be able to go back. I used a CSI CAT28C16AP that I had in the shack as I wasn’t originally intending to touch IC13. If you decide to replace IC13 also, I would suggest getting the exact part used in case it matters. These early flash chips are a bit fussy with timings, etc., and so interoperability isn’t guaranteed. That said, mine has been fine.

The 5 devices were replaced. I used a label printer to sticker each ROM as I wrote and verified its contents. The original chips were placed inside an antistatic IC tube, and wrapped in ESD-safe bubble-wrap , which I tucked inside the machine between the screened box and the power supply cabling on the motherboard. They sit nicely there, can’t move, and will be available should anyone wish to revert the machine.

After reassembling the unit, I fired the test-set up, and to my relief it booted straight up!

I was able to confirm the firmware upgrade had worked – below we see the software version is now version 16 (dated 1992).

Pressing the self-test button confirmed the basically functional. Excellent!

Symmetricom GPSDO Enclosure

While tinkering with a homebrew GPSDO project, I spent a bit of time searching the depths of the internet for information and parts for my project. I found a PCB for a Symmetricom GPSDO (specifically the Symmetricom 089-03861-02 as per the PCB silkscreen in my case, although the firmware reports itself as 090-03861-03). The board was cheap because the OCXO was missing – I suspect it had aged beyond where the error voltage range was specified, making it unusable. But the board was around £15 GBP delivered from AliExpress, so I took a chance on it based on the fact it had a Furuno GT-8031F GPS receiver which is a GPS module specifically designed for timing applications which “delivers highly accurate GPS timing”. The module also had a CPU (Renesas F2317VTE25V-H8S/2317) with accompanying flash and RAM ICs as well as a Xilinx Spartan-3 FPGA (XC3S200).

Besides the missing OCXO module, my board worked perfectly. I was able to piece most of the information together from the following two resources:

I saw that some people had put their units into Hammond Manufacturing project boxes, and that gave me a few ideas. It would be nice to box the unit up with some ancillary electronics to share the UART (57600 baud, 8N1) over Ethernet TCP/IP. However, my experience of UART to Ethernet modules has always been poor and friends reported similar, so I opted for an FTDI-based USB interface (namely the FT232RL, as the cheapest/easiest part during the chip shortage of 2019-2022). I was tempted to use a Maxim MAX232 device to perform the necessary conversions, but, in the end opted for two NPN transistors – a bit hacky, but much cheaper. I may well come back to the Ethernet option in the future.

The carrier takes 5V at around 2A input on a 2.1mm x 5.5mm DC power socket, a USB-B connector and holds five LEDs: four main LEDs from the GPSDO (which are connected to test-points on the PCB, I can’t find the LED signals on any connector), plus one LED from the FTDI device showing USB activity.

The image below shows where the LED signals are taken from. For reference, the big IC in the centre is the Xilinx Spartan FPGA:

The LED signals are all common anode, fed from +3.3V taken from the board. The LEDs are fed through a resistor, and the individual cathodes connect back to either the CPU or FPGA through another of the wires:

  • RED: +3.3V supply used to power the LED anodes
  • BROWN: Alarm
  • WHITE: Activity
  • YELLOW: Heartbeat (DS2)
  • ORANGE: Error (DS1)

There are two other LED signals (DS3 and DS4) which aren’t connected.

From here, I created a carrier board which had the correct mounting holes for the Symmetricom module, and offered front LEDs to show status, an easy 5V interface and a USB-UART interface to the module control port. The final board looks as below:

With the module fitted, the board looks more like the following. Note, this was an earlier version of the PCB:

The project was designed to fit inside a Hammond Manufacturing 1455N1601BK case which takes a 160mm long by 100mm wide PCB, and the designed PCB fits the case nicely. By default, the Hammond case comes with either aluminum or plastic end plates, but I went to the effort to make PCB front and rear plates to enclose the case. Using PCB meant I was able to use tools I was familiar with to create the end places, and use the same order as the main carrier PCB. The copper on the PCB could be used to create a metal Faraday screen to enclose any electrical switching noise, and the silkscreen could be use to add legends, logos and decals.

I prototyped the designs as below in the PCB package and then used my laser cutter to test them out for fit. A test fit of the front panel is shown below:

The below picture shows the PCB end boards as they arrived and the cardboard cutouts. There are some small tweaks, between the two, but overall the process worked well. One thing to note is that the internal cutouts for the BNC connectors are a little bit tight – in future I need to add an extra 0.5mm or so clearance (in addition to the 0.5mm clearance I left already). However, the connectors pushed in even if a little tightly.

Final assembly went well, and I am very pleased with the results:

Laser engraving metal using zinc spray

While looking for a way to create front panels and detailing on homebrew equipment, I was pointed to a YouTube video by Mark Presling entitled Metal Finishing With Mark – Metal Engraving 101.

In the video, Mark explains how cold galvanizing zinc spray, when ‘excited’ by a laser, burns at a high temperature to permanently mark the surface of the material onto which the zinc was sprayed. Mark suggests that this only works on stainless steel, however, other videos show how it can be used on ceramics, glass and similar substrates to burn or melt the substrate. I’m not exactly sure of the process, but, it certainly does leave a controllable, visible mark on the surface, which is exactly what I was after!

The box above shows markings for the 144 MHz antenna, GPS antenna, and status LEDs for an APRS transmitter I happened to be working on at the time. The effect is to leave a darker surface on the Hammond diecast box, which (at least to my testing) is very hard wearing and does not come off with use of solvents…

Here’s how

Firstly you’ll need to coat the surface to be etched with a liberal spray of zinc cold galvanizing compound. I used MOTIP Zinc Spray because it was the cheapest I could find on eBay and it works just fine – perhaps I got lucky but I’ve seen several videos on YouTube each swearing by a different make of spray, and they all appear to work. The important thing is that it is high in zinc. It’s an epoxy based aerosol, so, spray outside using the appropriate precautions. The spray should be quite thick, I spray on about 4 heavy coats one over the other and then let it ‘dry’ for around 5 minutes, just until the main solvent has evaporated.

While the spray is drying, design your artwork. I’m making a line drawing of the car along with my callsign to put on the box, mainly to see how it comes out – I’m keen to see if the line drawing comes out well or not – so watch this space! My design looks like the following:

Next we get to put the metal into the laser cutter. I use a 60W CO2 laser cutter, with the power set to around 50%. Others have reported success using 10W diode lasers. I found that 50% was about right for my machine. Going slowly helped a lot, I reduced the machine to around 5mm/second. Where possible, vector engrave as the laser power is continuous and more controlled than raster scanning, but for large areas, such as the text, raster scanning works fine. I always reinforce text with a vector engrave around the outer.

You’ll need to focus the machine as you’d normally do in order to cut the surface.

Once focused, frame the metal on the cutter bed. My laser cutter has a spotting laser which really helps with this.

At this point, you’re ready to go! When the paint is hit with the laser, it goes a very burnt/sooty black. The process generates some very nasty fumes, which you are well advised not to breath – this includes metal vapors which are incredibly dangerous.

Once the engraving is done, leave the work in the cutter’s fume extraction for a short while to be sure that the chamber is clear of toxics, and then remove the work. Mine looks like this:

The final stage in the process is to use a paint remover to remove the paint from the metal to reveal the final design. I use cellulose thinners, which works well. Be sure to do this in a well ventilated space, otherwise you end up with a headache (like I have now, as I write this!).

I think you’ll agree that the final result looks very clean and tidy, and has retained all of the detail present in the original design.

This process is quick and easy to do if you have a laser cutter, uses a cheap-ish (around £6) can of zinc spray, and produces good, repeatable results with minimal fuss. It’s very useful for creating front panels and similar.

You may also find that spraying another colour of paint over the top, and then sanding down very lightly will further accentuate the design.

Using CW Skimmer with Hermes Lite 2 SDR (and 10-slice Receive Gateware)

As I was unable to take part in the CQWW CW Contest 2020 due to Coronavirus COVID-19 regulations, I decided to experiment with using the wideband SDR of the Hermes Lite 2 SDR (HL2).

The process appeared to be quite smooth, however upon completion, the CW Skimmer’s Skim Server (SkimSrv) would report that the SDR connection had timed out. This transpired to be the hardware watch dog timer (WDT) timeout inside the FPGA on the Hermes Lite 2 – a precaution to stop the SDR from being stuck in transmit should the connection to it drop:

The solution was two-fold:

  • Update the HL2 gateware to a version allowing the WDT to be adjusted/disabled
  • Update the SkimSrv DLL plugin to a version using the WDT configuration

Getting the Latest HL2 Gateware

The gateware of the HL2 is a bit like what you may consider as firmware. Only, firmware is code that runs on a CPU or microcontroller, and gateware is code that configures the internal connections of an FPGA. This difference is immaterial here, but it is useful to know.

There are many versions of gateware available for the Hermes Lite 2. You are best advised to hunt around Steve Haynal KF7O’s project repositories for the Hermes-Lite2 under the gateware\bitfiles folder and find a version that best suits your needs. It is important to note that some of the gateware files in these folders are compiled with special features and are often not recommended for general use. Here I will cover two versions that I find interesting. The first is the standard gateware that supports both transmit and receive on 4 slices. The second receive only gateware swaps the transmit logic for extra receive logic, resulting in 10 receive-only slices.

One final note, the links I provide are for Hermes-Lite 2.0 build5 and later. If you have an earlier build, then there are different files required which are also present in the variants folders.

Standard 4-slice TX/RX gateware

I started off by finding the latest “testing” version of the HL2 gateware, which can be found in the repositories mentioned above. At the time of writing the original article “testing/20201107_72p5” was the latest version that was recommended for more general use. Since the original publication of this post, this has been rolled into the stable/20201212_72p8 release.

Once you have read the readme and are happy with the notes supplied with the version of the bitfile (the actual compiled file the FPGA is sent to configure itself), then you are ready to go.

Use stable/20201212_72p8/hl2b5up_main/hl2b5up_main.rbf (direct link to download) which supports up to 4 receiver slices, but also includes transmit and is suitable for general use – again – read the notes that are supplied! They are important. Whatever you chose, you may need to rename the “.rbf” file to “hl2b5up_main.rbf” to allow it to be flashed by SparkSDR. Quisk doesn’t seem to care what the file is called.

No transmit 10-slice receive gateware

My actual reason for changing the gateware was to try the 10-slice receive gateware for use with SparkSDR as a grabber for CW Skimmer, as well as all of the other digital modes (RTTY, PSK, WSPR, FT8, JT65, etc.).

For this, stable/20201212_72p8/variants/hl2b5up_cicrx/hl2b5up_cicrx.rbf (direct link to download) which supports 10 receiver slices but does not include transmit. This is meant for multiband skimmers.

Programming the Gateware

To program the gateware there are two options. I opted to use SparkSDR2 by Alan Hopper M0NNB. The process is easy and SparkSDR2 supports Windows and Linux. Run SparkSDR, press the discovery button (the rotating arrow on the left) until your Hermes Lite 2 is discovered, and then right-click and select firmware. From there, navigate from the downloaded and renamed file “hl2b5up_main.rbf” and press program. It should take around a minute.

You are also able to use Quisk by James Ahlstrom N2ADR. From the Config dialogue, select your radio, and then select “Program from RBF file”. The update should not take long.

Once the upload is complete, you should power cycle the Hermes Lite 2 SDR, and then check in your favourite program that the update was successful. I checked that the radio still worked, and I could see that the revision gateware had changed to what I expected within SparkSDR: “Version 72 Patch 5” (now superseded by stable 72p8) and that I did indeed have 4 receivers available. If you used a different gateware version, you should see different results here:

Installing the recompiled HermesIntf.dll

Originally, the HermesIntf.dll file was provided by Vasiliy Gokoyev K3IT on the GitHub page HermesIntf. However, this DLL does not take advantage of the extra WDT options available in the HL2 gateware we just updated. To make such updates, this required the original DLL supplied by Vasiliy K3IT to be recompiled, incorporating changes from Steve KF7O’s gateware.

I was beaten to doing this by Robin Davies G7VKQ, who kindly shared the rebuilt DLL file with me on Twitter (thanks!!). This DLL file can be downloaded here: HermesIntf_G7VKQ.zip. There’s also a version by KV4TT (released Jan 2021) which I would suggest using as it has some further tweaks for handling the watchdog timer. This file is then to be copied into the SkimSrv folder, typically located within “C:\Program Files (x86)\Afreet\SkimSrv\” on a modern 64-bit version of Windows. You will of course need to install SkimSrv by Afreet Software from here. A trial version is available – you’ll need the Skim Server, not the standard CW Skimmer.

Once you’ve copied the DLL into the installation folder, you are ready to fire-up the SkimSrv. SkimSrv has a little icon in the system tray, as shown below. Click on this to open the SkimSrv settings dialogue.

From here, you can use the Skimmer tab to set up the frequencies, sample rates, radios, etc., to use. This is all as you would expect and is pretty straight forward. Above, you can see I am using the 4 receivers available in the gateware version of the HL2 I chose. The image at the top of the page shows operation during CQWW CW 2020, where there were huge numbers of signals present on the bands.

You can connect a telnet program to “localhost” on port “7300” to connect to the Skimmer Server by default. This acts like a DX Cluster with spotting information.

Uploading to PSKReporter

One of the most easy way is use CW Reporter by Philip Gladstone N1DQ. Philip runs PSKReporter, and, offers the CW Reporter application to interface between CW Skimmer Server and PSKReporter. It is easy to set up, working almost out of the box, and translates the DX Cluster style Telnet spots into reports for PSKReporter.info.

One comment to note here is that you should have calibrated your receiver’s frequency before doing this – otherwise, you may be spreading incorrect frequency information.

Finally, it is possible to see, on a map, using appropriate filters, what stations I have heard on CW over the past 24 hours:

Click any image to enlarge.

Thanks to everyone who offered help and suggestions along the way!

Watching Propagation with FT8 Spots

Recently I purchased a Hermes Lite 2 SDR receiver (HL2 for short), and I am very impressed with it. One of the very nice features is that it lets you receive several chunks of spectrum (“slices” in SDR parlance) at once.

I also found an excellent piece of software for the digital-mode enthusiast called SparkSDR. SparkSDR can make use of the multiple slices offered by HL2, and thus allows for an infinite number of digital mode receivers to be operated using the HL2 slices. SparkSDR also offers the ability to transmit these modes, but for the purposes of this article, I am only concerned with FT8 reception.

Since FT8 came about, the use of WSPR for making test transmissions and observing receiving locations has pretty much died. However, with the widespread update of FT8 (and similar modes such as FT4, etc.) these transmissions may instead be used as transmitting beacons – when a station calls ‘CQ’ (makes a general call soliciting someone to reply), the software sending the FT8 call encodes the senders location (as a QRA locator) into the sent message. A typical CQ may look something like this:

CQ M1GEO JO02

Similarly, the system of another person responding to my CQ call will also encode the distant station’s location, resulting in a response which may look something like this:

M1GEO ZL1A RF72

Here “M1GEO” is my callsign, “ZL1A” is a DX (distant) station and “JO02” (and “RF72”) is the first part of the maidenhead locator, covering a 100km square, which looks something like this:

It is possible to use a 6-digit locator, for example JO02HG, which takes the accuracy down to a 10km square (see below). Although there are higher resolution locators than this, they are not often used.

Since we know (at least to within 10km) where a transmitting station is, it becomes possible to plot the stations on a map. You’ve probably seen this done before. Websites like PSKReporter and WSPRnet have been doing this for some time now.

The image above use different coloured markers for different bands:

Marker ColourBand
Blue40m (7074 kHz)
Green30m (10136 kHz)
Yellow20m (14070 kHz)
Brown15m (21074 kHz)

I have been recently enjoying the ability to use the same untuned vertical antenna with the same radio on different bands simultaneously (the HL2 lets you remove any band-pass filtering). This allows you to see, for example, that while 40m was good for working Germany, 30m had good propagation into Australia.

PSKReporter lets you filter by mode, band, and time, so you can see what times a given band is open to a specific location. Excellent for helping to fill those missing DXCC slots you may have.

It was interesting for me to see that much of the more remote stations were received on the lower bands, 40 and 30m, and not 20m as I would have expected:

  • VK7BO at 6:06 UTC on 30m
  • VK3ZH at 6:33 UTC on 30m
  • K6SY at 5:28 UTC on 30m
  • LU1WFU at 1:50 UTC on 40m
  • YE8QR at 14:46 UTC on 40m

Although at the time of writing (August 2020), HF conditions are quite poor, not all of the lack of performance on 20m can be explained due to the band conditions, since 20m is still open to South America and into Asia.

Animating the propagation

After looking at these static images, I wanted to see how things changed with time. Could I, for example, see when the best time to work the west cost of the USA would be? I decided to make a time-lapse animation. The animation runs for approximately 3 days, and includes the following FT8 decodes:

BandDecodes
40m (7074 kHz)72,404
30m (10136 kHz)33,871
20m (14070 kHz)156,636
15m (21074 kHz)3,453

It is clear to see sudden bursts of colour when a band opens, and to watch conditions change throughout the day. The dates here were for a Friday to Monday, so, there’s plenty of weekend activity.

I’m keen to further explore the possibilities of this.

180W PA Kit Construction

This page is about the Chinese RF_PA_250_3_HV_V201 by ZGJ 2018-01-25, version 201, commonly for sale on eBay, AliExpress, etc.

Sellers, you are welcome to link to this page in your listings.

This page is a mix of information from my own investigation as well as information found online (from several sources). It is useful for those purchasing kits for such amplifiers.

Bill of Materials

ReferenceQuantityPart
C1, C2, C8, C11, C19, C20, C21, C22, C24, C25, C261110nF (103)
C3, C9, C10, C13, C15, C16, C18, C468100nF (104)
R29110KΩ
R9, R10, R11, R1245.6Ω
C5, C122680pF Mica capacitor
C471100uF 25V
C7, C1421000uF 16V
L4, L52220uH Color ring inductance 
D91Red 2.54mm LED
D1019.1V Zener diode
(use with 24V power supply)
R301560Ω 3W
(use with 24V power supply) 
R7, R82220Ω 3W Power resistance
 120Ω 3W Power resistance
RV1, RV225KΩ or 10KΩ preset pot
L1113mm NXO100 magnetism ring (2 cores)
T1113×5 NXO magnetism ring
T21Copper pipe 2pcs, 0.75 square mm wire (60cm long), 18mm NXO magnetism rings (14 cores)
Q1, Q32IRFP250
U11LM78L06 or LM78L09
Insulating spacers2 
0.8mm enameled wire1 
0.75mm high temperature cable1 

PCB Dimensions

Schematic

Click image to enlarge. For transformer winding information, see below.

Build Information

Version History

  • V100 – First edition
  • V101 – Second edition: Output transformer cores reduced to 14.
  • V201 – Third edition: Power supply voltage is raised to 24V.

What you will need

  • 13.8V/24V 40A (or higher) power supply. It is better to have the function of current‐limiting protection. 6 square-mm (or more) wires for connecting the power to the amplifier board.
  • A signal source that is capable of outputting a 7 or 14 MHz signal at 10W.
  • A 50Ω dummy load rated for 200W (must be able to withstand continuous dissipation).
  • A heatsink suitable to dissipate the power of Q1 and Q3. (Recommended size: no less than 150x100x60mm).
  • A multi-meter that includes a 10A scale.
  • An oscilloscope capable of at least 20 MHz (or a spectrum analyser).

Before you start soldering

  • Wind the inductor (L1) and transformers (T1 and T2) in accordance with the information further on in this page.
  • Bend the legs on Q1 and Q3 (TO247 package) upwards, see the illustration below. Do not mount it to the top side of the board. Do not shorten the leads.
  • Tap the holes for Q1 and Q3. Screw should be M3 (3mm screw). Clean the heatsink, and remove any metal chips to avoid a short circuit.

Soldering

  • Start with smaller components first, working up towards larger components and finally plugs.
  • SMT parts can be easily soldered with an iron by adding a small amount of solder to one pad, and using tweezers to push the SMT part into the molten solder on the pad. Once cooled, add a small amount of solder to the other pads.
  • L1 and C5/C12 are not fitted at this stage.

Preparation for Powering

  • Check for any solder splashes, and poor or missing solder joints.
  • Check the DC power supply resistance to ground – no short circuits. If you have not fitted L1 yet, test from the other side of L1 pad.
(Note: in the V201 version, there are 14 cores in the output transformer, not 16 as shown here)
  • Check the LM78L06 regulator output resistance to ground – no short circuits.
  • Check the bias-set variable resistors. Rotate them as shown in the following diagram. Be careful, to rotate them to the correct end-stop. If you get this wrong, you will destroy the IRFP250N power MOSFETs. You are aiming for an initial bias voltage of 0V.
  • Mount the input transformer secondary load resistor (10Ω, 3W).
  • Solder in Q1 and Q3 and affix to the heatsink. Flow solder on the PCB trace between the MOSFET and the output transformer. This increases the current capacity of the track. See below.
  • Mount L1 as shown below.

Set bias currents

The aim of this section is to adjust the bias current to 100mA for each of the two transistors. When making adjustments, you must act slowly, and with great care – the current will do nothing for much of the adjustment range and then rise sharply. The transistors must be bolted to a heatsink during adjustment.

  • Double-check that the variable resistors are ‘zeroed’ as described above, such that when power is initially applied, there is no bias voltage present.
  • Connect a current meter in series with the positive power supply cable of the amplifier. Apply power.
  • Adjust the upper MOSFET quiescent (static) current using the upper variable resistor to cause an increase in current of 100mA (0.1A).
  • As before, now adjust the quiescent current of the lower MOSFET to further increase the current another 100mA. (A total increase of 200mA between both transistors.)
  • Solder in choke inductor L1 and mica capacitor C5/C12 if you have not already done so – the bias adjustment is complete.

Signal test

  • Connect a 50Ω dummy load to J2. The load must be capable of handling 200W.
  • Use an oscilloscope on a suitable range (or spectrum analyser with suitable attenuation) to monitor the signal at the load.
  • Connect the power supply and monitor the supply current for a moment. If the current is gradually increasing, the power must be cut immediately and check for suitable thermal connection between the power transistors Q1 and Q3 and the heatsink.
  • With the amplifier powered and no input, check the oscilloscope for signals. If there signals, immediately power off and debug the cause of self oscillation.
  • Input a small signal, gradually increasing the input signal power.
  • Observe the output waveform and the DC input current. In general, 100Vpp output across the output load corresponds to a power output of 25W into 50Ω. A load voltage of 141Vpp is 50W output, 180Vpp load voltage gives an output power of 80W, and 200Vpp at the load is a power output of 100W. Using an efficiency of 55% as an approximation, the expected DC power input can be calculated.
  • Check the temperature of the heatsink. If it is too hot to hold, then you will need to use a fan to cool the amplifier.
  • Check the output power is stable over time, and that there are no large fluctuations in output power for a fixed input power.

Finishing

  • Use a flux remover to clean any solder flux residue and tidy any poor solder joints.
  • Mount the amplifier into a box or case with suitable TX/RX switching.
  • Accompany the amplifier with a suitable low-pass filter board.

Transformer & Coil Winding

In the following diagrams process, please note:

  • To avoid scraping the enamelled wire, use needle nose pliers to smooth the edge of the ferrites. Hole edges may be sharp.
  • A “turn” on the coil is regarded as wire passing through the centre.

Winding T1

Transformer T1 primary should be 6 turns (black lines). The secondary of T1 should be 2 turns (red lines). The turns ratio is important, since if there are too many turns, the voltage on the gates of the MOSFETs will exceed the breakdown voltage and the parts will be destroyed.

Winding T2

Transformer T2 primary should be 1 turn made from the two end PCBs and copper pipe. The secondary of T2 should be 5 turns of high temperature wire.

In version 201 of the kit, the number of ferrite rings is reduced from 16 to 14. You will also need 2 ferrites for winding L1 (see below).

Winding L1

L1 is a high frequency RFC choke. The 7-10 turns should be wound around two ferrite rings as used in T2. I chose 10 turns as this provides the largest choke inductance.

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!

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…