====== GNSS ======
* [[https://github.com/goblimey/ntripcaster|wonderful introduction on GNSS]]
* [[http://www.epncb.oma.be/_networkdata/data_access/real_time/map.php|stations]] that broadcast real time RTCM (protocol) Radio Technical Commission for Maritime
* [[https://gpsd.io/ubxtool-examples.html|ubxtool examples]]
* NEO-M9N
* ZED-F9P
===== 2022 =====
Use gpsd as [[http://trac.gateworks.com/wiki/expansion/gw16143|ntrip client]] on ublox device
pygnssutils
Configure ublox as [[https://github.com/semuconsulting/PyGPSClient/blob/master/examples/f9p_basestation.py|base station]] and run an rtrip server with [[https://github.com/semuconsulting/PyGPSClient#socketserver|PyGPSClient]]
===== 2020 =====
==== ntrip caster ====
* https://gitlab.com/ihfazhillah/simple-ntrip-caster/-/tree/master
* https://gitlab.com/hydrasystem/ntripcaster.git
sourcetable.dat
CAS;rtcm-ntrip.org;2101;NtripInfoCaster;BKG;0;DEU;50.12;8.69;http://www.rtcm-ntrip.org/home
STR;castagne;Verona;RTCM3;none;1;none;TEST;ITA;45.4935250;11.1068889;421;0;receiver5;none;B;N;3600;none
test caster, must return source table
curl http://192.168.2.50:2101
==== ntrip base station ====
configure ublox in NMEA
systemctl stop gpsd
systemctl stop gpsd.socket
DEVICE=/dev/gps0
ubxtool -f $DEVICE -p RESET
ubxtool -f $DEVICE -e NMEA
ubxtool -f $DEVICE -d BINARY
ubxtool -f $DEVICE -p SAVE
ntrip source
str2str -in 'serial://ttyACM0:115200#stq' -out 'ntrips://:mev@localhost:2101/castagne#rtcm2' -p 45.4935250 011.1068889 421 -msg "1004,1006,1019,1033,1012,1030"
GPS
gpsd -N -n -D3 /dev/gps0 # no -b option
# with DGPS
gpsd -N -n -D3 /dev/gps0 ntrip://NTRIP.itsware.net:2101/AB50_RTCM3
psd -N -n -D1 /dev/gps0 ntrip://rtk2go.com:2101/MEV0
ubxtool -p MON-VER
UBX-MON-VER:
swVersion EXT CORE 1.00 (61b2dd)
hwVersion 00190000
extension ROM BASE 0x118B2060
extension FWVER=HPG 1.12
extension PROTVER=27.11
extension MOD=ZED-F9P
extension GPS;GLO;GAL;BDS
extension QZSS
export UBXOPTS="-P 27.11 -v 2"
ubxtool -p RESET
ubxtool -e BINARY
ubxtool -e NMEA
get current dynamic mode
ubxtool -p CFG-NAV5
...
dynModel (Portable)
...
# or
ubxtool -p CFG-NAV5 | grep dynModel
switch model to automotive
ubxtool -p MODEL,4
ubxtool -p SAVE
===== udev =====
#SUBSYSTEMS=="usb", DRIVERS=="usb", ACTION=="add", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK+="gps0", MODE="0666"
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK+="gps%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service"
START_DAEMON="false"
# binary mode for ublox
GPSD_OPTIONS="-b"
DEVICES=""
USBAUTO="true"
===== test =====
* https://gpsd.gitlab.io/gpsd/ppp-howto.html
gpsd -b -N /dev/ttyACM0
gpspipe -r | nc -l 29999
yay -S qt5-location
qml
import QtQuick 2.1
import QtQuick.Window 2.0
import QtPositioning 5.5
import QtLocation 5.6
Window {
id:page
width: 1024
height: 1024
visible: true
Map {
id:myMap
anchors.fill: parent
plugin: mapPlugin
zoomLevel: 23
property MapCircle circle
function update(pos) {
removeMapItem(circle);
circle = Qt.createQmlObject('import QtLocation 5.3; MapCircle {}', page);
circle.radius = 2;
circle.color = "transparent";
circle.border.color = "red"
circle.border.width = 3;
myMap.addMapItem(circle);
circle.center = pos.coordinate;
myMap.center = pos.coordinate;
//console.log("Coordinates: ", pos.coordinate.latitude, pos.coordinate.longitude);
}
}
Plugin {
id: mapPlugin
name: "osm"
}
PositionSource {
id: gpsPos
updateInterval: 500
active: true
nmeaSource: "socket://localhost:29999"
onPositionChanged: {
myMap.update(position);
}
}
}