Hi.
While trying to make osmo-trx work in multichannel configuration I've found following: - running "./Transceiver52M/osmo-trx -m -c 2 -l INFO" works but - running "./Transceiver52M/osmo-trx -m -c 2 -l INFO -g" gives following: linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.000-release
opening configuration table from path :memory: Config Settings Log Level............... INFO Device args............. TRX Base Port........... 5700 TRX Address............. 127.0.0.1 Channels................ 2 Tx Samples-per-Symbol... 4 Rx Samples-per-Symbol... 4 EDGE support............ Disabled Reference............... GPS C0 Filler Table......... Disabled Multi-Carrier........... Enabled Diversity............... Disabled Tuning offset........... 0 RSSI to dBm offset...... 0 Swap channels........... 0
INFO 3032180480 13:36:38.4 UHDDevice.cpp:786:open: Using discovered UHD device type=b200,name=MyB210,serial=30AC26A,product=B210 -- Detected Device: B210 -- Operating over USB 2. -- Initialize CODEC control... -- Initialize Radio control... -- Performing register loopback test... pass -- Performing register loopback test... pass -- Performing CODEC loopback test... pass -- Performing CODEC loopback test... pass -- Setting master clock rate selection to 'automatic'. -- Asking for clock rate 16.000000 MHz... -- Actually got clock rate 16.000000 MHz. -- Performing timer loopback test... pass -- Performing timer loopback test... pass INFO 3032180480 13:36:41.6 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo Aborted (core dumped)
The tests were performed with usrp B210 and rather recent uhd (see above). Is this some know error/hw incompatibility?
Here are some more details:
./Transceiver52M/osmo-trx -c 2 -l INFO -g
INFO 3041433344 18:06:51.9 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo
Program received signal SIGABRT, Aborted.
#0 0xb7fdd428 in __kernel_vsyscall () #1 0xb7108687 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 #2 0xb710bab3 in __GI_abort () at abort.c:89 #3 0xb7339405 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #4 0xb7337063 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #5 0xb733709f in std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #6 0xb7337306 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #7 0xb7b3cdaf in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #8 0xb7b5fb29 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #9 0xb76edaa5 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #10 0xb76eddb7 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #11 0xb77d138a in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #12 0xb77d1406 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 #13 0x0807f912 in uhd_device::open (this=0x81720e8, args="", ref=2, swap_channels=false) at UHDDevice.cpp:848 #14 0x08052f8f in main (argc=6, argv=0xbffffc34) at osmo-trx.cpp:528
or full trace:
#0 0xb7fdd428 in __kernel_vsyscall () No symbol table info available. #1 0xb7108687 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 resultvar = <optimized out> resultvar = <optimized out> pid = -1222094848 selftid = 7509 #2 0xb710bab3 in __GI_abort () at abort.c:89 save_stage = 2 act = {__sigaction_handler = {sa_handler = 0x819e604, sa_sigaction = 0x819e604}, sa_mask = {__val = {65, 3071582317, 3072874848, 3087003648, 3086538904, 5, 3221221200, 3086926177, 3086539344, 3041440256, 1, 5, 0, 3072872448, 3072874848, 3072878732, 3221221172, 3074215964, 3073382156, 3073321628, 135792864, 3072872448, 3072874848, 3071148324, 3072874848, 3071545388, 3074215936, 3074215936, 135521124, 135915012, 135793824, 3086951616}}, sa_flags = 135792816, sa_restorer = 0xb710b970 <__GI_abort>} sigs = {__val = {32, 0 <repeats 31 times>}} #3 0xb7339405 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 No symbol table info available. #4 0xb7337063 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6 No symbol table info available. #5 0xb733709f in std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 No symbol table info available. #6 0xb7337306 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6 No symbol table info available. #7 0xb7b3cdaf in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #8 0xb7b5fb29 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #9 0xb76edaa5 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #10 0xb76eddb7 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #11 0xb77d138a in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #12 0xb77d1406 in ?? () from /usr/lib/i386-linux-gnu/libuhd.so.003 No symbol table info available. #13 0x0807f912 in uhd_device::open (this=0x81720e8, args="", ref=2, swap_channels=false) at UHDDevice.cpp:848 refstr = <optimized out> __FUNCTION__ = "open" _rx_rate = <optimized out> _tx_rate = <optimized out> addr = {<uhd::dict<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {_map = empty std::list}, <No data fields>} dev_addrs = std::vector of length 1, capacity 1 = { {<uhd::dict<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {_map = std::list = {[0] = {first = "type", second = "b200"}, [1] = {first = "name", second = "MyB210"}, [2] = {first = "serial", second = "30AC26A"}, [3] = {first = "product", second = "B210"}}}, <No data fields>}} stream_args = {cpu_format = "", otw_format = "", args = {<uhd::dict<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {_map = std::list = {[0] = { first = <error reading variable: Cannot access memory at address 0xfffffff4>, second = <error reading variable: Cannot access memory at address 0xfffffff4>}, [1] = { first = <error reading variable: Cannot access memory at address 0xfffffff5>, second = "H{\367\267\020\a\030\b\330C\030\bXG\027\b\030\002\030\b\000ice", '\000' <repeats 12 times>, "\061\000\000\000/lib/i386-linux-gnu/libnss_files.so.2\000_minim\231", '\000' <repeats 35 times>, "\202\364\374\267\205\317c\t\000\000\000\000\000\000\000\000\272\364\374\267\020ii\r\000\000\000\000f\364\374\267\260\364\374\267\022ii\r\000\000\000\000f\364\374\267\202\364\374\267\205\317c\t\000\000\000\000f\364\374\267\246\364\374\267\021ii\r\000\000\000\000f\364", <incomplete sequence \374\267>...}, [2] = { first = "", second = ""}, [3] = {first = <error reading variable: Cannot access memory at address 0x8b007bc4>, second = <error reading variable: Cannot access memory at address 0x8d042438>}<error reading variable: Cannot access memory at address 0xec2ea7e8>...}}, <No data fields>}, channels = std::vector of length 149430, capacity -33734559 = {3515007873, 4135911432, 2206953844, 1216, 1853145221, 1352696715, 76087296, 2526079012, 881459199, 3902013220, 2332033028, 5300371, 1002580224, 5310611, 3767765248, 2113929296, 143886598, 2332033105, 5309571, 32015104, 1361871675, 2206793728, 20740, 2206795390, 20780, 4280562825, 319635, 2692975360, 2298478672, 2548573188, 2214592406, 1583027396, 881430723, 3767795492, 2197815300, 1583027396, 827822275, 3330889471, 283935571, 535298187, 2181036619, 147906499, 1958774016, 607422734, 3338948863, 6, 2311555328, 803742772, 2214592511, 4169732292, 3277807195, 46733, 2304049152, 2304137173, 3968029638, 1256253484, 3280076794, 577696, 2215624837, 338, 2383401605, 394, 4202807345, 2147483391, 16682767, 881393664, 3902013220, 2298478596, 1149838380, 2482964516, 1260, 4035561353, 136608827, 14320655, 2475360256, 1216, 2215629445, 218, 1352696715, 76087296, 2506942500, 2872836095, 20764, 1358211977, 108920832, 1360833417, 4169728000, 136594475, 203703433, 1356891019, 1418395648, 3246984228, 2300574145, 2299798604, 536461777, 405034121, 1352962955, 1284046848, 2341149732, 20648, 405034027, 472140827, 337923129, 270812297, 8686863, 2089353216, 881394724, 3834904356, 2231369732, 264407488, 38276, 605325568, 203707529, 82351103, 1418395648, 1143671844, 2198013988, 20704, 1359512379, 2206793728, 20704, 2206795390, 20744, 1352696715, 1418264576, 76089380, 2501175332, 1418461183, 3498641444, 1529660547, 3277676382, 46733, 2089353216, 881394724, 3834904356, 2197815300, 1583033540, 2378390879, 142540918, 2182074425, 4294967154, 203703435, 4288071144, 4284803583, 3296985087, 1540393260, 3915210590, 4294964050, 2206961766, 20652, 2423570565, 2682841225, 2315255702, 2298750076, 2482971700, 1252, 3263807621, 4285694991, 1055522815, 2382364671, 76087414, 4251510820, 3224502271, 4294931433, 1465225471, 1405520214, 2334977155, 535322744, 2181036617, 147775427, 609519872, 2111256860, 108560390, 822834432, 751076288, 1566531163, 1416335555, 2334923812, 65559616, 2315255806, 506053, 3984916480, 1150017396, 3614120996, 608487212, 4, 33040640, 750808042, 2300843145, 2300060756, 3892847684, 4294562882, 405034123, 3948703369, 2383384683, 178, 1116285577, 877038340, 405034121, 3088597641...}} #14 0x08052f8f in main (argc=6, argv=0xbffffc34) at osmo-trx.cpp:528 type = <optimized out> chans = <optimized out> ref = 2 usrp = 0x81720e8 radio = 0x0 config = {log_level = "INFO", addr = "127.0.0.1", dev_args = "", port = 5700, tx_sps = 4, rx_sps = 1, chans = 2, rtsc = 0, rach_delay = 0, extref = false, gpsref = true, filler = Transceiver::FILLER_ZERO, diversity = false, mcbts = false, offset = 0, rssi_offset = 0, swap_channels = false, edge = false} __FUNCTION__ = "main" trx = 0x0 iface = <optimized out>
Could this have something to do with uhd version (UHD_003.010.000.000-release) I'm using? It seems like SIGABRT happens somewhere deep in uhd intestines.
Or maybe it's some obvious misconfiguration which I've failed to notice so far?
On 10/13/2016 01:43 PM, Max wrote:
Hi.
While trying to make osmo-trx work in multichannel configuration I've found following:
- running "./Transceiver52M/osmo-trx -m -c 2 -l INFO" works but
- running "./Transceiver52M/osmo-trx -m -c 2 -l INFO -g" gives following:
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.000-release
opening configuration table from path :memory: Config Settings Log Level............... INFO Device args............. TRX Base Port........... 5700 TRX Address............. 127.0.0.1 Channels................ 2 Tx Samples-per-Symbol... 4 Rx Samples-per-Symbol... 4 EDGE support............ Disabled Reference............... GPS C0 Filler Table......... Disabled Multi-Carrier........... Enabled Diversity............... Disabled Tuning offset........... 0 RSSI to dBm offset...... 0 Swap channels........... 0
INFO 3032180480 13:36:38.4 UHDDevice.cpp:786:open: Using discovered UHD device type=b200,name=MyB210,serial=30AC26A,product=B210 -- Detected Device: B210 -- Operating over USB 2. -- Initialize CODEC control... -- Initialize Radio control... -- Performing register loopback test... pass -- Performing register loopback test... pass -- Performing CODEC loopback test... pass -- Performing CODEC loopback test... pass -- Setting master clock rate selection to 'automatic'. -- Asking for clock rate 16.000000 MHz... -- Actually got clock rate 16.000000 MHz. -- Performing timer loopback test... pass -- Performing timer loopback test... pass INFO 3032180480 13:36:41.6 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo Aborted (core dumped)
The tests were performed with usrp B210 and rather recent uhd (see above). Is this some know error/hw incompatibility?
Thanks Max,
On Mon, Oct 17, 2016 at 9:13 AM, Max msuraev@sysmocom.de wrote:
./Transceiver52M/osmo-trx -c 2 -l INFO -g
INFO 3041433344 18:06:51.9 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo
I reproduced the gpsdo issue on my machine. This looks like something UHD version related. I'm looking into it.
-TT
On Mon, Oct 17, 2016 at 4:08 PM, Tom Tsou tom@tsou.cc wrote:
On Mon, Oct 17, 2016 at 9:13 AM, Max msuraev@sysmocom.de wrote:
./Transceiver52M/osmo-trx -c 2 -l INFO -g
INFO 3041433344 18:06:51.9 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo
I reproduced the gpsdo issue on my machine. This looks like something UHD version related. I'm looking into it.
Do you have a GPSDO installed in the B210?
In either case this is a bug in UHD. I want to check that all configurations are covered.
-TT
How do I check that? Also, should adding/removing GPS antennae make any difference?
On 10/18/2016 02:06 AM, Tom Tsou wrote:
On Mon, Oct 17, 2016 at 4:08 PM, Tom Tsou tom@tsou.cc wrote:
On Mon, Oct 17, 2016 at 9:13 AM, Max msuraev@sysmocom.de wrote:
./Transceiver52M/osmo-trx -c 2 -l INFO -g
INFO 3041433344 18:06:51.9 UHDDevice.cpp:743:parse_dev_type: Using USRP1 type transmit window for B-Series Device B210 terminate called after throwing an instance of 'uhd::key_error' what(): LookupError: KeyError: update_clock_source: unknown source: gpsdo
I reproduced the gpsdo issue on my machine. This looks like something UHD version related. I'm looking into it.
Do you have a GPSDO installed in the B210?
In either case this is a bug in UHD. I want to check that all configurations are covered.
-TT
On Tue, Oct 18, 2016 at 1:06 AM, Max msuraev@sysmocom.de wrote:
How do I check that? Also, should adding/removing GPS antennae make any difference?
The GPSDO module is an add-on component about that is about 2cm square. It mounts in the headers directly behind the GPS antenna port. If the area is empty, there is no GPSDO. GPS antennae will only have an effect if the module is populated.
https://www.ettus.com/product/details/GPSDO-TCXO-MODULE
If the GPSDO is not present, but is selected on the osmo-trx command line anyways, the proper action is to exit gracefully or continue without using the non-existent GPSDO; error logging should be output in both cases. Currently, UHD crashes in this event, which is clearly a bug.
-TT