First WWFF Activation

I did nothing all week, so late Sunday afternoon I decided to activate a park for the first time.

I went to Baluk William Nature Conservation Reserve (VKFF-2042) and setup my G90 and EFHW. It wasn’t far away, but I missed a turn, and Google Maps took me on a fun backroad.

Made 23 SSB contacts on 40m in about an hour. It was a bit nerve wracking at the start, but I think I kinda got the hang of it. Was very happy to make a ZL3 contact too.

Will have to pick another interesting park for next weekend.

Posted on

Remembrance Day Contest 2022

I took part in my first contest this weekend; The Remembrance Day Contest.

This contest commemorates the Amateurs who died during World War II and is designed to encourage friendly participation and help improve the operating skills of participants. It is held on the weekend closest to the 15th August, the date on which hostilities ceased in the southwest Pacific area.

I headed up to John’s Hill Reserve in the afternoon and setup my G90 + EFHW, and made 20 contacts over about 3:30 hours. While I didn’t make many contacts, I was impressed that all but one station (VK2) was able to hear me on this setup.

Most of all, I think it was helpful in getting my confidence up when talking on the radio. I feel much better about trying to activate POTA now.

Update 2022-09-12

I placed 109 out of 126 for single-operator-phone.

No exactly great given the median was 100 contacts, and the top three all had over 1,000. But I’m still happy about what I achieved.

Posted on

Is this what FT8 actually looks like?

Went to new park in Mornington Peninsula with G90 and 40m EFHW yesterday.

I think I preferred it when I could only see 7-8 FT8 contacts each decode, now it’s hard just to find an open frequency.

The most messages I saw during one decode was 38.

Noticed 3 people doing POTA as well, I had never really thought about that. Maybe that’s a way I can avoid talking to people now that no one uses PSK31, or other digital modes.

Posted on

HF is better away from people

It turns out the best way to play with radios is away from everyone else.

I tried to find if someone had made a map of noise levels around Melbourne, but couldn’t find anything. Instead, I used a light pollution map, with the idea being less light pollution = less background noise.

Last weekend I spent a couple of hours at night, at boat ramp 50km south-east of the Melbourne CBD. And my hypothesis seems to have checked out.

I took a 6m squid pole, a 40m EFHW (for 40-20-15-10) and an IC-705.

I sent out WSPR beacon on 40m @ 10watts (I think) to see how everything was working, and well, it seemed pretty good.

Call SNR Drift Reporter Rgrid Rdistance
VK3ARD -19 0 KM3T FN42 16,876 km
VK3ARD -16 0 N1IRO FN33 16,799 km
VK3ARD -15 0 WA2TP FN30 16,740 km
VK3ARD -16 0 K3FEF FN21 16,587 km
VK3ARD -17 0 WZ7I FN20 16,559 km
VK3ARD -21 0 VE3CWM FN15 16,532 km
VK3ARD -19 0 W3ENR FM28 16,509 km
VK3ARD -16 0 N2HQI FN13 16,485 km
VK3ARD -19 0 KD2CLR FN13 16,404 km
VK3ARD -15 0 KX4O FM18 16,298 km
VK3ARD -17 0 WB7OND FM05 16,093 km
VK3ARD -11 0 W8AC EN91 16,075 km
VK3ARD -5 0 WD4ELG FM06 16,050 km
VK3ARD -8 0 WA4DT EM94 15,909 km
VK3ARD -5 0 WA2N EM85 15,809 km
VK3ARD -12 0 KX4AZ/T EN74 15,780 km
VK3ARD -17 0 AG0X EL96 15,447 km
VK3ARD -17 0 W3PM EM64 15,405 km
VK3ARD -24 0 N5FOG EL29 14,459 km
VK3ARD -22 0 W5KCR EL29 14,414 km
VK3ARD -24 0 K5TR EM00 14,217 km
VK3ARD -14 0 TI4JWC EK70 14,214 km
VK3ARD -26 0 N0GQ DM79 14,103 km
VK3ARD -14 0 KA7OEI-1 DN31 13,613 km
VK3ARD -18 0 WA5DJJ DM62 13,609 km
VK3ARD -14 0 K5AZZ DM61 13,593 km
VK3ARD -15 0 K7GXB DM34 13,254 km
VK3ARD -18 0 KK6PR CN94 13,090 km
VK3ARD -19 2 N7XNX DM26 13,058 km
VK3ARD -23 0 KT7Y DM06 12,800 km
VK3ARD -19 0 KP4MD CM98 12,785 km
VK3ARD -20 0 NT6V CM87 12,663 km
VK3ARD -22 0 W6REK-66 CM97 12,657 km
VK3ARD -21 0 W6LPM/6 CM97 12,655 km
VK3ARD -25 0 K6JFZ CM97 12,652 km
VK3ARD -2 0 KFS CM87 12,630 km
VK3ARD -21 0 NH6XO BL11 8,945 km
VK3ARD -23 0 VK8TH PH57 3,148 km
VK3ARD -5 0 ZL2QF RF70 2,531 km
VK3ARD -4 0 VK4YA QG62 1,377 km
VK3ARD -15 0 VK4TDI QG62 1,373 km
VK3ARD -10 0 VK2CEL QF57 826 km
VK3ARD -16 0 VK2AMF/1 QF44 482 km
VK3ARD -12 0 VK7JJ QE38 395 km
VK3ARD -12 0 VK3GED QF12 145 km
VK3ARD -22 0 VK3KHZ QF22 20 km

