||2 weeks ago|
|debian/galmon-0.20220307-1||3 weeks ago|
|patch||3 weeks ago|
|pics||2 weeks ago|
|scripts||3 weeks ago|
|.gitignore||3 weeks ago|
|LICENSE-CC||3 weeks ago|
|LICENSE-GPL||3 weeks ago|
|README.md||2 weeks ago|
Notes on setting up galmon.eu ground stations.
Galmon is a system to monitor GNSS.
Ground stations on Earth use
galmon software to collect data
from each GNSS satellite.
There are two main GNSS chipsets that the
galmon software support.
UBX and Septentrio.
The former is more widely used and easier to set up.
Using these devices are as easy as installing
galmon software and
running the startup script. No device configuration is needed.
There are a variety of UBX devices, the ones below use the
U-blox ZED-F9 chipset.
simpleRTK2B USB. Available at Mouser.
simpleRTK2B-mPCIe. Available at Mouser.
Start devices with options, ala:
cat /etc/default/ubxtool-ttyACM0 DAEMON_OPTS="--owner 'Jeff Moe SpaceCruft' --remark 'Colorado, USA | Traverse Ten64 | simpleRTK2B-mPCIe' --gps --galileo --beidou --glonass --station XXX --destination XXX.submit.galmon.eu"
The Septentrio device is available as apparently very high quality standalone (unobtanium?) hardware that can plug directly into ethernet, amongst other configurations. Septentrio also resells their chips to third party integrators that make their own more readily available boards, such as the one used in the following setup.
Ardusimple simpleRTK3B with Septentrio mosaic-X5.
Note: in Ardusimple's lineup, the devices with "2" in them, such as simpleRTK2B are UBX, while devices with "3", such as simpleRTK3B are Septentrio.
Manufacturer's part number:
Not sold by Sparkfun, adafruit, or Digikey. Mouser part number:
HOWTO set up the Septentrio simpleRTK3B USB. This was done using a Traverse Ten64 arm64 with Debian Bullseye (stable/11) as the server. Should be similar for Raspberry Pi or other Debian systems.
Plug in the antenna to the simpleRTK3B. Plug the USB-C into the USB port on the server. Use the USB-C port labeled "GPS", which is the one on the same end as the antenna. This port will supply power to the device. When connected, it creates the following on the server via USB:
/dev/ttyACM0--- Serial port,
/dev/ttyACM1--- Serial port,
/dev/sr0--- Emulated CDROM, also accesible via symlink
/dev/sda--- Hard drive.
usb0--- USB network interface.
The CDROM drive just contains proprietary drivers.
The hard drive is not readable from Debian, at least not initially.
By default, the simpleRTK3B device won't send any data.
/dev/ttyACM1 are available, but not
streaming any GNSS data.
To configure the simpleRTK3B device, the USB network interface needs to be set up, then the device can be configured via its web interface.
For testing, set up a temporary network interface on the server using the USB network device. For example:
ifconfig usb0 192.168.3.2 netmask 255.255.255.0 up
Then ping the simpleRTK3B network from the server via the USB device:
ping -c1 192.168.3.1
If there is a web browser available on the server, it can then access this URL to configure the simpleRTK3B.
If the server is headless, a tunnel can be created from workstation
to the server, then the USB web server is available on the workstation
via localhost. Create SSH tunnel, where
server is the hostname
or IP of the server, run this on workstation:
ssh -N -L 127.0.0.1:8080:192.168.3.1:80 server
Then on the workstation, the simpleRTK3B Septentrio web configuration tool is available at:
If all is good on the device, it will have already found satellites.
It needs to be configured to dump data that
galmon will read.
Click mouse on "NMEA/SBF Out" option in the bar.
Click "New SBF stream".
Under "New SBF Output", select "IP server" and click "Next".
Select "New IP server connection", click "Next".
Under "Edit SBF Stream" select the following and click "Finish". Some items may need to be expanded:
MeasEpoch GALRawFNAV GALRawINAV PVTCartesian
Per IRC with
ahu, CNAV needs to be enabled on Septentrio too.
When the stream is configured, it should look like the below screenshot. There should be an option in the bottom right to save the configuration for reboot.
Then create a script that runs
septool to consume the web data
from the simpleRTK3B. Such as
#!/bin/bash septool \ --quiet true \ --source 192.168.3.1:29000 \ --destination XXX.submit.galmon.eu \ --station XXX
Create a script to start it:
[Unit] Description=galmon septool After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/bin/galmon-sept User=debian Group=debian Restart=always [Install] WantedBy=multi-user.target
Then start it:
sudo systemctl start galmon.service # Check logs: tail -f /var/log/daemon.log
Start it at boot:
sudo systemctl enable galmon.service
Also, probably want to keep that USB network on reboot.
Add this to
/etc/network/interfaces, for example:
auto usb0 iface usb0 inet static address 192.168.3.2/24
Then check if the ground station is appearing here:
galmon builds with source and binaries for arm64 are in the
Install from Package
Debian package built for Debian Bullseye (11/stable) arm64 architecture:
sudo apt update sudo apt install libh2o-evloop0.13 libprotobuf23 libwslay1 # Make sure upstream Debian's gpsd package isn't installed, # or it will mess up dependencies with file conflict: sudo apt remove gpsd wget https://spacecruft.org/spacecruft/spacecruft-galmon/raw/branch/main/debian/galmon-0.20220307-1/galmon_0.20220307-1_arm64.deb sudo dpkg -i galmon_0.20220307-1_arm64.deb
Building Debian package
To build the package from source:
sudo apt install ccache build-essential debhelper dpkg-dev help2man \ libzstd-dev protobuf-compiler libcurl4-openssl-dev libh2o-evloop-dev \ libh2o-dev libssl-dev libeigen3-dev libncurses-dev mkdir galmon-deb cd galmon-deb # Grab source, preferably from a reputable source, but this will do: wget https://spacecruft.org/spacecruft/spacecruft-galmon/raw/branch/main/debian/galmon-0.20220307-1/galmon_0.20220307.orig.tar.xz # Get a debian/ directory souce to make .deb packages, such as: wget https://spacecruft.org/spacecruft/spacecruft-galmon/raw/branch/main/debian/galmon-0.20220307-1/galmon_0.20220307-1.debian.tar.xz tar xf galmon_0.20220307.orig.tar.xz cd galmon_0.20220307 tar xf ../galmon_0.20220307-1.debian.tar.xz # Edit to taste vim debian/control vim debian/changelog # Build source, perhaps dpkg-buildpackage -rfakeroot -S -uc -us -sa # Build binary package: dpkg-buildpackage -rfakeroot -b -uc # Install binary package: cd .. sudo dpkg -i galmon_0.20220307-1_arm64.deb # Check apt is happy sudo apt -f install
To patch in the
remark, or it will say the owner
is "Septentrio" and there will be no remark.
--- galmon-0.20220307.orig/septool.cc 2022-04-14 23:06:38.000000000 +0000 +++ galmon-0.20220307/septool.cc 2022-06-14 23:31:26.962133157 +0000 @@ -376,8 +376,8 @@ nmm.mutable_od()->set_clockaccuracyns(0); nmm.mutable_od()->set_freqaccuracyps(0); - nmm.mutable_od()->set_owner("Septentrio"); - nmm.mutable_od()->set_remark(""); + nmm.mutable_od()->set_owner("Jeff Moe SpaceCruft"); + nmm.mutable_od()->set_remark("Colorado, USA | Traverse Ten64 | Septentrio simpleRTK3B USB"); nmm.mutable_od()->set_recvgithash(g_gitHash); nmm.mutable_od()->set_uptime(time(0) - starttime); ns.emitNMM( nmm);
Everything "appears" to be working, but the Septentrio system is logging many CRC errors like:
F/NAV CRC error, skipping I/NAV CRC error, skipping
See the script
scripts/galmonmonmon to check ground station status.
Three ground stations running.
simpleRTK2B-mPCIe, puck antenna, low in canyon.
simpleRTK2B USB, Calibrated Survey GNSS Tripleband + L-band antenna, higher in canyon.
Septentrio. simpleRTK3B. Calibrated Survey GNSS Tripleband + L-band antenna, higher in canyon.
License / Copyright
Unofficial project, not part of official
galmon software or website.
Upstream sources under their respective copyrights.
Copyright (C) 2022 Jeff Moe.
License: CC By SA 4.0 International and/or GPLv3+ at your discretion.