| 1 | ---------------------------------------------------------------------- | 
|---|
| 2 | ntripserver | 
|---|
| 3 | ---------------------------------------------------------------------- | 
|---|
| 4 |  | 
|---|
| 5 | (c) German Federal Agency for Cartography and Geodesy (BKG), 2002-2021 | 
|---|
| 6 |  | 
|---|
| 7 |  | 
|---|
| 8 | Files in ntripserver.zip | 
|---|
| 9 | ------------------------ | 
|---|
| 10 | - makefile: preconfigured makefile for convenient installation | 
|---|
| 11 | - ntripserver.c: c source file | 
|---|
| 12 | - README: Readme file for the ntripserver program | 
|---|
| 13 |  | 
|---|
| 14 |  | 
|---|
| 15 | NTRIP | 
|---|
| 16 | ----- | 
|---|
| 17 | The ntripserver is a HTTP client based on "Networked Transport of | 
|---|
| 18 | RTCM via Internet Protocol" (NTRIP). This is an application-level | 
|---|
| 19 | protocol streaming Global Navigation Satellite System (GNSS) data | 
|---|
| 20 | over the Internet. | 
|---|
| 21 | NTRIP Version 1.0 is a generic, stateless protocol based on the | 
|---|
| 22 | Hypertext Transfer Protocol HTTP/1.1. The HTTP objects are | 
|---|
| 23 | enhanced to GNSS data streams. | 
|---|
| 24 |  | 
|---|
| 25 | The primary motivation for NTRIP Version 2.0 is to develop a fully | 
|---|
| 26 | HTTP-compatible Internet protocol standard that would work with proxy | 
|---|
| 27 | servers and to add an optional data transport via UDP. Hence, one | 
|---|
| 28 | NTRIP Version 2.0 transport approach is still based on HTTP1.1 on top | 
|---|
| 29 | of TCP. The second NTRIP Version 2.0 transport approach is based on | 
|---|
| 30 | both, the Internet Standard Protocol RTSP (Real Time Streaming Protocol) | 
|---|
| 31 | for stream control on top of TCP and the Internet Standard Protocol RTP | 
|---|
| 32 | (Real Time Transport Protocol) for data transport on top of | 
|---|
| 33 | connectionless UDP. | 
|---|
| 34 |  | 
|---|
| 35 | NTRIP is designed for disseminating differential correction data | 
|---|
| 36 | (e.g in the RTCM-104 format) or other kinds of GNSS streaming data to | 
|---|
| 37 | stationary or mobile users over the Internet, allowing simultaneous | 
|---|
| 38 | PC, Laptop, PDA, or receiver connections to a broadcasting host. NTRIP | 
|---|
| 39 | supports wireless Internet access through Mobile IP Networks like GSM, | 
|---|
| 40 | GPRS, EDGE, or UMTS. | 
|---|
| 41 |  | 
|---|
| 42 | NTRIP is implemented in three system software components: | 
|---|
| 43 | NTRIP clients, NTRIP servers and NTRIP casters. The NTRIP caster is the | 
|---|
| 44 | actual HTTP server program whereas NTRIP client and NTRIP server are | 
|---|
| 45 | acting as HTTP clients. | 
|---|
| 46 |  | 
|---|
| 47 |  | 
|---|
| 48 | ntripserver | 
|---|
| 49 | ----------- | 
|---|
| 50 | The program ntripserver is designed to provide real-time data | 
|---|
| 51 | from a single NTRIP source running under a POSIX operating system. | 
|---|
| 52 |  | 
|---|
| 53 | The purpose of this program is to pick up a GNSS data stream (Input, Source) | 
|---|
| 54 | from either | 
|---|
| 55 |  | 
|---|
| 56 | 1. a Serial port, or | 
|---|
| 57 | 2. an IP server, or | 
|---|
| 58 | 3. a File, or | 
|---|
| 59 | 4. a SISNeT Data Server, or | 
|---|
| 60 | 5. a UDP server, or | 
|---|
| 61 | 6. an NTRIP Version 1.0 Caster | 
|---|
| 62 | 7. an NTRIP Version 2.0 Caster in HTTP mode | 
|---|
| 63 |  | 
|---|
| 64 | and forward that incoming stream (Output, Destination) to either | 
|---|
| 65 |  | 
|---|
| 66 | 1. an NTRIP Version 2.0 Caster via TCP/IP (Output, Destination), or | 
|---|
| 67 | 2. an NTRIP Version 2.0 Caster via RTSP/RTP (Output, Destination), or | 
|---|
| 68 | 3. an NTRIP Version 2.0 Caster via plain UDP (Output, Destination), or | 
|---|
| 69 | 4. an NTRIP Version 1.0 Caster, or | 
|---|
| 70 | 5. an IP server via TCP/IP | 
|---|
| 71 |  | 
|---|
| 72 | Installation | 
|---|
| 73 | ------------ | 
|---|
| 74 | To install the program run | 
|---|
| 75 |  | 
|---|
| 76 | - gunzip ntripserver.tgz | 
|---|
| 77 | - tar -xf ntripserver.tar | 
|---|
| 78 | - make, or | 
|---|
| 79 | - make debug (for debugging purposes). | 
|---|
| 80 |  | 
|---|
| 81 | To compile the source code on a Windows system where a mingw gcc | 
|---|
| 82 | compiler is available, you may like to run the following command: | 
|---|
| 83 |  | 
|---|
| 84 | - gcc -Wall -W -O3 -DWINDOWSVERSION ntripserver.c -DNDEBUG | 
|---|
| 85 | -o ntripserver -lwsock32, or | 
|---|
| 86 | - mingw32-make, or | 
|---|
| 87 | - mingw32-make debug | 
|---|
| 88 |  | 
|---|
| 89 | The executable will show up as ntripserver on Linux | 
|---|
| 90 | or ntripserver.exe on a Windows system. | 
|---|
| 91 |  | 
|---|
| 92 | Usage | 
|---|
| 93 | ----- | 
|---|
| 94 | The user may call the program with the following options: | 
|---|
| 95 |  | 
|---|
| 96 | ./ntripserver [OPTIONS] | 
|---|
| 97 |  | 
|---|
| 98 | -h|? print this help screen | 
|---|
| 99 |  | 
|---|
| 100 | -E <ProxyHost>       Proxy server host name or address, required i.e. when | 
|---|
| 101 | running the program in a proxy server protected LAN, | 
|---|
| 102 | optional | 
|---|
| 103 | -F <ProxyPort>       Proxy server IP port, required i.e. when running | 
|---|
| 104 | the program in a proxy server protected LAN, optional | 
|---|
| 105 | -R <maxDelay>        Reconnect mechanism with maximum delay between reconnect | 
|---|
| 106 | attemts in seconds, default: no reconnect activated, | 
|---|
| 107 | optional | 
|---|
| 108 | -M <InputMode> Sets the input mode (1 = Serial Port, 2 = IP server, | 
|---|
| 109 | 3 = File, 4 = SISNeT Data Server, 5 = UDP server, 6 = NTRIP1 Caster, | 
|---|
| 110 | 7 = NTRIP2 Caster in HTTP mode), | 
|---|
| 111 | mandatory | 
|---|
| 112 | <InputMode> = 1 (Serial Port): | 
|---|
| 113 | -i <Device>       Serial input device, default: /dev/gps, mandatory if | 
|---|
| 114 | <InputMode>=1 | 
|---|
| 115 | -b <BaudRate>     Serial input baud rate, default: 19200 bps, mandatory | 
|---|
| 116 | if <InputMode>=1 | 
|---|
| 117 | -f <InitFile>     Name of initialization file to be send to input device, | 
|---|
| 118 | optional | 
|---|
| 119 | <InputMode> = 2|5 (IP port | UDP port): | 
|---|
| 120 | -H <ServerHost>   Input host name or address, default: 127.0.0.1, | 
|---|
| 121 | mandatory if <InputMode> = 2|5 | 
|---|
| 122 | -P <ServerPort>   Input port, default: 1025, mandatory if <InputMode>= 2|5 | 
|---|
| 123 | -f <ServerFile>   Name of initialization file to be send to server, | 
|---|
| 124 | optional | 
|---|
| 125 | -x <ServerUser>   User ID to access incoming stream, optional | 
|---|
| 126 | -y <ServerPass>   Password, to access incoming stream, optional | 
|---|
| 127 | -B                Bind to incoming UDP stream, optional for <InputMode> = 5 | 
|---|
| 128 | <InputMode> = 3 (File): | 
|---|
| 129 | -s <File>         File name to simulate stream by reading data from (log) | 
|---|
| 130 | file, default is /dev/stdin, mandatory for <InputMode> = 3 | 
|---|
| 131 | <InputMode> = 4 (SISNeT Data Server): | 
|---|
| 132 | -H <SisnetHost>   SISNeT Data Server name or address, | 
|---|
| 133 | default: 131.176.49.142, mandatory if <InputMode> = 4 | 
|---|
| 134 | -P <SisnetPort>   SISNeT Data Server port, default: 7777, mandatory if | 
|---|
| 135 | <InputMode> = 4 | 
|---|
| 136 | -u <SisnetUser>   SISNeT Data Server user ID, mandatory if <InputMode> = 4 | 
|---|
| 137 | -l <SisnetPass>   SISNeT Data Server password, mandatory if <InputMode> = 4 | 
|---|
| 138 | -V <SisnetVers>   SISNeT Data Server Version number, options are 2.1, 3.0 | 
|---|
| 139 | or 3.1, default: 3.1, mandatory if <InputMode> = 4 | 
|---|
| 140 | <InputMode> = 6|7 (NTRIP Version 1.0|2.0 Caster): | 
|---|
| 141 | -H <SourceHost>   Source caster name or address, default: 127.0.0.1, | 
|---|
| 142 | mandatory if <InputMode> = 6|7 | 
|---|
| 143 | -P <SourcePort>   Source caster port, default: 2101, mandatory if | 
|---|
| 144 | <InputMode> = 6|7 | 
|---|
| 145 | -D <SourceMount>  Source caster mountpoint for stream input, mandatory if | 
|---|
| 146 | <InputMode> = 6|7 | 
|---|
| 147 | -U <SourceUser>   Source caster user Id for input stream access, mandatory | 
|---|
| 148 | for protected streams if <InputMode> = 6|7 | 
|---|
| 149 | -W <SourcePass>   Source caster password for input stream access, mandatory | 
|---|
| 150 | for protected streams if <InputMode> = 6|7 | 
|---|
| 151 | -O <OutputMode> Sets output mode for communication with destination caster / server | 
|---|
| 152 | 1 = http  : NTRIP Version 2.0 Caster in TCP/IP mode | 
|---|
| 153 | 2 = rtsp  : NTRIP Version 2.0 Caster in RTSP/RTP mode | 
|---|
| 154 | 3 = ntrip1: NTRIP Version 1.0 Caster | 
|---|
| 155 | 4 = udp   : NTRIP Version 2.0 Caster in Plain UDP mode | 
|---|
| 156 | 5 = tcpip : IP server in TCP/IP mode | 
|---|
| 157 | Defaults to NTRIP1.0, but will change to 2.0 in future versions | 
|---|
| 158 | Note that the program automatically falls back from mode rtsp to mode http and | 
|---|
| 159 | further to mode ntrip1 if necessary. | 
|---|
| 160 | -a <DestHost>     Destination caster/server name or address, default: 127.0.0.1, | 
|---|
| 161 | mandatory | 
|---|
| 162 | -p <DestPort>     Destination caster/server port, default: 2101, | 
|---|
| 163 | mandatory | 
|---|
| 164 | -m <DestMount>    Destination caster mountpoint for stream upload, | 
|---|
| 165 | only for NTRIP destination casters, mandatory | 
|---|
| 166 | -n <DestUser>     Destination caster user ID for stream upload to mountpoint, | 
|---|
| 167 | only for NTRIP Version 2.0 destination casters, mandatory | 
|---|
| 168 | -c <DestPass>     Destination caster password for stream upload to mountpoint, | 
|---|
| 169 | only for NTRIP destination casters, mandatory | 
|---|
| 170 | -N <STR-record>   Sourcetable STR-record | 
|---|
| 171 | optional for NTRIP Version 2.0 in RTSP/RTP and TCP/IP mode | 
|---|
| 172 |  | 
|---|
| 173 |  | 
|---|
| 174 | Example1: Reading from serial port and forward to NTRIP Version 1.0 Caster: | 
|---|
| 175 |  | 
|---|
| 176 | ./ntripserver -M 1 -i /dev/ttys0 -b 9600 -O 2 -a euref-ip.net -p 2101 -m Mount2 | 
|---|
| 177 | -n serverID -c serverPass | 
|---|
| 178 |  | 
|---|
| 179 | Example2: Reading from NTRIP Version 1.0 Caster and forward to NTRIP Version 2.0 | 
|---|
| 180 |  | 
|---|
| 181 | ./ntripserver -M 6 -H euref-ip.net -P 2101 -D Mount1 -U clientID -W clientPass | 
|---|
| 182 | -O 1 -a www.goenet-ip.fi -p 2101 -m Mount2 -n serverID -c serverPass | 
|---|
| 183 |  | 
|---|
| 184 |  | 
|---|
| 185 | NTRIP Caster password and mountpoint | 
|---|
| 186 | ------------------------------------ | 
|---|
| 187 | Feeding data streams into the NTRIP system using the ntripserver | 
|---|
| 188 | program needs a password (and a user ID for NTRIP Version 2.0) | 
|---|
| 189 | and one mountpoint per stream. | 
|---|
| 190 | For the NTRIP Broadcasters EUREF-IP or IGS-IP please contact | 
|---|
| 191 | euref-ip@bkg.bund.de or igs-ip@bkg.bund.de | 
|---|
| 192 |  | 
|---|
| 193 | Disclaimer | 
|---|
| 194 | ---------- | 
|---|
| 195 | Note that this example server implementation is currently an | 
|---|
| 196 | experimental software. The BKG disclaims any liability nor | 
|---|
| 197 | responsibility to any person or entity with respect to any loss or | 
|---|
| 198 | damage caused, or alleged to be caused, directly or indirectly by the | 
|---|
| 199 | use and application of the NTRIP technology. | 
|---|
| 200 |  | 
|---|
| 201 |  | 
|---|
| 202 | Further information | 
|---|
| 203 | ------------------- | 
|---|
| 204 | URL:    https://igs.bkg.bund.de/ntrip/index | 
|---|
| 205 | E-mail: euref-ip@bkg.bund.de | 
|---|