I was also being heard all over the place on FT8 which was nice.

Only made a handful of contacts via FT8, but three in NA, and one in SA which was cool.

Took the time to listen to the new Shortwave Australia Broadcast on 4835 Khz too. Wasn’t perfect, but was still pretty damn good. Had very poor reception on 2310 Khz though. I assume it was my antenna setup?

(Youtube mirror)

I tried to send some SSTV too, but had tech issues (and people were talking everywhere on 40m).

I wish I could do this from home, but I suppose it gets me out the house.

Posted on

Arthurs Seat

Visited Arthus Seat last week in the late afternoon. Was nice.

Posted on

Learning EAA

I’ve start learning about Electronically Assisted Astronomy (EAA). I’ve only gone out a few times, and while I barely know what I’m doing, it’s been a nice way to spend a few hours outside at night.

I’m using a ASI485MC camera, with an Amazon 70mm doublet refractor, a AZI-Gti Goto Mount, and EQ Adapter (from the Star Adventurer).

Tonight was the first time using the mount in EQ mode and it took a couple of hours to get the process sorted. In the end I managed a 2-minute-of-angle alignment, resulting in tracking, goto, and plate solving all working with zero issues. With luck, next time will be a lot quicker.

While I’m going to claim it’s EAA, and not astrophotography, I still had to process the images a little in Siril. No darks, no flats, under garden lights and a Bortle 7 sky.


Epsilon Carinae


Eta Carinae


NGC6200

I’m pretty sure I’m overexposing everything, but blue channel in-particular is super overexposed and blurry. As I’m using a color camera, I think a IR filter will help… Maybe… Who knows.

Posted on

Keyboard Sounds

Short audio sample of typing on my Keychron K2v2 with Boba U4T switches, and MA Blue Cat keycaps.

(Youtube mirror)

I’m way too old for newfangled mech keyboards. This setup is pleasant enough to type on and does sound quite nice to me. But overall is too tactile for my taste.

I also did not realise the Keychron had dropped any future support of remapping the keys on their wireless models when I purchased the K2v2 which was quite disappointing.

Posted on

FM Frequencies

I’ve been really bored recently. So I’ve been looking to see how many FM stations I could find.

Equipment is AirSpy HF+ Discovery, SDRSharp, and a Discone Antenna mounted ~2m above the ground.

The websites FM Scan and VHF Propagation Map have been very useful for identifying stations, and finding good times to listen.

Furthest station was ABC Classic in Griffith NSW. Bit over 400KM away.

Updated 2021-09-22: Added a couple of new entries, included basic signal quality, and updated code.

