├── str2str ├── config │ └── str2str_minimum_config.txt ├── doc_sources │ ├── command.png │ ├── 2.4.3_branch.png │ ├── master_branch.png │ ├── nmea_stream.png │ ├── system_scheme.png │ ├── tomojitakasu.jpeg │ ├── receiver_config.png │ ├── receiver_status.png │ ├── rtklib_versions.png │ ├── str2str_scheme.jpg │ └── corrections_input.png └── README.md ├── Receiver and Raspberry Setup ├── doc_sources │ ├── flowchart.png │ ├── mosaic-X5.png │ ├── mosaicgo.png │ ├── RasPi_Imager.png │ ├── geodnet_logo.png │ ├── mosaix-X5.webp │ ├── skylark_logo.png │ ├── Topcon_Topnet.png │ ├── materials_info.png │ ├── pointone_logo.png │ ├── RasPi_Imager_Yt.png │ ├── Septentrio_logo.png │ ├── pointperfect_logo.png │ ├── mosaic-go_interface.png │ ├── Raspberry_Pi_OS_Logo.png │ ├── general_system_scheme.jpg │ ├── 1_RasPi_Installation_DS.png │ ├── 2_RasPi_Installation_DS.png │ ├── 3_RasPi_Installation_DS.png │ ├── 4_RasPi_Installation_DS.png │ ├── 5_RasPi_Installation_DS.png │ ├── Complete_how_to_diagram.jpg │ └── 2.1_RasPi_Installation_DS.png └── README.md ├── SharingInternetFromRaspberryPiToReceiver ├── doc_sources │ ├── ip_changed.png │ ├── usb_mode.png │ ├── ip_changing.png │ ├── last_command.png │ └── sharing_internet.jpg └── README.md └── README.md /str2str/config/str2str_minimum_config.txt: -------------------------------------------------------------------------------- 1 | setNMEAOutput, Stream1, OTG1 2 | setNMEAOutput, Stream1, , GGA 3 | setNMEAOutput, Stream1, , , msec100 -------------------------------------------------------------------------------- /str2str/doc_sources/command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/command.png -------------------------------------------------------------------------------- /str2str/doc_sources/2.4.3_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/2.4.3_branch.png -------------------------------------------------------------------------------- /str2str/doc_sources/master_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/master_branch.png -------------------------------------------------------------------------------- /str2str/doc_sources/nmea_stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/nmea_stream.png -------------------------------------------------------------------------------- /str2str/doc_sources/system_scheme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/system_scheme.png -------------------------------------------------------------------------------- /str2str/doc_sources/tomojitakasu.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/tomojitakasu.jpeg -------------------------------------------------------------------------------- /str2str/doc_sources/receiver_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/receiver_config.png -------------------------------------------------------------------------------- /str2str/doc_sources/receiver_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/receiver_status.png -------------------------------------------------------------------------------- /str2str/doc_sources/rtklib_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/rtklib_versions.png -------------------------------------------------------------------------------- /str2str/doc_sources/str2str_scheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/str2str_scheme.jpg -------------------------------------------------------------------------------- /str2str/doc_sources/corrections_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/str2str/doc_sources/corrections_input.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/flowchart.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaic-X5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaic-X5.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaicgo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaicgo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/RasPi_Imager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/RasPi_Imager.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/geodnet_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/geodnet_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaix-X5.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaix-X5.webp -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/skylark_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/skylark_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Topcon_Topnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Topcon_Topnet.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/materials_info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/materials_info.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/pointone_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/pointone_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/RasPi_Imager_Yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/RasPi_Imager_Yt.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Septentrio_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Septentrio_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/pointperfect_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/pointperfect_logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/mosaic-go_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/mosaic-go_interface.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Raspberry_Pi_OS_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Raspberry_Pi_OS_Logo.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/general_system_scheme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/general_system_scheme.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changed.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/usb_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/usb_mode.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/1_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/1_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/2_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/2_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/3_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/3_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/4_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/4_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/5_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/5_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/Complete_how_to_diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/Complete_how_to_diagram.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/ip_changing.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/last_command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/last_command.png -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/doc_sources/2.1_RasPi_Installation_DS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/Receiver and Raspberry Setup/doc_sources/2.1_RasPi_Installation_DS.png -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/doc_sources/sharing_internet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/septentrio-gnss/Septentrio_AgnosticCorrectionsProgram/HEAD/SharingInternetFromRaspberryPiToReceiver/doc_sources/sharing_internet.jpg -------------------------------------------------------------------------------- /SharingInternetFromRaspberryPiToReceiver/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # How to share internet connection From the Raspberry Pi to the Receiver using an USB cable 4 | 5 | ## AUTHORS 6 | 7 | | Name | GitHub | 8 | |------|--------| 9 | | Iker Uranga | IkerUranga10
| 10 | 11 | ## MAINTAINER 12 | 13 | | GitHub | 14 | |--------| 15 | | septentrio-users
| 16 | 17 | ## DO YOU HAVE ANY QUESTIONS? CONTACT SEPTENTRIO SUPPORT TEAM 18 | 19 | | Septentrio Support Page| 20 | |---| 21 | 22 | ## SEPTENTRIO LINKS FOR USERS 23 | 24 | | Contact | Septentrio Home Page | 25 | |----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| 26 | | Septentrio Contact Page | Septentrio Home Page | 27 | 28 | ## DISCLAIMER 29 | 30 | This set of guidelines consist of a several practical examplse to help Septentrio Module users and developers to integrate third party GNSS corrections. The guidelines are based on a concrete setup, which you may or may not use to follow the integration guidelines. 31 | 32 | It is desirable to mention the disclaimer about that setup and the guides in general before starting reading this guide. 33 | 34 | | Click here to know more about the Setup in which these guides are based and general implementation documentation disclaimer | 35 | |---| 36 | 37 |
38 | 39 | ## TABLE OF CONTENTS 40 | 41 | 42 | 43 | * [Introduction](#introduction) 44 | * [Simplified system scheme](#simplified-system-scheme) 45 | * [Check firmware version](#check-firmware-version) 46 | * [Enable USB communication](#enable-usb-communication) 47 | * [Configure the network bridge from wifi to usb](#Cconfigure-the-network-bridge-from-wifi-to-usb) 48 | * [Check new assigned IP to the receiver](#check-new-assigned-IP-to-the-receiver) 49 | * [What to run once](#what-to-run-once) 50 | * [What to run every boot of the operating system](#what-to-run-every-boot-of-the-operating-system) 51 | 52 | 53 | 54 | ## INTRODUCTION 55 | 56 | The purpose of this guide is to provide a step-by-step process for transmitting an internet connection from a Raspberry Pi to a Septentrio receiver using a USB cable. It is assumed that the Raspberry Pi is already connected to a Wi-Fi network. 57 | 58 | Before proceeding with the steps outlined in this guide, please ensure that you have followed the Setup Installation guide provided in this repository. (Including Raspberry Pi OS intallation) 59 | 60 | | Click here to navigate to our Set Up Guide to use Third parties corrections with Septentrio's Receiver for precise positioning GitHub guide. | 61 | |---| 62 | 63 | Once the setup has been properly installed, follow the instructions below to transmit the internet connection to the Septentrio receiver. 64 | 65 | ## SIMPLIFIED SYSTEM SCHEME 66 | 67 |

