RFID library issues - Popping from TX?

After messing with another RFID library that also claims that it works on the bladeRF, I had more popping issues. However when I pulled LimeSuite from the osmotrx fork (from @IgnasJ)and built it, I’m not seeing the popping error. I’m still not able to read the RFID tag completely (although it is able to acknowledge the tag sometimes) with the following file:

#!/usr/bin/env python
# Developed by: Michael Buettner (buettner@cs.washington.edu)
# Modified by: Bruno Espinoza (bruno.espinozaamaya@uqconnect.edu.au)
# Modified for LimeSDR by: Jordan Treiwtt (jot437@utulsa.edu)

from gnuradio import gr, gru
from PyQt4 import Qt
from gnuradio import eng_notation
from gnuradio import qtgui
from gnuradio import analog, blocks, digital, filter
from gnuradio.eng_option import eng_option
from string import split
from string import strip
from string import atoi
import time
import os
import math
import sys
import rfid
import optparse
import osmosdr
import sip

# parser for frequency and other options
parser = optparse.OptionParser();
parser.add_option('--f', action="store", dest="center_freq", default="910e6", help="Center Frequency", type="float");
parser.add_option('--g', action="store", dest="rx_gain", default="20", help="RX Gain", type="float");
parser.add_option('--l', action="store", dest="log_file", default="log_out.log", help="Log file name");
parser.add_option('--d', action="store", dest="dump_file", default="none", help="[none|matched|full]");
parser.add_option('--s', action="store", dest="device", default="uhd", help="[uhd|bladerf]");
parser.add_option('--q', action="store", dest="q_value", default="0", help="Q value from 0 to 8");
parser.add_option('--m', action="store", dest="modul_type", default="1",
                  help="Modulation Type from 0 to 3 -> 0: FM Encoding, 1: Miller M=2, 2: Miller M=4, 3: Miller M=8");
parser.add_option('--c', action="store", dest="cycles_num", default="5", help="Number of Reader Cycles (def. 5)");
parser.add_option('--r', action="store", dest="round_num", default="10", help="Number of Rounds per Cycle (def. 10)");

options, args = parser.parse_args()

log_file = open(options.log_file, "a")
dump_type = options.dump_file
mtype = int(options.modul_type)
qval = int(options.q_value)
n_cycle = int(options.cycles_num)
n_round = int(options.round_num)

if dump_type == "none":
    print "* Alert: Skipping dumping of the rx block..."
elif dump_type == "full":
    print "** Using a full dump of the RX block!!"
elif dump_type == "matched":
    print "** Using dump of the match_filter block!!"
else:
    print "Unknown dump_type flag!! Set to 'none'"
    dump_type = 'none'

if options.device == "uhd":
    print "Using USRP devices..."
else:
    print "Using bladeRF device..."

modul_msg = ["FM0", "Miller M=2", "Miller M=4", "Miller M=8"];

if mtype > 3 or mtype < 0:
    mtype = 1;

if (qval > 8 or qval < 0):
    qval = 0

slots = pow(2, qval);

print "* Using", modul_msg[mtype], "modulation for tags..."
print "* Q Value of", str(qval), "so", str(slots), "slots assigned for tags..."
print "* Reader using", str(n_cycle), "cycles with", str(n_round), "rounds per cycle..."


