diff --git a/radio-tetra/config.sh b/radio-tetra/config.sh
index bf9142d..8a43c63 100644
--- a/radio-tetra/config.sh
+++ b/radio-tetra/config.sh
@@ -24,23 +24,23 @@ FIFO_TMP_DIR=${TMP_DIR}/fifo
 REC_TMP_DIR=${TMP_DIR}/tetra-raw
 # where to store decoded tetra audio files
 REC_DIR=~/tetra-rec
-# format of audio, use anny of: wav, flac, ogg
-REC_FORMAT=ogg
+# format of audio, use anny of: cdata.bz2, wav, flac, ogg
+REC_FORMAT=cdata.bz2
 # number of decoded channels
 STREAMS=72
 
-TUNE_FREQ=424e6
-TUNE_PPM=0
+TUNE_FREQ=424150e3
+TUNE_PPM=43
 SAMPLE_RATE=1.8e6
 # set gain, comment out for automatic gain setting
-#TUNE_GAIN=36
+TUNE_GAIN=36
 # Band width usefull for automatic squelch threshold detection
 # values >= 1 are interpreted as a fraction of sample rate.
 SIGNAL_DETECTION_BW=0.8
 # Therhold level (above detected noise level) for automatic squelching.
-#SIG_DETECTION_THRESHOLD=6
+SIG_DETECTION_THRESHOLD=6
 # arguments for osmo-sdr RX block, use rtl_tcp=<ADDR>:<PORT> for TCP source
-OSMO_SDR_ARGS=""
+OSMO_SDR_ARGS="rtl=0"
 
 # set to yes to enable debug logging
 #DEBUG=yes
diff --git a/radio-tetra/tetra.sh b/radio-tetra/tetra.sh
index b5d161b..10becc8 100755
--- a/radio-tetra/tetra.sh
+++ b/radio-tetra/tetra.sh
@@ -52,7 +52,8 @@ cd "${OSMOTETRA_DIR}"
 #rm -rf ${FIFO_TMP_DIR}
 for i in `seq 0 ${STREAMS}`; do
 #	./tetra-rx "${FIFO_TMP_DIR}/bits${i}" "${REC_TMP_DIR}/${i}" >"${REC_TMP_DIR}/log${i}.txt" 2>&1 & #DEBUG
-	./tetra-rx "${FIFO_TMP_DIR}/bits${i}" "${REC_TMP_DIR}/${i}" >"${FIFO_TMP_DIR}/log${i}.txt" 2>&1 &
+#	./tetra-rx "${FIFO_TMP_DIR}/bits${i}" "${REC_TMP_DIR}/${i}" >"${FIFO_TMP_DIR}/log${i}.txt" 2>&1 &
+	./tetra-rx "${FIFO_TMP_DIR}/bits${i}" "${REC_TMP_DIR}/${i}" >/dev/null 2>&1 &
 done
 
 start_demod
@@ -90,12 +91,21 @@ while true; do
 		mkdir -p "${fpath}"
 
 		./cdecoder "$i" ${TMP_DIR}/traffic.cdata > /dev/null 2>&1
-		./sdecoder ${TMP_DIR}/traffic.cdata ${TMP_DIR}/traffic.raw  > /dev/null 2>&1
-		sox -q -r 8000 -e signed -b 16 -c 1 ${TMP_DIR}/traffic.raw "${fpath}/${fn}.${REC_FORMAT}"
+
+		c=`echo ${i} | cut -d "/" -f 6` # breaks when not in /home/user/
+		# FIXME not relative frequency
+		TNAME="${fpath}/${fn}.o${c}.${REC_FORMAT}"
+
+		if [ ${REC_FORMAT} = "cdata.bz2" ]; then
+			cat ${TMP_DIR}/traffic.cdata | ~/gr-pack | bzip2 -9 > ${TNAME}
+		else
+			./sdecoder ${TMP_DIR}/traffic.cdata ${TMP_DIR}/traffic.raw  > /dev/null 2>&1
+			sox -q -r 8000 -e signed -b 16 -c 1 ${TMP_DIR}/traffic.raw "${fpath}/${fn}.${REC_FORMAT}"
+		fi
 
 		mv "${i%%.out}.txt" "${fpath}/${fn}.txt"
 		echo "created: ${fpath}/${fn}"
-		length=$(($(stat -c %s ${TMP_DIR}/traffic.raw)/16)) # in [ms]
+		#length=$(($(stat -c %s ${TMP_DIR}/traffic.raw)/16)) # in [ms]
 # WTF, where is the fucking file ???
 #		${ROOT}/add_group.py -i ${ssi} -t ${mtime} -l ${length}
 		rm "${i}"