68 | 69 | 70 | ## CHECK FIRMWARE VERSION 71 | 72 | First, ensure your receiver has been upgraded with the latest firmware. Assuming that the Raspberry Pi and Mosaic-Go module setup including the installation of the Raspberry Pi OS is done, navigate to the receiver´s Web Interface by typing the following IP address 192.168.3.1 in your Raspberry Pi Os browser. 73 | 74 | Navigate to **Amin > About** and there you can check the Firmware version installed inside the receiver. 75 | 76 | If you don't have the lastest version of the firmware, you can find the latest firmware for **your receiver** on the Septentrio website. Then, select you module and go to resources tab, there you will find the Firmware Package. 77 | 78 | If a Firmware Update is needed, go to **Admin > Upgrade** section and chose the files you previously downloaded. 79 | 80 | ## ENABLE USB COMMUNICATION 81 | 82 | In the Web User Interface, go to the communication menu and click on USB. In the default configuration the internet over USB is off. Turn it on to enable USB communication and press OK to save the changes. 83 | 84 |

85 | 86 | 87 | ## CONFIGURE THE NETWORK BRIDGE FROM WIFI TO USB 88 | 89 | To achieve this, we will use dnsmasq to configure the Raspberry Pi as a DHCP server and set up custom DNS settings. This will enable a device connected to the Raspberry Pi via Ethernet to obtain an IP address from the Raspberry Pi and also allow the Raspberry Pi to forward DNS queries. 90 | 91 | 1. **Install dnsmasq** 92 | 93 | Dnsmasq is a lightweight and easy to configure DNS forwarder and DHCP server. Its main purpose is to provide DNS and DHCP services to small networks. With Dnsmasq, it's possible to serve local machine names that are not in the global DNS. Additionally, the DHCP server is integrated with the DNS server, which allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. 94 | 95 | Execute the following commands in a terminal: 96 | 97 | sudo apt-get update 98 | sudo apt-get install dnsmasq 99 | 100 | Fot this guide, the 2.85 version of dnsmasq has been used. To know more about dnsmasq, go to dnsmasq package description on debian web page. 101 | 102 | 2. **Enable bind-interfaces in /etc/dnsmasq.conf file** 103 | 104 | On systems that support it, dnsmasq can bind the wildcard address, even when it is listening on only some interfaces, allowing it to discard requests it shouldn't reply to. While this has the advantage of working even when interfaces come and go and change address, sometimes it is necessary to bind dnsmasq only to the interfaces it is listening on. This option is particularly useful when running another nameserver or another instance of dnsmasq on the same machine. It also enables multiple instances of dnsmasq providing DHCP services to run on the same machine. 105 | 106 | To force dnsmasq to bind only to the interfaces it is listening on, set the bind-interfaces option, as follows. 107 | 108 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(bind-interfaces\)/\1/' 109 | 110 | See here the information Source for this step. 111 | 112 | 3. **Specify the interface not to be listened to in /etc/dnsmasq.conf file** 113 | 114 | This comman is to not listen on the specified interface. Note that the order of --listen-address --interface and --except-interface options does not matter and that --except-interface options always override the others. 115 | 116 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(except-interface=\)/\1usb0/' 117 | 118 | See here the information Source for this step. 119 | 120 | 4. **Restart the system dnsmasq after making changes in /etc/dnsmasq.conf** 121 | 122 | It is required so that the changes in dnsmasq.conf file can be saved. 123 | 124 | sudo systemctl restart dnsmasq 125 | 126 | 5. **Enabling IPv4 IP Forwarding in Linux** 127 | 128 | By default, modern Linux systems disable IP forwarding to conserve bandwidth, as it is not needed for regular use. However, in some cases, such as when setting up a gateway or router, it may be necessary to enable IP forwarding. This guide will walk you through the process of enabling IPv4 IP forwarding on your Linux system. 129 | 130 | **What is IP forwarding?** 131 | 132 | 133 | IP forwarding is the ability of a system to accept incoming network packets and forward them to another network. This feature is necessary when a system needs to act as a gateway or router. 134 | 135 | sudo sysctl net.ipv4.ip_forward=1 136 | 137 | 6. **Assign an IP Address to a Specific Interface** 138 | 139 | The following command is used to assign an IP Addresses to a specific interface (usb0) on the fly. It is a command addr (**Addres**) followed with one of its subcommands, (**Add**). 140 | 141 | sudo ip addr add 172.20.20.1/24 dev usb0 142 | 143 | sudo iptables -t nat -A POSTROUTING --src 172.20.20.0/24 -o wlan0 -j MASQUERADE 144 | 145 | sudo dnsmasq -d --conf-file=/dev/null --except-interface=lo --interface=usb0 --bind-interfaces --dhcp-range=172.20.20.10,172.20.20.20,255.255.255.0,1h 2>&1 146 | 147 | After this final step, you should be the following on the Web User Interface: 148 | 149 |

150 | 151 | 152 | This means that the **old 192.168.3.1 Ip address has been changed** and you need to introduce the **new one** on the search bar to go to receiver's Web User Interface. 153 | 154 | **

IMPORTANT NOTE
** 155 | 156 | 157 | | Unfortunately some of these settings will be lost after a system restart. Please check this section to know what you need ro run **once** and this one to know what you need to run **every boot of the system**. | 158 | |---| 159 | 160 | ## Check new assigned IP to the receiver 161 | 162 | Upon enabling Outoging Interned Access Over USB option in Communications tab of Web User Interface and after enabling and configuring the network bridge from Wi-Fi to USB, the "192.168.3.1" IP address will no longer be accessible: a new random IP address will be assigned to your receiver. 163 | 164 | To check how is the new IP address assigned to the receiver, see the las print in the terminal after executing this command in the last step of the "Configure the network bridge from wifi to usb" chapter of this guide. 165 | 166 | In the following picture the assigned new IP for the receiver can be seen. Remember that after rebooting your PC this will change. 167 | 168 |

169 | 170 | 171 | In this case the new IP addres is: **172.20.20.18**. If you put that address on the internet you will navigate to the receiver's Web User Interface. In the following picture you can see this interface with the new assigned IP addres. 172 | 173 |

