Making gssm adaptive to USRP N200

Hi
I want to getting gsm signaling channel online, so i found gssm, but i
have usrp N200 and no usrp1. I use gnuradio 3.5.1

I changed ‘‘gssm_usrp.py’’ according to below :



#!/usr/bin/env python
import sys

$Id: gssm_usrp.py,v 1.2 2007-07-07 16:31:44 jl Exp $

for extdir in [‘…/lib’,‘…/lib/.libs’]:
if extdir not in sys.path:
sys.path.append(extdir)

from gnuradio import gr, blks2
#from gnuradio import usrp, db_dbs_rx
#from gnuradio.blks2impl import gmsk
from gnuradio import uhd
from gnuradio import blks2impl
#from usrpm import usrp_dbid
import gssm

gsm_rate = 1625000.0 / 6.0 # about 541666.666666667
decim = 174

experimental constant

default_usrp_offset = 12e3

class gssm_flow_graph(gr.top_block):
def init(self, usrp_offset):
gr.top_block.init(self)
self.samp_rate = 574713
self.center_freq = 956800e3

            u = uhd.single_usrp_source("addr=192.168.10.2",

uhd.io_type_t.COMPLEX_FLOAT32, 1)
u.set_samp_rate(self.samp_rate) #set the sample rate to
2Msps
u.set_gain(52) #set the gain to something reasonable
u.set_center_freq(self.center_freq)

            sps = 100e6 / decim
if sps < 2 * gsm_rate:
  raise Exception('sample rate too low')

xcf = 150e3
xtw = 50e3
xt = gr.firdes.low_pass(1.0, sps, xcf, xtw,
   gr.firdes.WIN_HAMMING)
xf = gr.fir_filter_ccf(1, xt)

g = gssm.sink(sps)

self.connect(u, xf, g)

def main():
if len(sys.argv) == 2:
uo = float(sys.argv[1])
else:
uo = default_usrp_offset
g = gssm_flow_graph(uo)
g.run()

if name == ‘main’:
main()



I read this topic :
Io_type configuration for uhd.single_usrp_source - GNU Radio - Ruby-Forum



‘’‘gr_file_sink.cc:’‘’

gr_file_sink_sptr
gr_make_file_sink (size_t itemsize, const char *filename)
{
return gnuradio::get_initial_sptr(new gr_file_sink (itemsize,
filename));
}

gr_file_sink::gr_file_sink(size_t itemsize, const char *filename)
: gr_sync_block (“file_sink”,
gr_make_io_signature(1, 1, itemsize),
gr_make_io_signature(0, 0, 0)),
gr_file_sink_base(filename, true),



with this one working properly.

but in

‘’‘gssm_sink.cc:’‘’

gssm_sink_sptr gssm_make_sink(double sps) {

return gssm_sink_sptr(new gssm_sink(sps));
}

static const char *chan_name = “gsm”; // GSM TUN interface name

gssm_sink::gssm_sink(double sps) :
gr_sync_block(“gssm_sink”,
gr_make_io_signature(1, 1, sizeof(gr_complex)),
gr_make_io_signature(0, 0, 0))



I faced with this error :

~/workspace/projects/usrp/trunk/Airprobe/gssm/src/python$
./gssm_usrp.py
linux; GNU C++ version 4.4.5; Boost_104200; UHD_003.003.002-release

– Opening a USRP2/N-Series device…
– Current recv frame size: 1472 bytes
– Current send frame size: 1472 bytes

gr_fir_ccf: using SSE
TUNSETIFF: Operation not permitted
warning: was not able to open TUN device, disabling Wireshark interface
gr_fir_fff: using SSE
Traceback (most recent call last):
File “./gssm_usrp.py”, line 90, in
main()
File “./gssm_usrp.py”, line 86, in main
g = gssm_flow_graph(uo)
File “./gssm_usrp.py”, line 79, in init
self.connect(u, xf, g)
File
“/usr/local/lib/python2.6/dist-packages/gnuradio/gr/top_block.py”, line
124, in connect
self._connect(points[i-1], points[i])
File
“/usr/local/lib/python2.6/dist-packages/gnuradio/gr/top_block.py”, line
128, in _connect
(dst_block, dst_port) = self._coerce_endpoint(dst)
File
“/usr/local/lib/python2.6/dist-packages/gnuradio/gr/top_block.py”, line
139, in _coerce_endpoint
raise ValueError(“unable to coerce endpoint”)
ValueError: unable to coerce endpoint




indeed itemsize equal sizeof(gr_complex) the things that happen :
http://www.ruby-forum.com/topic/2185520

please help me
Thanks in advance