Frequency Station Name Signal
87.6 Mhz Surf FM Medium
87.8 Mhz Kiss FM Medium
88 Mhz DCFM 88.0 Low
88.1 Mhz 3MFM Medium
88.3 Mhz Southern FM Medium
88.5 Mhz ABC Northen Tasmania DX
88.6 Mhz Plenty Valley FM Medium
88.7 Mhz Vision Radio Bendigo Very low
88.9 Mhz WynFM Medium
89 Mhz Radio Bayside Low
89.1 Mhz 3MFM Medium
89.3 Mhz Kix Country Radio Medium
89.5 Mhz Very low
89.7 Mhz ABC Radio National Willis Hill Tas DX
89.9 Mhz Light899 High
90.3 Mhz TripleJ Low
90.7 Mhz SYN FM High
90.9 Mhz TripleJ Tasmania DX
91.1 Mhz ABC Central Victoria Low
91.3 Mhz ABC News Radio Warrnambool DX
91.5 Mhz Smooth FM High
91.7 Mhz ABC Northern Tasmania DX
91.9 Mhz SEN Track Low
92.1 Mhz ABC Classic Warrnambool Very low
92.3 Mhz 3ZZZ High
92.5 Mhz Radio National Somwhere Medium
92.7 Mhz ANC Classic Bendigo Medium
92.9 Mhz Low
93.1 Mhz SBSRadio High
93.3 Mhz ABC Classic DX
93.5 Mhz Vision Australia Radio High
93.7 Mhz Very low
93.9 Mhz Bay939 Medium
94.1 Mhz 3WBC Medium
94.3 Mhz TripleM Gippsland High
94.5 Mhz Very low
94.7 Mhz The Pulse Medium
94.9 Mhz Joy94.9 High
95.1 Mhz ABC News Radio High
95.3 Mhz Triple M Goulburn Valley DX
95.5 Mhz K-ROCK Medium
95.7 Mhz Golden Days Radio Medium
96.1 Mhz ABC Radio National Medium
96.3 Mhz 96three Medium
96.5 Mhz Inner FM Medium
96.7 Mhz Triple J Medium
96.9 Mhz Medium
97.1 Mhz 3MDR High
97.3 Mhz ABC Clasic Griffith NSW Low
97.7 Mhz 3SER Casey Radio High
97.9 Mhz 979fm Medium
98.1 Mhz Radio Eastern FM High
98.3 Mhz RPP FM High
98.5 Mhz Apple 98.5 FM Medium
98.7 Mhz RPP FM High
98.9 Mhz Very low
99.1 Mhz Yarra Valley FM Low
99.3 Mhz 3NRG Medium
99.5 Mhz TRFM Medium
99.7 Mhz ABC Radio National Very low
100.1 Mhz Vision Australia Radio Shepparton DX
100.3 Mhz Nova100 High
100.5 Mhz Very low
100.7 Mhz ABC Gippsland High
101.1 Mhz KIIS 101.1 High
101.5 Mhz ABC Classic High
101.7 Mhz ABC Radio National Warrnambool DX
101.9 Mhz The Fox High
102.1 Mhz ABC Mildura Swan Hill / Goschen Very low
102.3 Mhz 3BA Medium
102.7 Mhz Triple R High
103.1 Mhz Power FM Medium
103.3 Mhz DX
103.5 Mhz 3MBS High
103.7 Mhz ABC Classic Goschen / Swam Hill DX
103.9 Mhz Life FM Gippsland Medium
104.3 Mhz Gold 104.3 High
104.7 Mhz Very low
105.1 Mhz Triple M High
105.5 Mhz ABC Classic FM Ballarat Low
105.9 Mhz ABC Classic FM High
106.3 Mhz Flow FM Medium
106.5 Mhz Very low
106.7 Mhz PBS High
106.9 Mhz Very low
107.1 Mhz Triple J Low
107.5 Mhz Triple J High
107.9 Mhz ABC Ballarat Low

Note: All stations were positively identified.

I need a bigger backyard so I can put up a big FM antenna…

Some Code too!

Wow, it’s been a long time since I wrote any code. First program in Deno/Typescript to help convert the SDRSharp frequencies file to a markdown table.

// I'm too stupid to use this library
// import { parse } from "https://deno.land/x/xml/mod.ts";

// So let's pretend the xml might be terabytes in size and use a SAX library
import { SAXParser } from 'https://deno.land/x/xmlp/mod.ts';


class SignalQuality {
    protected _snr: number = 0;
    protected _isDx: boolean = false;

    set snr(value: number) {
        this._snr = value;
    }

    get snr() : number {
        return this._snr;
    }

    set isDx(value: boolean) {
        this._isDx = value;
    }
    
    get isDx() : boolean {
        return this._isDx;
    }

    protected textMap() : [string, string] {
        if(this._isDx) {
            return ['DX', 'orangered'];
        }
        else if(this._snr < 5)
        {
            return ['Very low', 'grey'];        
        }
        else if(this._snr < 10)
        {
            return ['Low', 'grey'];        
        }
        else if(this._snr < 30)
        {
            return ['Medium', '#ddd'];        
        }
        else
        {
            return ['High', 'green'];        
        }
    }

    public formattedText() : string {    
        return this.textMap()[0];
    }

    public formattedTextColor() : string {
        return this.textMap()[1];
    }
}