174 | 175 | 176 | At this point the receiver has internet and will be able to access NTRIP Servers/Casters over internet within the Web User Interface. 177 | 178 | ## What to run once 179 | 180 | These lines have to be runned only once because the changes made with them remain undisturbed each time the operating system is restarted. 181 | 182 | sudo apt-get install dnsmasq 183 | 184 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(bind-interfaces\)/\1/' 185 | 186 | sudo sed -i /etc/dnsmasq.conf -e 's/^#\(except-interface=\)/\1usb0/' 187 | 188 | **Note:** Remember to restart the system dnsmasq after making changes in /etc/dnsmasq.conf if you make any. 189 | 190 | sudo systemctl restart dnsmasq 191 | 192 | It is required so that the changes in dnsmasq.conf file can be saved. 193 | 194 | ## What to run every boot of the operating system 195 | 196 | The modified or added information and files are deleted when the operating system is shut down, therefore, it is necessary to run the following lines every time the operating system is restarted and you want to perform the process of transferring the internet connection to the receiver from the raspberry pi 197 | 198 | sudo sysctl net.ipv4.ip_forward=1 199 | 200 | sudo ip addr add 172.20.20.1/24 dev usb0 201 | 202 | sudo iptables -t nat -A POSTROUTING --src 172.20.20.0/24 -o wlan0 -j MASQUERADE 203 | 204 | sudo dnsmasq -d --conf-file=/dev/null --except-interface=lo --interface=usb0 --bind-interfaces --dhcp-range=172.20.20.10,172.20.20.20,255.255.255.0,1h 2>&1 205 | -------------------------------------------------------------------------------- /Receiver and Raspberry Setup/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | # Set Up Guide to use Third parties corrections with Septentrio's Receiver for precise positioning 4 | 5 | ## AUTHORS 6 | 7 | | Name | GitHub | 8 | |------|--------| 9 | | Iker Uranga | IkerUranga10
| 10 | 11 | ## MAINTAINER 12 | 13 | | GitHub | 14 | |--------| 15 | | septentrio-users
| 16 | 17 | ## DO YOU HAVE ANY QUESTIONS? CONTACT SEPTENTRIO SUPPORT TEAM 18 | 19 | | Septentrio Support Page| 20 | |---| 21 | 22 | ## SEPTENTRIO LINKS FOR USERS 23 | 24 | | Contact | Septentrio Home Page | 25 | |----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| 26 | | Septentrio Contact Page | Septentrio Home Page | 27 | 28 |
29 | 30 | ## TABLE OF CONTENTS 31 | 32 | 33 | * [Disclaimer](#disclaimer) 34 | * [Needed materials](#needed-materials) 35 | * [Septentrio's Mosaic-Go GNSS Receiver](#septentrios-mosaic-go-gnss-receiver) 36 | * [Raspberry Pi Model B and Hardware Considerations](#raspberry-pi-model-b-and-hardware-considerations) 37 | * [Implementation setup](#implementation-setup) 38 | * [Raspberry Pi OS Installation](#raspberry-pi-os-installation) 39 | * [Raspberry Pi OS Versions](#raspberry-pi-os-versions) 40 | * [Prerequisites to install Raspberry Pi OS](#prerequisites-to-install-raspberry-pi-os) 41 | * [Using Raspberry Pi Imager](#using-raspberry-pi-imager) 42 | * [Raspberry Pi OS Installation](#raspberry-pi-os-installation) 43 | * [Raspberry Pi Board Connection](#raspberry-pi-board-connection) 44 | * [Raspberry Pi OS Desktop Set Up](#raspberry-pi-os-desktop-set-up) 45 | * [Receiver Set Up](#receiver-set-up) 46 | * [Serial Permissions In Raspberry Pi OS](#serial-permissions-in-raspberry-pi-os) 47 | * [General flowchart and system scheme](#General-flowchart-and-system-scheme) 48 | * [Next step: Implementation of different correction services](#next-step-implementation-of-different-correction-services) 49 | 50 | 51 | 52 | ## DISCLAIMER 53 | 54 | For the implementation of the different correction services offered by the different companies with which Septentrio collaborates, several repositories and guides have been created to help the user with the implementation of these services. 55 | 56 | All these guides have been developed based on a specific setup described in this documentation. 57 | 58 | The purpose of this documentation is to **provide an example of the implementation of all the services**, but other users may have a different setup with different receiver or computer (external CPU). 59 | 60 | On the other hand, they all have several aspects in common: 61 | 62 | - For all the guides, since it is assumed that the user has the setup presented in this documentation, the Septentrio receiver or module communicates with the Raspberry Pi with a USB cable. For example, to perform communications via serial port or NTRIP. 63 | 64 | - All the implementation guides of the different correction services are intended to provide corrections in RTCM v3 format to the receiver using the mentioned USB cable. 65 | 66 | Therefore, all the guides in this project assume these two common aspects. However, this does not mean that you cannot integrate these correction services in a different setup, as **the one presented here is an example of a possible integration**. 67 | 68 | Also, all tests performed by Septentrio to validate the performance of all correction services using Septentrio modules have been performed **using this setup**. 69 | 70 | Please, if you have any doubts about this setup or any other questions about the implementation of the remediation services of the companies with which Septentrio collaborates, do not hesitate to navigate to our technical support section on our website. 71 | 72 |
73 | 74 | Do you have questions? 75 | 76 | | Click here to access to the Septentrio Support page | 77 | |---| 78 | 79 | Navigate to the main page: 80 | 81 | | Click here to navigate to the Main page of the documentation | 82 | |---| 83 | 84 |
85 | 86 | ## NEEDED MATERIALS 87 | 88 | All needed materials are shown in the following picture and list. 89 | 90 |

91 | 92 | 93 | Make sure you have a keyboard, mouse and monitor for comfortable use of the operating system. 94 | 95 | Needed materials: 96 | 97 | - USB to Micro USB Cable 98 | - Power supply 99 | - Raspberry Pi 4 Model B 100 | - 16GB SD Card 101 | - HDMI to Micro HDMI Cable 102 | - GNSS Antenna Cable 103 | - Mosaic-Go GNSS Receiver 104 | - GNSS Antenna already installed 105 | 106 | To implement GNSS correction services using a Raspberry Pi, it's necessary to have the proper hardware. There are several Raspberry Pi packs available on the market that provide all the necessary components, including the Raspberry Pi itself, power supply, and SD card. However, it's important to note that these packs do not include the Septentrio Mosaic-Go module, GNSS antenna and antenna cable, which must be obtained separately. 107 | 108 | Please be aware that this documentation does not cover the installation and setup of the GNSS antenna. It is assumed that the user already has a working GNSS antenna and knows how to install it. Therefore, regarding antenna related components, this documentation only deals with the connection of the already installed and operational antenna with the Mosaic-Go module. 109 | 110 | **Note:** It's worth noting that an Ethernet cable is not required if the Raspberry Pi has an internet connection via Wi-Fi. However, if your application requires an internet connection via Ethernet, you will need to configure the Raspberry Pi accordingly. 111 | 112 | ### Septentrio's Mosaic-Go GNSS Receiver 113 | 114 |

115 | 116 | 117 | In this setup, we have used the Septentrio Mosaic-Go model. However, any other Septentrio receivers that can communicate with a Raspberry Pi can be used instead. If a different connector is used, it may be necessary to modify the configuration of some of the libraries, APIs or SDKs provided by the different GNSS correction service companies that collaborate with Septentrio for this project. 118 | 119 | The Mosaic-Go is a high-precision GPS/GNSS evaluation kit that offers best-in-class centimeter-level positioning performance, even in challenging environments. It is a compact, multi-band, multi-constellation GPS/GNSS receiver integrated with a mosaic-X5 in a small metallic housing. The Mosaic-Go is specifically designed for easy evaluation of mosaic-X5 for applications such as UAVs, robotics, autonomous systems, construction and agriculture. This high-performance module supports all current GNSS satellite signals and is future-proof for upcoming signals and services. Its unique built-in AIM+ technology for interference monitoring and mitigation., as well as anti-spoofing, ensures the best availability, reliability, and precision. 120 | 121 | The evaluation kit provides an opportunity to discover and test the mosaic-X5 module. You can integrate the Mosaic-Go evaluation kit into your system using any of the following connections: COM ports, USB 2.0, or SD memory card. 122 | 123 | If you have any questions or feedback, please don't hesitate to reach out to us at Septentrio support page. 124 | 125 | ## RASPBERRY PI MODEL B AND HARDWARE CONSIDERATIONS 126 | 127 | For this implementation a Raspberry PI 4 Model B with 4 GB of RAM has been used. The use of another model of Raspberry Pi should work but has not been tested, although the use of the this model is recommended. Each one of the different Raspberry Pi models has hardware changes that could affect the performance of the system. In general, the libraries, APIs or SDKs offered by the different companies with which Septentrio collaborates for this project do not require excessive hardware usage. **Therefore, the use of another Raspberry PI model should not be a problem, but has not been tested by Septentrio**. 128 | 129 | Additionally it should be taken into account that the interface of the Raspberry Pi changes with the model, and that for example for the Raspberry Pi 3, the video output is an HDMI port and not a Micro HDMI port as it is the case of the Raspberry Pi 4 Model B, so another type of cable would be needed to connect it to a screen. 130 | 131 | ## IMPLEMENTATION SETUP 132 | 133 | ### Raspberry Pi OS Installation 134 | 135 |

