Release of QZS L6 Tool, a positioning satellite message display tool
Introduction
I will release the positioning satellite message display tool QZS L6 Tool.
https://github.com/yoronneko/qzsl6tool
This is a collection of tools for displaying and processing messages from the quasi-zenith satellite (QZS). This is a collection of tools I created for myself, but I hope it will be useful to many people.
Function
The main programs in this collection of tools are programs that interpret the raw data of the L6 signal of Allystar HD9310 Option C and PocketSDR and extract the Michibiki L6 band payload (alst2qzssl6.py, pksdr2qzsl6.py), and CLAS (centimeter) from the L6 band payload. A program (qzsl62rtcm.py) that reads the type of level augmentation service) or MADOCA (multi-GNSS advanced demonstration tool for orbit and clock analysis) and converts it into an RTCM (Radio Technical Commission for Maritime Services) format message. However, at this time, the conversion from CLAS messages to RTCM messages has not been implemented yet.
This tool is intended to process QZS messages in real time and sequentially using pipes. Alllystar HD9310 option C raw data of serial port and TCP/IP stream and NTRIP (networked transport of RTCM via Internet protocol) are received as standard input, and the conversion result is output to standard output. It also outputs debug messages to standard error output. Therefore, please redirect unnecessary messages to /dev/null
. Also, when inputting from a file, use the cat
command.
In addition, a program (showrtcm.py) that displays RTCM messages including MADOCA’s space state representation (SSR), and a program that converts between GPS time and UTC (universal coordinate time) (gps2utc.py, utc2gps.py), includes programs (llh2ecef.py, ecef2llh.py) that convert between latitude/longitude/elliptical height and ECEF (earth-centered earth-fixed) coordinates.
Program description
alst2qzsl6.py
This code takes the raw data of Allystar HD9310 option C from the standard input, decodes the raw data of multiple tracking satellites, selects the satellite with the highest signal strength, and outputs its 2,000-byte L6 signal data. Is output to the standard output. It also outputs debug messages such as PRN (pseudo random noise) number and signal strength to standard error output.
For example, let’s say you have made the HD9310 connected to the USB port of the Raspberry Pi accessible from TCP/IP port 2000 with RTKLIB str2str
. To read this observation data from another PC with the nc
command and monitor the contents, do the following.
nc [IP address] 2000 | ./alst2qzsl6.py > /dev/null
At this time, the following output is obtained.
195 2195 94409 38
193 2195 94409 43
194 2195 94409 42
199 2195 94409 43
---> prn 193 (snr 43)
The first column shows the PRN number, the second and third columns show the GPS week number and seconds, the fourth column shows the C/N0 [dB Hz], and the fifth column shows the contents of any errors.
pksdr2qzsl6.py
Similarly, this code extracts the L6 message from the PocketSDR log file. Please refer to Awesome PocketSDR (L6 Signal decoding).
qzsl62rtcm.py
This code converts raw data in QZS L6 format to RTCM format. The standard error output shows the augmentation message generation station, the RTCM message number, and the augmentation satellite numbers in parentheses.
For example, suppose the serial port of the HD9310 development kit with MADOCA firmware is accessible on TCP/IP 2001 port.
nc IP address 2001 | ./alst2qzsl6.py 2>/dev/null | ./qzsl62rtcm.py >/dev/null
Then we will obtain, for example, the following output:
209 Hitachi-Ota:0* 2022-02-03 11:22:44 1062(25) 1068(16) 1251(1)
This is from PRN 209 (QZS 3) and is a message generated from the first equipment of the two systems at Hitachi-Ota control station, with alert flag on (denoted by asterisk), time, and RTCM message type, and the number of augmented satellites.
showrtcm.py
This is a program that displays the contents of RTCM messages. We can observe the RTCM message of the information received by, say, the HD9310 with MADOCA firmware.
nc IP address 2001 | ./alst2qzsl6.py 2>/dev/null | ./qzsl62rtcm.py 2>/dev/null | ./showrtcm.py
We will obtain the results like this.
RTCM 1062 G SSR hr clock G01 G02 G03 G05 G06 G07 G08 G09 G10 G12 G13 G15 G16 G17 G19 G20 G21 G24 G25 G26 G27 G29 G30 G31 G32 (nsat=25 iod=14)
Other tools
- ecef2llh.py: Converts ECEF coordinates to latitude/longitude/ellipse height.
- llh2ecef.py: Converts latitude/longitude/ellipse height to ECEF coordinates.
- gps2utc.py: Converts GPS time to UTC time.
- utc2gps.py: Converts UTC time to GPS time.
License
The BSD 2-clause license is applied to this tools. Users can use this program regardless of whether it is for commercial or non-commercial use, with or without modification, but this copyright notice is required. The result of RTKLIB is used for libbit.py
.
Related article(s):
- Display of MADOCA-PPP ionospheric delay information using QZS L6 Tool 16th August 2024
- QZS L6 Tool output format change 14th April 2024
- Health information expression for QZSS 7-satellite configuration 12th April 2024
- Galileo Timing Service Message 6th April 2024
- L1S signal analysis with QZS L6 Tool 11st November 2023
- Galileo HAS live stream 25th July 2023
- HAS message display capability on QZS L6 Tool 5th March 2023
- Trial delivery of QZSS's MADOCA-PPP started 18th August 2022
- Capacity analysis of CLAS satellite augmentation information using QZSS archive data 9th June 2022
- QZSS CLAS tropospheric delay augmentation information for remote islands in Japan 17th May 2022
- Compact SSR display capability on QZS L6 Tool 29th March 2022