{"id":4434,"date":"2017-12-18T22:26:03","date_gmt":"2017-12-18T22:26:03","guid":{"rendered":"https:\/\/www.use-snip.com\/kb\/?post_type=ht_kb&#038;p=4434"},"modified":"2019-12-23T16:24:59","modified_gmt":"2019-12-23T16:24:59","slug":"mixed-data-types-with-ublox","status":"publish","type":"ht_kb","link":"https:\/\/www.use-snip.com\/kb\/knowledge-base\/mixed-data-types-with-ublox\/","title":{"rendered":"Mixed data types with uBlox"},"content":{"rendered":"<p>Many people use RTKLIB and its <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-strsvr-from-rtklib-with-snip\/\">STRSVR<\/a> program to convert uBlox into <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/an-rtcm-message-cheat-sheet\/\">RTCM 3.x<\/a> message types before sending them to <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> for distribution. This data can then be used by any devices that consumes RTCM 3.x data, although it contains only L1 observations.<\/p>\n<p>Others prefer to send the raw uBlox observable in the vendor&#8217;s native formats (the RXM message and other messages) to to <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> for distribution.\u00a0\u00a0 Often these users have a copy of <a href=\"https:\/\/www.use-snip.com\/kb\/forums\/forum\/snip-rtk-lib\/\">RTKLIB<\/a> or one of the open source or commercial derivative products at the rover end to decode the data.<\/p>\n<p><span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> supports both ways.\u00a0 The key issue is to send one or the other (depending on what your rovers expect), and to remove the various extra <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/nmea-gga-strings-in-ntrip-clients\/\">NMEA-183<\/a> strings that may be present.\u00a0 [You can of course send each in its own stream, but in any event, remove the NMEA content]<\/p>\n<h3>Sending Raw uBlox<\/h3>\n<p>This would be an example of a stream that would <strong>not be parsed<\/strong>.\u00a0 The auto-parse ability in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> will examine the stream and determine it consist of raw uBlox messages, then disable further parsing.\u00a0 Here is a console fragment showing this<\/p>\n<pre class=\"\">[uBlox6T]: \u00a0\u00a0Parsing for this stream is: ENABLED\r\n[uBlox6T]: \u00a0\u00a0Analysis of Stream Format and Contents started... [uBlox]\r\n[uBlox6T]: \u00a0\u00a0Parsing for this stream is: <strong>DISABLED<\/strong>\r\n[uBlox6T]: \u00a0\u00a0\u00a0\u00a0\u00a0 Stream analysis completed... Unknown format, parsing is <strong>Disabled<\/strong>. \u00a0\u00a0[Detected <strong>uBlox<\/strong>, Decoded: <strong>uBlox<\/strong>]<\/pre>\n<h3>Sending uBlox as RTCM 3.x<\/h3>\n<p>There are several tools available that can convert raw uBlox messages to RTCM 3.x\u00a0 (including the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-strsvr-from-rtklib-with-snip\/\">STRSVR<\/a> program in RTKLIB).\u00a0 The raw data stream is connected to one of these, and the output is then connected to <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> using any of the supported <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/stream-types\/\">stream types<\/a>.\u00a0\u00a0 This would be an example of a stream that <strong>would be parsed<\/strong>. The auto-parse ability in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> will examine the stream and determine that it consists of RTCM 3.x content.\u00a0\u00a0 Here is a console fragment showing this:<\/p>\n<pre class=\"\">[uBlox6T]: \u00a0\u00a0Parsing for this stream is: ENABLED\r\n[uBlox6T]: \u00a0\u00a0\u00a0\u00a0\u00a0 Stream analysis completed... Parsing is <strong>Enabled<\/strong>. \u00a0\u00a0[Detected <strong>RTCM3<\/strong>, Decoded: <strong>RTCM3<\/strong>]<\/pre>\n<h3>Sending Raw uBlox and NMEA<\/h3>\n<p>This would be an example of a stream that would <strong>not be parsed<\/strong>.\u00a0 It is also one where the setup and control of the uBlox chip set is less than ideal.\u00a0 You can create this for uBlox 6T chip using this serial setup command file: <em>\/serialPortSetups\/uBlox6T\/uBlox6T_Uart1_Send_RAW_SFRB_andNMEA.txt <\/em>if you desire.\u00a0 The file: <em>\/serialPortSetups\/uBlox6T\/uBlox6T_Uart1_Send_justRAW.txt<\/em>\u00a0 is more typically used to send just raw observational data.]<\/p>\n<pre class=\"\">[uBlox6T]: \u00a0\u00a0Parsing for this stream is: ENABLED\r\n[uBlox6T]: \u00a0\u00a0Analysis of Stream Format and Contents started... [uBlox]\r\n[uBlox6T]: \u00a0\u00a0Parsing for this stream is: <strong>DISABLED<\/strong>\r\n[uBlox6T]: \u00a0\u00a0\u00a0\u00a0\u00a0 Stream analysis completed... Unknown format, parsing is <strong>Disabled<\/strong>. \u00a0\u00a0[Detected <strong>NMEA<\/strong>, <strong>uBlox<\/strong>, Decoded: <strong>NMEA<\/strong>, <strong>uBlox<\/strong>]<\/pre>\n<h3>Detection vs Decoding<\/h3>\n<p>The <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-the-universal-decoder\/\">universal decoder<\/a> is used during the analysis stage for a data stream.\u00a0 It is a two part decoder.\u00a0 It first &#8216;detects&#8217; that message might be present by looking for starting and ending framing details.\u00a0 If a message family is <em>detected<\/em> it then tries to &#8216;decode&#8217; the message by applying more logic to ensure the message is well formed and not random bits and bytes in the stream.\u00a0 And this often involves a message framing process as well.\u00a0 This is why you see some messages that may be <em>detected<\/em> but not <em>decoded<\/em>.<\/p>\n<h3>Best Practices:<\/h3>\n<p>Regardless of which type of data you wish to send&#8230;<\/p>\n<ol>\n<li>Set your data type to be the content you want from the uBlox device (or any other GNSS device)<\/li>\n<li>And remove other content to avoid bloating the channel<\/li>\n<li>Confirm this is really what is being send using both the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-the-universal-decoder\/\">universal decoder<\/a> and the <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-the-rtcm3-decoder-dialog\/\">RTCM decoder<\/a> abilities of <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span>.<\/li>\n<li>Finally, be sure sure to turn the decoder&#8217;s per-message display features off when you are done with them.\u00a0 They clutter up the console display quickly making it unreadable. [The <em>clear console<\/em> button is also useful here]<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many people use RTKLIB and its STRSVR program to convert uBlox into RTCM 3.x message types before sending them to SNIP for distribution. This data can then be used by any devices that consumes RTCM 3.x data, although it contains only L1 observations. Others prefer to send the raw uBlox [&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":[350,234],"class_list":["post-4434","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-rtk-lib","ht_kb_tag-message-decoding","ht_kb_tag-ublox"],"_links":{"self":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4434","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=4434"}],"version-history":[{"count":7,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4434\/revisions"}],"predecessor-version":[{"id":4843,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4434\/revisions\/4843"}],"wp:attachment":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/media?parent=4434"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=4434"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=4434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}