136 | 137 | 138 | For the demostration, the first step is to install an Operating System inside micro SD Card for which **another computer is needed**. The Selected Operation System is Raspberry Pi OS 64-Bits, wich has "Bullseye" Debian 11 version. Raspberry Pi Os is the official supported operating system by Raspberry. 139 | 140 | #### Raspberry Pi OS Versions 141 | 142 | Raspberry Pi OS is offered in three “versions”: 143 | 144 | - Full: Raspberry Pi OS with desktop and recommended software. 145 | - Desktop: Raspberry Pi OS with desktop. 146 | - Lite: Minimal image for Raspberry Pi OS (no interface, command line only). 147 | 148 | #### Prerequisites to install Raspberry Pi OS 149 | 150 | To follow the instalation guide, you need: 151 | 152 | - An Internet connection. 153 | - A computer to download and flash Raspberry Pi OS. 154 | - An SD card reader (USB or built-in computer). 155 | - A minimum 8 GB micro SD card. 156 | 157 | #### Using Raspberry Pi Imager 158 | 159 | Raspberry Pi Imager is the quick and easy way to install Raspberry Pi OS and other operating systems to a micro SD card, ready to use with your Raspberry Pi. 160 | 161 | If you want to learn how to install Raspberry Pi OS you can follow this video of How to use Raspberry Pi Imager, by Raspberry Pi's YouTube Channel or read more in the official documentation. 162 | 163 |

164 | How to use Raspberry Pi Imager | Install Raspberry Pi OS to your Raspberry Pi (Raspbian) 165 | 166 | #### Raspberry Pi OS Installation 167 | 168 | Download and install Raspberry Pi Imager. For this demostration we have downloaded 1.7.3 version of the Imager. 169 | 170 |

171 | 172 | | Click here to download Raspberry Pi Imager from the official Raspberry website. | 173 | |---| 174 | 175 |
176 | 177 |

178 | 179 | 180 | One the program is opened, you should see the following window in your screen. 181 | 182 |

183 | 184 | 185 | The next step is to select which Operating System you want to install and its destination. 186 | By default, the application selects Raspberry Pi OS (32-Bit), but for the case of this Set UP with Septentrio receiver we will select **RASPBERRY PI OS 64-BIT** option and then seletc Storage SDHC CARD, which is our Micro SD Card. Then we press WRITE. 187 | 188 |

189 | 190 | 191 | Then we need to confirm the installatoin operation and wait until the program finishes. 192 | 193 |

194 | 195 | 196 |

197 | 198 | 199 | When the following pop-up appears in the screen, the installations has been done correctly and we have to select CONTINUE. 200 | 201 |

202 | 203 | 204 | #### Raspberry Pi Board Connection 205 | 206 | For the connection of the Raspberry Pi board we need to: 207 | 208 | - Connect Raspberry Pi to a screen using Micro HDMI port with the Micro HDMI to HDMI cable. 209 | - Insert Micro SD. 210 | - Connect Keyboard and Mouse into USB Ports. 211 | 212 | And finally, power the Raspberry Pi with USB-C cable. Once the Raspberry Pi is supplied with power, you should see the Raspberry Pi OS Desktop Set Up on the screen. 213 | 214 | #### Raspberry Pi OS Desktop Set Up 215 | 216 | Once the Operating System setup is displayed on the screen: 217 | 218 | - Press Next to get started. 219 | - Set the counrty, lenguage and keyboard lenguage. 220 | - Set an username and password. 221 | - Set up Screen size. 222 | - Select Wi-Fi Network. (Recommended) 223 | - Update Software. 224 | - Reboot. 225 | 226 | ### Receiver Set Up 227 | 228 | For the Mosaic-Go module setup its needed to connect the receiver and Raspberry Pi using the USB to Micro-USB Cable. Micro-USB Connector in the Receiver and USB in the Raspberry Pi. You can see the Mosaic-Go interface in the following pictures. 229 | 230 |

231 | 232 | 233 | The next step would be to connect the GNSS antenna to the receiver via antenna cable. For more information about the Mosaic-Go Interface, please visit Septentrio's GNSS Modules web page. 234 | 235 | **Note:** 236 | If you're running into issues with the Receiver/Raspberry Pi connection, you may not have read/write access to the serial port on your machine. This is a common issue when using the serial port in Linux. To fix it, run the following command in a terminal. 237 | 238 | sudo usermod -a -G dialout $USER 239 | 240 | ## General flowchart and system scheme 241 | 242 | The general flowchart of the system: 243 | 244 |

245 | 246 | 247 | Simplified scheme of the system: 248 | 249 |

250 | 251 | 252 | ## NEXT STEP: IMPLEMENTATION OF DIFFERENT CORRECTION SERVICES 253 | 254 | At this point, the guide assumes that you have already set up the receiver and Raspberry Pi hardware following the steps provided in the previous sections of this documentation page. 255 | 256 | To proceed with the implementation of the third-party correction service, first of all you need to select one of the companies that Septentrio collaborates with for this project. Once you have selected the company, follow the instructions to implement their library, API or SDK on your Raspberry Pi. It is important to note that different companies have different features and coverage areas, so it is recommended to research and select the company that best suits your specific needs and performance requirements. 257 | 258 | After completing the implementation of the service, the Raspberry Pi you should be able to get corrections on the receiver for high-precision positioning. 259 | 260 |

