Release of QZS L6 Tool, a positioning satellite message display tool
I will release the positioning satellite message display tool QZS L6 Tool.
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.
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
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.
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.
Similarly, this code extracts the L6 message from the PocketSDR log file. Please refer to Awesome PocketSDR (L6 Signal decoding).
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.
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)
- 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.
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
- 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