class my_top_block(gr.top_block, Qt.QWidget):
    def __init__(self):
        gr.top_block.__init__(self)
        Qt.QWidget.__init__(self)
        self.setWindowTitle("Top Block")
        try:
            self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
        except:
            pass
        self.top_scroll_layout = Qt.QVBoxLayout()
        self.setLayout(self.top_scroll_layout)
        self.top_scroll = Qt.QScrollArea()
        self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
        self.top_scroll_layout.addWidget(self.top_scroll)
        self.top_scroll.setWidgetResizable(True)
        self.top_widget = Qt.QWidget()
        self.top_scroll.setWidget(self.top_widget)
        self.top_layout = Qt.QVBoxLayout(self.top_widget)
        self.top_grid_layout = Qt.QGridLayout()
        self.top_layout.addLayout(self.top_grid_layout)

        self.settings = Qt.QSettings("GNU Radio", "top_block")
        self.restoreGeometry(self.settings.value("geometry").toByteArray())

        # Constants

        amplitude = 5000
        sw_dec = 5  # For reduce the sample rate after the filtering. (4MS / 5 = 800 KS/s)
        samp_rate = 4e6  # corresponds to dec_rate 16. (64M/16)
        tx_sample = .5e6

        # Filter mathced to 1/4 of 40 KHz tag cycle.
        # 40 KHz = 100 samples, so 1/4 is 25 samples.
        # num_taps = int(64000 / ( (dec_rate * 4) * 40 )) #Filter matched to 1/4 of the 40 kHz tag cycle
        num_taps = 25
        taps = [complex(1, 1)] * num_taps

        # Blocks

        matched_filt = filter.fir_filter_ccc(sw_dec, taps);

        agc = analog.agc2_cc(0.3, 1e-3, 1, 1)
        agc.set_max_gain(100)

        to_mag = blocks.complex_to_mag()
        center = rfid.center_ff(10)

        omega = 5
        mu = 0.25
        gain_mu = 0.25
        gain_omega = .25 * gain_mu * gain_mu
        omega_relative_limit = .05

        # clock recovery
        mm = digital.clock_recovery_mm_ff(omega, gain_omega, mu, gain_mu, omega_relative_limit)

        mtype = int(options.modul_type)
        qval = int(options.q_value)

        if (mtype > 3 or mtype < 0):
            mtype = 1  # Miller M=2 by default

        # qval = int(options.q_value)
        if qval > 8 or qval < 0:
            qval = 0;

        n_cycle = int(options.cycles_num)
        n_round = int(options.round_num)

        self.reader = rfid.reader_f(int(tx_sample), mtype, qval, n_cycle, n_round)
        tag_decoder = rfid.tag_decoder_f()

        # The parameters for command_gate_cc are:
        # - PW: 12 us. (Negative part of the PIE pulses)
        # - T1: 250 us (Maximium timeout for the tag to reply).
        # - Sample Rate. (800 KS/s after the matched filter)
        command_gate = rfid.command_gate_cc(12, 250, int(800e3))  # 800 KS/s.
        dc_block = filter.dc_blocker_cc(64, True)

        to_complex = blocks.float_to_complex()
        amp = blocks.multiply_const_ff(amplitude)
        # TX
        freq = options.center_freq  # 915e6
        rx_gain = options.rx_gain  # 20
        if (options.device == "uhd"):
            tx = osmosdr.sink("uhd,type=usrp1")
            tx.set_gain(0, 'DAC-pga')  # range -20 to 0.
            tx.set_antenna('TX/RX')
        else:
            # LimeSDR
            tx = osmosdr.sink(args="numchan=" + str(1) + " " + 'driver=lime,soapy=0')
            tx.set_gain(30, 0)
            tx.set_if_gain(10, 0)
            tx.set_bb_gain(10, 0)
            tx.set_antenna("BAND1", 0)
            tx.set_bandwidth(0, 1000000)

            # Settings for Backscatter = VGA1 = -4 / VGA2 = 20

        tx.set_sample_rate(tx_sample)
        tx.set_center_freq(freq)

        if not tx:
            print "Couldn't set tx freq"

        # End TX

        # RX
        if (options.device == "uhd"):
            rx = osmosdr.source("uhd,type=usrp1")
            rx.set_gain(20, 'PGA0')
            rx.set_gain(15, 'ADC-pga')
            rx.set_antenna('RX2')
        else:
            # LimeSDR
            rx = osmosdr.source(args="numchan=" + str(1) + " " + 'driver=lime,soapy=0')
            rx.set_gain_mode(False, 0)
            rx.set_gain(20, 0)
            rx.set_if_gain(10, 0)
            rx.set_bb_gain(10, 0)
            rx.set_antenna("LNAL", 0)
            rx.set_bandwidth(0, 6000000)

        rx.set_sample_rate(samp_rate)
        rx.set_center_freq(freq)
        # rx.set_iq_balance_mode(0, 0)
        # rx.set_dc_offset_mode(0, 0)

        if not rx:
            print "Couldn't set rx freq"

        # End RX
        command_gate.set_ctrl_out(self.reader.ctrl_q())
        tag_decoder.set_ctrl_out(self.reader.ctrl_q())

        # QT setup

        self.qtgui_time_sink = qtgui.time_sink_c(
            1024,  # size
            samp_rate,  # samp_rate
            "",  # name
            1  # number of inputs
        )
        self.qtgui_time_sink.set_update_time(0.10)
        self.qtgui_time_sink.set_y_axis(-5, 5)

        self.qtgui_time_sink.set_y_label('Amplitude', "")

        self.qtgui_time_sink.enable_tags(-1, True)
        self.qtgui_time_sink.set_trigger_mode(qtgui.TRIG_MODE_AUTO, qtgui.TRIG_SLOPE_POS, 1, 0, 0, "")
        self.qtgui_time_sink.enable_autoscale(False)
        self.qtgui_time_sink.enable_grid(False)
        self.qtgui_time_sink.enable_axis_labels(True)
        self.qtgui_time_sink.enable_control_panel(True)

        if not True:
            self.qtgui_time_sink.disable_legend()

        labels = ['', '', '', '', '',
                  '', '', '', '', '']
        widths = [1, 1, 1, 1, 1,
                  1, 1, 1, 1, 1]
        colors = ["blue", "red", "green", "black", "cyan",
                  "magenta", "yellow", "dark red", "dark green", "blue"]
        styles = [1, 1, 1, 1, 1,
                  1, 1, 1, 1, 1]
        markers = [-1, -1, -1, -1, -1,
                   -1, -1, -1, -1, -1]
        alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
                  1.0, 1.0, 1.0, 1.0, 1.0]

        for i in xrange(2 * 1):
            if len(labels[i]) == 0:
                if (i % 2 == 0):
                    self.qtgui_time_sink.set_line_label(i, "Re{{Data {0}}}".format(i / 2))
                else:
                    self.qtgui_time_sink.set_line_label(i, "Im{{Data {0}}}".format(i / 2))
            else:
                self.qtgui_time_sink.set_line_label(i, labels[i])
            self.qtgui_time_sink.set_line_width(i, widths[i])
            self.qtgui_time_sink.set_line_color(i, colors[i])
            self.qtgui_time_sink.set_line_style(i, styles[i])
            self.qtgui_time_sink.set_line_marker(i, markers[i])
            self.qtgui_time_sink.set_line_alpha(i, alphas[i])

        self._qtgui_time_sink_win = sip.wrapinstance(self.qtgui_time_sink.pyqwidget(), Qt.QWidget)
        self.top_layout.addWidget(self._qtgui_time_sink_win)


        #########Build Graph
        self.connect(rx, dc_block)
        self.connect(dc_block, matched_filt)
        self.connect(matched_filt, self.qtgui_time_sink)
        self.connect(matched_filt, command_gate)
        self.connect(command_gate, agc)
        self.connect(agc, to_mag)
        self.connect(to_mag, center, mm, tag_decoder)
        self.connect(tag_decoder, self.reader, amp, to_complex, tx)
        #################

        # Output dumps for debug

        # self.connect(to_complex, f_txout);
        if dump_type == "matched":
            f_rxout = blocks.file_sink(gr.sizeof_gr_complex, 'f_rxout.out');
            self.connect(matched_filt, f_rxout)
            # f_rxout = blocks.file_sink(gr.sizeof_float, 'f_rxout.out');
            # self.connect(mm, f_rxout)

        if dump_type == "full":
            f_rxout = blocks.file_sink(gr.sizeof_gr_complex, 'f_rxout.out');
            self.connect(rx, f_rxout)

    def closeEvent(self, event):
        self.settings = Qt.QSettings("GNU Radio", "top_block")
        self.settings.setValue("geometry", self.saveGeometry())
        event.accept()