261 | 262 | | Click here to the navigate to the Implementation with different Correction Service Providers guides | 263 | |---| 264 | 265 |
266 | -------------------------------------------------------------------------------- /str2str/README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # How to use RTKLIB's str2str tool to receive corrections from NTRIP Server and send them to Septentrio receiver. 4 | 5 | ## AUTHORS 6 | 7 | | Name | GitHub | 8 | |------|--------| 9 | | Iker Uranga | IkerUranga10
| 10 | 11 | ## MAINTAINER 12 | 13 | | GitHub | 14 | |--------| 15 | | septentrio-users
| 16 | 17 | ## DO YOU HAVE ANY QUESTIONS? CONTACT SEPTENTRIO SUPPORT TEAM 18 | 19 | | Septentrio Support Page| 20 | |---| 21 | 22 | ## SEPTENTRIO LINKS FOR USERS 23 | 24 | | Contact | Septentrio Home Page | 25 | |----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| 26 | | Septentrio Contact Page | Septentrio Home Page | 27 | 28 | ## DISCLAIMER 29 | 30 | This set of guidelines consist of a several practical examplse to help Septentrio Module users and developers to integrate third party GNSS corrections. The guidelines are based on a concrete setup, which you may or may not use to follow the integration guidelines. 31 | 32 | It is desirable to mention the disclaimer about that setup and the guides in general before starting reading this guide. 33 | 34 | | Click here to know more about the Setup in which these guides are based and general implementation documentation disclaimer | 35 | |---| 36 | 37 |
38 | 39 | ## TABLE OF CONTENTS 40 | 41 | 42 | 43 | * [Introduction](#introduction) 44 | * [What is RTKLIB?](#what-is-rtklib) 45 | * [What is str2str?](#what-is-str2str) 46 | * [The -b flag of rtklib 2.4.3 branch](#the--b-flag-of-rtklib-correct-branch) 47 | * [Repository download](#repository-download) 48 | * [Changing to 2.4.3 branch](#changing-to-2-4-3-branch) 49 | * [str2str tool compilation](#str2str-tool-compilation) 50 | * [Receiver configuration](#receiver-configuration) 51 | * [Receiver Output Configuration](#receiver-output-configuration) 52 | * [Receiver Input Configuration](#receiver-input-configuration) 53 | * [Running str2str](#running-str2str) 54 | * [Different parts in execution command](#different-parts-in-execution-command) 55 | * [Different streams](#different-streams) 56 | * [Receiving corrections](#receiving-corrections) 57 | * [Execution command example](#execution-command-example) 58 | * [System Scheme](#system-scheme) 59 | * [Simplified version of the system scheme](#simplified-version-of-the-system-scheme) 60 | 61 | 62 | 63 | ## INTRODUCTION 64 | 65 | This repository consists in a how-to guide for the integration of RTKLIB's str2str Application Program (AP) inside Raspberry Pi to get corrections from NTRIP Caster/Server from the corrections service provided you selected and send these corrections to a Septentrio Receiver via Serial Port. 66 | 67 | This guide is based on the setup suggested in the documentation of this repository. 68 | 69 |
70 | 71 | | Click here to acces to our Set Up Guide to use Third Party OSR and SSR correction services with Septentrio's Receivers for precise positioning. | 72 | |---| 73 | 74 |
75 | 76 | Therefore, in this case the, implementation of str2str is oriented to this setup, but the general operation of str2str is similar for other cases and its installation on a Linux based operating system is done in the same way. The compilation of str2str is done using the **make** tool. 77 | 78 | ## WHAT IS RTKLIB? 79 | 80 | RTKLIB is an open-source software package that enables standard and precise positioning with GNSS (Global Navigation Satellite System). The software consists of a portable program library and several application programs (APs) that utilize the library. 81 | 82 | **One of these APs is str2str tool.** 83 | 84 | The library is developed by tomojitakasu whose logo is shown below: 85 | 86 |

87 | 88 | 89 | You can download and install RKTLIB with its tools by entering the following command in the terminal. 90 | 91 | sudo apt-get install rtklib 92 | 93 | ### What is str2str? 94 | 95 | str2str is an Application Program that receives input data from a stream and divides and outputs them to one or multiple streams. The input stream can be serial, TCP client, TCP server, NTRIP client, or file. The output stream can also be serial, TCP client, TCP server, NTRIP server, or file. 96 | 97 | This repository provides a solution for a specific case where the input stream is a corrections provider that uses NTRIP. In this case, you should have the information (host, stream, password, etc.) of the NTRIP connection of the Correction Service Provider. 98 | 99 | ### The -b flag of rtklib 2.4.3 branch 100 | 101 | One challenge of using RTKLIB with this specific setup is that the version installed using the **sudo apt-get install rtklib does not have the -b flag implementation**. This flag is **strongly recommended** to keep the connections between the receiver and Raspberry Pi system as simple as possible. 102 | 103 | The -b flag implementation allows the system to send NMEA messages through the output channel, which is the serial port used to transmit RTCM corrections messages from Raspberry Pi to the receiver. **Without the -b flag, you will need to add an additional communication channel to transmit these NMEA messages to the corrections provider**. Therefore, using the -b flag results in a greater ease of system implementation because it allows you to run a single command with a single communication channel, which is a simple USB cable between the receiver and the Raspberry Pi, if you are using the setup recommended at the beginning of this guide. 104 | 105 |

106 | 107 | **Setup:** *Raspberry Pi 4 Model B + Mosaic-Go Evaluation Kit with mosaic-X5 module inside* 108 | 109 | | Click here to the access to the all Septentrio GNSS Modules page. | 110 | |---| 111 | 112 | | Click here to acces to our Set Up Guide to use Third Party OSR and SSR correction services with Septentrio's Receivers for precise positioning. | 113 | |---| 114 | 115 | 116 |
117 | 118 | To use the -b flag implementation, we have selected the option of directly cloning the RTKLIB library repository, switching to the branch that has the -b flag implemented, and compiling only the AP that we need, i.e., str2str. The compiled str2str executable file should then be run to get corrections. This is different from other RTKLIB tools that are installed using a terminal command. 119 | 120 | ## REPOSITORY DOWNLOAD 121 | 122 | For the download, the **2.4.3 b24 version** is needed. This is because **-b flag** was added to str2str tool in this version and it is in charge of passing NMEA GGA data from the receiver to the NTRIP Server/Caster. In this case, we will use RKLIB 2.4.3 b34. 123 | 124 | In the RTKLIB web page we have to select 2.4.3 b34, as marked in red in the following picture: 125 | 126 |

127 | 128 | 129 |

130 | 131 | | Click here to navigate to 2.4.5 branch o RTKLIB's Github page, provided by tomojitakasu. | 132 | |---| 133 | 134 |
135 | 136 | The next step is to clone this repository. 137 | 138 | git clone https://github.com/tomojitakasu/RTKLIB.git 139 | 140 | **Checking if we are really in the rtklib_2.4.3 branch is crucial for this system to work**. To check it we execute the following command in the terminal: 141 | 142 | cd RTKLIB 143 | git branch -a 144 | 145 |

146 | 147 | 148 | It can be seen marked in green in the picture above that we are still in the master branch. In this branch -b option for NMEA Data streaming does not exist, so we need to change to the correct branch. 149 | 150 | ### Changing to 2.4.3 branch 151 | 152 | To change to the correct RTKLIB's branch, which already has the implementation of str2str tool, we need to run this command inside the cloned repository. 153 | 154 | git checkout rtklib_2.4.3 155 | 156 | Should appear the following message: 157 | 158 |

159 | 160 | *Branch 'rtklib_2.4.3' set up to track remote branch 'rtklib_2.4.3' from 'origin'. 161 | Switched to a new branch 'rtklib_2.4.3'* 162 | 163 |
164 | 165 | And if we check the current branch again: 166 | 167 | git branch -a 168 | 169 |

170 | 171 | 172 | We can see that we are in the correct branch. 173 | 174 | ## STR2STR TOOL COMPILATION 175 | 176 | For the installation, **compilation with make command is needed** inside the specific Application Program's directory we want, which is str2str for this case. To do this: 177 | 178 | cd app/consapp/str2str/gcc 179 | make 180 | 181 | Some warnings will appear but the program should compile correctly. 182 | 183 | ## RECEIVER CONFIGURATION 184 | 185 | For the configuration of the receiver, the NMEA Streaming is only needed. We can do it in two different ways at Septentrio's HTTP Interface: 192.168.3.1. 186 | 187 | **Note:** 188 | 189 | For this case we are using USB OTG1 (USB On-The-Go 1) port, if you are using other channel that supports serial protocol, please adapt it to your setup (For example, any COM or USB port). To check the setup we are using and which this guide is based on (Raspberry Pi and AsteRx SB Receiver), please go to our following guide: 190 | 191 |

