{"id":4185,"date":"2025-08-13T00:00:15","date_gmt":"2025-08-13T00:00:15","guid":{"rendered":"\/kb\/?post_type=ht_kb&#038;p=4185"},"modified":"2025-08-13T15:06:36","modified_gmt":"2025-08-13T15:06:36","slug":"introducing-pfat","status":"publish","type":"ht_kb","link":"https:\/\/www.use-snip.com\/kb\/knowledge-base\/introducing-pfat\/","title":{"rendered":"Introducing PFAT"},"content":{"rendered":"<p>From release 1.12 and onward, the the <strong>P.F.A.T.<\/strong> control system originally only present in the <span style=\"color: #993300;\"><em><strong>Enterprise<\/strong><\/em><\/span> editions of <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> has been moved to the <span style=\"color: #993300;\"><em><strong>Pro<\/strong><\/em><\/span>, and <span style=\"color: #993300;\"><em><strong>Basic<\/strong><\/em><\/span> editions.\u00a0 <span style=\"color: #993300;\"><em><strong>Lite<\/strong><\/em><\/span> copies of <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> share the same code base, but many of these innovative features are disabled in the freely available <span style=\"color: #993300;\"><em><strong>Lite<\/strong> <\/em><\/span>edition (but you can test them in the <em><strong>Evaluation<\/strong> <\/em>edition).<\/p>\n<h3>What is <strong>P.F.A.T.\u00a0<\/strong> (or PFAT)<\/h3>\n<p><strong>PFAT&#x2122;<\/strong> is a control system used to operate on each data stream present in your <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster.\u00a0 The <strong>PFAT<\/strong> concept is unique to the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster design, making it much more flexible than competitor products.\u00a0 The acronym is made of four letters which reflect the processing stages of all data in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> as follows:<\/p>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-parse-settings\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4908 alignleft\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Parse_norm.ico\" alt=\"\" width=\"32\" height=\"32\" \/><\/a>\u00a0<a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-parse-settings\/\"><span style=\"color: #0000ff;\"><em><strong>Parse<\/strong><\/em><\/span><\/a><br \/>\n&#8212; Parse and Decode the data stream into individual messages for further processing.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #0000ff;\"><em><strong><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4910 alignleft\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Filter_norm.ico\" alt=\"\" width=\"32\" height=\"32\" \/><\/a> <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\">Filter<\/a>\u00a0<\/strong><br \/>\n<\/em><\/span>&#8212; Remove any unwanted message content in the data stream.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #0000ff;\"><em><strong><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4911 alignleft\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Add_norm.ico\" alt=\"\" width=\"32\" height=\"32\" \/> <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-add-settings-and-uses\/\">Add\u00a0<\/a><\/strong><br \/>\n<\/em><\/span>&#8212; Add wanted but missing data content to the data stream.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #0000ff;\"><em><strong><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4909 alignleft\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Trans_norm.ico\" alt=\"\" width=\"32\" height=\"32\" \/> <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-translate-settings-uses\/\">Translate\u00a0<\/a><\/strong><br \/>\n<\/em><\/span>&#8212; Translate the contents of messages to align them to common needs (often a <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-adjusting-base-station-common-reference-frame\/\" target=\"_blank\" rel=\"noopener\">common datum translation<\/a>) and express the messages themselves into alternative formats and packaging (including MSM, J2735, RTCM 2.4, RTCM 3.x private messages, Translating 1004 to 1002 types, etc.).<\/p>\n<p>Each of these steps can be enabled or disabled as required.\u00a0 Until the 2.x release, the &#8220;FAT&#8221; part of this process has been unavailable to most <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> users.\u00a0 In the new release each stream is associated with its own &#8220;recipe&#8221; that describes the PFAT operations to be performed on it.<\/p>\n<h3>Why you should care<\/h3>\n<p>Many users today depend on the default <em><strong>Parse<\/strong> <\/em>and <em><strong>Filter<\/strong> <\/em>ability of <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> to remove non-RTCM3 data (such as NMEA-183) from the data stream they send.\u00a0 <strong>PFAT<\/strong> significantly further expands this ability so you can change the messages in the data stream itself.\u00a0 Other brands of NTRIP Casters simply can not do this, it is a feature unique the the <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> Caster.<\/p>\n<p>Here are a few illustrative use cases where <strong>PFAT<\/strong> is of value to <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> operators.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-parse-settings\/\"><em><strong>Parsing<\/strong><\/em> <\/a>(which has been present in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> from the beginning) allows the detection of non-valid message content and its removal.\u00a0 It&#8217;s a fact of life that this occurs more often than any of us would like.\u00a0 Hence, <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> was built to simply deal with it.<\/li>\n<li><em><strong>Filtering<\/strong> <\/em>with <strong>PFAT<\/strong> allows removing unwanted message types, such as older style RTK <a href=\"\/kb\/knowledge-base\/rtcm-2-message-list\/\">RTCM 2.x<\/a> 18 and 19 messages when only types 1 and 3 are wanted for classic DGPS used in marine and automotive safety application. [support for RTCM2.x message is in development at this time]<\/li>\n<li><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\"><em><strong>Filtering<\/strong> <\/em><\/a>with <strong>PFAT<\/strong> allows removing unwanted and entire GNSS types from a stream, such as all GLONASS, typical when transmission bandwidth must be conserved.<\/li>\n<li><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\"><em><strong>Filtering<\/strong> <\/em><\/a>with <strong>PFAT<\/strong> allows removing entire message types, such as 1019 and 1020 when <a href=\"\/kb\/knowledge-base\/viewing-rtcm-1019-1020-messages\/\">orbital data<\/a> is not wanted in the final stream.<\/li>\n<li><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-add-settings-and-uses\/\"><em><strong>Adding<\/strong> <\/em><\/a>with <strong>PFAT<\/strong> allows the converse to occur.\u00a0 One could, as an example, add selected orbital data for specific GNSS system to a data stream.<\/li>\n<li><em><strong>Adding<\/strong> <\/em>with <strong>PFAT<\/strong> also allows adding private messages (<a href=\"\/kb\/knowledge-base\/rtcm-3-message-list\/\">RTCM 3.x<\/a> messages in the range of 4000+) to an existing message stream.<\/li>\n<li><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-adjusting-base-station-common-reference-frame\/\"><em><strong>Translating <\/strong><\/em><\/a>with <strong>PFAT<\/strong> provides a simple means to cope with a network of Base Stations all using different <a href=\"\/kb\/knowledge-base\/converting-nad83-to-wgs84\/\">data <\/a>in their report locations. One can replace the ECEF values sent by the base stations with those taken from a common datum, resolving the issue.<\/li>\n<li><em><strong>Translating <\/strong><\/em>with <strong>PFAT<\/strong> is also how DSRC <a href=\"\/kb\/knowledge-base\/sae-j2735-dsrc-message-list\/\">J2735<\/a> conformant data streams are created from RTCM for automotive users. This remains an <span style=\"color: #993300;\"><em><strong>Enterprise<\/strong> <\/em><\/span>feature in <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span>.<\/li>\n<\/ul>\n<p>The <strong>PFAT<\/strong> process can be used on almost any <a href=\"\/kb\/knowledge-base\/stream-types\/\">stream type<\/a> to create derivative data streams for further use.\u00a0 The <strong>PFAT<\/strong> operations also also be setup to operate on a stream serving only the final modified result.\u00a0 <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> can also set to serve both the <em>original<\/em> and <em>derivative<\/em> data stream if desired, see <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-used-create-multiple-streams\/\" target=\"_blank\" rel=\"noopener\">this article<\/a> for details.<\/p>\n<h3>Further Details<\/h3>\n<p>Here are supporting articles with additional details about each step in the process.<\/p>\n<p><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-parse-settings\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4908\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Parse_norm.ico\" alt=\"\" width=\"64\" height=\"64\" \/><\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4910\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Filter_norm.ico\" alt=\"\" width=\"64\" height=\"64\" \/><\/a>\u00a0 \u00a0 \u00a0 \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4911 alignnone\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Add_norm.ico\" alt=\"\" width=\"64\" height=\"64\" \/>\u00a0 \u00a0 \u00a0 \u00a0\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4909 alignnone\" src=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2018\/02\/PFAT_Trans_norm.ico\" alt=\"\" width=\"64\" height=\"64\" \/><\/p>\n<h4 style=\"padding-left: 30px;\"><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-parse-settings\/\">Use of <strong>Parse<\/strong><\/a><\/h4>\n<h4 style=\"padding-left: 30px;\"><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-filter-settings-and-uses\/\">Use of <strong>Filter<\/strong><\/a><\/h4>\n<h4 style=\"padding-left: 30px;\"><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-add-settings-and-uses\/\">Use of <strong>Add<\/strong><\/a><\/h4>\n<h4 style=\"padding-left: 30px;\"><a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/pfat-translate-settings-uses\/\">Uses of <strong>Translate<\/strong><\/a><\/h4>\n<h3>How to Set up PFAT<\/h3>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4218 alignright\" src=\"\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT.png\" alt=\"\" width=\"316\" height=\"316\" srcset=\"https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT.png 316w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT-150x150.png 150w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT-300x300.png 300w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT-50x50.png 50w, https:\/\/www.use-snip.com\/kb\/wp-content\/uploads\/2017\/11\/Menu_wPFAT-60x60.png 60w\" sizes=\"auto, (max-width: 316px) 100vw, 316px\" \/><\/p>\n<p>The <strong>PFAT<\/strong> settings and controls are all reached by use of the expanded <em>right-click<\/em> stream menu system.<\/p>\n<p>Until the formal release in 2.x, only the Parse <strong>on\/off<\/strong> checkbox is enabled.<\/p>\n<p>The other setting are further described in the links above.<\/p>\n<p>The use of <strong>PFAT<\/strong> on any specific stream is optional.<\/p>\n<p>With the improved <em>auto-parse<\/em> logic it is also safe to enable <strong><em>Parse<\/em><\/strong> on any stream you are unsure about and let <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> work it out for you. If it is unable to determine the content type, it will revert to a <a href=\"https:\/\/www.use-snip.com\/kb\/knowledge-base\/using-snip-as-a-bent-pipe\/\">bent pipe<\/a> mode of operation.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #008000;\"><em><strong>Need help?\u00a0<\/strong><\/em><\/span><br \/>\n<strong>PFAT<\/strong> is complex and we welcome the opportunity to asst you with any setup needs you have. Like all <span style=\"color: #0000ff;\"><strong>SNIP<\/strong><\/span> support, it is free for the asking.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>From release 1.12 and onward, the the P.F.A.T. control system originally only present in the Enterprise editions of SNIP has been moved to the Pro, and Basic editions.\u00a0 Lite copies of SNIP share the same code base, but many of these innovative features are disabled in the freely available Lite [&hellip;]<\/p>\n","protected":false},"author":13,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"ht-kb-category":[334],"ht-kb-tag":[382,381,406],"class_list":["post-4185","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-advanced-topics","ht_kb_tag-p-f-a-t","ht_kb_tag-pfat","ht_kb_tag-stream-controls"],"_links":{"self":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4185","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=4185"}],"version-history":[{"count":29,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4185\/revisions"}],"predecessor-version":[{"id":9276,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb\/4185\/revisions\/9276"}],"wp:attachment":[{"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/media?parent=4185"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-category?post=4185"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.use-snip.com\/kb\/wp-json\/wp\/v2\/ht-kb-tag?post=4185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}