def main():
    from distutils.version import StrictVersion

    if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
        style = gr.prefs().get_string('qtgui', 'style', 'raster')
        Qt.QApplication.setGraphicsSystem(style)
    qapp = Qt.QApplication(sys.argv)

    tb = my_top_block()

    tb.start()
    tb.show()

    qapp.exec_()

    while 1:

        c = raw_input("'Q' to quit. L to get log.\n")
        if c == "q":
            break

        if c == "L" or c == "l":
            log_file.write("T,CMD,ERROR,BITS,SNR\n")
            log = tb.reader.get_log()
            print "Log has %s Entries" % (str(log.count()))
            i = log.count();

            for k in range(0, i):
                msg = log.delete_head_nowait()
                print_log_msg(msg, log_file)

    tb.stop()


def print_log_msg(msg, log_file):
    LOG_START_CYCLE, LOG_QUERY, LOG_ACK, LOG_QREP, LOG_NAK, LOG_REQ_RN, LOG_READ, LOG_RN16, LOG_EPC, LOG_HANDLE, LOG_DATA, LOG_EMPTY, LOG_COLLISION, LOG_OKAY, LOG_ERROR = range(
        15)

    fRed = chr(27) + '[31m'
    fBlue = chr(27) + '[34m'
    fReset = chr(27) + '[0m'

    if msg.type() == LOG_START_CYCLE:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t Started Cycle" % (fields[-1])
        log_file.write(fields[-1] + ",START_CYCLE,0,0,0\n");

    if msg.type() == LOG_QUERY:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t Query" % (fields[-1])
        log_file.write(fields[-1] + ",QUERY,0,0,0\n");

    if msg.type() == LOG_QREP:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t QRep" % (fields[-1])
        log_file.write(fields[-1] + ",QREP,0,0,0\n");

    if msg.type() == LOG_ACK:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t ACK" % (fields[-1])
        log_file.write(fields[-1] + ",ACK,0,0,0\n");

    if msg.type() == LOG_NAK:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t NAK" % (fields[-1])
        log_file.write(fields[-1] + ",NAK,0,0,0\n");

    if msg.type() == LOG_RN16:
        fields = split(strip(msg.to_string()), " ")
        rn16 = fields[0].split(",")[0]
        snr = strip(fields[0].split(",")[1])
        tmp = int(rn16, 2)

        if msg.arg2() == LOG_ERROR:

            print "%s\t    %s RN16 w/ Error: %04X%s" % (fields[-1], fRed, tmp, fReset)
            log_file.write(fields[-1] + ",RN16,1," + "%04X" % tmp + "," + snr + "\n");
        else:
            print "%s\t    %s RN16: %04X%s" % (fields[-1], fBlue, tmp, fReset)
            log_file.write(fields[-1] + ",RN16,0," + "%04X" % tmp + "," + snr + "\n");

    if msg.type() == LOG_EPC:
        fields = split(strip(msg.to_string()), " ")
        epc = fields[0].split(",")[0]
        snr = strip(fields[0].split(",")[1])
        epc = epc[16:112]

        tmp = int(epc, 2)
        if msg.arg2() == LOG_ERROR:
            print "%s\t    %s EPC w/ Error: %024X%s" % (fields[-1], fRed, tmp, fReset)
            log_file.write(fields[-1] + ",EPC,1," + "%024X" % tmp + "," + snr + "\n");
        else:
            print "%s\t    %s EPC: %024X%s" % (fields[-1], fBlue, tmp, fReset)
            log_file.write(fields[-1] + ",EPC,0," + "%024X" % tmp + "," + snr + "\n");

    if msg.type() == LOG_EMPTY:
        fields = split(strip(msg.to_string()), " ")
        snr = strip(fields[0])
        print "%s\t    - Empty Slot - " % (fields[-1])
        log_file.write(fields[-1] + ",EMPTY,0,0," + snr + "\n");

    if msg.type() == LOG_COLLISION:
        fields = split(strip(msg.to_string()), " ")
        print "%s\t    - Collision - " % (fields[-1])
        log_file.write(fields[-1] + ",COLLISION,0,0,0\n");