192 | 193 | | Set Up Guide to use Third parties OSR corrections with Septentrio's Receiver for precise positioning | 194 | |---| 195 | 196 |
197 | 198 | It works with any mosaic receiver, as they are able to stream NMEA GGA data and to receive RTCMv3 messages. 199 | 200 | ### Receiver Output Configuration 201 | 202 | **1st OPTION:** Upload the configuration file contained inside config folder, called *str2str_minimum_config.txt*. Its content is the following: 203 | 204 | setNMEAOutput, Stream1, OTG1 205 | setNMEAOutput, Stream1, , GGA 206 | setNMEAOutput, Stream1, , , msec100 207 | 208 | You can upload and download the receiver configuration by going to *Admin> Configurations> Receiver Configurations> Current* in Septentrio's HTTP interface. Once uploaded, it should look like in the following picture. 209 | 210 |

211 | 212 | 213 | **2nd OPTION:** Create new stream manually. In the Septentrio's HTTP interface go to *NMEA/SBF Out> (+) New NMEA Stream> USB On-The-Go port> OTG1 USB On-The-Go port 1> Select GGA and 100ms interval*. If it is well configured, the streaming should appear like in the following picture. 214 | 215 |

216 | 217 | 218 | ### Receiver Input Configuration 219 | 220 | For this step we have to make sure that the receiver is well configured to receive RTCMv3 data. The receiver is able to read any kind of corrections format coming from all of channels it has available by default. To check if it is well configured, in Septentrio's HTTP Interface, go to *Corrections > Corrections Input* and the selected option for the communication channel you are using shoudl be as the following picture. 221 | 222 |

223 | 224 | 225 | In this case we are usin OTG1, so we have to be sure that is receiving in auto OR rtcmV3 mode. It is recommended to let it in auto mode. With this mode, the receiver will know automatically which mesasage protocol and which message type is been used. 226 | 227 | ## RUNNING STR2STR 228 | 229 | Once the str2str Application Program is compiled and receiver is correctly configured to send NMEA, we need to execute the str2str application like in the following picture. 230 | 231 |

232 | 233 | 234 | ### Different parts in execution command 235 | 236 | We have **4 parts** in the execution command: 237 | 238 | - **Command execution** 239 | - We need to execute a file directly, that is why is an Application Program and not a GUI or terminal tool. Also there is an equivalent tool in RTKLIB that is called strsrv, that is exactly the same as str2str but the difference is that **strsrv** is a GUI only for Windows. 240 | 241 | - **Input stream config** 242 | - The AP **only supports one input at the same time**. 243 | - For this case the input stream is the NTRIP Caster/Server hosted by the company you have selected for the correction service. 244 | 245 | - **Output stream config** 246 | - For this setup the output stream is going to be sent to the serial port connected to the Receiver. 247 | - As this is the channel in which we are going to send NMEA GGA Messages, from the Receiver to the Raspberry Pi (using str2str2), we must specify the host to be sent to. (See it in blue color ar the right side of the picture above) 248 | - This is **only** if we want to send NMEA, using -b flag. 249 | 250 | - **(-b Flag) NMEA config, if needed** 251 | - In this case we need -b flag to send NMEA for an easier implementation. 252 | - Here we have to specify the **output port in which we are receiving NMEA Messages.** 253 | - In this case, the number 1 after -b flag indicates that the NMEA stream which is going to be sent to NTRIP Caster/Server is been received from the **first output stream**. (This is because str2str tool suports several output streams at the same time.) 254 | 255 | ### Different streams 256 | 257 | For the **Input Stream**: 258 | 259 | We have to specify the stream type with **ntrip://**, which is NTRIP for this case and insert our NTRIP credentials, host and stream (mountpoint), as we are receiving corrections through NTRIP. 260 | 261 | -in ntrip://LoginID:Password@Host/Stream 262 | 263 | For the **Ouput stream**: 264 | 265 | As we are passing RTCM corrections to the receiver via serial port we have to specify the stream type with **serial://**, and the serial port parameters with the selected serial port, baud rate, byte size, parity, stop bit and fctr. 266 | 267 | -out serial://SerialPort:BaudRate:ByteSize:Parity:StopBit:Fctr#host 268 | 269 | For the setup we are using, would be: 270 | 271 | -out serial://ttyACM0:115200:8:n:1:off#host 272 | 273 | - Note that for this part of the command, we need to add **#host** (which is the NTRIP Mountpoint) at the end because we will specify later (-b flag after output stream parameters) that we are passing NMEA messages through the output 1 stream channel, so we need to specify where (which NTRIP port) do we want to send this information. 274 | 275 | - This is not the case, but **if we would not need to send NMEA messages**, the command would not have -b, like this: 276 | 277 | -out serial://ttyACM0:115200:8:n:1:off 278 | 279 | For the **NMEA stream**, we just need to add: 280 | 281 | -b 1 282 | 283 | - -b to configure that we are sending NMEA messages, and 1 to specify in which **output** stream channel will be sent. In this case is the output 1 stream channel, which is the serial port. 284 | 285 | ## RECEIVING CORRECTIONS 286 | 287 | Once the setup is well connected, RTKLIB's installed, str2str AP compiled, the receiver is configured and str2str execution command's parameters well configured, we execute this finnal command (filled with your own parameters): 288 | 289 | ./str2str -in ntrip://LoginID:Password@Host/Stream -out serial://ttyACM0:115200:8:n:1:off#Host -b 1 290 | 291 | And then the Septentrio's HTTP Interface should show that the receiver is getting corrections, as shown in the picture below. 292 | 293 |

294 | 295 | 296 | ### Execution command example 297 | 298 | For a practical example let's say that previously we have the correct setup and the receiver is well configured. 299 | 300 | The NTRIP parameters are: 301 | 302 | - LoginID: Septentrio_Login 303 | - Password: str2str_password 304 | - Host: Septentrio_Host 305 | - Stream: Septentrio_Stream 306 | 307 | And the serial port parameters are: 308 | 309 | - Port name: ttyACM0 310 | - Baud rate: 115200 311 | - Parity: none 312 | - Byte size: 8 313 | - Stop bit: no 314 | - Fctr: off 315 | 316 | The execution command would be: 317 | 318 | ./str2str -in ntrip://Septentrio_Login:str2str_password@Septentrio_Host/Septentrio_Stream -out serial://ttyACM0:115200:8:n:1:off#Septentrio_Host -b 1 319 | 320 | ## SYSTEM SCHEME 321 | 322 | The physical setup used for this example is the one suggested in this guide called " Set Up Guide to use Third parties OSR corrections with Septentrio's Receiver for precise positioning ". In the scheme below it can be seen that the only input from the user is the parameter configuration for the str2str Application Program in the execute command and the receiver configuration to ensure that NMEA stream is been sended. Both of these are done **inside the operating system running in the Raspberry Pi**. That is why there is a white box called "User Input" inside the green box which represents the Raspberry Pi. 323 | 324 |

325 | 326 | 327 | ### Simplified version of the system scheme 328 | 329 |

