Thursday, April 25, 2024

Trying a $15 70cm transceiver HK-188

Peter, VK3YE, recently posted a video of a pair of 433Mhz transceivers he bought at Aldi for $20. They worked OK but had a number of obvious annoying problems including a lack of a display. 

Browsing Amazon I noticed a pair of 446MHz transceivers for $30 and I wondered what you get for the extra $10.


As you'll see in the video, they work very well, and I'd have to say the extra $10 is well rewarded. (Of course you don't have to spend much more to get a Quansheng radio!)

The radios are on 446Mhz, which is in the Amateur 70cm band so Richard and I are licensed to use them but I'm not sure how legal they are for the general public.

The manual is on the FCC website here. The biggest chip on the board has no label and is presumably the CPU / SOC and drives the LCD display.


I can see some inductors in the output presumably for low pass or antenna matching - a good sign. Components I can read are:

  • WX050 D812 4 pins
  • 26.000MHz crystal
  • BEKEN BK4818 BS3432FB 32 pins 
  • 4VZU 5 pins
  • M4890S UDE399 8 pins
The BK4818 is a half-duplex TDD FM transceiver.

"The BK4818 is a half duplex TDD FM transceiver operating from 115 MHz to 537 MHz band for worldwide personal radio. Besides speech communication, the BK4815N on-chip FSK data modem supports F2D and F1W emission to be used in FRS band for text message and GPS information exchange.

The BK4818 is a complete, small form factor solution optimized for low-power, low-cost, and highly integrated mobile and portable consumer electronic devices, requiring only a few external decoupling capacitors and an external inductor for input matching.

- World wide band: 115 ~ 537 MHz
- 12.5/25 kHz channel spacing
- On chip 5 dBm RF PA
- 3.0 V to 3.6 V power supply
- CTCSS tone receiver with up to parallel eight frequency detector
- 23/24 bit programmable DCS code
- Standard DTMF and programmable in-band dual tone
- SELCALL and programmable in-band single tone
- 1.2/2.4 kbps FSK data modem with either F2D or F1W modulation type
- Frequency inversion scrambler
- Voice activated switch (VOX) and time-out timer
- RF Signal strength measurement and signal quality measurement
- TX Audio signal strength indication and RX audio signal strength indication
- 3-wires interface with MCU with maximum 8 Mbps clock rate
- QFN 4x4 32-Pin package"

Quite a capable device.

This seems like a more sophisticated device than the Aldi one that Peter, VK3YE, reviewed.


(Image taken from VK3YE's video). The HK-188 has an LCD display which would add some complexity but not as much as I see in there.

Monday, April 15, 2024

PSSST kit build - Pete's Super Simple Sideband Transceiver

I've been a fan of Pete, N6QW, since hearing him on the excellent Soldersmoke podcast and blog.  Pete has built many home brew transceivers over the years. He has written for many respected ham radio publications. (I'm a bit confused about the best web site to give for Pete, it could be this, or this, or this or even this).

Pete's original description of the radio is here.

When Todd of MostlyDIYRF announced that he was creating a modular kit version of Pete's design for a 20m transceiver I eagerly ordered.

The kit comprises a collection of well designed modules that can be used in other experimental transceivers. Each module typically has input and output pads, designed for edge soldered SMA sockets and 0.1 inch spaced pins on an edge for plugging in to a mainboard. Where required DC power is supplied via these pins. Here's the 4.915Mhz IF board:


The boards are very high quality and come with a set of components and a page with circuit and some tips on assembly and testing.

Being able to build and test each stage separately has been a great help.

Here's the motherboard populated with what's needed for receive:


The IF is at 4.915Mhz, so the VFO starts at 14Mhz - 4.915Mhz = 9.085Mhz. There is a BFO that should be just below the IF frequency to mix with IF out to produce audio from the upper sideband signal.

The VFO and BFO oscillators are provided by a board with an Si5351 clock generator being controlled by a PI2040 CPU programmed with the Arduino runtime. Todd has shared the source code here.

The kit is version 1 and Todd makes it clear that this is not a project for beginners. Making a kit as complex as this is a very difficult task and there are a few things that could be improved in the future. 

There is a discussion group for builders on groups.io here.

At the time of writing, I've got receive working pretty well. I took some notes of what I've experienced so far.

  • My kit was missing two of the 0.1” x 4 sockets and two of the 90 degree headers.
  • The I2C LCD connections are not in the same order as the supplied LCD - VCC and Ground are swapped - danger!.
  • Note the errata about 5V power being needed for the LCD - I plan to re-compile the software for another LCD (Waveshare) that I prefer to use and runs off 3.3V.
  • The Mixer and BFO mixer are two of the same board but I was a bit puzzled as they have different names.
  • Pin 1 on the ADE-1+ is the one with the white dot kind of near it - the text is upside down.
  • The modules have three pins for each input/output, although not mentioned these are great for attaching SMA sockets. I wish the coax connections on the motherboard also matched SMA sockets to jumpers could be used.
  • Steerable amp missing a 3k resistor 
  • Missing 4 more 90 degree headers
  • IF module missing 220pf cap
  • On the driver and final board the pins on the regulator U1 are very close together 
  • T1 on the driver and final board isn’t specified but on the discussion group Todd reveals that it should be 10 turns bifilliar 
  • I chose to fit SMA sockets to each module. In a few cases there isn’t quite enough space for the socket and plug for example between the IF model and Audio output board.
  • My Digital VFO board as it came outputs 21Mhz on CLK2 and something like 40Mhz on CLK0 - not correct.

I downloaded Todd's source code for the board and built and installed it but still the frequencies and even the waveform didn't look right. After having a look I first considered forking Todd's code but realised I wanted to do a major re-structure of the project and so, with his blessing, I started my own version which is here on GitHub.

My changes include:
  • Re-ordering the source code to make it easier for me to follow
  • Replacing "magic" numbers in the code with const definitions
  • Improving the detection of no stored values so that initialisation is more reliable (I think the crazy output frequencies I saw on the supplied CPU were because random memory was being read as stored settings)
  • Printing information to Serial so I know what's going on
  • Underline with a cursor the digit which will change when you tune
  • When adjusting the BFO I adjust the VFO the same amount in the other direction
I continue to update the code as I make other changes. Also I've included a binary uf2 file that others can use it to program the board without having to get a build going.

The RP2040 is a very powerful chip compared to the old Atmel Arduinos and this code only uses about 4% of the space. I'm inclined to try to make a version written in MicroPython in the future for easier maintenance - but that's for another day.

At this point it's receiving fairly well although I don't think I've got the VFO and BFO correctly calibrated yet - they interact. The audio is a bit narrow to my ear so I plan to widen the IF later.


I am learning a lot from this kit but have found some of the inconsistent labelling on the mainboard and cramped layout - particularly as I've used SMA cables - a bit frustrating at times. Using SMA jumper cables adds some cost but I think it's handy to be able to remove modules without desoldering. I made my own cables using crimp SMA plugs and they aren't too hard to make.



My thanks to Pete for the design and to Todd for all the hard work he's put in to creating this wonderful kit. The kit arrived with a Twix bar but I'll hold off tasting it until I've had my first two-way contact on the transceiver.

Thursday, April 11, 2024

"Exception: [Errno 2] No such file or directory: 'udisksctl'" programming rp2040 on linux

A note to others. Just now I was trying to program an RP2040 board using Arduino IDE 2 on Linux and got this error:  "Exception: [Errno 2] No such file or directory: 'udisksctl'"

I was using an Arduino IDE installed via the software app. I had installed the Flatpack version.

Deleting the Flatpack version and downloading the Appimage from Arduino.cc fixed the issue.

I think it's something to do with flatpack security. There's probably a better fix but this is a note for future me.

Saturday, March 30, 2024

Multi-band antenna change - back to the Off Centre Fed dipole

Lucky to have the space for this sort of thing, I had put up a full wave "sky" loop for 80m. It was suspended from a number of trees around the yard but not very high and it came down in the wind a bit. I still have mono-band dipoles for 80m and 40m but it's nice to have a multi-band antenna for general listening without switching. 

Yesterday I pulled down the loop and replaced it with an Off Centre Fed dipole for 80m and above. In the picture to the right it's the front most antenna hanging from my antenna tree so up pretty high.

The wire lengths are: Short side = 39.5 feet, Long side = 94.5 feet suggested by Palomar.

Happily it resonates quite well on the first go with a 4:1 balun as usual. Quite usable without tuner on 80, 40 & 20m.

Before I took down the full wave loop I took this screen shot from SDR++ looking at 40m:

Here's a screen shot of SDR++ with the same gain settings on the OCFD:


Signals, and noise, are greater. 

Friday, March 15, 2024

Handy breakout board for Raspberry Pi Pico

Just picked up a few of these breakout boards. I'm not sure that I like the screw terminals but it is handy having LEDs on each GPIO pin.


 I'm really getting in to the RP2040 and recently ordered some boards with USB-C connectors.

MicroPython is great for most things, there is support for the Arduino runtime library and I can drop down to the native toolchain if required.

Sunday, March 10, 2024

A pleasant trip north via "The Dish"

A friend had some boxes of yachting gear left in Melbourne and I kindly agreed to drive it up to him at Dorrigo NSW. Along the way I visited John, VK2ASU, Merv and Dallas, VK3EB. 

On the way back I dropped in a Parkes and took another look at the CSIRO Dish.

It was a long drive in the Jimny and to avoid the high noise level I listened to podcasts in noise cancelling headphones.

I stopped for two nights at Port Macquarie and was interested to note that a podcast I listened to later, which was obviously downloaded while I was there, had local Port Macquarie targeted ads inserted in-line.

The return trip was more rapid and the final run from Dubbo to Drummond was a marathon in hot conditions.

It was good to get away and to catch up with friends. It's good to be back.

Here's a circularly polarised log periodic antenna.

Here's an Apollo 11 S band OMT:


S Band is 2.4–2.483 GHz. I think an OMT is an Orthomode transducer which is a waveguide component referred to as a polarisation duplexer.

Here's an impressive bit of work, a C30 Converter:



Monday, February 26, 2024

Simple Arduino rotary tuning knob for SDR

I like using SDR++ to remote control my AirSpy receiver but I was missing the tuning knob. SDR++ can be tuned with the mouse wheel but I find it a bit difficult.

Using an Arduino UNO R4 Minima I've made a very simple Rotary encoder that sends left or right arrow keys to the computer. I can't get the interrupt driven encoder code to work so I'm just polling but it seems fine for me. 


Soon I'll box it up for desktop use.

Embarrassingly little code is needed for this.

#include <Keyboard.h>
#include <Rotary.h>

Rotary r = Rotary(2, 3);

void setup() {
Keyboard.begin();
r.begin(true);
delay(1000);
}

void loop() {
unsigned char result = r.process();
if (result) {
if(result == DIR_CW) {
Keyboard.press(KEY_RIGHT_ARROW);
delay(10);
Keyboard.releaseAll();
} else {
Keyboard.press(KEY_LEFT_ARROW);
delay(10);
Keyboard.releaseAll();
}
}
}

Here it is all boxed up like a bought one:



Sunday, February 25, 2024

Wyndham Amateur Radio Club radiofest a good show

It's only a few short weeks since the Ballarat hamfest but as I live pretty close it was a no-brainer to head over. There was an excellent turnout and the new venue, Rowsley Hall, wasn't really spacious enough for everyone to get in.



Lots of interesting older gear to look at. I was tempted by the high voltage variable capacitors.





In the end I came away with a 1994 edition of the ARRL Antenna Handbook. It has calculations written in it by a previous owner.

Friday, February 23, 2024

New radio streaming iOS app - Sound Salvation

The name is inspired by a line from Elvis Costello's song "Radio Radio". I like to listen to radio in an earpiece when I wake during the night. Where I live there is no FM (or DAB+) and the house interferes with AM reception so I've been trying various radio streaming apps.

The apps I've tried are often very annoying in one way or another. Some force ads on the listener - one even made me watch a full screen video ad after a while. Many have various types of in-app purchases or subscriptions.

Sound Salvation is low cost (AU$2). It doesn't collect any information on users. It doesn't show any ads in the app. The radio station directory comes from https://www.radio-browser.info/ which has over 46,000 stations in its database. The only monitoring the app does is to send a "click" to Radio Browser for each play of a station for their popularity ranking.

You can add your own station if you know the streaming URL. The app also supports a URL Scheme so that opening a URL on device like the following one will add a station to the list.

soundsalvation://add/?title=Radio%20National%20Sydney&url=http%3A%2F%2Flive-radio01.mediahubaustralia.com%2F2RNW%2Fmp3%2F 




Being a brand new app I decided to use the very latest Apple technology so it's built in SwiftUI and uses SwiftData for the database. The experience was a very smooth one but means that the app requires iOS 17 and above and I know that's a problem for some people with older devices.

Like all good apps, I wrote this for myself. If you want to stream radio, please give it a go.

Update

Well, I'm slightly boggled to see that currently Sound Salvation is the number 1 paid app in the Entertainment category.


Just ahead of "iFart" and that's undoubtedly a high bar. ;-)

Thursday, February 15, 2024

Listening to shortwave on my 80m loop antenna

Recently I strung 80m of wire up in a loop attached to trees. It's not as good as my dipole for transmitting but it makes an excellent receive antenna. I've got an AirSpy HF+ SDR running with SDR++ in server mode so I can tune from the house (which is separate from the shack). This is running over two Wifi links but as you'll see it's a pretty good experience.


I'm currently reading Geoff Heriot's excellent book about International Broadcasting titled "International Broadcasting and Its Contested Role in Australian Statecraft - Middle Power, Smart Power". An informed and thoughtful examination of the topic.

Saturday, February 10, 2024

WSPR Watch 4.10 - fixed a long standing thread crash

WSPR Watch, my iOS app for quickly looking at spots on WSPRnet, is 12 years old. During that time it has been updated as the software tools and frameworks have changed.

First it was Objective C and UIKit. Next came the move to Swift. Version 4 was a move to SwiftUI.

I've always used background threads for doing the time-consuming requests to the different data sources. Most recently I've been using async/await and Actors. 

When I moved the app from storyboards to SwiftUI about half of the old code was no longer required. Things look much neater now. For a long time I've had a few crash reports coming in. These have been mostly in the map view. This app really hammers the map by drawing, sometimes, 10,000 or more overlays on it. 

I'd heard of the ThreadSanitiser that is part of the LLVM toolchain and available in Xcode. When I turned it on and ran the app in a Simulator it quickly showed me three data races that I hadn't noticed. My mistake was adding to an Array from a background thread when that Array was also available from other threads.

Having fixed these, I am now seeing zero crashes from users of version 4.9 and later. I expect to see a few due to being out of memory of killed in other ways but so far it looks good.

My thanks, as always, to my wonderful testers and users for their suggestions.

Sunday, February 04, 2024

Enjoyed the Ballarat Radiofest 2024

A few friends came from around the state including Shepparton, Bendigo and Melbourne. We stayed at a local motel and had a nice dinner and walk the night before to check on shortwave reception.


It was a warm day but thankfully there was a very pleasant breeze to keep things comfortable. By opening time, 10am, the crowd was keen to get in to see the gear for sale.



There were lots of older generation transceivers for sale at fair prices but I wasn't particularly tempted.


Quite a few members of my club, the Macedon Ranges Amateur Radio Club were on hand as were members of the Bendigo club who even organised a bus.


I picked up a few 27Mhz AM transceivers in the hope I could find one I can move to the 10m amateur band. I couldn't resist an Icom IC2A 2m handheld transceiver for $3.


A very enjoyable day. My thanks to the organisers.

Wednesday, January 31, 2024

LiPo Battery box - a modest project

I have a 12.8V 12Ahr Lithium battery but I wanted to avoid a mess of wires when using it in the field so went looking for a box to house all the bits.

Annoyingly hardware stores don't seem to list the internal dimensions of these boxes on their web sites but I found one at Bunnings for $35 that is perfect.


Not much to this project. There's an in-line automotive fuse holder, I've fitted a 30A fuse for now. A nice big switch and a panel mount Anderson connector.



The fit is tight enough that the top of the case presses a little on the top of the battery and stops it moving around.

Next step.... SOTA!

Friday, January 26, 2024

Raspberry Pi Pico RF transmit

Some great work by Jon Dawson on his 101 Things project "A collection of cool projects to make!". Jon clearly describes how he has built:

  • SDR Receiver
  • SDR Transmitter, including SSB, AM & FM
    • A Class E (and D) power amplifier
  • Multi-effect Guitar unit
Source code is shared on his Github repository

He has a video about the transmitter:


I set up the native C++ build tools for the Raspberry Pi PICO on an Intel Linux machine. I got the FM transmitter working, well it builds, and creates a carrier on 88MHz but the audio I'm streaming it it isn't modulating it for some reason.

There's no comments about how to run this but I deduce that you use a python program to stream a sample wav file over serial to the PICO which should then generate 88Mhz and FM modulate it.

python3 transmit.py Audio_Sample_-_The_Quick_Brown_Fox_Jumps_Over_The_Lazy_Dog.wav 

Available Ports

0 /dev/ttyS0: ttyS0 [PNP0501]

1 /dev/ttyACM0: Pico - Board CDC [USB VID:PID=2E8A:000A SER=E669BCF8E72E682F LOCATION=1-2:1.0]

Select COM port >

1

I did run into a build issue on Intel Linux so I raised a bug report. Jon looked at it overnight and did some updates.

The pico_setup.sh script runs on my machine right up to the point where it tries to install Visual Studio Code. The different samples all now compile. Jon seems to have removed the 19_fm_transmitter example which I was trying to get going.

I have some FST3253 on the way so I can try the transmitter sample.

This work has really driven home to me what a fantastic chip the RP2040 is.

Update

I wrote to Jon about the issues I found and he has updated the code and things are building and working correctly now. If you got the source code early on, do a git pull now and try again.

Here's my version of the board:


And here's some very rough looking AM:


"The quick brown fox..." Here's some sideband:



Wednesday, January 24, 2024

Tried a raspberry pi pico WSPR transmitter with no external oscillator

Someone mentioned that it's possible to generate RF with a Raspberry Pi PICO with no external oscillator. There is a library by Roman Piksaykin, called pico hf oscillator and it's used in a simple WSPR transmitter available here.

To build this project you need the native C/C++ toolchain. There are good instructions around for getting this going on a Raspberry Pi, but I did run in to a few issues getting it going on my Apple Silicon Mac. In the end it compiles.

The code dedicates one of the two CPU cores to generating the RF signal and it can go up to 33Mhz.

The waveform out of GPIO pin 6 looks like it has a bit of jitter on it.


It sounds good on the receiver and was easily decoded locally. 


The BNC to the CRO was unplugged and connected to a 40m dipole and stations heard me.




It looks like it drifts slightly during a transmission but not too much. Thanks to Roman Piksaykin for his good work on this. 

The Pico is a remarkable platform and I've started looking at this amazing work to produce other signals including sideband from 101 Things.

World Economic Forum lists AI as the second top risk

This week I discussed the World Economic Forum's risk report which lists AI as second only to climate change.

You can listen here if you wish.

I'll be back again next Tuesday evening for more tech talk.

Sunday, January 21, 2024

AI noise reduction on sideband radio

David, VK3KR, drew this to my attention. There is amazing work being done to remove radio noise from sideband signals. Check out the demonstration on the RM-Noise Video page

RM-Noise only has a Windows client and does the work in the cloud. I look forward to the day when this is built in to HF radios.


Tuesday, January 16, 2024

Powering a QRP radio for portable operations with a Powertech battery inverter

I was looking around for a nice way to power a small radio when operating in the field. I have various batteries but nothing in a convenient box. A solution was right under my nose! I have a little (155Whr) Powertech rechargeable battery. It has USB outputs and a 240V "modified" sine wave inverter. This will run a Dometic fridge in the car during a trip to the supermarket to get frozen food.

It also has three 2.1mm coaxial sockets marked "DC Output 12V" and I wondered if these were fed by a buck converter and might be noisy. It turns out there is no noise on these DC outputs.


The box has these specifications:


I thought I'd have a peek inside partly to see if the markings on the battery match the claimed capacity. It's fairly straightforward to open except I think the bottom screw might have been glued in. Obviously a unit that generates 240V is potentially dangerous.



The unit is a quality construction from what I can see. The battery pack is made up of 18650 cells.


Markings on the battery pack match the claimed capacity. The voltage is marked as 11.1V but when fully charged I see 12.4V so it's likely that a radio powered by this would need to be able to work well below 12V.

This unit is an old model and the new version has a USB-C output, although I wonder if it's USB-C PD?



Saturday, January 13, 2024

Full wave loop for 80m

Fortunate to have space for this, I have put up a horizontal full wave loop for 80m. I cut 82m of wire, put up the loop and trimmed it down until it's resonant in the band. The resonance is quite sharp though.

I initially used a 1:1 balun to feed the loop and it matches quite well.

Now I can switch between the full size dipole for 80 and the full size loop for 80m.

Noise, and signals are lower on the loop. The real test is measuring signal to noise ratio and I've been switching back and forth while receiving WSPR to get an idea on this.

So far I can't see that SNR is better on one or the other. HF conditions vary all the time so perhaps I need to set up two receivers to really compare.

The loop is quite low to the ground, perhaps 2m high for much of it which might explain why it's not superior to the dipole which is quite a bit higher up.



Thanks to Frank, K4FMH, for bringing his excellent presentation on optimising horizontal HF loops to my attention:


Clearly my height above ground is too low for 80m use. The shape of my loop is far from square, more like 5 sides attached to trees.

Here's an SWR plot using nanovna-saver with the 1:1 balun I used at first:


After watching Frank's excellent talk, I changed to a 4:1 balun and things are improved on the higher bands:


The loop works on several bands very well. (Today I learned that NanoVNASaver-saver has an option to show the amateur bands on the SWR plot).

I joined the weekly MRARC 80m net tonight and switched back and forth between my high dipole and the loop. Several stations reported that the signal strength from the loop was 10dB down on the dipole. I think the loop is too low.