{"id":5683,"date":"2018-10-04T14:35:31","date_gmt":"2018-10-04T14:35:31","guid":{"rendered":"https:\/\/www.use-snip.com\/kb\/?post_type=ht_kb&#038;p=5683"},"modified":"2020-06-13T21:41:09","modified_gmt":"2020-06-13T21:41:09","slug":"sending-nmea-with-bnc-bkg-tools","status":"publish","type":"ht_kb","link":"https:\/\/www.use-snip.com\/kb\/knowledge-base\/sending-nmea-with-bnc-bkg-tools\/","title":{"rendered":"Sending NMEA with BNC\/BKG tools"},"content":{"rendered":"<p>The article came about when both a <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster deployment and an end user on <a href=\"http:\/\/RTK2go.com\" target=\"_blank\" rel=\"noopener noreferrer\">RTK2go.com<\/a> (a popular free public Caster) both had trouble using the <a href=\"https:\/\/igs.bkg.bund.de\/ntrip\/download\" target=\"_blank\" rel=\"noopener noreferrer\">BKG Ntrip Client (BNC) tool<\/a> to connect and to send in NMEA-183 $GPGGA and $GNGGA sentences. Here is how to resolve it.<\/p>\n<p style=\"text-align: right;\"><span style=\"color: #008000;\"><strong>Hint<\/strong><\/span>:\u00a0 The full manual for the BNC tool can be downloaded from <a href=\"https:\/\/software.rtcm-ntrip.org\/export\/HEAD\/ntrip\/trunk\/BNC\/src\/bnchelp.html\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n<h3>Background<\/h3>\n<p>Investigation (just looking at the details of the connections <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/user-connections-general-debugging\/\" target=\"_blank\" rel=\"noopener noreferrer\">content<\/a>, or lack of it, in the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> console logs) showed that the BNC tool was <em>never connecting at all!<\/em>\u00a0 And the reason for this was that the Caster table had set all the table entries to state that a NMEA $GGA string should be sent in with the connection.\u00a0 But the BNC tool had no such value, and hence never in fact connected.\u00a0\u00a0 In this article we cover how to set the BNC tool to send out a suitable $GGA string to overcome this issue.\u00a0 [Here we use $GGA to mean either a $GPGGA or $GNGGA sentence, <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> accepts both]<\/p>\n<h3>Why would the <em>send NMEA flag<\/em> be set for <em>every<\/em> Caster Entry?<\/h3>\n<p>This is a popular way for the NTRIP Caster operator to ask <u>all<\/u> the rover devices to send in their current locations (useful for AVL tracking).\u00a0 When this flag is set (see the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/the-preferences-dialog\/\" target=\"_blank\" rel=\"noopener noreferrer\">Preferences<\/a> dialog), most Rover devices will just send the current data along.\u00a0 Some will not (or cannot) send such data.\u00a0 Many <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster operators (as well as other NTRIP Caster operators) will set this flag true for all entries, even when it is not used to determine what data to deliver to the rover devices.\u00a0 Read more about how NMEA $GGA is used in NTRIP in <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nmea-gga-strings-in-ntrip-clients\/\" target=\"_blank\" rel=\"noopener noreferrer\">this article<\/a>.<\/p>\n<p>Originally this flag meant that the rover device <strong>MUST<\/strong> send that data, and in the case of <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nearest-streams-tab\/\" target=\"_blank\" rel=\"noopener noreferrer\">NEAR streams<\/a>\u00a0 or VRS <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/virtual-reference-station-vrs-connection-examples\/\" target=\"_blank\" rel=\"noopener noreferrer\">streams<\/a> this is still the case.\u00a0 In the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> single baseline NEAR approach, the provided location is then used to determine <i>which <\/i>Base Station the Rover device will be connected to.\u00a0 In a <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nearest-mountpt-use-case-examples\/\" target=\"_blank\" rel=\"noopener noreferrer\">NEAR<\/a> stream, the absence of the rover providing such a location results in a disconnect after a period of time, or when the location is beyond the service area.\u00a0 See <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nearest-mountpt-dialog\/\" target=\"_blank\" rel=\"noopener noreferrer\">this article<\/a>\u00a0 for setup details.\u00a0 \u00a0 The rate at which this data is sent, and the actual accuracy, can vary widely (and is up to the rover device).\u00a0 Most devices send a new update very 5 or 10 seconds.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #008000;\"><strong>Note<\/strong><\/span>: The values sent from the Rover are typically NOT with RTK fixed accuracy. Often a simple autonomous filter solution is used (~2meters), and in any event the vertical data is corrupted by whatever local geoid model was used to create the NMEA string.\u00a0 It is a good way to track devices, but that is about it.<\/p>\n<h3>How to Set it Up, Part <strong>One<\/strong><\/h3>\n<p>First, add the subject stream in the normal BNC way.<\/p>\n<p>Press the &#8220;Add Stream&#8221; button followed by &#8220;Caster&#8221; and then entering the Caster URL address and port and pressing the &#8220;Get Table&#8221; button.<\/p>\n<p>At this point, pause a moment and widen the display table window so you can see the column marked &#8220;nmea&#8221; and note its value.\u00a0 Any item with &#8220;<strong>yes<\/strong>&#8221; is asking for a NMEA $GGA string to be sent to it.\u00a0 [Whether this value is in fact required to have data returned depends on the specific design.\u00a0 For a NEAR stream this data is in fact needed.\u00a0 See above remarks.]<\/p>\n<p>If the entry is marked &#8220;yes&#8221; then BNC will simply not connect to it unless it also has a NMEA $GGA to use.\u00a0\u00a0 You must complete part two below.<\/p>\n<p>If the entry is marked &#8220;no&#8221; then BNC does not need a NMEA $GGA sentence to connect, you can skip part two below.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #008000;\"><strong>Note<\/strong> <\/span>also that NTRIP Rev1 and Rev 2 message styles are supported by the BNC tool (and also by <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span>).\u00a0 The deployment of Rev2 devices (both Rovers and Casters) remains very limited at this point in time.\u00a0 Rev 1 is recommended as it is universally supported.<\/p>\n<h3>How to Set it Up, Part <strong>Two<\/strong><\/h3>\n<p>This is the area where there is a &#8216;trick&#8217; to the BNC tools.\u00a0\u00a0 And as far as we are aware, you can only use this trick for one stream at a time.<\/p>\n<p>The BNC tool uses the NMEA $GGA sentence which the end device provides.\u00a0 Typically this is a GNSS device connected to a serial port that is being fed the RTCM data stream coming from the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster.\u00a0 Without the NMEA data, BNC cannot determine what the GGA sentence needs to be.\u00a0 Because the Caster table says it must send one, it sends nothing at all.\u00a0 This can confuse folks and often makes them think something is broken.<\/p>\n<p>So, regardless of whether we use it or not, we need to open the &#8220;Serial Output&#8221; tab and setup a serial port with the same mountPt name.\u00a0 Thankfully this works even if your machine does not have any serial ports.\u00a0 Below is an example of the complete dialog tab for the mountPt AZU1_RTCM3. (AZU1 is a common mountPt near <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span>s development offices that is used as one the defaults when you first download and run <span style=\"color: #0000ff;\"><strong>SNIP <\/strong><\/span>in evaluation mode).<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5687\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen.png\" alt=\"\" width=\"917\" height=\"372\" srcset=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen.png 917w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen-300x122.png 300w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen-768x312.png 768w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen-50x20.png 50w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen-600x243.png 600w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCscreen-320x130.png 320w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/p>\n<p>The only two settings that matter here are the &#8220;<strong>Mountpoint<\/strong>&#8221;\u00a0\u00a0 (we use the term <em>mountPt<\/em>) and the &#8220;<strong>NMEA<\/strong>&#8221; combo box selection.<\/p>\n<p>The &#8220;Mountpoint&#8221; is set to be the name of the stream you wish to get.<\/p>\n<p>The &#8220;NMEA&#8221; combo box is set to &#8220;<i>Manual GPGGA<\/i>&#8221;\u00a0 (or to <i>Manual GNGGA<\/i>) and not to &#8220;no&#8221; or to &#8220;Auto&#8221;<\/p>\n<p>The height value here provides a NMEA ht (not an ellipsoidal height) and the value does not matter in this application.<\/p>\n<p>The Sampling value appears to have no effect on the rate at which the $GGA sentence is sent. It is presumed to be a threshold for how often data from the serial port would be forwarded.<\/p>\n<p><strong>This will then connect and work.<\/strong><\/p>\n<h3>Remarks<\/h3>\n<p>Now that there is a source that BNC can associate with the NMEA $GGA sentence, it will try and connect in the normal way. You will then see data flowing and being counted in the main window for this stream.\u00a0 A typical connection looks like this on the console:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5688\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample.png\" alt=\"\" width=\"900\" height=\"240\" srcset=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample.png 900w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample-300x80.png 300w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample-768x205.png 768w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample-50x13.png 50w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample-600x160.png 600w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/10\/BNCconnectionExample-320x85.png 320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>A couple of additional issues may also prevent data from flowing and result in your NTRIP Client being disconnected:<\/p>\n<ol>\n<li>If the Caster entry is a NEAR or VRS stream, the provided Lat-Lon must also be within the region area that is serviced by that stream, see the NEAR <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nearest-mountpt-distance-values\/\" target=\"_blank\" rel=\"noopener noreferrer\">region controls<\/a> for more details<\/li>\n<li>The resulting NMEA $GGA sentence must be <strong>correctly formed<\/strong>. If a users NTRIP Client creates ill-formed NMEA sentences, the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> caster checkbox &#8220;Loose NMEA $GGA&#8221; can be enabled (if the operator chooses) to overcome many common NMEA sentence issues.<\/li>\n<li>If a user has many numerous failed attempts to connect with this NTRIP Client in the recent past (a few hours), that IP many be temporarily<a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/banning-abusive-users-simple\/\" target=\"_blank\" rel=\"noopener noreferrer\"> banned<\/a>. Use the xxxx:2101\/SNIP::STATUS <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/status-button-report\/\" target=\"_blank\" rel=\"noopener noreferrer\">command<\/a> to check for your IP on the temp ban list (see Note A). This will not occur with the BNC due to missing a NMEA $GGA sentence, as it simply never tries to connect.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h5>Note A:<\/h5>\n<p>Use a different IP to check this, if you get no html reply, the requesting IP is probably being banned.\u00a0 On most <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Casters the operator sets the ban period to be hour or so.\u00a0 Inquire with the operator for details.\u00a0 More information on using the Ban functions in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> can be found <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/banning-abusive-users-simple\/\">here<\/a> and <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/banning-abusive-users-editing\/\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The article came about when both a SNIP Caster deployment and an end user on RTK2go.com (a popular free public Caster) both had trouble using the BKG Ntrip Client (BNC) tool to connect and to send in NMEA-183 $GPGGA and $GNGGA sentences. Here is how to resolve it. Hint:\u00a0 The [&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":[113],"ht-kb-tag":[121,119,292,241,225],"class_list":["post-5683","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-rtk-lib","ht_kb_tag-bkg","ht_kb_tag-bnc","ht_kb_tag-near","ht_kb_tag-nmea","ht_kb_tag-rtklib"],"_links":{"self":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/5683","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=5683"}],"version-history":[{"count":13,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/5683\/revisions"}],"predecessor-version":[{"id":6815,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/5683\/revisions\/6815"}],"wp:attachment":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/media?parent=5683"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=5683"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=5683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}