330 | 331 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | # Set Up Guide to use Third Party OSR and SSR correction services with Septentrio's Receivers for precise positioning 4 | 5 | ## GENERAL CONTEXT 6 | 7 | ### Why GNSS Corrections 8 | 9 | GNSS (Global Navigation Satellite System) technology has revolutionized the way we navigate and position ourselves, with applications ranging from transportation to surveying and agriculture. GNSS provides location information based on signals received from satellites, but the accuracy of this information can be affected by various factors such as atmospheric conditions and signal blockages. To mitigate these effects, GNSS corrections are used to improve the accuracy of the position measurements. 10 | 11 | ## New GNSS Corrections mechanisms 12 | 13 | In recent years, there has been a growing demand for high-accuracy positioning in various industries, including agriculture. This has led to the evolution of GNSS correction mechanisms, such as OSR (Observation Space Representation), SSR (State Space Representation) or LBand delivery, which provide higher accuracy and lower convergence time. However, with the introduction of multiple formats in the market, standardization is yet to be fully established, making it challenging for users to access and use these corrections. 14 | 15 | ## Facilitating GNSS corrections integration in agnostic way 16 | 17 | To address this challenge, it is important to create an ecosystem around GNSS corrections that is agnostic, allowing users to access and use corrections from different providers easily. This way, users can take advantage of the growing range of correction options available, without being restricted to a single format or provider. In this context, this repository explores the importance of having GNSS corrections in an agnostic way, providing a brief overview of what corrections are and the evolution of correction mechanisms to newer formats through exploring the integration of corrections of companies with which Septentrio collaborates. 18 | 19 | ## Possibility of integrating correction services according to requirements and needs 20 | 21 | Different options and flexibility are crucial when it comes to integrating GNSS technology. While corrections are a fundamental element of achieving high accuracy, having the ability to choose from a variety of corrections services allows for greater flexibility and adaptability as these services continue to evolve over time. Different applications have different requirements, and each service offers unique advantages in terms of performance and different coverage regions. 22 | 23 | ## Make it easy 24 | 25 | It's important to make it easy for users/integrators to evaluate these options and choose the best service for their needs. Additionally, making these options easily accessible to the community is equally important. Platforms like Github enable to document and create demonstrators that allow users to try out different correction services with ease. 26 | 27 | ## AUTHORS 28 | 29 | | Name | GitHub | 30 | |------|--------| 31 | | Iker Uranga | IkerUranga10
| 32 | 33 | ## MAINTAINER 34 | 35 | | GitHub | 36 | |--------| 37 | | septentrio-users
| 38 | 39 | ## DO YOU HAVE ANY QUESTIONS? CONTACT SEPTENTRIO SUPPORT TEAM 40 | 41 | | Septentrio Support Page| 42 | |---| 43 | 44 | ## SEPTENTRIO LINKS FOR USERS 45 | 46 | | Contact | Septentrio Home Page | 47 | |----------------------------------------------------------------------------------|-----------------------------------------------------------------------------| 48 | | Septentrio Contact Page | Septentrio Home Page | 49 | 50 | ## DISCLAIMER 51 | 52 | This set of guidelines consist of a several practical examplse to help Septentrio Module users and developers to integrate third party GNSS corrections. The guidelines are based on a concrete setup, which you may or may not use to follow the integration guidelines. 53 | 54 | It is desirable to mention the disclaimer about that setup and the guides in general before starting reading this guide. 55 | 56 | | Click here to know more about the Setup in which these guides are based and general implementation documentation disclaimer | 57 | |---| 58 | 59 |
60 | 61 | ## TABLE OF CONTENTS 62 | 63 | 64 | 65 | * [Introduction](#introduction) 66 | * [Who is Septentrio?](#who-is-septentrio) 67 | * [mosaic-go GNSS module receiver evaluation kit and other Septentrio modules](#mosaic-go-gnss-module-receiver-evaluation-kit-and-other-septentrio-modules) 68 | * [Is the project Open Source?](#is-the-project-open-source) 69 | * [Implementation with different Correction Service Providers](#implementation-with-different-correction-service-providers) 70 | * [Integration flowchart](#integration-flowchart) 71 | * [Selecting the service](#selecting-the-service) 72 | * [Point One Navigation (Polaris)](#point-one-navigation) 73 | * [Swift Navigation (Skylark)](#swift-navigation) 74 | * [u-blox (PointPerfect)](#u-blox) 75 | 76 | * [Other guides](#other-guides) 77 | * [Raspberry Pi 4 Model B and Mosaic-Go GNSS module receiver evaluation kit setup](#raspberry-Pi-4-model-b-and-mosaic-go-gnss-module-receiver-evaluation-kit-setup) 78 | * [RTKLIB str2str tool compilation and use guide](#rtklib-str2str-tool-compilation-and-use-guide) 79 | * [Transmit internet connection through the Raspberry Pi to the receiver using a USB cable guide](#transmit-internet-connection-through-the-raspberry-pi-to-the-receiver-using-a-usb-cable-guide) 80 | 81 | 82 | ### 83 | 84 | 85 | 86 | ## INTRODUCTION 87 | 88 | Welcome to the Septentrio's Agnostic GNSS Corrections Integration Guide repository, where you can find step-by-step guides for integrating a system that uses a Raspberry Pi 4 Model B to provide **Septentrio mosai™ GNSS Receiver Modules** with State Space Representation (SSR) and Observation Space Representation (OSR) corrections from third-party companies. 89 | 90 | If you're looking to set up a system that provides SSR and OSR corrections to Septentrio receivers using an embedded Linux based system such as the Raspberry Pi 4 Model B, you've come to the right place! This repository offers comprehensive guides on how to configure your Raspberry Pi and receiver, and implement third-party correction services. 91 | 92 | The guides are divided into **two main parts**. 93 | 94 | - **Initial configuration:** The first part covers the configuration of your Raspberry Pi 4 Model B and receiver system, which you can access by navigating to the different How-To guides. 95 | 96 |
97 | 98 | | Click here to access to the Raspberry Pi and receiver setup guide. | 99 | |---| 100 | 101 |
102 | 103 | - **Implementation of the third-party correction service:** Once you've completed the previously mentioned setup guide, the second part will guide you through the implementation of the third-party correction service you've selected **depending on your application requirements**. We've included links to the implementation guides for libraries, APIs, and SDKs from various companies offering correction services. 104 | 105 |
106 | 107 | | Click here to access a list of step-by-step guides on how to integrate corrections from different third party companies that Septentrio is collaborating with for this project. | 108 | |---| 109 | 110 |
111 | 112 | To get started, simply click on the link to the setup guide and follow the step-by-step instructions. Whether you're an experienced developer or just getting started, our guides make it easy to integrate a powerful correction system using Raspberry Pi and Septentrio receivers. So why wait? Click on the links above to get started today! 113 | 114 | Thank you for your confidence in choosing us for accurate, secure and robust positioning, and even more so with form agnostic corrections! If you have any questions or feedback, please don't hesitate to reach out to us at Septentrio support page. 115 | 116 | ## WHO IS SEPTENTRIO? 117 | 118 |

119 | 120 | 121 | Welcome to Septentrio, your trusted source for high-precision GPS/GNSS equipment designed for use in the most demanding applications. Our multi-frequency, multi-constellation products are used across a wide range of industries, including marine, construction, precision agriculture, logistics, machine control, rail, automotive, survey and mapping, geographic information systems (GIS), unmanned aerial vehicles (UAVs), and scientific research. 122 | 123 |