if __name__ == '__main__':
    main()

With the following output:

logic@logic-ThinkPad-X260:~/PycharmProjects/LimeReader$ python LimeReader2.py --s akdf --r 100 --c 100 --m 8
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.001.001-release

* Alert: Skipping dumping of the rx block...
Using bladeRF device...
* Using Miller M=2 modulation for tags...
* Q Value of 0 so 1 slots assigned for tags...
* Reader using 100 cycles with 100 rounds per cycle...
us Per Sample: 1.250000 Num samples per pulse:9 T1:200
gr-osmosdr v0.1.x-xxx-xunknown (0.1.5git) gnuradio 3.7.10
built-in sink types: uhd hackrf bladerf soapy redpitaya file 
[INFO] Make connection: 'LimeSDR-USB [USB 2.0] 9060A02592E12'
[INFO] Estimated reference clock 30.7197 MHz
[INFO] Selected reference clock 30.720 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
[INFO] Init LMS7002M(0)
[INFO] LMS7002M cache /home/logic/.limesuite/LMS7002M_cache_values.db
[INFO] Ver=7, Rev=1, Mask=1
[INFO] LMS7002M calibration values caching Enable
[INFO] Rx Filter calibrated from cache
[INFO] Tx Filter calibrated from cache
[INFO] Rx Filter calibrated from cache
[INFO] Tx Filter calibrated from cache
SetFrequency using cache values vco:2, csw:175
gr-osmosdr v0.1.x-xxx-xunknown (0.1.5git) gnuradio 3.7.10
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy soapy redpitaya 
SetFrequency using cache values vco:2, csw:173
############################################################
Tx calibration values found in cache:
   | DC  | GAIN | PHASE
