{"id":7081,"date":"2020-08-06T01:01:15","date_gmt":"2020-08-06T01:01:15","guid":{"rendered":"https:\/\/www.use-snip.com\/kb\/?post_type=ht_kb&#038;p=7081"},"modified":"2020-08-08T16:54:33","modified_gmt":"2020-08-08T16:54:33","slug":"pre-ntrip-client-connections","status":"publish","type":"ht_kb","link":"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pre-ntrip-client-connections\/","title":{"rendered":"Pre-NTRIP Client Connections"},"content":{"rendered":"<p><span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> also supports <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/question-what-is-an-ntrip-client\/\" target=\"_blank\" rel=\"noopener noreferrer\">NTRIP Client<\/a> connections by &#8216;simple&#8217; GNSS devices that do not implement the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/question-what-is-an-ntrip\/\" target=\"_blank\" rel=\"noopener noreferrer\">NTRIP Protocol<\/a>. Such setups (typically with a dongle device) can make <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-ntrip-clients-vs-using-tcp-clients\/\" target=\"_blank\" rel=\"noopener noreferrer\">TCP\/IP connections<\/a>, but not NTRIP in either its Rev1 or Rev2 formats.<\/p>\n<h2>Use Case:<\/h2>\n<p>To support Pre NTRIP Base Stations in a method similar to the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/raw-tcpip-streams-tab\/\" target=\"_blank\" rel=\"noopener noreferrer\">RAW TCP\/IP tab<\/a>, <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> provides a one-line command to allow any simple GNSS device to a) connect, b) identify which Base Station data stream it needs, and c) provide a username and password for security validation.<\/p>\n<p>Very often these devices connect by means of a serial port to a simple internet access dongle. The dongle does not know how to speak NTRIP, but it can be programmed to connect to a given IP and port (in this case your <strong><span style=\"color: #0000ff;\">SNIP<\/span><\/strong> Caster) and then to send an initial one line command before streaming any subsequent data in both directions.<\/p>\n<p>When these connections are made, using the message format described below, <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span>&#8216;s client pre-processing software simply translates the single line command into a full NTRIP request.<\/p>\n<h2>Format:<\/h2>\n<p>The <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Client Command format follows one of two styles:<\/p>\n<h3 style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">SNIP#&lt;mountPt&gt;^Basic^&lt;base64&gt; <\/span>\u00a0\u00a0\u00a0 &#8211; used for closed casters<\/h3>\n<h3 style=\"padding-left: 40px;\"><span style=\"color: #0000ff;\">SNIP#&lt;mountPt&gt;<\/span> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0 &#8211; used for for open casters<\/h3>\n<h3>Usage Notes:<\/h3>\n<ol>\n<li>All text is in ASCII text.<\/li>\n<li>Spaces are neither used nor allowed. Capitalization matters.<\/li>\n<li>The command starts with the characters &#8220;SNIP#&#8221;\u00a0 (all upper case, without quotes)<\/li>\n<li>The mountPt name must be a legal NTRIP mountPt name (ASCII only, without spaces or special characters) and is sent in clear text. The symbols &#8220;&lt;&#8221; and &#8220;&gt;&#8221; are not sent and are used here to delimit the mountPt text.<\/li>\n<li>The symbol &#8220;^&#8221;\u00a0 (without quotes) is used as the general delimiter token.<\/li>\n<li>The command format supports two styles:\u00a0 a connection string using a user name and password, and a connection string with no user name or password present.\u00a0 The first is for use with Closed Casters, the latter is for use with Open Casters.\u00a0 You may of course choose to operate your Caster in either mode.<\/li>\n<li>The Basic authentication method is used to send a user name and password, just as it is used in the NTRIP standard. Consult the RTCM standard as required.<\/li>\n<li>The Basic authentication content is encoded in Base64 format, e.g. &#8220;UserName:Password&#8221; becomes &#8220;VXNlck5hbWU6UGFzc3dvcmQ=&#8221;.\u00a0 The symbols &#8220;&lt;&#8221; and &#8220;&gt;&#8221; are not sent and are used here to delimit the base64 encoded text.<\/li>\n<li>When the Basic authentication method is used, the mountPt is followed by the &#8220;^&#8221; token,\u00a0 then the text &#8220;Basic,&#8221; then a final &#8220;^&#8221; token, which is then followed by the base64 encoding of the user name and password.<\/li>\n<li>The line ends with a single &lt;cr&gt;&lt;lf&gt;.<\/li>\n<li>Additional keywords and tokens may be added to this process as future needs warrant.<\/li>\n<\/ol>\n<p>It may be necessary with some devices to use short user names and passwords in order to fit the entire command line into limited buffer space (32 and 40 character limits are known to exist on some devices).<\/p>\n<h2>Worked Example:<\/h2>\n<p>Consider a simple GNSS device which needs to connect to &#8220;<strong>MyBase<\/strong>&#8221; with the credentials of user: <strong>Andy<\/strong> and the password: <strong>Simple<\/strong>.<\/p>\n<p>The clear text of the password is then: &#8220;Andy:Simple&#8221; and this,<br \/>\nwhen encoded in Base64, would be: &#8220;QW5keTpTaW1wbGU=&#8221;<\/p>\n<p>The command line sent by the connecting client device would then be:<\/p>\n<h3 style=\"padding-left: 40px;\">SNIP#MyBase^Basic^QW5keTpTaW1wbGU=&lt;cr&gt;&lt;lf&gt;<\/h3>\n<p>When <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> receives this input as a new client connection, it extracts the keywords and places them into a proper NTRIP Client request using the Rev1 format style (not <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/ntrip-rev2-uses-in-snip\/\" target=\"_blank\" rel=\"noopener noreferrer\">Rev2<\/a>). The above command line translates into the below:<\/p>\n<pre>                GET \/MyBase HTTP\/1.0\\r\\n\r\n                User-Agent: NTRIP SNIPtranslatorR1\\r\\n\r\n                Authorization: Basic QW5keTpTaW1wbGU=\\r\\n\r\n                Connection: close\\r\\n\r\n                \\r\\n<\/pre>\n<p>From this point onward the processioning flow is the same as for any other Client connection.<\/p>\n<h2>Summary<\/h2>\n<p>The above describes the simple command protocol implemented on <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/question-what-is-an-ntrip-caster\/\" target=\"_blank\" rel=\"noopener noreferrer\">NTRIP Caster<\/a> to support pre NTRIP Client connections (i.e. rover devices).\u00a0 If such a device can send the initial one line command described above,\u00a0 it can connect to a specific Base Station with a valid user account as if it were a full NTRIP Client.<\/p>\n<p>A similar connection ability, using a dedicated port, called <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/raw-tcpip-streams-tab\/\" target=\"_blank\" rel=\"noopener noreferrer\">RAW TCP\/IP<\/a>, is available for older pre NTRIP <strong>Base Stations<\/strong> which cannot connect as <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/question-what-is-an-ntrip-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">NTRIP Server<\/a> devices.\u00a0 <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/raw-tcpip-connections\/\" target=\"_blank\" rel=\"noopener noreferrer\">This article<\/a> describes its use in more depth.<\/p>\n<p style=\"text-align: right;\">Note: This feature was added as part of the Rev 2-13-00 release.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SNIP also supports NTRIP Client connections by &#8216;simple&#8217; GNSS devices that do not implement the NTRIP Protocol. Such setups (typically with a dongle device) can make TCP\/IP connections, but not NTRIP in either its Rev1 or Rev2 formats. Use Case: To support Pre NTRIP Base Stations in a method similar [&hellip;]<\/p>\n","protected":false},"author":13,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"ht-kb-category":[283],"ht-kb-tag":[415,310,313],"class_list":["post-7081","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-managing-user-accounts","ht_kb_tag-client","ht_kb_tag-pre-ntrip","ht_kb_tag-raw"],"_links":{"self":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/7081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/comments?post=7081"}],"version-history":[{"count":13,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/7081\/revisions"}],"predecessor-version":[{"id":7181,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/7081\/revisions\/7181"}],"wp:attachment":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/media?parent=7081"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=7081"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=7081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}