124 | 125 | | Click here to the access to Septentrio home page. | 126 | |---| 127 | 128 |
129 | 130 | At Septentrio, we are committed to delivering consistently accurate and precise GNSS positioning solutions that are scalable to centimeter-level accuracy in the most challenging environments. Our receivers are designed to perform solidly in the most challenging conditions, delivering reliable and robust performance that you can count on. 131 | 132 | We offer a range of products to meet your needs, including OEM boards, housed receivers, and smart antennas. Whether you're looking for a fully integrated solution or a custom-designed solution tailored to your specific needs, we have the expertise and experience to help you achieve your goals. 133 | 134 | Thank you for choosing Septentrio as your trusted partner for high-precision GNSS equipment. 135 | 136 | ### mosaic-go GNSS module receiver evaluation kit and other Septentrio modules 137 |

138 | 139 | 140 | This whole project of integration of third party corrections with septentrio receivers has been developed and tested with our mosaic-go GNSS module receiver evaluation kit. It's a multi-band, multi-constellation GPS/GNSS receiver **mosaic-X5 integrated** inside a small metallic housing. This guide has been written around mosaic-go however the same guide can also be used with other Septentrio receivers such as mosaic-go heading, or other product families such as AsteRx OEM boards and housed receivers. 141 | 142 |

143 | 144 | 145 | mosaic-X5 is Septentrio's mosaic-X5 multi-constellation GNSS receiver is a low-power surface-mount module with a wide array of interfaces and is designed for mass-market applications such as robotics and autonomous systems. 146 | 147 | **mosaic-X5 GNSS Module** 148 | 149 |

150 | 151 | | Click here to the access to the contact page of the mosaic-X5 GNSS Module. | 152 | |---| 153 | 154 |
155 | 156 | **All Septentrio GNSS Module products** 157 | 158 |
159 | 160 | | Click here to the access to the all Septentrio GNSS Modules page. | 161 | |---| 162 | 163 |
164 | 165 | ## IS THE PROJECT OPEN SOURCE? 166 | 167 | Yes, as it allows easy adaptations and thus enables the robotics and autonomous community to create their own spin off projects. 168 | As such this can be also a starting reference point for integrators when in need of GNSS integration. 169 | 170 | With open source it means that the following is provided: 171 | -Editable source files 172 | -Modifications and spin off projects allowed 173 | -You are allowed to sell your version. No -NC limitations. 174 | -May require attribution 175 | -We encourage you to stand on our shoulders and even make money at it! 176 | 177 | More info about licensing can be found here: 178 | Creative Commons Attribution Share-Alike License. and Open Source HW 179 | 180 | ## IMPLEMENTATION WITH DIFFERENT CORRECTION SERVICE PROVIDERS 181 | 182 | This section contains the guides on how to implement third-party correction services using a Raspberry Pi 4 Model B and a Mosaic-X5 receiver. Septentrio collaborates with a variety of companies to provide you with sample guides on how to integrate their correction services into the Raspberry Pi - Mosaic receiver setup. 183 | 184 | ### Integration flowchart 185 | 186 |

187 | 188 | 189 | ### Selecting the service 190 | 191 | When selecting a correction service, it's important to consider the different features and coverage areas offered by each company, as well as your specific application's performance requirements and needs. To help you make an informed decision, there is compiled a list of the companies that Septentrio collaborates with and their respective guidelines in this repository. 192 | 193 | Also you can access to the Septentrio Support page for more information about which of the following services best fits your needs and circumstances. 194 | 195 |

196 | 197 | | Click here to access to the Septentrio Support page | 198 | |---| 199 | 200 |
201 | 202 | Below is a list of partner companies for which we have created How-To guides for the integration of their correction services with Septentrio receivers. 203 | 204 |
205 | 206 | #### Point One Navigation 207 | 208 |

209 | 210 | 211 | | Point One Navigation Polaris Corrections With Septentrio Guide. | 212 | |---| 213 | 214 | #### Swift Navigation 215 | 216 |

217 | 218 | 219 | | SwiftNav Skylark Corrections With Septentrio Guide. | 220 | |---| 221 | 222 | #### u-blox 223 | 224 |

225 | 226 | 227 | | u-blox PointPerfect Corrections With Septentrio Guide. | 228 | |---| 229 | 230 | #### Topcon 231 | 232 |

233 | 234 | 235 | | Topcon Topnet Live Corrections With Septentrio Guide. | 236 | |---| 237 | 238 |

239 | 240 | Some of the guidelines may require additional instructions or steps to be followed, which are common among multiple companies' implementations. To help streamline the process, we've included extra guides in this repository, such as the implementation guide for setting up your Raspberry Pi 4 Model B and Septentrio Mosaix-X5 receiver. 241 | 242 | In the following section below you can access this and other complementary guides. 243 | 244 | ## Other guides 245 | 246 | This repository additionally contains other guides that are complementary to the implementation guides of the different libraries, APIs and SDKs of the different companies with which Septentrio collaborates for this project. 247 | 248 | ### Raspberry Pi 4 Model B and Mosaic-Go GNSS module receiver evaluation kit setup 249 | 250 | The main example of these complementary guides is the Set Up Guide to use Third parties corrections with Septentrio's Receiver for precise positioning, which is the setup on which all implementations of these libraries, APIs and SDKs are based. 251 | 252 |
253 | 254 | | Click here to the access to setup preparation guide. | 255 | |---| 256 | 257 |
258 | 259 | Here is a simplified schematic of the general operation of the Raspberry Pi setup in combination with the Mosaic-Go Module. 260 | 261 |

262 | 263 | 264 | 265 | ### RTKLIB str2str tool compilation and use guide 266 | 267 | This repository is about how to implement the tool called **str2str from the RTKLIB library**. The use of the tool consists of downloading the RTKLIB repository, compiling the str2str tool and using it to connect to an NTRIP Server/Caster and forward the incoming corrections to the receiver. 268 | 269 | The str2str tool **is running inside the Raspberry Pi and it creates an NTRIP client** to access the corrections, while sending them to the receiver. The steps for how to download, compile and use the tool for this specific application can be found in the following guide: 270 | 271 | 272 |

273 | 274 | | Click here to the access to RTKLIB's str2str tool compilation and use guidel. | 275 | |---| 276 | 277 |
278 | 279 | Here is a simplified schematic of the general operation of using the str2str tool to access the corrections using an NTRIP client on the Raspberry Pi. 280 | 281 |

282 | 283 | 284 | ### Transmit internet connection through the Raspberry Pi to the receiver using a USB cable guide 285 | 286 | This is another alternative for using NTRIP. In this case you would be using the NTRIP Client within the Septentrio Module. 287 | 288 | The guide consists of executing a series of commands that configure the Raspberry Pi operating system to provide internet to a device that is connected to the Raspberry Pi through a USB cable. Therefore, if we connect the receiver to the Raspberry Pi with a USB cable after executing the commands, the receiver, and therefore its NTRIP client, will have access to the internet to get the corrections of the selected provider. 289 | 290 |

291 | 292 | | Click here to the access to the guide of how to Transmit internet connection through the Raspberry Pi to the receiver using a USB cable. | 293 | |---| 294 | 295 |
296 | 297 | Here is a simplified schematic of the general operation of the system with the configuration of the operating system of the Raspberry Pi to provide internet connection to the receiver via USB cable. 298 | 299 |

300 | 301 | --------------------------------------------------------------------------------