Hi everyone,
This is a technical post. The topic is using the amateur (Ham) radio Automatic Packet Reporting System (APRS). For bluewater sailors who are also licensed Amateur Operators this provides a means of reporting position and weather, and also directly messaging/chatting with other stations.
VK6HSR MM on APRS.FI |
Previously we had been using an Iridium Go! to report our position at sea. We had kept HF/SSB email as a backup, running Winlink Express in a Parallels VM. We recently sold the Go! to fund a Starlink system, and also replaced our Intel-based Macbook laptop with a M1-based Mac Mini. The Mini uses so little power we could replace the BeagleBone Black computer we were using to run SignalK. However we discovered that Parallels only supports 'Windows 11 for ARM64' on M1, and that OS has no driver for our IC-7300's USB-Serial Bridge.
This impasse led me to research HF/SSB email for the first time in years. I discovered there are now open-source apps such as 'pat' to access Winlink. Sadly however I could not find a M1-compatible version of ARDOP, the TNC protocol which encodes/decodes between Winlink's digital data and the audio tones sent over HF/SSB.
This further impasse led me to research HF/SSB packet communication more generally. I discovered APRS, a licensed amateur operator-only system providing global communication via HF and VHF radios and the internet. Take a look at VK6HSR-8 on aprs.fi. That's us.
Setting up APRS on the Mac Mini M1 proved easy. We already had serial and audio communication between the Mini and the IC-7300. What was needed was software. I chose direwolf and YAAC. Direwolf is a software modem/TNC for the AX.25 packets used by APRS. YAAC is 'yet another APRS client' which provides the APRS GUI.
Here's the process I used:
- direwolf
- Preparation
- Install XCode Command Line Tools from from https://www.macports.org/install.php if not installed previously
- Install MacPorts from https://www.macports.org/install.php
- Install dependencies in a Terminal window using MacPorts
- run ‘sudo port install coreutils portaudio cmake +universal’
- Install in a Terminal window
- 'cd ~'
- Download direwolf with ‘git clone https://github.com/wb2osz/direwolf’
- Build direwolf with ‘cd direwolf’ and...
- ‘mkdir build && cd build'
- ‘cmake ..’
- ‘make -j4’
- ‘sudo make install’
- ‘make install-conf’
- Check executable using ‘which direwolf’
- Setup direwolf audio channels
- Connect computer to IC-7300
- Edit ~/direwolf.conf
- set MYCALL to your callsign
- set ADEVICE "USB Audio CODEC :2" "USB Audio CODEC :1"
- save the file
- In a Terminal window run ‘direwolf’ and confirm output…
- Channel 0: 300 baud, AFSK 1600 & 1800 Hz, D, 44100 sample rate / 3.
- Note: PTT not configured for channel 0. (Ignore this if using VOX.)
- Ready to accept AGW client application 0 on port 8000 ...
- Ready to accept KISS TCP client application 0 on port 8001 ...
- <ctrl>c to quit”
- Setup direwolf PTT (still connected to IC-7300 of course)
- Edit ~/direwolf.conf
- Find PTT line and change to ‘PTT /dev/cu.SLAB_USBtoUART RTS’
- save the file
- In a Terminal window run ‘direwolf’ and check the note about PTT has gone.
- <ctrl>c to quit
Happy direwolf |
- Setup IC-7300 via front-panel (you may prefer different level settings)
- Menu => Set => Connectors
- ACC/USB Output Select = AF
- ACC/USB AF Output Level = 80%
- ACC/USB AF SQL = OFF (Open)
- ACC/USB AF Beep/Speech... Output = Off
- ACC/USB IF Output Level = 50%
- ACC MOD Level = 50%
- USB MOD Level = 50%
- DATA OFF MOD = MIC
- DATA MOD = USB
- CI-V => CI-V USB Port = Unlink from [REMOTE]
- USB Serial Function = CI-V
- USB SEND/Keying => USB SEND = RTS
- Use MULTI key to set RF POWER to a low power (eg 1W) and MONITOR to 25%
- Menu => Scope, then click SPAN until you have +/-10kHz bandwidth
- Set frequency to 10,147.60
- Set mode to USB-D
- TUNE!
- Set AF volume
IC-7300 ready for APRS |
- Use direwolf's kissutil utility program to try sending a packet
- In one Terminal window run direwolf
- 'cd direwolf'
- 'direwolf'
- leave it running and visible
- In a second Terminal window run kissutil
- 'cd direwolf'
- 'kissutil'
- 'VK6HSR-8>CQ:>Hello World', replacing 'VK6HSR' with your callsign
- If your rig transmitted you got it right!
- <ctrl>c to quit
- Leave the IC-7300 and direwolf running for a few hours (afternoon/evening is best)
- Check direwolf window for packets received.
kissutil (top) and direwolf (bottom) sending and monitoring packets |
- YAAC
- Preparation
- Check you have java installed, as described at http://www.ka2ddo.org/ka2ddo/YAAC.html
- Download
- from http://www.ka2ddo.org/ka2ddo/YAAC.html
- Unzip the downloaded YAAC.zip file
- Install from a Terminal window
- 'cd ~/Downloads'
- 'mv YAAC ~'
- 'cd ~/YAAC'
- ‘java -jar YAAC.jar’
- Configure YAAC using the Wizard, with help from '~/direwolf/doc/User Guide.pdf' p15
- Here are my configuration pages, from File => Configure => Expert Mode...
- Send a status packet
- Set your IC-7300 RF Power to 40W
- In the direwolf Terminal window check direwolf is running
- In YAAC
- Open the Map View (View => Map) if not already open
- Click on the small green box to enable decoding
- Check that you have a black RF box (which indicates you have an RF interface)
- If you've enabled a GPS port check the black GPS box is flashing green
- In the menu bar click Message => Station and put 'test' in the text line. Click OK.
- Does the radio transmit? If so take a look at the direwolf transcript to see the packet sent.
- If all's well in your YAAC setup you may find it transmitting packets at intervals. This is your position reports. Take a look at their content in the direwolf transcript too.
Position on YAAC Map |
APRS Callsign Search Result |
Station Info |
And if you send weather data...
Weather Data |
No comments:
Post a Comment