class MemoryEntry {
    public name: string = '';
    public frequency: number = 0;
    public notes: string = '';
    public signal: SignalQuality = new SignalQuality();

    public formattedFrequency() : string {
        return (this.frequency / (1000 * 1000)) + ' Mhz';
    }
}

async function parseFrequenciesXml(filename: string) : Promise<MemoryEntry[]>
{
    let entries = [] as MemoryEntry[];
    let currentEntry: MemoryEntry;

    let currentElement = {
        Name: false,
        Frequency: false,
        extraSNR: false,
        extraDX: false,
        extraNotes: false
    } as { [key: string]: boolean; };

    const parser = new SAXParser();

    parser.on('start_element', (el) => {
        if(el.qName == 'MemoryEntry') {
            currentEntry = new MemoryEntry();
        }
        else {
            currentElement[el.qName] = true;
        }
    }).on('end_element', (el) => {
        if(el.qName == 'MemoryEntry') {
            entries.push(currentEntry);
        }
        else {
            currentElement[el.qName] = false;
        }
    }).on('text', (s) => {
        if(currentElement['Name']) {
            currentEntry.name = s;
        }
        else if(currentElement['Frequency']) {
            currentEntry.frequency = Number(s);
        }
        if(currentElement['extraSNR']) {
            currentEntry.signal.snr = Number(s);
        }
        if(currentElement['extraDX']) {
            currentEntry.signal.isDx = (s === 'true')
        }
        if(currentElement['extraNotes']) {
            currentEntry.notes = s;
        }
    });

    // run parser, input source is Deno.Reader or Uint8Array or string
    const reader = await Deno.open(filename);
    await parser.parse(reader);
    reader.close();

    return entries;
}

let filename = "./frequencies.xml";

if(Deno.args.length == 1) {
    filename = Deno.args[0];
}

console.log(`Reading from ${filename}`);

const desc1 = { name: "read", path: filename } as const;
const status1 = await Deno.permissions.request(desc1);

let entries = await parseFrequenciesXml(filename);

console.log("| Frequency | Station Name | Signal |");
console.log("|-----------|--------------|--------|");

for(let entry of entries) {
    console.log(`| ${entry.formattedFrequency()} | ${entry.name} |  <span style="color: ${entry.signal.formattedTextColor()}">${entry.signal.formattedText()}</span> |`);
}

Finally, this is the XSD I used to export my Excel spreadsheet into a XML for both SDRSharp and the above “program”.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="ArrayOfMemoryEntry">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MemoryEntry" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="MemoryEntry">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="IsFavourite" type="xs:string"/>
                <xs:element name="Name" type="xs:string"/>
                <xs:element name="GroupName" type="xs:string"/>
                <xs:element name="Frequency" type="xs:integer"/>
                <xs:element name="DetectorType" type="xs:string"/>
                <xs:element name="Shift" type="xs:integer"/>
                <xs:element name="FilterBandwidth" type="xs:integer"/>
                <xs:element name="extraID" type="xs:string"/>
                <xs:element name="extraSNR" type="xs:integer"/>
                <xs:element name="extraDX" type="xs:integer"/>
                <xs:element name="extraNotes" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Posted on

ISS SSTV

Last week the ISS was transmitting SSTV images. So I setup MMSSTV, and my FT818 with a new colinear antenna to see if I could receive any images.

It took a couple of days before I realised you can receive signals from the ISS even if the ISS isn’t “visible”, so I ended up leaving the radio on for the rest of the week. I actually received 14 images on the 27th (UTC) over 7 passes (!).

I was able to receive 11 of the 12 images in acceptable quality. Interestingly there must be some funny relationship between the time to send the complete 12 images and and the time is takes for the ISS to orbit the earth as I received a lot of some images, and none or very limited of others.

Image Number Times Received
1 0
2 1
3 3
4 5
5 5
6 8
7 6
8 8
9 5
10 3
11 2
12 1

Overall was good fun, even with a non-optimal high gain colinear.

All images

Posted on

HF is sometimes Fun

That signal is actually pretty cool…

I think it’s JORN an OTHR, but it only sort of matches up.

Sometimes there was a preamble before it started, and then it would jump around frequencies a little.

They weren’t evenly spaced, the lowest I was around 6.9753 Mhz to the highest 6.9576Mhz (USB).

Around 10s between bursts too.

Don’t really know what is going on, but this is what I saved:

Recording of a single burst (USB).

Update 2021-06-27: The signal is likely from US Navy, not JORN.

Posted on