diff --git a/grc/misc_utils/gsm_bursts_printer.xml b/grc/misc_utils/gsm_bursts_printer.xml
index 5459872..6407571 100644
--- a/grc/misc_utils/gsm_bursts_printer.xml
+++ b/grc/misc_utils/gsm_bursts_printer.xml
@@ -4,7 +4,7 @@
   <key>gsm_bursts_printer</key>
   <import>import grgsm</import>
   <import>import pmt</import>
-  <make>grgsm.bursts_printer(pmt.intern($prepend_string))</make>
+  <make>grgsm.bursts_printer(pmt.intern($prepend_string), $prepend_fnr)</make>
 
   <param>
     <name>Prepend String</name>
@@ -13,6 +13,20 @@
     <type>string</type>
     <hide>part</hide>
   </param>
+  <param>
+    <name>Prepend Frame Number</name>
+    <key>prepend_fnr</key>
+    <value>False</value>
+    <type>bool</type>
+    <option>
+      <name>False</name>
+      <key>False</key>
+    </option>
+    <option>
+      <name>True</name>
+      <key>True</key>
+    </option>
+  </param>
 
   <sink>
     <name>bursts</name>
diff --git a/include/grgsm/misc_utils/bursts_printer.h b/include/grgsm/misc_utils/bursts_printer.h
index 908ffd9..b2dd1d1 100644
--- a/include/grgsm/misc_utils/bursts_printer.h
+++ b/include/grgsm/misc_utils/bursts_printer.h
@@ -50,7 +50,7 @@
        * class. gsm::bursts_printer::make is the public interface for
        * creating new instances.
        */
-      static sptr make(pmt::pmt_t prepend_string);
+      static sptr make(pmt::pmt_t prepend_string, bool prepend_fnr=false);
     };
 
   } // namespace gsm
diff --git a/lib/misc_utils/bursts_printer_impl.cc b/lib/misc_utils/bursts_printer_impl.cc
index cd42f12..8be1422 100644
--- a/lib/misc_utils/bursts_printer_impl.cc
+++ b/lib/misc_utils/bursts_printer_impl.cc
@@ -43,8 +43,15 @@
         gsmtap_hdr * header = (gsmtap_hdr *)pmt::blob_data(header_plus_burst);
         int8_t * burst = (int8_t *)(pmt::blob_data(header_plus_burst))+sizeof(gsmtap_hdr);
         size_t burst_len=pmt::blob_length(header_plus_burst)-sizeof(gsmtap_hdr);
+        uint32_t frame_nr;
         
         std::cout << d_prepend_string;
+        if (d_prepend_fnr) 
+        {
+            frame_nr = be32toh(header->frame_number);
+            std::cout << frame_nr << ":";
+        } 
+
         for(int ii=0; ii<burst_len; ii++)
         {
           std::cout << std::setprecision(1) << static_cast<int>(burst[ii]) << "";
@@ -53,21 +60,22 @@
     }
      
     bursts_printer::sptr
-    bursts_printer::make(pmt::pmt_t prepend_string)
+    bursts_printer::make(pmt::pmt_t prepend_string, bool prepend_fnr)
     {
       return gnuradio::get_initial_sptr
-        (new bursts_printer_impl(prepend_string));
+        (new bursts_printer_impl(prepend_string, prepend_fnr));
     }
 
     /*
      * The private constructor
      */
-    bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string)
+    bursts_printer_impl::bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr)
       : gr::block("bursts_printer",
               gr::io_signature::make(0, 0, 0),
               gr::io_signature::make(0, 0, 0))
     {
         d_prepend_string = prepend_string;
+        d_prepend_fnr = prepend_fnr;
         message_port_register_in(pmt::mp("bursts"));
         set_msg_handler(pmt::mp("bursts"), boost::bind(&bursts_printer_impl::bursts_print, this, _1));
     }
diff --git a/lib/misc_utils/bursts_printer_impl.h b/lib/misc_utils/bursts_printer_impl.h
index 21ca62e..5655920 100644
--- a/lib/misc_utils/bursts_printer_impl.h
+++ b/lib/misc_utils/bursts_printer_impl.h
@@ -34,8 +34,9 @@
      private:
       void bursts_print(pmt::pmt_t burst);
       pmt::pmt_t d_prepend_string;
+      bool d_prepend_fnr;
      public:
-      bursts_printer_impl(pmt::pmt_t prepend_string);
+      bursts_printer_impl(pmt::pmt_t prepend_string, bool prepend_fnr=false);
       ~bursts_printer_impl();
     };
 