---+-----+------+------
I: | 626 | 1974 | -17
Q: | 114 | 2047 |
############################################################
############################################################
Rx calibration using RSSI INTERNAL ON BOARD loopback
Rx ch.A @  910 MHz, BW: 30 MHz, RF input: LNAL, PGA: 22, LNA: 4, TIA: 1
Rx calibration: using cached values
Rx calibration values found in cache:
   | DC  | GAIN | PHASE
---+-----+------+------
I: |   0 | 2047 | 0
Q: |   0 | 2047 |
############################################################
Timer fired starting cycle
Timer fired starting cycle
[INFO] L
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 10
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
[INFO] L
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 20
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 30
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 40
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 50
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Starting cycle 60
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
Timer fired starting cycle
'Q' to quit. L to get log.
Timer fired starting cycle
Starting cycle 70
Timer fired starting cycle
Timer fired starting cycle
lTimer fired starting cycle

Log has 479 Entries
66804.589	 Started Cycle
66804.589	 Query
66804.636	 Started Cycle
66804.636	 Query
66805.137	 Started Cycle
66805.137	 Query
66805.637	 Started Cycle
66805.637	 Query
66806.136	 Started Cycle
66806.136	 Query
66806.637	 Started Cycle
66806.637	 Query
66807.136	 Started Cycle
66807.136	 Query
66807.637	 Started Cycle
66807.637	 Query
66808.137	 Started Cycle
66808.137	 Query
66808.576	    - Empty Slot - 
66808.576	 Query
66808.636	 Started Cycle
66808.636	 Query
66808.837	    - Empty Slot - 
66808.837	 Query
66809.137	 Started Cycle
66809.137	 Query
66809.152	    - Empty Slot - 
66809.152	 Query
66809.442	    - Empty Slot - 
66809.442	 Query
66809.619	    - Empty Slot - 
66809.619	 Query
66809.637	 Started Cycle
66809.637	 Query
66810.136	 Started Cycle
66810.136	 Query
66810.637	 Started Cycle
66810.637	 Query
66811.136	 Started Cycle
66811.136	 Query
66811.618	    - Empty Slot - 
66811.618	 Query
66811.636	 Started Cycle
66811.636	 Query
66811.799	    - Empty Slot - 
66811.799	 Query
66811.879	    - Empty Slot - 
66811.879	 Query
66811.883	     RN16: E856
66811.883	 ACK
66812.137	 Started Cycle
66812.137	 Query
66812.553	    - Empty Slot - 
66812.553	 Query
66812.636	 Started Cycle
66812.636	 Query
66812.667	    - Empty Slot - 
66812.667	 Query
66812.784	    - Empty Slot - 
66812.785	 Query
66812.838	    - Empty Slot - 
66812.838	 Query
66812.935	    - Empty Slot - 
66812.935	 Query
66812.963	    - Empty Slot - 
66812.963	 Query
66813.067	    - Empty Slot - 
66813.067	 Query
66813.136	 Started Cycle
66813.136	 Query
66813.144	    - Empty Slot - 
66813.144	 Query
66813.250	    - Empty Slot - 
66813.250	 Query
66813.262	    - Empty Slot - 
66813.262	 Query
66813.393	    - Empty Slot - 
66813.393	 Query
66813.420	    - Empty Slot - 
66813.420	 Query
66813.506	    - Empty Slot - 
66813.506	 Query
66813.555	    - Empty Slot - 
66813.555	 Query
66813.625	    - Empty Slot - 
66813.625	 Query
66813.637	 Started Cycle
66813.637	 Query
66814.136	 Started Cycle
66814.136	 Query
66814.563	    - Empty Slot - 
66814.563	 Query
66814.577	    - Empty Slot - 
66814.577	 Query
66814.628	    - Empty Slot - 
66814.628	 Query
66814.636	 Started Cycle
66814.636	 Query
66814.681	    - Empty Slot - 
66814.681	 Query
66814.715	    - Empty Slot - 
66814.715	 Query
66814.740	    - Empty Slot - 
66814.740	 Query
66814.804	     RN16 w/ Error: 0980
66814.804	 Query
66814.922	    - Empty Slot - 
66814.922	 Query
66814.941	    - Empty Slot - 
66814.941	 Query
66815.014	    - Empty Slot - 
66815.014	 Query
66815.039	    - Empty Slot - 
66815.039	 Query
66815.137	 Started Cycle
66815.137	 Query
66815.188	    - Empty Slot - 
66815.188	 Query
66815.636	 Started Cycle
66815.636	 Query
66815.720	    - Empty Slot - 
66815.720	 Query
66815.800	    - Empty Slot - 
66815.800	 Query
66815.965	    - Empty Slot - 
66815.965	 Query
66816.137	 Started Cycle
66816.137	 Query
66816.397	    - Empty Slot - 
66816.397	 Query
66816.637	 Started Cycle
66816.637	 Query
66817.136	 Started Cycle
66817.136	 Query
66817.170	    - Empty Slot - 
66817.170	 Query
66817.577	    - Empty Slot - 
66817.577	 Query
66817.636	 Started Cycle
66817.636	 Query
66817.680	    - Empty Slot - 
66817.680	 Query
66817.817	    - Empty Slot - 
66817.817	 Query
66817.937	    - Empty Slot - 
66817.937	 Query
66818.059	    - Empty Slot - 
66818.059	 Query
66818.136	 Started Cycle
66818.136	 Query
66818.297	    - Empty Slot - 
66818.297	 Query
66818.439	    - Empty Slot - 
66818.439	 Query
66818.636	 Started Cycle
66818.636	 Query
66818.651	    - Empty Slot - 
66818.651	 Query
66818.679	    - Empty Slot - 
66818.679	 Query
66819.137	 Started Cycle
66819.137	 Query
66819.637	 Started Cycle
66819.637	 Query
66820.136	 Started Cycle
66820.136	 Query
66820.637	 Started Cycle
66820.637	 Query
66821.136	 Started Cycle
66821.136	 Query
66821.637	 Started Cycle
66821.637	 Query
66821.789	    - Empty Slot - 
66821.789	 Query
66822.138	 Started Cycle
66822.138	 Query
66822.571	    - Empty Slot - 
66822.571	 Query
66822.574	    - Empty Slot - 
66822.574	 Query
66822.636	 Started Cycle
66822.636	 Query
66822.689	    - Empty Slot - 
66822.689	 Query
66822.695	    - Empty Slot - 
66822.695	 Query
66822.701	    - Empty Slot - 
66822.701	 Query
66822.806	    - Empty Slot - 
66822.806	 Query
66822.822	    - Empty Slot - 
66822.822	 Query
66822.830	    - Empty Slot - 
66822.830	 Query
66822.896	    - Empty Slot - 
66822.896	 Query
66822.900	    - Empty Slot - 
66822.900	 Query
66823.039	    - Empty Slot - 
66823.039	 Query
66823.079	    - Empty Slot - 
66823.079	 Query
66823.080	    - Empty Slot - 
66823.080	 Query
66823.089	    - Empty Slot - 
66823.089	 Query
66823.136	 Started Cycle
66823.136	 Query
66823.637	 Started Cycle
66823.637	 Query
66824.137	 Started Cycle
66824.137	 Query
66824.341	    - Empty Slot - 
66824.341	 Query
66824.351	    - Empty Slot - 
66824.351	 Query
66824.364	    - Empty Slot - 
66824.364	 Query
66824.396	    - Empty Slot - 
66824.396	 Query
66824.461	    - Empty Slot - 
66824.461	 Query
66824.476	    - Empty Slot - 
66824.476	 Query
66824.480	    - Empty Slot - 
66824.480	 Query
66824.485	    - Empty Slot - 
66824.486	 Query
66824.627	    - Empty Slot - 
66824.627	 Query
66824.632	    - Empty Slot - 
66824.632	 Query
66824.637	 Started Cycle
66824.637	 Query
66824.652	    - Empty Slot - 
66824.652	 Query
66824.741	    - Empty Slot - 
66824.741	 Query
66824.747	    - Empty Slot - 
66824.747	 Query
66824.756	    - Empty Slot - 
66824.756	 Query
66825.137	 Started Cycle
66825.137	 Query
66825.151	    - Empty Slot - 
66825.151	 Query
66825.636	 Started Cycle
66825.636	 Query
66825.653	    - Empty Slot - 
66825.653	 Query
66825.895	    - Empty Slot - 
66825.895	 Query
66825.931	    - Empty Slot - 
66825.931	 Query
66826.040	    - Empty Slot - 
66826.040	 Query
66826.139	 Started Cycle
66826.139	 Query
66826.139	    - Empty Slot - 
66826.139	 Query
66826.179	    - Empty Slot - 
66826.179	 Query
66826.400	    - Empty Slot - 
66826.400	 Query
66826.523	    - Empty Slot - 
66826.523	 Query
66826.636	 Started Cycle
66826.636	 Query
66826.766	    - Empty Slot - 
66826.766	 Query
66826.826	    - Empty Slot - 
66826.826	 Query
66826.846	    - Empty Slot - 
66826.846	 Query
66827.136	 Started Cycle
66827.136	 Query
66827.211	    - Empty Slot - 
66827.211	 Query
66827.251	    - Empty Slot - 
66827.251	 Query
66827.255	    - Empty Slot - 
66827.255	 Query
66827.258	    - Empty Slot - 
66827.258	 Query
66827.474	     RN16: D0DC
66827.474	 ACK
66827.492	     EPC w/ Error: A030B048433200C606019D46
66827.492	 NAK
66827.492	 Query
66827.503	    - Empty Slot - 
66827.503	 Query
66827.507	    - Empty Slot - 
66827.507	 Query
66827.540	    - Empty Slot - 
66827.540	 Query
66827.579	     RN16 w/ Error: D0F0
66827.579	 Query
'Q' to quit. L to get log.

Again I probably need to add filters to the TX, but at least it’s able to ACK the RN.