diff --git a/radio-tetra/tetra_rx_multi.py b/radio-tetra/tetra_rx_multi.py
index f9a0ad1..956c236 100755
--- a/radio-tetra/tetra_rx_multi.py
+++ b/radio-tetra/tetra_rx_multi.py
@@ -37,7 +37,7 @@ class tetra_rx_multi(gr.top_block):
         self.afc_ppm_step = 100
         self.debug = options.debug
         self.last_pwr = -100000
-        self.sig_det_period = 1
+        self.sig_det_period = 10
         self.sig_det_bw = sig_det_bw = options.sig_detection_bw or srate_rx
         if self.sig_det_bw <= 1.:
             self.sig_det_bw *= srate_rx
@@ -107,17 +107,22 @@ class tetra_rx_multi(gr.top_block):
             float_to_uchar = blocks.float_to_uchar()
             map_bits = digital.map_bb(([3, 2, 0, 1, 3]))
             unpack_k_bits = blocks.unpack_k_bits_bb(2)
+            blocks_unpacked_to_packed_xx_0 = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
+
+            brmchannels = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71]
+            brmchannels = [0,1,7,9,15,16,19,25,32,33,34,42,44,46,47,48,49,50,51,52,56,57,59,61,62,69,71]
 
             if out_type == 'udp':
                 sink = blocks.udp_sink(gr.sizeof_gr_char, dst_ip, int(dst_port)+ch, 1472, True)
             elif out_type == 'file':
                 sink = blocks.file_sink(gr.sizeof_char, dst_path % ch, False)
-                sink.set_unbuffered(True)
+                sink.set_unbuffered(False)
             else:
                 raise ValueError("Invalid output URL '%s'" % options.output)
 
-            self.connect((self.channelizer, ch),
-                    (squelch, 0),
+            if ch in brmchannels:
+                self.connect((self.channelizer, ch),
+                    #(squelch, 0),
                     (mpsk, 0),
                     (diff_phasor, 0),
                     (complex_to_arg, 0),
@@ -126,6 +131,7 @@ class tetra_rx_multi(gr.top_block):
                     (float_to_uchar, 0),
                     (map_bits, 0),
                     (unpack_k_bits, 0),
+                    (blocks_unpacked_to_packed_xx_0, 0),
                     (sink, 0))
 
             self.squelch.append(squelch)
@@ -148,7 +154,7 @@ class tetra_rx_multi(gr.top_block):
         # signal strenght identification
         ##################################################
         self.pwr_probes = []
-        for ch in range(self.channels):
+        for ch in []: #range(self.channels):
             pwr_probe = analog.probe_avg_mag_sqrd_c(0, 1./self.srate_channel)
             self.pwr_probes.append(pwr_probe)
             self.connect((self.channelizer, ch), (pwr_probe, 0))
@@ -161,17 +167,17 @@ class tetra_rx_multi(gr.top_block):
                 if not pwr:
                     continue
                 pwr = min(pwr) + self.sig_det_threshold
-                print "Power level for squelch % 5.1f" % pwr
+                print "power threshold target %f"%pwr
                 if abs(pwr - self.last_pwr) > (self.sig_det_threshold / 2):
                     for s in self.squelch:
                         s.set_threshold(pwr)
                     self.last_pwr = pwr
-                time.sleep(self.sig_det_period)
+                time.sleep(self.sig_det_period+1)
 
-        if self.sig_det_threshold is not None:
-            self._sig_det_probe_thread = threading.Thread(target=_sig_det_probe)
-            self._sig_det_probe_thread.daemon = True
-            self._sig_det_probe_thread.start()
+        #if self.sig_det_threshold is not None:
+        #    self._sig_det_probe_thread = threading.Thread(target=_sig_det_probe)
+        #    self._sig_det_probe_thread.daemon = True
+        #    self._sig_det_probe_thread.start()
 
         ##################################################
         # AFC blocks and connections
@@ -198,9 +204,10 @@ class tetra_rx_multi(gr.top_block):
                 if abs(err) < self.afc_ppm_step:
                     continue
                 freq = self.freq_xlating.center_freq + err * self.afc_gain
-                if self.debug:
-                    print "err: %f\tfreq: %f" % (err, freq, )
+                print "err: %f\tfreq: %f" % (err, freq, )
                 self.freq_xlating.set_center_freq(freq)
+
+        self.afc_channel = 15
         self._afc_err_thread = threading.Thread(target=_afc_probe)
         self._afc_err_thread.daemon = True
         self._afc_err_thread.start()
