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