Since firmware version v2025.0119 the Web888 is able to log FT8/4 and WSPR decode information to the messages file of the OS. Because a reboot or a simulated reboot, i.e. a power failure will remove any log file from the Web888, I use the following to store the log onto a different host. Additionally I'm also able to further process the log, but that's a different story.
I use a Raspberry Pi (RaPi) as my storage system however, any *nix type system, including the "Fruity MAC" or the "Shattered Windows" (with the *nix add on) could be used by following the below steps.
Note: Many ways lead to Rome as they say, and this is only one of the many ways this can be achieved, YMMV!
Prerequisite:
- A little knowhow of how to abuse a keyboard.
- A little knowledge about some form of *nix (MAC-OS, Linux, etc.).
- A Terminal program (Putty, MobaXterm, xterm).
- POSIX *nix commands.
- ssh
- ssh-keygen
- the IP-Address of your Web888.
The step we will take to create the system,
- Create Password less access.
- create a key
- copy key to Web888
- modify Web888 boot image
- create file store
- test system
- automate system
Note: I will use the following syntax throughout to help distinguish between commands and command echos.
The is a command you type at (into) the terminal, you can also copy and past it from here.
And the below is a command echo,
Ok, well done grasshopper.
Create Key
Let's log in to our *nix system with our prefered Terminal application.
Since we are connecting to the Web888 via ssh will will create a set of ssh-keys to enables us to do so.The ssh-keygen application is the tool for us to set this up.
/usr/bin/ssh-keygen -t rsa -b 4096 -C "VK5HW"
Let me quickly explain, the -t specifies what type of key to create, the -b means how big/long the key should be and the -C is a comment field. You can use the comment to add your own callsign or any other comment you wish to the key.
After you pressed the [ENTER] key, you will be greeted with the following text:
Generating public/private rsa key pair.
(Patience is a virtue) you need to wait a little before you'll see
Enter file in which to save the key (/home/hw/.ssh/id_rsa):
We will accept the default (/home/hw/.ssh/id_rsa) and press the [ENTER] key.
Now the next is the secret ingredient for password less access.
Enter passphrase (empty for no passphrase):
Yep, you guessed it, we hit [ENTER] as we do not want a passphrase (password)! And so the next question is answered exactly the same!
Enter same passphrase again:
Hit that [ENTER] key again.
Your identification has been saved in /home/hw/.ssh/id_rsa
Your public key has been saved in /home/hw/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:some blah here VK5HW
The key's randomart image is:
+---[RSA 4096]----+
| some blah here |
+----[SHA256]-----+
Let's quickly check,
ls ~/.ssh/*rsa*
/home/hw/.ssh/id_rsa /home/hw/.ssh/id_rsa.pub
Two files have been created and we need to install the id_rsa.pub, which is our public key, onto the Web888.
Copy the Key to the Web888
Were are still in our Terminal session and the next task is to set a shell variable with Your Web888's IP-Address.
ipa=<your Web888's IP-Address>
Note: We will use this shell variable throughout the setup!
Next is a rather long command, which is actually multiple commands strang together which will handle all the required tasks, i.e. setup, copy and to set the appropriate file permissions in one swoop.
cat ~/.ssh/id_rsa.pub | ssh root@$ipa "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Note: Make sure the shell variable ipa has been set!
You'll be greeted with this prompt:
root@<your Web888's IP-Address>'s password:
Because it asked so nicely you should give it the password (changeme), hit [ENTER] and the message Connection closed by <your Web888's IP-Address> port 22 will be displayed on the screen. That's it, no more passwords.
Let's check:
ssh root@$ipa "ls ~/.ssh"
authorized_keys
With that out of the way let's make sure that our modification of the Web888 firmware survives a reboot.
Modify the Web888 Boot Image File
From our Terminal program ssh to the Web888,
ssh root@$ipa
Welcome to Alpine!
The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <https://wiki.alpinelinux.org/>.
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
Noticed that the Web888 did not ask for a pesky password!
Let's note the Boot Image File size,
ls -l /media/mmcblk0p1/web-888.apkovl.tar.gz
-rwxr-xr-x 1 root root 13718 Sep 30 00:22 /media/mmcblk0p1/web-888.apkovl.tar.gz
And then check the status of the boot image file,
lbu st
A root/.ssh
A root/.ssh/authorized_keys
As we can see the two files which we created, .ssh and .ssh/authorized_keys have not been added to the boot image file. To add them we commit those files using the command,
lbu ci
And lets check if the commit has worked,
lbu st
And ... nope nada. We get nothing back from the status command if all went well. And to make sure that the boot image file has really been modified we check,
ls -l /media/mmcblk0p1/web-888.apkovl.tar.gz
-rwxr-xr-x 1 root root 14402 Oct 3 14:53 /media/mmcblk0p1/web-888.apkovl.tar.gz
and see that the timestamp and the files size have changed!
Our job here is done so logout of the Web888,
exit
Connection to <your web888's IP-Address> closed.
It is now time for a cold drink (Beer?). Hard part is done.
Create File Store
Note: Make sure that you are at your local host.
Next we create the file store which is really only a directory at a place near you, you can call it whatever you want, I will call it web888.
mkdir -p ~/web888
Done!
Test the System
Well, to test the system we will download a message file. I have created a script which will make the download a bit easier. But for demonstration and for testing I show you the individual commands.
- Create a copy of the messages file
- Zero/empty /var/log/messages
- Download the log file
- ssh root@$ipa 'cp /var/log/messages /var/log/log'
- ssh root@$ipa 'cat /dev/null > /var/log/messages'
- ssh root@$ipa 'cat /var/log/log' | grep "user\.info" > ~/web888/log_$(date +%Y%m%d"_"%H%M).txt
And we check,
ls ~/web888/log_20251004_0048.txt
/home/hw/web888/log_20251004_0048.txt
and check if our downloaded file has actual data in it,
cat ~/web888/log_20251004_0048.txt | more
Oct 2 13:48:00 web-888 user.info : 00:03:45.107 ..23456789A. 4 WSPR DECODE: UTC dB dT Freq
dF Call Grid km dBm
Oct 2 13:48:00 web-888 user.info : 00:03:45.124 ..23456789A. 4 WSPR DECODE: 1346 -13 0.1 10.140111
-1 VK7TW QE37 1057 30 (1.0 W)
Looking good.
The download script can be found here.
And that is it! You should now be able to download the messages (log file) from your Web888 to your local system. The next step is for the tiny bit more advanced users aka the lazy ones like me. This digs into the *nix scheduler which is used for the automation of the download process.
Automate System
Since I'm rather lazy I prefer to automate something as mundane as downloading files. So to automate the download we use a *nix tool called cron. Cron uses a table called a crontab. The following should help you understand crontab. A crontab entry, or a cron expression looks like this,
<minute> <hour> <day-of-month> <month> <day-of-week> <command>
For example the below cron expression is scheduled at 3 minutes past the hour,i.e. it runs at least once every hour and it will run the script /home/hw/web888_transfer.sh.
To list (-l) the crontab use,
crontab -l
3 */1 * * * /home/hw/web888_transfer.sh "192.168.1.40" "/home/hw/web888/log40_$(date +%Y%m%d"-"%H%M).txt" >> /home/hw/tmp/transfer.log 2>&1
and to edit/modify the crontab table we use,
crontab -e
Note: if you are using the crontab -e command for the first time it might ask you what editor you want to use. Now I can't help you with that choice, I do however use vi but ymmv.
Navigate to the bottom of the file [SHIFT-G].
Next type [SHIFT-A], the message
-- INSERT --
will pop up. You can now type or copy and paste the following,
3 */1 * * * /home/<your username>/web888_transfer.sh "<your web888's IP-Address>" "/home/<your username>/web888/log_$(date +%Y%m%d"-"%H%M).txt" >> /home/<your username>/web888/transfer.log 2>&1
Note: You need to change <your web888's IP-Address> to the actual IP-Address of your Web888, the shell variable does not work here.
Press [CTRL-C] to stop the editing process and then press [SHIFT-ZZ] (not a typo it is double Z)
You'll be greeted with,
crontab: installing new crontab
And that's it. Done and dusted.
Note: You need to download the web888_transfer.sh file into your home directory and make it executable. The following command will make the web888_transfer.sh user executable,
chmod 700 ~/web888_transfer.sh
Please note that you are free to mangle any of the above to suit your needs. This is something that should work and point you into the right direction. Since I use two Web888 my setup/schedule/script is/are a bit different.
Good luck, and if I've made a(ny) mistake(s) (highly possible) drop me a note and I'll rectify it.
Oh, and a final word! Don't forget that you have to do steps 2 & 3 and maybe the UPDATE below, after you upgraded the OS (firmware) of the Web888.
UPDATE:
I forgot that the newer *nix's don't allow cron to be used by users so you might need to add your user account to the cron.allow file. To solve this run the below from your login,
sudo sh -c 'who am i | cut -d" " -f 1 > /etc/cron.allow'
And then check,
cat /etc/cron.allow
<your user name>
And we most likely need to restart the cron daemon. For that we issue this command,
sudo service cron restart
and the check,
sudo service cron status
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2025-10-04 19:30:08 ACST; 7s ago
Docs: man:cron(8)
Main PID: 32363 (cron)
Tasks: 1 (limit: 4915)
CPU: 15ms
CGroup: /system.slice/cron.service
└─32363 /usr/sbin/cron -f
Appendix
A few examples of how to process the log file.
Show all WSPR decodes:
cat web888/sdr40.log | grep "WSPR DECODE" | grep -v " UTC " | awk '{print $1,$2,$3,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22}'Oct 3 23:20:01 2318 -18 0.3 21.096153 1 VK4GAW QG62NS 1657 23 (200 mW)
Oct 3 23:20:01 2318 -2 0.4 7.040137 0 VK3GOD QF23 583 23 (200 mW)
Oct 3 23:20:01 2318 -26 0.2 21.096146 0 VK4WGR QG62 1629 0 (1000 uW)
Oct 3 23:20:01 2318 -7 0.0 14.097032 0 VK2OP QF69 1452 23 (200 mW)
Oct 3 23:20:02 2318 -13 0.2 14.097101 0 KO4VJV EL89UG 16140 43 (20 W)
Oct 3 23:20:02 2318 -15 0.1 28.126183 -1 WA7X DM49 14017 30 (1.0 W)
Oct 3 23:20:03 2318 -15 0.2 14.097012 0 VK2QQ QF67GT 1338 23 (200 mW)
Oct 3 23:20:03 2318 -18 0.1 28.126169 1 VK6JJJ PH16 2910 23 (200 mW)
Oct 3 23:20:03 2318 -21 0.2 28.126101 0 K5DNR EM13 14984 30 (1.0 W)
Oct 3 23:20:04 2318 -21 2.2 28.126160 0 W3PM EM64 15898 37 (5.0 W)
Oct 3 23:20:04 2318 -22 0.1 28.126087 1 AA7US DM41 13683 23 (200 mW)
Oct 3 23:20:05 2318 -23 0.2 28.126019 1 AD2Q EN81 16371 30 (1.0 W)
Oct 3 23:22:01 2320 11 0.5 18.106102 -2 VK4AAN QG61AH 1475 30 (1.0 W)
Show all FT8 decodes:
cat web888/sdr41.log | grep "FT8 DECODE:" | awk '{print $17" "$18,$19,$21,$20,$12,$13,$14,$15,$16}'Fri Oct 3 2025 23:33:00 14074.750 KT4DM EM78 -14 16166km
Fri Oct 3 2025 23:33:00 18100.778 WA6VZN FM19 -13 16865km
Fri Oct 3 2025 23:33:00 24916.606 BG8KUB OL39 -15 7956km
Fri Oct 3 2025 23:33:15 24917.353 JA3OOK PM74 -12 7800km
Fri Oct 3 2025 23:33:15 28076.541 JH1BTY PM95 -11 7902km
Fri Oct 3 2025 23:33:30 18101.684 PY3FOX GF49 -14 12601km
Fri Oct 3 2025 23:33:30 18102.344 K5TIA EL29 -11 15004km
Fri Oct 3 2025 23:33:30 28075.403 7L4JWS PM96 -14 8014km
Fri Oct 3 2025 23:33:30 28076.106 RC0JD PO33 -13 9967km
Fri Oct 3 2025 23:33:45 18101.547 JA2YSO/P PM85 -12 7904km
Fri Oct 3 2025 23:33:45 24917.247 W2XX DM26 -13 13569km
Fri Oct 3 2025 23:33:45 24917.494 N0FW EM79 -9 16181km
Fri Oct 3 2025 23:33:45 28076.934 JA8NRS QN12 -11 8692km
Show all FT8 decodes from JA's
cat web888/sdr40.log | grep "FT8 DECODE:" | awk '{print $17" "$18,$19,$21,$20,$12,$13,$14,$15,$16} ' | egrep " J[A-Z][0-9][A-Z][A-Z][A-Z]| J[A-Z][0-9][A-Z][A-Z]"
Fri Oct 3 2025 23:31:15 28076.878 JI1ISA PM95 -13 7902km
Fri Oct 3 2025 23:31:45 21076.228 JK3HFN PM75 -10 7911km
Fri Oct 3 2025 23:31:45 21076.888 JI2VWY PM85 -13 7904km
Fri Oct 3 2025 23:32:00 28076.619 JA0IAA PM97 -9 8125km
Fri Oct 3 2025 23:32:15 18102.459 JF2DEJ PM85 -7 7904km
Fri Oct 3 2025 23:32:45 24915.581 JA2MAX/P PM95 -11 7902km
Fri Oct 3 2025 23:33:15 28076.541 JH1BTY PM95 -11 7902km
Fri Oct 3 2025 23:33:15 24917.353 JA3OOK PM74 -12 7800km
Fri Oct 3 2025 23:33:45 18101.547 JA2YSO/P PM85 -12 7904km
Fri Oct 3 2025 23:33:45 28076.934 JA8NRS QN12 -11 8692km
Show all 40m FT8 decodes
cat web888/sdr40.log | grep "FT8 DECODE:" | awk '{print $17" "$18,$19,$21,$20,$12,$13,$14,$15,$16} ' | grep " 707.\.... "Fri Oct 3 2025 21:13:00 7076.325 EA2A IN92 -13 16479km
Fri Oct 3 2025 21:13:45 7074.347 EB4SM IN80 -14 16637km
Fri Oct 3 2025 21:14:45 7074.256 B97LRZ/P AE63 +1 4624km
Fri Oct 3 2025 21:15:30 7075.100 IZ7LDC JN80 -12 14967km
Fri Oct 3 2025 21:16:00 7075.866 PE5ZWC MF78 +11 5812km
Fri Oct 3 2025 21:20:00 7075.094 DF2RQ JN57 -13 15551km
Fri Oct 3 2025 21:20:45 7075.634 YC1GCM OI33 -15 4566km
Fri Oct 3 2025 21:43:45 7076.169 EA7KPT IM67 -15 16954km
Fri Oct 3 2025 21:54:45 7076.775 VK6WX OF85 -10 1969km
Fri Oct 3 2025 23:08:30 7076.259 9T5NJE/R HN63 -16 18503km
No comments:
Post a Comment