Open Source Mobile Communications: Issueshttps://projects.osmocom.org/https://projects.osmocom.org/favicon.ico?16647414092024-03-26T14:00:15ZOpen Source Mobile Communications
Redmine OsmoMGW - Bug #6424 (In Progress): TC_one_crcx_loopback_rtp_implicit consistently failing in mast...https://projects.osmocom.org/issues/64242024-03-26T14:00:15Zlaforge
<p>`TC_one_crcx_loopback_rtp_implicit` appears to be failing consistently in master for 30+ consecutive builds. Meanwhile, the same test is passing just fine in latest. So there seems to be some (long-standing) regression in master?</p> OsmocomBB - Bug #6337 (New): bad fr audio with gapk/ms-sdrhttps://projects.osmocom.org/issues/63372024-01-22T21:21:06ZHoernchen
<p>The audio sounds <em>kinda</em> choppy, but not really - one half are apparently decoding issues, the other one.. well.. hard to tell, bad timing doing blocking audio calls?<br />It does not appear to be cpu related.<br />Another problem is is that the (very large!) wq used by l1ctl_client_send keeps filling up, which obviously adds latency, until it overflows. At that point random messages get dropped, which is kinda bad...<br />Sometimes the audio improves after some time - I don't understand why/how.</p>
<p>This might affect phone setups, too.</p> OsmocomBB - Bug #6200 (New): osmo-trx-ms: lots of @Received bad frame (rc=-1, ber=444/444)@https://projects.osmocom.org/issues/62002023-10-03T16:46:40Zfixeria
<p>Hi <a class="user active" href="https://projects.osmocom.org/users/52">Hoernchen</a>,</p>
<p>we had a debugging session with <a class="user active" href="https://projects.osmocom.org/users/30187">pespin</a> today and we got the mssdr-ms side to work more or less reliably. But we noticed a weird problem:</p>
<pre>
20231003152951965 DL1C NOTICE trxcon(0)[0x5579a42900]{BCCH_CCCH}: L1CTL_DM_EST_REQ indicates single ARFCN GSM900 979 (l1ctl.c:572)
20231003152951965 DSCH NOTICE trxcon(0)[0x5579a42900]: Reset scheduler (sched_trx.c:190)
20231003152951965 DSCH NOTICE trxcon(0)[0x5579a42900]: Delete TDMA timeslot #0 (sched_trx.c:226)
20231003152951965 DSCH NOTICE trxcon(0)[0x5579a42900]: Add a new TDMA timeslot #4 (sched_trx.c:207)
20231003152951965 DSCH NOTICE trxcon(0)[0x5579a42900]: (Re)configure TDMA timeslot #4 as PDCH (sched_trx.c:276)
20231003152951966 DSCH NOTICE trxcon(0)[0x5579a42900]: TS4-PDTCH activating (sched_trx.c:476)
20231003152951966 DSCH NOTICE trxcon(0)[0x5579a42900]: TS4-PTCCH activating (sched_trx.c:476)
20231003152953364 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=86/456) at fn=513573 (sched_lchan_pdtch.c:94)
20231003152954366 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=87/456) at fn=513790 (sched_lchan_pdtch.c:94)
20231003152954804 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513885 (sched_lchan_pdtch.c:94)
20231003152954827 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513890 (sched_lchan_pdtch.c:94)
20231003152954846 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513894 (sched_lchan_pdtch.c:94)
20231003152954864 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513898 (sched_lchan_pdtch.c:94)
20231003152954887 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513903 (sched_lchan_pdtch.c:94)
20231003152954906 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513907 (sched_lchan_pdtch.c:94)
20231003152954924 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513911 (sched_lchan_pdtch.c:94)
20231003152954947 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513916 (sched_lchan_pdtch.c:94)
20231003152954966 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513920 (sched_lchan_pdtch.c:94)
20231003152954984 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513924 (sched_lchan_pdtch.c:94)
20231003152955007 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513929 (sched_lchan_pdtch.c:94)
20231003152955025 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513933 (sched_lchan_pdtch.c:94)
20231003152955044 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513937 (sched_lchan_pdtch.c:94)
20231003152955067 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513942 (sched_lchan_pdtch.c:94)
20231003152955085 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513946 (sched_lchan_pdtch.c:94)
20231003152955104 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513950 (sched_lchan_pdtch.c:94)
20231003152955127 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513955 (sched_lchan_pdtch.c:94)
20231003152955145 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513959 (sched_lchan_pdtch.c:94)
20231003152955164 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513963 (sched_lchan_pdtch.c:94)
20231003152955188 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513968 (sched_lchan_pdtch.c:94)
20231003152955205 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513972 (sched_lchan_pdtch.c:94)
20231003152955224 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513976 (sched_lchan_pdtch.c:94)
20231003152955248 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513981 (sched_lchan_pdtch.c:94)
20231003152955265 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513985 (sched_lchan_pdtch.c:94)
20231003152955284 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513989 (sched_lchan_pdtch.c:94)
20231003152955308 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513994 (sched_lchan_pdtch.c:94)
20231003152955325 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=513998 (sched_lchan_pdtch.c:94)
20231003152955344 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=514002 (sched_lchan_pdtch.c:94)
20231003152955368 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=514007 (sched_lchan_pdtch.c:94)
20231003152955385 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=514011 (sched_lchan_pdtch.c:94)
20231003152955404 DSCHD ERROR trxcon(0)[0x5579a42900]: TS4-PDTCH Received bad frame (rc=-1, ber=444/444) at fn=514015 (sched_lchan_pdtch.c:94)
</pre>
<p>It's not seen during the GMM ATTACH and SM PDP CTX ACT procedures, but only when we tried sending some data (ICMP ping) over the tun interface.<br />As can be seen, quite a lot of Downlink PDCH blocks not being decoded. The <code>BER=444/444</code> makes me think that received bursts were all 0 (neither -127 nor 127).<br />This is enlarging the ping delays significantly (from ~600ms to ~5000ms ==> ~10 times):</p>
<pre>
PING 176.16.222.1 (176.16.222.1) 56(84) bytes of data.
64 bytes from 176.16.222.1: icmp_seq=1 ttl=64 time=681 ms
64 bytes from 176.16.222.1: icmp_seq=2 ttl=64 time=803 ms
64 bytes from 176.16.222.1: icmp_seq=3 ttl=64 time=625 ms
64 bytes from 176.16.222.1: icmp_seq=4 ttl=64 time=525 ms
64 bytes from 176.16.222.1: icmp_seq=5 ttl=64 time=5646 ms
64 bytes from 176.16.222.1: icmp_seq=6 ttl=64 time=4678 ms
64 bytes from 176.16.222.1: icmp_seq=7 ttl=64 time=3911 ms
64 bytes from 176.16.222.1: icmp_seq=8 ttl=64 time=2948 ms
64 bytes from 176.16.222.1: icmp_seq=9 ttl=64 time=1984 ms
64 bytes from 176.16.222.1: icmp_seq=10 ttl=64 time=1020 ms
64 bytes from 176.16.222.1: icmp_seq=11 ttl=64 time=602 ms
64 bytes from 176.16.222.1: icmp_seq=12 ttl=64 time=742 ms
64 bytes from 176.16.222.1: icmp_seq=13 ttl=64 time=5741 ms
64 bytes from 176.16.222.1: icmp_seq=14 ttl=64 time=4769 ms
64 bytes from 176.16.222.1: icmp_seq=15 ttl=64 time=3824 ms
64 bytes from 176.16.222.1: icmp_seq=16 ttl=64 time=2860 ms
64 bytes from 176.16.222.1: icmp_seq=17 ttl=64 time=1896 ms
64 bytes from 176.16.222.1: icmp_seq=18 ttl=64 time=932 ms
64 bytes from 176.16.222.1: icmp_seq=19 ttl=64 time=813 ms
64 bytes from 176.16.222.1: icmp_seq=20 ttl=64 time=653 ms
64 bytes from 176.16.222.1: icmp_seq=21 ttl=64 time=5630 ms
64 bytes from 176.16.222.1: icmp_seq=22 ttl=64 time=4658 ms
64 bytes from 176.16.222.1: icmp_seq=23 ttl=64 time=3893 ms
64 bytes from 176.16.222.1: icmp_seq=24 ttl=64 time=2929 ms
64 bytes from 176.16.222.1: icmp_seq=25 ttl=64 time=1969 ms
64 bytes from 176.16.222.1: icmp_seq=26 ttl=64 time=1005 ms
64 bytes from 176.16.222.1: icmp_seq=27 ttl=64 time=546 ms
64 bytes from 176.16.222.1: icmp_seq=28 ttl=64 time=686 ms
</pre>
<p>This looks like a PHY problem to me, so assigning to you.</p> osmo-e1d - Bug #6169 (New): Frame masking against network frame ordering, not frame numbershttps://projects.osmocom.org/issues/61692023-09-06T08:33:34Zmanawyrm
<p>The osmo-e1d code includes functionality to save bandwidth by not transmitting timeslots, which haven't changed since the last frame.</p>
<p><a class="external" href="https://gitea.osmocom.org/Manawyrm/osmo-e1d/src/branch/master/src/octoi/e1oip.c#L263">https://gitea.osmocom.org/Manawyrm/osmo-e1d/src/branch/master/src/octoi/e1oip.c#L263</a></p>
<p>Later in development, the frame_rifo was introduced to combat packet reordering in real-world networks (like DOCSIS).<br />The code unpacking the timeslots into full E1 frames is currently unpacking against the last frame in the incoming buffer, not the last frame in the RIFO (random in, first out) buffer.<br />This means that frames will get filled with random data from other frames in the event of a re-ordering.</p>
<p>Unpacking/Unmasking should be done after the RIFO mechanism.</p> OsmoGGSN (former OpenGGSN) - Feature #6096 (In Progress): add support for kernel-GTP IPv6https://projects.osmocom.org/issues/60962023-07-12T20:37:17Zlaforge
<p><a class="user active" href="https://projects.osmocom.org/users/21027">pablo</a> has implemented [inner] IPv6 support in the kernel GTP driver and libgtpnl, see <a class="issue tracker-1 status-2 priority-3 priority-high3" title="Bug: IPv6 support for inner (user) IP layer missing (In Progress)" href="https://projects.osmocom.org/issues/1952">#1952</a></p>
<p>In order to end-to-end test it in our TTCN3 test suite (which already tests ipv6 when used with userspace GTP), we would need to add supprot for it to osmo-ggsn</p>
<p>I think <a class="user active" href="https://projects.osmocom.org/users/30187">pespin</a> is currently too busy to look at this, hence assigned to <a class="user active" href="https://projects.osmocom.org/users/301771">osmith</a>, but that's not mandatory. Feel free to pass around as needed.</p> osmo-ePDG - VoWifi Evolved Packet Data Gateway - Bug #6091 (Feedback): osmo-epdg: Implement CEAI ...https://projects.osmocom.org/issues/60912023-07-10T17:09:19Zlynxis
<p>Write all relevant parts to have a gsup server module which the strongswan can connect to it.</p> libosmo-netif - Bug #5931 (New): heap-use-after-free when osmo_stream_srv_destroy() is called ins...https://projects.osmocom.org/issues/59312023-03-02T11:03:22Zdaniel
<p>This can happen in the ipa-stream-server example if the client disconnects unexpectedly (i.e. if there is still data the server wants to send).</p>
<pre>
<0003> stream.c:1542 message received
<0000> ipa-stream-server.c:53 received message from stream
<0003> stream.c:1864 connection closed with client
<0000> ipa-stream-server.c:61 cannot receive message
=================================================================
==2103936==ERROR: AddressSanitizer: heap-use-after-free on address 0x611000000d58 at pc 0x7f2196d84d24 bp 0x7ffe1b9f4330 sp 0x7ffe1b9f4328
READ of size 8 at 0x611000000d58 thread T0
#0 0x7f2196d84d23 in llist_empty /home/daniel/local/osmo-master/include/osmocom/core/linuxlist.h:171
#1 0x7f2196d84d23 in osmo_stream_srv_write /home/daniel/scm/osmo/libosmo-netif/src/stream.c:1563
#2 0x7f2196d859f7 in osmo_stream_srv_cb /home/daniel/scm/osmo/libosmo-netif/src/stream.c:1629
#3 0x7f219658cbfd in poll_disp_fds /home/daniel/scm/osmo/libosmocore/src/core/select.c:361
#4 0x7f219658ccfd in _osmo_select_main /home/daniel/scm/osmo/libosmocore/src/core/select.c:399
#5 0x7f219658cda6 in osmo_select_main /home/daniel/scm/osmo/libosmocore/src/core/select.c:438
#6 0x5584fc1c390c in main /home/daniel/scm/osmo/libosmo-netif/examples/ipa-stream-server.c:130
#7 0x7f2195a46189 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
#8 0x7f2195a46244 in __libc_start_main_impl ../csu/libc-start.c:381
#9 0x5584fc1c3240 in _start (/home/daniel/scm/osmo/libosmo-netif/examples/.libs/ipa-stream-server+0x2240)
0x611000000d58 is located 152 bytes inside of 200-byte region [0x611000000cc0,0x611000000d88)
freed by thread T0 here:
#0 0x7f2196eb76a8 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:52
#1 0x7f21974fa5b1 (/lib/x86_64-linux-gnu/libtalloc.so.2+0x45b1)
#2 0x5584fc1c34c7 in read_cb /home/daniel/scm/osmo/libosmo-netif/examples/ipa-stream-server.c:62
#3 0x7f2196d78877 in osmo_stream_srv_read /home/daniel/scm/osmo/libosmo-netif/src/stream.c:1550
#4 0x7f2196d859df in osmo_stream_srv_cb /home/daniel/scm/osmo/libosmo-netif/src/stream.c:1627
#5 0x7f219658cbfd in poll_disp_fds /home/daniel/scm/osmo/libosmocore/src/core/select.c:361
#6 0x7f219658ccfd in _osmo_select_main /home/daniel/scm/osmo/libosmocore/src/core/select.c:399
#7 0x7f219658cda6 in osmo_select_main /home/daniel/scm/osmo/libosmocore/src/core/select.c:438
#8 0x5584fc1c390c in main /home/daniel/scm/osmo/libosmo-netif/examples/ipa-stream-server.c:130
#9 0x7f2195a46189 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
previously allocated by thread T0 here:
#0 0x7f2196eb89cf in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:69
#1 0x7f21974fbe3d (/lib/x86_64-linux-gnu/libtalloc.so.2+0x5e3d)
SUMMARY: AddressSanitizer: heap-use-after-free /home/daniel/local/osmo-master/include/osmocom/core/linuxlist.h:171 in llist_empty
</pre>
<p>osmo_stream_srv_destroy() frees the complete conn but osmo_stream_srv_cb() could still call osmo_stream_srv_write(conn) after osmo_stream_srv_read() (and by extension the read_cb()) returns.</p>
<p>We need to guard this and delay actually freeing the conn if we are currently in a callback.</p> SIMtrace 2 - Bug #5921 (In Progress): simtrace2 cardem vs. Linux kernel USB autosuspendhttps://projects.osmocom.org/issues/59212023-02-23T17:40:01Zlaforge
<p>(at least) after the following patch was merged, simtrace2-cardem doesn't work with Linux kernels' USB autosuspend anymore:<br /><pre>
commit a5d537973db9359804e82a506057f3dd6d53fab9
Author: Harald Welte <laforge@osmocom.org>
Date: Mon Jul 25 19:59:08 2022 +0200
cardem: reset the uC in case of USB disconnect
</pre></p>
<p>The problem is that the USB kernel notices the simtrace2 device is not in use (no application using it), which in turn means it will power-down the device after 5s. The device then recognizes this as USB disconnect, and we use that to reset the firmware:</p>
<pre>
=============================================================================
SIMtrace2 firmware 0.8.1.58-773d, BOARD=simtrace, APP=cardem
(C) 2010-2019 by Harald Welte, 2018-2019 by Kevin Redon
=============================================================================
-I- Chip ID: 0x299b0a60 (Ext 0x00000000)
-I- Serial Nr. 44203020-48574336-30303931-32323032
-I- Reset Cause: software reset (processor reset required by the software)
-I- USB init...
USBD_Init
SetAddr(22) -W- Sta 0x888A8 [0] -W- _ -W- Sta 0x888A8 [0] -W- _ -W- Sta 0x888A8 [0] -W- _ SetCfg(1) cfgChanged1 -I- calling configure of all configurations...
-I- calling init of config 1...
-I- Modem 0: physical SIM
-I- 0: Use local/physical SIM
-I- entering main loop...
-I- USB is now configured
-I- Resetting uC on USB disconnect
=============================================================================
SIMtrace2 firmware 0.8.1.58-773d, BOARD=simtrace, APP=cardem
(C) 2010-2019 by Harald Welte, 2018-2019 by Kevin Redon
=============================================================================
-I- Chip ID: 0x299b0a60 (Ext 0x00000000)
-I- Serial Nr. 44203020-48574336-30303931-32323032
-I- Reset Cause: software reset (processor reset required by the software)
-I- USB init...
USBD_Init
SetAddr(23) -W- Sta 0x888A8 [0] -W- _ -W- Sta 0x888A8 [0] -W- _ -W- Sta 0x888A8 [0] -W- _ SetCfg(1) cfgChanged1 -I- calling configure of all configurations...
-I- calling init of config 1...
-I- Modem 0: physical SIM
-I- 0: Use local/physical SIM
-I- entering main loop...
-I- USB is now configured
-I- Resetting uC on USB disconnect
</pre>
<p>This in turn will make the device enumerate and re-enumerate in 5s cycles:</p>
<pre>
[585591.174222] usb 1-1: new full-speed USB device number 84 using xhci_hcd
[585591.330180] usb 1-1: New USB device found, idVendor=1d50, idProduct=60e3, bcdDevice= 0.02
[585591.330216] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=11
[585591.330231] usb 1-1: Product: SIMtrace 2
[585591.330242] usb 1-1: Manufacturer: sysmocom - s.f.m.c. GmbH
[585591.330253] usb 1-1: SerialNumber: 44203020485743363030393132323032
[585594.759881] usb 1-1: USB disconnect, device number 84
[585595.530214] usb 1-1: new full-speed USB device number 85 using xhci_hcd
[585595.682690] usb 1-1: New USB device found, idVendor=1d50, idProduct=60e3, bcdDevice= 0.02
[585595.682697] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=11
[585595.682701] usb 1-1: Product: SIMtrace 2
[585595.682704] usb 1-1: Manufacturer: sysmocom - s.f.m.c. GmbH
[585595.682706] usb 1-1: SerialNumber: 44203020485743363030393132323032
[585598.802549] usb 1-1: USB disconnect, device number 85
[585602.158170] usb 1-1: new full-speed USB device number 86 using xhci_hcd
[585602.313720] usb 1-1: New USB device found, idVendor=1d50, idProduct=60e3, bcdDevice= 0.02
[585602.313757] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=11
[585602.313772] usb 1-1: Product: SIMtrace 2
[585602.313784] usb 1-1: Manufacturer: sysmocom - s.f.m.c. GmbH
[585602.313795] usb 1-1: SerialNumber: 44203020485743363030393132323032
[585606.602416] usb 1-1: USB disconnect, device number 86
</pre> OsmoSGSN - Bug #5880 (In Progress): User Manual sections 11.1.1-2 document non-existing (removed?...https://projects.osmocom.org/issues/58802023-01-27T12:08:58Zfixeria
<p>This problem was reported by a user in the IRC:</p>
<pre>
18:55 < PJHarvy> i can't understand: in osmo sgsn manual we use:
18:55 < PJHarvy> encapsulation udp local-ip 127.0.0.1 1
18:55 < PJHarvy> encapsulation udp local-port 23000. but my version doesn't support this commands
</pre>
<p>The current <a class="external" href="https://downloads.osmocom.org/docs/latest/osmosgsn-usermanual.pdf">https://downloads.osmocom.org/docs/latest/osmosgsn-usermanual.pdf</a> indeed lists these commands, which do not exist.</p> osmo-ePDG - VoWifi Evolved Packet Data Gateway - Feature #5861 (In Progress): extend charon with ...https://projects.osmocom.org/issues/58612023-01-17T15:53:09Zlaforge
<p>right now there's a charon plugin for eap-aka. It uses a local CSV file for storage of K/OP values, and it assumes it can synchronously access that and use it to derive AUTN challenges. so basically it includes a mini-hss/hlr.</p>
<p>We need to modify/replace that with a system where we get an asynchronous request for authentication over some external interface (currently called CEAI in my diagram at <a class="wiki-page" href="https://projects.osmocom.org/projects/osmo-epdg/wiki/EPDG_implementation_plan">EPDG_implementation_plan</a>), like a unix domain socket. Charon then needs to wait until whatever external application has obtained auth tuples, and proceed with EAP-AKA only once a tuple has been received.</p>
<p>This can be developed and tested independent of the actual ePDG by implementing a small stub program that for example reas key material from a local CSV file (again), or possibly even by asking osmo-hlr via GSUP (we do have all the related libraries in place for C and python, AFAIR). So the latter might actually be easier than the CSV approach, where again one needs to do key derviation etc.</p> gr-osmosdr - Bug #5731 (New): Install gr-osmosdr on Ubuntu 20.04https://projects.osmocom.org/issues/57312022-10-27T13:39:25ZOjunbamO
<p>Hi Osmocom Team,</p>
<p>in our company we wanna use gnuradio in combination with the gr-osmosdr tools. I tried to install it directly via the debian packages. But in combination with the gnuradio 3.10 version it is incompatible and fails constantly on the <i>init</i>.py in line 21 when trying to import osmosdr python packages. But it also is dropping the same error if we use gnuradio 3.9 or 3.7.</p>
<p>After that I tried to build the gr-osmosdr from source. By the way here is your documentation outdated on every documentation says git.osmocom.org: <a class="external" href="https://osmocom.org/projects/gr-osmosdr/wiki">https://osmocom.org/projects/gr-osmosdr/wiki</a>. After some time I found the synced github project but also your gittea instance. Then finally I cloned the repository, tried to build it and now facing this error:</p>
<pre><code class="shell syntaxhl">root@CL25CA052:/tmp/gr-osmosdr/build# make
Scanning dependencies of target gnuradio-osmosdr
<span class="o">[</span> 2%] Building CXX object lib/CMakeFiles/gnuradio-osmosdr.dir/source_impl.cc.o
/tmp/gr-osmosdr/lib/source_impl.cc: In static member <span class="k">function</span> ‘static osmosdr::source::sptr osmosdr::source::make<span class="o">(</span>const string&<span class="o">)</span>’:
/tmp/gr-osmosdr/lib/source_impl.cc:105:36: error: could not convert ‘gnuradio::get_initial_sptr<span class="o">(</span>T<span class="k">*</span><span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> source_impl]<span class="o">()</span>’ from ‘boost::shared_ptr<source_impl>’ to ‘osmosdr::source::sptr’ <span class="o">{</span>aka ‘std::shared_ptr<osmosdr::source>’<span class="o">}</span>
105 | <span class="k">return </span>gnuradio::get_initial_sptr<span class="o">(</span> new source_impl<span class="o">(</span>args<span class="o">)</span> <span class="o">)</span><span class="p">;</span>
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
| |
| boost::shared_ptr<source_impl>
/tmp/gr-osmosdr/lib/source_impl.cc: In constructor ‘source_impl::source_impl<span class="o">(</span>const string&<span class="o">)</span>’:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: error: no match <span class="k">for</span> ‘operator<span class="o">=</span>’ <span class="o">(</span>operand types are ‘gr::basic_block_sptr’ <span class="o">{</span>aka ‘boost::shared_ptr<gr::basic_block>’<span class="o">}</span> and ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">})</span>
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<T>&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:48: note: no known conversion <span class="k">for </span>argument 1 from ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> to ‘const boost::shared_ptr<gr::basic_block>&’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<Y>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
556 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span>shared_ptr<Y> const & r<span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> is not derived from ‘const boost::shared_ptr<X>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
567 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> & r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
576 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::unique_ptr<_Up, _Ep>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
598 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::unique_ptr<Y, D> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> is not derived from ‘std::unique_ptr<_Tp, _Dp>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::movelib::unique_ptr<Y, D><span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
607 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::movelib::unique_ptr<Y, D> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘std::shared_ptr<file_source_c>’ is not derived from ‘boost::movelib::unique_ptr<Y, D>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<T>&&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:43: note: no known conversion <span class="k">for </span>argument 1 from ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> to ‘boost::shared_ptr<gr::basic_block>&&’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<Y>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
665 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr<Y> <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:280:15: note: ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> is not derived from ‘boost::shared_ptr<X>’
280 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::detail::sp_nullptr_t<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block<span class="p">;</span> boost::detail::sp_nullptr_t <span class="o">=</span> std::nullptr_t]’
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:29: note: no known conversion <span class="k">for </span>argument 1 from ‘file_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<file_source_c>’<span class="o">}</span> to ‘boost::detail::sp_nullptr_t’ <span class="o">{</span>aka ‘std::nullptr_t’<span class="o">}</span>
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: error: no match <span class="k">for</span> ‘operator<span class="o">=</span>’ <span class="o">(</span>operand types are ‘gr::basic_block_sptr’ <span class="o">{</span>aka ‘boost::shared_ptr<gr::basic_block>’<span class="o">}</span> and ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">})</span>
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<T>&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:48: note: no known conversion <span class="k">for </span>argument 1 from ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> to ‘const boost::shared_ptr<gr::basic_block>&’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<Y>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
556 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span>shared_ptr<Y> const & r<span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> is not derived from ‘const boost::shared_ptr<X>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
567 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> & r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
576 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::unique_ptr<_Up, _Ep>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
598 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::unique_ptr<Y, D> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> is not derived from ‘std::unique_ptr<_Tp, _Dp>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::movelib::unique_ptr<Y, D><span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
607 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::movelib::unique_ptr<Y, D> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘std::shared_ptr<rtl_tcp_source_c>’ is not derived from ‘boost::movelib::unique_ptr<Y, D>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<T>&&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:43: note: no known conversion <span class="k">for </span>argument 1 from ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> to ‘boost::shared_ptr<gr::basic_block>&&’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<Y>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
665 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr<Y> <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:294:15: note: ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> is not derived from ‘boost::shared_ptr<X>’
294 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::detail::sp_nullptr_t<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block<span class="p">;</span> boost::detail::sp_nullptr_t <span class="o">=</span> std::nullptr_t]’
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:29: note: no known conversion <span class="k">for </span>argument 1 from ‘rtl_tcp_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rtl_tcp_source_c>’<span class="o">}</span> to ‘boost::detail::sp_nullptr_t’ <span class="o">{</span>aka ‘std::nullptr_t’<span class="o">}</span>
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: error: no match <span class="k">for</span> ‘operator<span class="o">=</span>’ <span class="o">(</span>operand types are ‘gr::basic_block_sptr’ <span class="o">{</span>aka ‘boost::shared_ptr<gr::basic_block>’<span class="o">}</span> and ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">})</span>
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<T>&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:48: note: no known conversion <span class="k">for </span>argument 1 from ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> to ‘const boost::shared_ptr<gr::basic_block>&’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<Y>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
556 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span>shared_ptr<Y> const & r<span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> is not derived from ‘const boost::shared_ptr<X>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
567 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> & r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
576 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::unique_ptr<_Up, _Ep>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
598 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::unique_ptr<Y, D> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> is not derived from ‘std::unique_ptr<_Tp, _Dp>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::movelib::unique_ptr<Y, D><span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
607 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::movelib::unique_ptr<Y, D> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘std::shared_ptr<rfspace_source_c>’ is not derived from ‘boost::movelib::unique_ptr<Y, D>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<T>&&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:43: note: no known conversion <span class="k">for </span>argument 1 from ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> to ‘boost::shared_ptr<gr::basic_block>&&’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<Y>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
665 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr<Y> <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:333:15: note: ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> is not derived from ‘boost::shared_ptr<X>’
333 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::detail::sp_nullptr_t<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block<span class="p">;</span> boost::detail::sp_nullptr_t <span class="o">=</span> std::nullptr_t]’
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:29: note: no known conversion <span class="k">for </span>argument 1 from ‘rfspace_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<rfspace_source_c>’<span class="o">}</span> to ‘boost::detail::sp_nullptr_t’ <span class="o">{</span>aka ‘std::nullptr_t’<span class="o">}</span>
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: error: no match <span class="k">for</span> ‘operator<span class="o">=</span>’ <span class="o">(</span>operand types are ‘gr::basic_block_sptr’ <span class="o">{</span>aka ‘boost::shared_ptr<gr::basic_block>’<span class="o">}</span> and ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">})</span>
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<T>&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:48: note: no known conversion <span class="k">for </span>argument 1 from ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> to ‘const boost::shared_ptr<gr::basic_block>&’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<Y>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
556 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span>shared_ptr<Y> const & r<span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> is not derived from ‘const boost::shared_ptr<X>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
567 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> & r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
576 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::unique_ptr<_Up, _Ep>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
598 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::unique_ptr<Y, D> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> is not derived from ‘std::unique_ptr<_Tp, _Dp>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::movelib::unique_ptr<Y, D><span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
607 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::movelib::unique_ptr<Y, D> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘std::shared_ptr<soapy_source_c>’ is not derived from ‘boost::movelib::unique_ptr<Y, D>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<T>&&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:43: note: no known conversion <span class="k">for </span>argument 1 from ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> to ‘boost::shared_ptr<gr::basic_block>&&’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<Y>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
665 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr<Y> <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:354:15: note: ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> is not derived from ‘boost::shared_ptr<X>’
354 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::detail::sp_nullptr_t<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block<span class="p">;</span> boost::detail::sp_nullptr_t <span class="o">=</span> std::nullptr_t]’
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:29: note: no known conversion <span class="k">for </span>argument 1 from ‘soapy_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<soapy_source_c>’<span class="o">}</span> to ‘boost::detail::sp_nullptr_t’ <span class="o">{</span>aka ‘std::nullptr_t’<span class="o">}</span>
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: error: no match <span class="k">for</span> ‘operator<span class="o">=</span>’ <span class="o">(</span>operand types are ‘gr::basic_block_sptr’ <span class="o">{</span>aka ‘boost::shared_ptr<gr::basic_block>’<span class="o">}</span> and ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">})</span>
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<T>&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:547:48: note: no known conversion <span class="k">for </span>argument 1 from ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> to ‘const boost::shared_ptr<gr::basic_block>&’
547 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr const & r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>const boost::shared_ptr<Y>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
556 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span>shared_ptr<Y> const & r<span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:556:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> is not derived from ‘const boost::shared_ptr<X>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
567 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> & r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:567:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::auto_ptr<_Up>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
576 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::auto_ptr<Y> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:576:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> is not derived from ‘std::auto_ptr<Y>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>std::unique_ptr<_Up, _Ep>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
598 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> std::unique_ptr<Y, D> <span class="o">&&</span> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:598:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> is not derived from ‘std::unique_ptr<_Tp, _Dp>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: candidate: ‘template<class Y, class D> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::movelib::unique_ptr<Y, D><span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> D <span class="o">=</span> D<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
607 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::movelib::unique_ptr<Y, D> r <span class="o">)</span>
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:607:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘std::shared_ptr<redpitaya_source_c>’ is not derived from ‘boost::movelib::unique_ptr<Y, D>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<T>&&<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block]’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:658:43: note: no known conversion <span class="k">for </span>argument 1 from ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> to ‘boost::shared_ptr<gr::basic_block>&&’
658 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: candidate: ‘template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::shared_ptr<Y>&&<span class="o">)</span> <span class="o">[</span>with Y <span class="o">=</span> Y<span class="p">;</span> T <span class="o">=</span> gr::basic_block]’
665 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> shared_ptr<Y> <span class="o">&&</span> r <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:665:18: note: template argument deduction/substitution failed:
/tmp/gr-osmosdr/lib/source_impl.cc:361:15: note: ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> is not derived from ‘boost::shared_ptr<X>’
361 | block <span class="o">=</span> src<span class="p">;</span> iface <span class="o">=</span> src.get<span class="o">()</span><span class="p">;</span>
| ^~~
In file included from /usr/include/boost/shared_ptr.hpp:17,
from /usr/local/include/gnuradio/types.h:28,
from /usr/local/include/gnuradio/runtime_types.h:27,
from /usr/local/include/gnuradio/io_signature.h:27,
from /tmp/gr-osmosdr/lib/source_impl.cc:30:
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:18: note: candidate: ‘boost::shared_ptr<T>& boost::shared_ptr<T>::operator<span class="o">=(</span>boost::detail::sp_nullptr_t<span class="o">)</span> <span class="o">[</span>with T <span class="o">=</span> gr::basic_block<span class="p">;</span> boost::detail::sp_nullptr_t <span class="o">=</span> std::nullptr_t]’
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:683:29: note: no known conversion <span class="k">for </span>argument 1 from ‘redpitaya_source_c_sptr’ <span class="o">{</span>aka ‘std::shared_ptr<redpitaya_source_c>’<span class="o">}</span> to ‘boost::detail::sp_nullptr_t’ <span class="o">{</span>aka ‘std::nullptr_t’<span class="o">}</span>
683 | shared_ptr & <span class="nv">operator</span><span class="o">=(</span> boost::detail::sp_nullptr_t <span class="o">)</span> BOOST_SP_NOEXCEPT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: <span class="k">***</span> <span class="o">[</span>lib/CMakeFiles/gnuradio-osmosdr.dir/build.make:63: lib/CMakeFiles/gnuradio-osmosdr.dir/source_impl.cc.o] Error 1
make[1]: <span class="k">***</span> <span class="o">[</span>CMakeFiles/Makefile2:375: lib/CMakeFiles/gnuradio-osmosdr.dir/all] Error 2
make: <span class="k">***</span> <span class="o">[</span>Makefile:141: all] Error 2
root@CL25CA052:/tmp/gr-osmosdr/build#
</code></pre>
<p>I think I have all relevant dev packages and librarys installed. So I can't find the problem with trying to run osmosdr tools with gnuradio.</p>
<p>Thank you very much in advance! Would be great to have this fixed.</p>
<p>Regards<br />Tobias</p> Osmocom Libraries - Bug #5683 (New): How to install osmocom in Chinahttps://projects.osmocom.org/issues/56832022-09-18T10:18:56Z914068469@qq.com
<p>Is it necessary to <a class="external" href="ftp://sources.redhat.com/pub/newlib">ftp://sources.redhat.com/pub/newlib</a> Download newlib-1.19.0.tar.gz</p> OsmoBSCNAT - Bug #5574 (New): OsmoBSCNAT testsuite running in jenkinshttps://projects.osmocom.org/issues/55742022-06-01T10:38:54Zosmith
<p>As discussed earlier, OsmoBSCNAT ttcn3 tests should be running in jenkins, like for other Osmocom projects.</p> Ericsson RBS 6xxx - Bug #5571 (New): DUG can come up, but with Avail: "Power Off"https://projects.osmocom.org/issues/55712022-05-24T01:48:54Zkeith
<p>Sometimes, after starting osmo-bsc, The BTS will transmit, we even start to get Channel requests, but this is the status: <br /><pre>
OsmoBSC# show trx
TRX 0 of BTS 0 is on ARFCN 251
RF Nominal Power: 37 dBm, reduced by 0 dB, resulting BS power: 37 dBm
Radio Carrier NM State: Oper 'NULL', Admin 'Unlocked', Avail 'Power off'
RSL State: connected
Baseband Transceiver NM State: Oper 'NULL', Admin 'Locked', Avail 'Power off'
E1 Signalling Link:
E1 Line 0, Type e1d: Timeslot 1, Mode RSL
E1 TEI 0, SAPI 0
</pre></p>
<p>and of course we get such as this:</p>
<pre>
DRSL NOTICE <0003> abis_rsl.c:2193 (bts=0) CHAN RQD[Location updating]: no resources for SDCCH 0x4, retrying with TCH_F
DRLL DEBUG <0000> lchan_select.c:299 (bts=0) lchan_select_by_type(TCH_F)
DRLL DEBUG <0000> lchan_select.c:233 (bts=0) lchan_avail_by_type(TCH_F)
DRLL DEBUG <0000> lchan_select.c:65 looking for lchan TCH/F: (bts=0,trx=0) trx not usable
DRLL DEBUG <0000> lchan_select.c:65 looking for lchan TCH/F_PDCH as TCH/F without pchan switch: (bts=0,trx=0) trx not usable
DRLL DEBUG <0000> lchan_select.c:65 looking for lchan TCH/F_PDCH as TCH/F: (bts=0,trx=0) trx not usable
DRLL DEBUG <0000> lchan_select.c:65 looking for lchan TCH/F_TCH/H_SDCCH8_PDCH as TCH/F without pchan switch: (bts=0,trx=0) trx not usable
DRLL DEBUG <0000> lchan_select.c:65 looking for lchan TCH/F_TCH/H_SDCCH8_PDCH as TCH/F: (bts=0,trx=0) trx not usable
DRLL NOTICE <0000> lchan_select.c:305 (bts=0) Failed to select TCH_F channel
</pre>
<p>Stopping and restarting osmo-bsc will sooner ( or later :-/ ) get the TRX up....</p>
<p>Attached is osmo-bsc.log of the bring-up and pcap of same.</p>
<p>I suspect there is something happening in a certain order sometimes that causes this?</p> OsmoMSC - Bug #5564 (Stalled): blocking database I/O by SMS databasehttps://projects.osmocom.org/issues/55642022-05-15T14:18:42Zlaforge
<p>when OsmoMSC was split from OsmoNITB, we externalized the HLR database and removed the database-stored counters. This leaves the internal SMS queue / database code as the only remaining part of code which performs potentailly blocking disk I/O.</p>
<p>As seen in <a class="issue tracker-1 status-7 priority-3 priority-high3" title="Bug: OsmoMSC sometimes stalls for dozens of seconds in a production deployment (Stalled)" href="https://projects.osmocom.org/issues/5563">#5563</a> this is a real issue.</p>
I spent half a day on reviewing the code in detail and playing with different ideas, including
<ol>
<li>ripping out the sms_queue.c / db.c code completely into an external osmo-smsc which then uses GSUP</li>
<li>just moving db.c into a separate thread; make DB operations asynchronous</li>
<li>move sms_queue + db.c into a separate thread</li>
</ol>
<a name="moving-sms_queue-DB-code-to-new-osmo-smsc-intrfaced-via-GSUP"></a>
<h2 >moving sms_queue + DB code to new osmo-smsc, intrfaced via GSUP<a href="#moving-sms_queue-DB-code-to-new-osmo-smsc-intrfaced-via-GSUP" class="wiki-anchor">¶</a></h2>
<p>osmo-msc already contains code to do SMS via GSUP, so there's no mandatory modification to osm-msc expected in this approach.</p>
the major disadvantages of this appraoch are:
<ul>
<li>SMPP code would have to move to SMSC, and it is more tied into the MSC/VLR codebase -> extra effort</li>
<li>GSUP SMS interface is at a lower level than current sms_queue intrface -> extra effort of migrating/reimplementing that stuff in SMSC</li>
</ul>
<a name="SMS-related-VTY-commands-not-an-issue-SMSC-would-have-its-own-VTY"></a>
<h3 >SMS related VTY commands (not an issue, SMSC would have its own VTY)<a href="#SMS-related-VTY-commands-not-an-issue-SMSC-would-have-its-own-VTY" class="wiki-anchor">¶</a></h3>
<p>this would cover the following API parts</p>
<ul>
<li>sms_queue_clear</li>
<li>sms_queue_set_max_failure</li>
<li>sms_queue_set_max_pending</li>
<li>sms_queue_stats</li>
<li>sms_queue_sms_is_pending</li>
<li>sms_queue_trigger</li>
<li>vty_out</li>
</ul>
<a name="incoming-signals-into-sms_queue"></a>
<h3 >incoming signals into sms_queue<a href="#incoming-signals-into-sms_queue" class="wiki-anchor">¶</a></h3>
<ul>
<li>SS_SUBSCR / S_SUBSCR_ATTACHED
<ul>
<li>FIXME: unclear how this is handled in the GSUP case?</li>
</ul>
</li>
<li>SS_SMS / S_SMS_DELIVERED
<ul>
<li>-> gsm411_gsup_mt_fwd_sm_res()</li>
</ul>
</li>
<li>SS_SMS / S_SMS_MEM_EXCEEDED
<ul>
<li>-> gsm411_gsup_mt_fwd_sm_err()</li>
</ul>
</li>
<li>SS_SMS / S_SMS_UNKNOWN_ERROR
<ul>
<li>-> gsm411_gsup_mt_fwd_sm_err()</li>
</ul>
</li>
<li>SS_SMS / S_SMS_SUBMITTED
<ul>
<li>-> gsm411_gsup_mo_fwd_sm_req()</li>
</ul>
</li>
<li>SS_SMS / S_SMS_SMMA
<ul>
<li>-> gsm411_gsup_mo_ready_for_sm_req()</li>
</ul></li>
</ul>
<a name="DB-not-an-issue-DB-code-would-then-run-in-SMSC"></a>
<h3 >DB (not an issue, DB code would then run in SMSC)<a href="#DB-not-an-issue-DB-code-would-then-run-in-SMSC" class="wiki-anchor">¶</a></h3>
<ul>
<li>db_sms_delete_oldest_expired_message</li>
<li>db_sms_delete_sent_message_by_id</li>
<li>db_sms_get</li>
<li>db_sms_get_next_unsent_rr_msisdn</li>
<li>db_sms_get_unsent_for_subscr</li>
<li>db_sms_inc_deliver_attempts</li>
</ul>
<a name="SMS-transmission"></a>
<h3 >SMS transmission<a href="#SMS-transmission" class="wiki-anchor">¶</a></h3>
<ul>
<li>gsm411_send_sms calls by sms_queue
<ul>
<li>would have to be mapped to OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST</li>
</ul>
</li>
<li>sms_free
<ul>
<li>FIXME: what about vsub pointer/references?</li>
</ul>
</li>
<li>vlr_subscr_msisdn_or_name
<ul>
<li>just for logging, can be avoided</li>
</ul></li>
</ul>
<a name="making-just-the-DB-code-async-run-in-separate-thread"></a>
<h2 > making just the DB code async / run in separate thread<a href="#making-just-the-DB-code-async-run-in-separate-thread" class="wiki-anchor">¶</a></h2>
Is not easy as all of the call sites are assuming synchronous return/results<br />db_sms_get
<ul>
<li>sms_resend_pending
<ul>
<li>resend_pending timer
<ul>
<li>sms_queue_start
<ul>
<li>=> can be executed from separate thread</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
db_sms_get_next_unsent_rr_msisdn
<ul>
<li>smsq_take_next_sms
<ul>
<li>sms_submit_pending
<ul>
<li>sms_send_next
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED
<ul>
<li>=> happens from the send_next it_Q completion handler</li>
</ul>
</li>
</ul>
</li>
<li>push_queue_timer
<ul>
<li>sms_queue_start
<ul>
<li>=> can be executed from separate thread</li>
</ul></li>
</ul></li>
</ul></li>
</ul></li>
</ul>
db_sms_get_unsent_for_subscr
<ul>
<li>sms_send_next
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED
<ul>
<li>=> request to it_Q; completion then might add SMS to pending + gsm411_send_sms</li>
</ul>
</li>
</ul>
</li>
<li>sub_ready_for_sm
<ul>
<li>sms_subscr_cb / S_SUBSCR_ATTACHED
<ul>
<li>=> request to it_Q; completion then might add SMS to pending + gsm411_send_sms</li>
</ul></li>
</ul></li>
</ul>
db_sms_delete_sent_message_by_id
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED
<ul>
<li>=> no return value, no success check: async it_Q</li>
</ul></li>
</ul>
db_sms_inc_deliver_attempts
<ul>
<li>sms_sms_cb / S_SMS_UNKNOWN_ERROR
<ul>
<li>=> no return value, no success check: async it_Q</li>
</ul></li>
</ul>
db_sms_delete_oldest_expired_message
<ul>
<li>sms_sms_cb / any signal
<ul>
<li>=> no return value, no success check: async it_Q</li>
</ul></li>
</ul>
<a name="moving-sms_queue-DB-code-to-separate-thread"></a>
<h2 >moving sms_queue + DB code to separate thread<a href="#moving-sms_queue-DB-code-to-separate-thread" class="wiki-anchor">¶</a></h2>
<a name="access-to-pending_sms-linked-list"></a>
<h3 >access to pending_sms linked list<a href="#access-to-pending_sms-linked-list" class="wiki-anchor">¶</a></h3>
<p>There are quite a number of accesses to the pending_sms linked list. Given most ar read, and only some are write, we might use a rwlock?</p>
<ul>
<li>sms_find_pending [R]
<ul>
<li>sms_sms_cb</li>
<li>sms_queue_sms_is_pending</li>
</ul></li>
</ul>
<ul>
<li>sms_queue_sms_is_pending [R]
<ul>
<li>sms_submit_pending
<ul>
<li>timer</li>
</ul>
</li>
<li>vty</li>
</ul></li>
</ul>
<ul>
<li>sms_subscriber_find_pending [R]
<ul>
<li>sub_ready_for_sm
<ul>
<li>SS_SUBSCR / S_SUBSCR_ATTACHED</li>
</ul>
</li>
<li>sms_subscriber_is_pending
<ul>
<li>sms_submit_pending
<ul>
<li>timer</li>
</ul>
</li>
<li>sms_send_next
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>sms_pending_from [R]
<ul>
<li>sms_submit_pending
<ul>
<li>timer</li>
</ul>
</li>
<li>sms_send_next
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>sms_pending_free [W]
<ul>
<li>sms_pending_failed
<ul>
<li>sms_sms_cb / S_SMS_UNKNOWN_ERROR</li>
</ul>
</li>
<li>sms_resend_pending
<ul>
<li>sms_sms_cb / S_SMS_DELIVERED</li>
<li>sms_sms_cb / S_SMS_MEM_EXCEEDED</li>
</ul>
</li>
<li>sms_queue_clear
<ul>
<li>vty</li>
</ul></li>
</ul></li>
</ul>
<ul>
<li>sms_resend_pending [R]
<ul>
<li>timer</li>
</ul></li>
</ul>
<ul>
<li>sms_queue_stats [R]
<ul>
<li>vty</li>
</ul></li>
</ul>
<ul>
<li>sms_queue_clear [W]
<ul>
<li>vty</li>
</ul></li>
</ul>
<a name="Conclusion"></a>
<h2 >Conclusion<a href="#Conclusion" class="wiki-anchor">¶</a></h2>
I think the following approach is best:
<ul>
<li>have a separate "SMS" thread</li>
<li>all database access happens <strong>from that thread only</strong></li>
<li>inter-thread message queues (libosmocore it_q) between main thread and SMS thread</li>
<li>sms_queue timers (push_queue_timer, resend_pending_timer) run in that thread</li>
<li>other input (mainly signals today) are serialized via it_q in main -> SMS direction</li>
<li>other output (mainly gsm411_send_sms) are serialized via it_q in SMS -> main direction</li>
</ul>
<a name="Serialize-SS_SMS-signals"></a>
<h3 >Serialize SS_SMS signals<a href="#Serialize-SS_SMS-signals" class="wiki-anchor">¶</a></h3>
<ul>
<li>we really only need to serialize paging_result and sms->id</li>
<li>submit them into it_q to SMS thread</li>
</ul>
<a name="serialize-SS_SUBSCR-signal"></a>
<h3 >serialize SS_SUBSCR signal<a href="#serialize-SS_SUBSCR-signal" class="wiki-anchor">¶</a></h3>
<ul>
<li>sms_subscriber_find_pending() can be done in main thread before serialization</li>
<li>check for vsub->lu_complete and zero MSISDN before serialization</li>
<li>we really only need to serialize the MSISDN</li>
<li>db_sms_get_unsent_for_subscr() then happens from SMS thread</li>
</ul>
<a name="move-push_queue_timer-resend_pending_timer-to-SMS-thread"></a>
<h3 >move push_queue_timer + resend_pending_timer to SMS thread<a href="#move-push_queue_timer-resend_pending_timer-to-SMS-thread" class="wiki-anchor">¶</a></h3>
<a name="serialize-db_sms_store-MO-SMS-SMPP"></a>
<h3 >serialize db_sms_store() (MO-SMS, SMPP)<a href="#serialize-db_sms_store-MO-SMS-SMPP" class="wiki-anchor">¶</a></h3>
<ul>
<li>failure to store in database would only be known asynchronously!</li>
<li>we can probably just ignore that.</li>
</ul>
<a name="serialize-db_sms_mark_delivered"></a>
<h3 >serialize db_sms_mark_delivered()<a href="#serialize-db_sms_mark_delivered" class="wiki-anchor">¶</a></h3>
<ul>
<li>we don't care about success right now anyway, so async is no problem</li>
</ul>
<a name="VTY"></a>
<h3 >VTY<a href="#VTY" class="wiki-anchor">¶</a></h3>
<ul>
<li>remove 'sms send pending' or implement different command via it_Q</li>
<li>remove 'sms delete expired' or implement different command via it_Q</li>
<li>serialize 'subscriber ... sms ...' via it_Q</li>
</ul> OsmoMSC - Bug #5563 (Stalled): OsmoMSC sometimes stalls for dozens of seconds in a production dep...https://projects.osmocom.org/issues/55632022-05-14T07:02:28Zlaforge
<p>When we take a long-term (8 hours) bpftrace showing us the delay between subsequent calls to <code>poll()</code> (by libosmocore/src/select.c) in osmo-msc, we get the following histogram (units in milli-seconds):</p>
<pre>
@poll:
[0] 532245 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
[1] 13088 |@ |
[2, 4) 5621 | |
[4, 8) 5566 | |
[8, 16) 2746 | |
[16, 32) 5282 | |
[32, 64) 5262 | |
[64, 128) 6139 | |
[128, 256) 14273 |@ |
[256, 512) 18357 |@ |
[512, 1K) 13806 |@ |
[1K, 2K) 4222 | |
[2K, 4K) 1331 | |
[4K, 8K) 450 | |
[8K, 16K) 0 | |
[16K, 32K) 0 | |
[32K, 64K) 5 | |
[64K, 128K) 17 | |
[128K, 256K) 2 | |
</pre>
So as we can see
<ul>
<li>the majority is very low (sub-second to 128ms)</li>
<li>there is a smaller peak in the order of 128ms to 1s (surprisingly long)</li>
<li>there are still several thousand of instances where the delay isn the 1s..4s. interval (too long!)</li>
<li>there ar rare occasions where we don't return to poll for 32, 64, or evne more than 128 seconds (crazy!)</li>
</ul>
<p>If we contrast this with the amount of time we spent in <code>dbi_conn_queryf</code>, this is clearly not the culprit:</p>
<pre>
@dbi_query:
[0] 37008 |@ |
[1] 1640233 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
[2, 4) 1245771 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
[4, 8) 21406 | |
[8, 16) 325 | |
[16, 32) 71 | |
[32, 64) 17 | |
</pre>
<p>So the longest duration DB query was in the order of 32..63 ms. Not good, but not a problem either with all the MSC (MM, CC, SMS, BSSAP, SCCP, ...) time-outs being in the multiple-second range.</p>
<p>So now we have to find out if the stalls are</p>
<ol>
<li>due to excessive system load (like I/O) outside of osmo-msc, or</li>
<li>due to something osmo-msc is doing by itself (like calling thousands of database queries of several milli-seconds each) without going through the libosmocore poll main loop.</li>
</ol> OsmoMSC - Bug #5559 (Stalled): OsmoMSC at 100% CPU and unresponsive for up to several minutes!https://projects.osmocom.org/issues/55592022-05-12T23:22:09Zkeith
<p>Not much more to say than the title I'm afraid.</p>
<p>So far, I've actually only noticed it on a system using the RBS and osmo-e1d. But I do not have conclusive proof that it is exclusively happening here.</p>
<p>I'm assuming a culprit might be the sms queue, but I'm not convinced because I'm not seeing it on other systems with more messages in the queue in the sqlite db - and this can be upwards of 1,000 SMS queued.</p> osmo-remsim - Bug #5527 (Stalled): warn on duplicate client (id) connectionshttps://projects.osmocom.org/issues/55272022-04-12T17:37:27Zlaforge
<p>Every client must have its own unique tuple of (client_id/slot_nr).</p>
<p>If a remsim-server receives a duplicate connection, it should pring a clear warning message to the log.</p>
<p>This might not always be a bug, as in csae of network outages / restarts a new connection might arrive before the old one is closed.</p>
<p>The same should apply to remsim-bankd.</p> Open Source IMS Client - Feature #5481 (New): SIM card interface for doubangohttps://projects.osmocom.org/issues/54812022-03-07T10:53:16Zlaforge
<p>The pre-existing <a class="wiki-page" href="https://projects.osmocom.org/projects/foss-ims-client/wiki/Doubango">doubango</a> library code assumes that the IMS client has knowledge of the secret key material (K + OP/OPc) in order to perform the authentication and IPsec key establoshment to the P-CSCF.</p>
<p>This may be the case in <em>some</em> testing/lab setups, but in general this key material is stored on the ISIM or USIM application of a SIM card.</p>
<p>If we want to use doubango with such standard cards, we need some kind of interface how doubango can perform authentication via ISIM/USIM.</p>
The interface should be rather generic, as the detailed interface for SIM access will be highly platform specific:
<ul>
<li>For development on a normal Linux laptop, a pcsc-lite based interface to a smart card reader will be used.</li>
<li>For execution inside a specific phone, phone specific interfaces for SIM card access may be used (QMI, AT+CSIM, ...)</li>
</ul> SIMtrace 2 - Bug #5419 (Stalled): cardem errors with higher baud ratehttps://projects.osmocom.org/issues/54192022-01-25T18:27:00Zlaforge
Setup is as follows:
<ul>
<li>sysmoISIM-SJA2 in built-in CCID reader of my Thinkpad x260</li>
<li>SIMtrace2 with cardem firmware 'master' (0.8.1.7-ea9a) hooked up via FPC to</li>
<li>CCID reader "Identive CLOUD 2700 F" </li>
<li><code>simtrace2-cardem-pcsc</code> to forward request from IdentiveCCID -> SIMtrace -> st2-cardem-pcsc -> builtin-CCID</li>
</ul>
<p>This works fine with F/D ratio 372, and also works fine in most cases with F/D ratio 16.</p>
<p>However, sometimes with ratio 16, things break down at some point.</p>
<a name="log-output-of-cardem-firmware"></a>
<h2 >log output of cardem firmware<a href="#log-output-of-cardem-firmware" class="wiki-anchor">¶</a></h2>
<pre>
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 b2 9d 04 22
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 a4 00 04 02
-I- 0: flush_rx_buffer (5)
-I- 0: flush_rx_buffer (2)
-I- 0: send_tpdu_header: 00 c0 00 00 23
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 b2 9e 04 22
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 a4 00 04 02
-I- 0: flush_rx_buffer (5)
-I- 0: flush_rx_buffer (2)
-I- 0: send_tpdu_header: 00 c0 00 00 23
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 b2 9f 04 22
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 a4 00 04 02
-I- 0: flush_rx_buffer (5)
-I- 0: flush_rx_buffer (2)
-I- 0: send_tpdu_header: 00 c0 00 00 23
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 b2 a0 04 22
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 a4 00 04 02
-I- 0: flush_rx_buffer (5)
-I- 0: flush_rx_buffer (2)
-I- 0: send_tpdu_header: 00 c0 00 00 23
-I- 0: flush_rx_buffer (5)
N-I- 0: send_tpdu_header: 00 b2 a1 04 22
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 00 a4 00 04 02
-I- 0: flush_rx_buffer (5)
-I- 0: flush_rx_buffer (2)
N-I- 0: send_tpdu_header: 00 c0 00 00 60
-I- 0: flush_rx_buffer (5)
-I- 0: send_tpdu_header: 02 00 a4 00 04
-I- 0: flush_rx_buffer (5)
</pre>
two things noticable:
<ul>
<li>the 'N' being printed by card_emu as waiting time extension</li>
<li>the last TPDU header <code>02 00 a4 00 04</code> doesn't look like a TPDU header: The 02 seems wrong, the TPDU likely starts with <code>00 a4</code>.</li>
</ul>
<a name="situation-on-Identive-CCID-reader-side"></a>
<h2 >situation on "Identive CCID reader" side<a href="#situation-on-Identive-CCID-reader-side" class="wiki-anchor">¶</a></h2>
<p>pySim-shell "export" shows:<br /><pre>
update_record 159 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
update_record 160 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
update_record 161 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
# bad file: MF/DF.TELECOM/EF.ADN, Failed to transmit with protocol T0. Transaction failed.
EXCEPTION of type 'RuntimeError' occurred with message: '6881: Functions in CLA not supported - Logical channel not supported'
To enable full traceback, run the following command: 'set debug true'
</pre></p>
<a name="simtrace2-cardem-pcsc"></a>
<h2 >simtrace2-cardem-pcsc<a href="#simtrace2-cardem-pcsc" class="wiki-anchor">¶</a></h2>
<pre>
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 23
=> DATA: flags=1, 00 c0 00 00 23 : SW=0x9000, len_rx=35
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 b2 9d 04 22
=> DATA: flags=1, 00 b2 9d 04 22 : SW=0x9000, len_rx=34
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 a4 00 04 02
=> DATA: flags=1, 00 a4 00 04 02 : -> 01 06 00 00 00 00 10 00 02 00 00 00 02 00 6f 3a
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 23
=> DATA: flags=1, 00 c0 00 00 23 : SW=0x9000, len_rx=35
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 b2 9e 04 22
=> DATA: flags=1, 00 b2 9e 04 22 : SW=0x9000, len_rx=34
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 a4 00 04 02
=> DATA: flags=1, 00 a4 00 04 02 : -> 01 06 00 00 00 00 10 00 02 00 00 00 02 00 6f 3a
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 23
=> DATA: flags=1, 00 c0 00 00 23 : SW=0x9000, len_rx=35
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 b2 9f 04 22
=> DATA: flags=1, 00 b2 9f 04 22 : SW=0x9000, len_rx=34
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 a4 00 04 02
=> DATA: flags=1, 00 a4 00 04 02 : -> 01 06 00 00 00 00 10 00 02 00 00 00 02 00 6f 3a
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 23
=> DATA: flags=1, 00 c0 00 00 23 : SW=0x9000, len_rx=35
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 b2 a0 04 22
=> DATA: flags=1, 00 b2 a0 04 22 : SW=0x9000, len_rx=34
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 a4 00 04 02
=> DATA: flags=1, 00 a4 00 04 02 : -> 01 06 00 00 00 00 10 00 02 00 00 00 02 00 6f 3a
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 23
=> DATA: flags=1, 00 c0 00 00 23 : SW=0x9000, len_rx=35
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 b2 a1 04 22
=> DATA: flags=1, 00 b2 a1 04 22 : SW=0x9000, len_rx=34
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 a4 00 04 02
=> DATA: flags=1, 00 a4 00 04 02 : -> 01 06 00 00 00 00 10 00 02 00 00 00 02 00 6f 3a
=> DATA: flags=2, 6f 3a : SW=0x6123, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 00 c0 00 00 60
=> DATA: flags=1, 00 c0 00 00 60 : SW=0x6c23, len_rx=0
-> 01 06 00 00 00 00 13 00 01 00 00 00 05 00 02 00 a4 00 04
<0000> apdu_dispatch.c:112 Unknown APDU case 0
=> DATA: flags=1, 02 00 a4 00 04 : SW=0x6881, len_rx=0
</pre>
<p>it also agrees that this last APDU is somehow wrong and cannot determine the APDU case.</p>
<a name="USB-communication"></a>
<h2 >USB communication<a href="#USB-communication" class="wiki-anchor">¶</a></h2>
<p>last message from SIMtrace to host is "RX DATA" with header flag set and 0200a40004. The card still responds with SW 6881 to that, as obviously the APDU header is invalid.</p>
<p><img src="https://projects.osmocom.org/attachments/download/4852/wireshark.png" alt="" /></p> OsmoSGSN - Bug #5349 (In Progress): Message for non-existing SNDCP Entity https://projects.osmocom.org/issues/53492021-12-09T20:57:14Zkeith
<p>It seems pretty easy to get into a state where the TLLI in the MM context is not matching that in the SNDCP.</p>
<pre>
MM Context for IMSI 262423203000396, IMEI 013895003719350, P-TMSI ecc8a829
MSISDN: 57057157010, TLLI: ecc8a829 HLR:
GMM State: Registered.NORMAL, Routeing Area: 334-07-1101-21, Cell ID: 0
MM State: Standby, RAN Type: GPRS/EDGE via Gb
SGSN MM Context Statistics:
Signalling Messages ( In): 45 (0/s 0/m 45/h 0/d)
Signalling Messages (Out): 21 (0/s 0/m 21/h 0/d)
User Data Messages ( In): 369 (0/s 0/m 369/h 0/d)
User Data Messages (Out): 288 (0/s 0/m 288/h 0/d)
User Data Bytes ( In): 37388 (0/s 0/m 37388/h 0/d)
User Data Bytes (Out): 56465 (0/s 0/m 56465/h 0/d)
PDP Context Activations : 1 (0/s 0/m 1/h 0/d)
SUSPEND Count : 0 (0/s 0/m 0/h 0/d)
Paging Packet Switched : 2 (0/s 0/m 2/h 0/d)
Paging Circuit Switched : 0 (0/s 0/m 0/h 0/d)
Routing Area Update : 14 (0/s 0/m 14/h 0/d)
OsmoSGSN# show snd
OsmoSGSN# show sndcp
State of SNDCP Entities
TLLI c6ada2d6 SAPI=3 NSAPI=5:
Defrag: npdu=289 highest_seg=2 seg_have=0x00000007 tot_len=1233
TLLI e9d026da SAPI=3 NSAPI=5:
Defrag: npdu=339 highest_seg=1 seg_have=0x00000003 tot_len=793
</pre>
<p>resulting in:</p>
<pre>
20211209214900128 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900148 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900149 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900170 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900170 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900188 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900210 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900210 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900230 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900231 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900248 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900248 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900267 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
20211209214900267 DSNDCP ERROR Message for non-existing SNDCP Entity (lle=0x55672ad42848, TLLI=ecc8a829, SAPI=3, NSAPI=5) (gprs_sndcp.c:812)
</pre>
<p>My apologies - Over the last year or so I've suffered a memory leak for all the GRPS workings, I'll need to read up again to further debug this myself, but in the meantime, it should be reproducible if anyone wishes to take a look.</p>
<p><del>One way to trigger it seems to be cause a GPRS suspend by making a call</del> . In fact I can't reproduce this so easily. Something else is in the mix.</p>
<p>See the notes I erroneously posted on related issue <a class="issue tracker-1 status-3 priority-3 priority-high3 closed" title="Bug: vty comand "show sndcp" can cause SEGV in vty_dump_sne() (Resolved)" href="https://projects.osmocom.org/issues/4824">#4824</a> , especially <a class="issue tracker-1 status-3 priority-3 priority-high3 closed" title="Bug: vty comand "show sndcp" can cause SEGV in vty_dump_sne() (Resolved)" href="https://projects.osmocom.org/issues/4824#note-13">#4824-13</a></p>
<p>Marking high priority as I am observing this as a show stopper in production. <br />Thanks.</p> gr-osmosdr - Bug #5144 (New): Support multiple Airspy deviceshttps://projects.osmocom.org/issues/51442021-05-08T18:58:56ZAsciiWolf
<p>Please, consider supporting multiple Airspy devices in gr-osmosdr. Currently, this is not possible and only one of my connected Airspy R2 devices is available in GNU Radio companion and Gqrx.</p>
<p>There was a patch adding this support (by being able to specify the device serial number as a value for the "airspy" argument in Airspy Source) already posted in 2016: <a class="external" href="https://lists.osmocom.org/pipermail/osmocom-sdr/2016-April/001446.html">https://lists.osmocom.org/pipermail/osmocom-sdr/2016-April/001446.html</a></p>
<p>The patch still seems to work fine on latest gr-osmosdr and adds exactly the functionality needed to make multiple Airspy devices available. Please, consider adding this patch to upstream gr-osmosdr or implementing a different approach to support multiple Airspy devices in gr-osmosdr. Thanks!</p> OsmoBSC - Feature #5106 (Feedback): Watchdog that would try to un-BORKE BORKen timeslotshttps://projects.osmocom.org/issues/51062021-04-04T20:21:26Zkeith
<p>In <a class="issue tracker-1 status-3 priority-2 priority-default closed behind-schedule" title="Bug: rbs2000 ALL BORKEN Channels (Resolved)" href="https://projects.osmocom.org/issues/5096">#5096</a> that discussed lchans ending up borken on a busy ericsson bts:</p>
<p>"What would probably make sense is some kind of watchdog that would try to un-BORKE BORKen timeslots after a certain time. This can be done by activating a broken sub-slot and releasing it immediately. If the BTS still refuses to activate it, then it's completely BORKen and the second attempt to un-BORKE can be postponed further."</p>
<p>(<a class="external" href="https://osmocom.org/issues/5096#note-12">https://osmocom.org/issues/5096#note-12</a>)</p> osmo-e1d - Bug #4916 (Stalled): USB unplug / replug renders e1d unusablehttps://projects.osmocom.org/issues/49162020-12-18T10:28:45Zlaforge
right now the behavior on USB unplug (or - god forbid - a firmware crash) is not very user friendly:
<ul>
<li>e1d keeps running</li>
<li>e1d does not re-open the device when it comes back</li>
</ul>
IMHO, we have the following options
<ol>
<li>fail fast - simply exit when the device is lost, assume systemd or some other management instance will keep respawning us until the device is back
<ul>
<li>but what about client programs like osmo-bsc / osmo-mgw ?</li>
</ul>
</li>
<li>implement re-opening of a single icE1usb device, knowing our blocking control transfers would corrupt any other ongoing communication
<ul>
<li>is it worth the effort, assuming this is only an interim solution</li>
</ul>
</li>
<li>go for a full-blown hot-plug capable architecture lined out in <a class="issue tracker-2 status-1 priority-1 priority-lowest" title="Feature: consider a one-thread-per-line architecture (New)" href="https://projects.osmocom.org/issues/4915">#4915</a>
<ul>
<li>will probably take significant effort</li>
</ul></li>
</ol>
<p>I think right now we mostly have to worry about situations with a single icE1usb, so I'm tempted to go for the fail-fast approach, assuming osmo-bsc/osmo-mgw recover in some way.</p> OsmoPCU - Bug #4879 (Stalled): endless pdch.cpp:809 Got CS-N RLC block: R=0, SI=0, TFI=0, CPS=0, ...https://projects.osmocom.org/issues/48792020-11-29T23:17:31Zfixeria
<p>I just upgraded all osmo-{ran,cni} components to the recent master, and now quite often run into a situation when the MS (at least Sony Ericsson K800i, TEMS) keeps sending the same Uplink block again and again. I am not sure what exactly causes it, but I can reproduce it more or less reliably by starting Opera Mini (<a class="external" href="http://people.osmocom.org/fixeria/j2me/opera_mini.jar">http://people.osmocom.org/fixeria/j2me/opera_mini.jar</a>). When started for the first time, Opera initiates the installation process, and this is where the problem usually shows up.</p>
<pre>
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACUL INFO pdch.cpp:809 Got CS-2 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=264
DRLCMACMEAS INFO gprs_rlcmac_meas.cpp:108 MS(TLLI=0xc5849e78, IMSI=901990000000021, TA=0, 10/0, UL DL) UL RSSI: -29 dBm
</pre>
<p>Please see the attached capture file. Some highlights:</p>
<pre>
43585 RACH!
43591 IMM ASS (single block)
43731 UL Packet Resource Request
43799 DL Packet Uplink Assignment (TS=6 USF=0)
...
43910 UL DATA (BSN=0 CV=15)
...
43915 UL DATA | TCP FIN,ACK (Opera Mini closes connection to the server)
...
43918 UL DATA (BSN=3 CV=15)
43955 UL DATA (BSN=5 CV=14) <-- 14 RLC blocks left
...
44070 UL DATA (BSN=14 CV=5)
...
44146 UL DATA (BSN=19 CV=0) <-- 0 RLC blocks left
...
44149 UL DATA (BSN=19 CV=0) <-- re-transmission
44152 UL DATA (BSN=19 CV=0) <-- re-transmission
</pre>
<p>starting from frame 44149, the MS keeps transmitting the same RLC/MAC block ('35bdc794cd2b631285b2d43513'O). Interestingly enough, after each re-transmission the PCU logs "GPRS DL CTRL: PACKET_UPLINK_ACK_NACK", but <strong>does not actually send it</strong> (dummy RLC/MAC frames are not recorded). And this goes like that unless I turn off the phone. At the same time, Downlink blocks are received and accepted by the MS on the same timeslot.</p>
<p>OsmoPCU 58cd1d2f8a0474de45112e8d6e460051494eba79<br />OsmoBTS def24f0d9af2463a5ef557d35f23abd5b4d07120</p> OsmoMSC - Bug #4830 (In Progress): LU reject when no authentication data in HLR but "authenticati...https://projects.osmocom.org/issues/48302020-10-25T18:39:40ZlaforgeQualcomm Linux Modems by Quectel & Co - Support #4206 (New): Unbrick cpe router without web ui in...https://projects.osmocom.org/issues/42062019-09-16T10:41:38Zjahcultura
<p>I have a router 4G cpe modem with linux embedded without web access and terminal does anyone know how to recover? I checked on the board has the points RX, TX, DLOAD, RESET_N, so I saw here only have SMD components so the only way to rewrite the firmware would be for these communication points. Note: I tried access via serial but stops at bootloader.</p>
<p>SERIAL LOG:<br />Format: Log Type - Time(microsec) - Message - Optional Info<br />Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic<br />S - QC_IMAGE_VERSION_STRING=BOOT.BF.3.1.2-00075<br />S - IMAGE_VARIANT_STRING=LAATANAZA<br />S - OEM_IMAGE_VERSION_STRING=ubuntu<br />S - Boot Config, 0x000002e0<br />B - 1216 - PBL, Start<br />B - 3723 - bootable_media_detect_entry, Start<br />B - 4454 - bootable_media_detect_success, Start<br />B - 4458 - elf_loader_entry, Start<br />B - 6701 - auth_hash_seg_entry, Start<br />B - 6923 - auth_hash_seg_exit, Start<br />B - 59917 - elf_segs_hash_verify_entry, Start<br />B - 107892 - PBL, End<br />B - 97478 - SBL1, Start<br />B - 146003 - pm_device_init, Start<br />B - 163114 - PM_SET_VAL:Skip<br />D - 15890 - pm_device_init, Delta<br />B - 164120 - boot_config_data_table_init, Start<br />D - 174948 - boot_config_data_table_init, Delta - (420 Bytes)<br />B - 342576 - CDT version:3,Platform ID:8,Major ID:1,Minor ID:0,Subtype:0<br />B - 348767 - sbl1_ddr_set_params, Start<br />B - 352580 - Pre_DDR_clock_init, Start<br />D - 244 - Pre_DDR_clock_init, Delta<br />D - 0 - sbl1_ddr_set_params, Delta<br />B - 365237 - pm_driver_init, Start<br />D - 4544 - pm_driver_init, Delta<br />B - 371642 - cpr_init, Start<br />D - 91 - cpr_init, Delta<br />B - 376156 - cpr_cx_mx_apc_vol_update, Start<br />D - 91 - cpr_cx_mx_apc_vol_update, Delta<br />B - 391071 - sbl1_qhsusb_al_do_fast_enum, Start<br />D - 0 - sbl1_qhsusb_al_do_fast_enum, Delta<br />B - 394060 - clock_init, Start<br />D - 152 - clock_init, Delta<br />B - 399855 - boot_flash_init, Start<br />D - 28670 - boot_flash_init, Delta<br />B - 500230 - Image Load, Start<br />D - 78172 - QSEE Image Loaded, Delta - (490820 Bytes)<br />B - 580049 - sbl1_efs_handle_cookies, Start<br />D - 0 - sbl1_efs_handle_cookies, Delta<br />B - 585661 - Devcfg Partition does not exist<br />B - 589839 - Image Load, Start<br />D - 518 - SEC Image Loaded, Delta - (2048 Bytes)<br />B - 597800 - Image Load, Start<br />D - 31994 - RPM Image Loaded, Delta - (152400 Bytes)<br />B - 629825 - Image Load, Start<br />D - 58804 - APPSBL Image Loaded, Delta - (367664 Bytes)<br />B - 688690 - QSEE Execution, Start<br />D - 152 - QSEE Execution, Delta<br />B - 694393 - SBL1, End<br />D - 599203 - SBL1, Delta<br />S - Throughput, 3000 KB/s (1013352 Bytes, 321860 us)<br />S - DDR Frequency, 240 MHz<br />Android Bootloader - UART_DM Initialized!!!<br />[0] welcome to lk<br />-----------------------------------------------------------------------<br />DMESG PART :</p>
<p>[ 0.000000] Booting Linux on physical CPU 0x0<br />[ 0.000000] Initializing cgroup subsys cpu<br />[ 0.000000] Initializing cgroup subsys cpuacct<br />[ 0.000000] Linux version 3.18.20 (wangshihong@ubuntu-238) (gcc version 4.9.2 (GCC) ) <a class="issue tracker-2 status-5 priority-5 priority-highest closed" title="Feature: port Dieter's windows code to mISDN (Closed)" href="https://projects.osmocom.org/issues/1">#1</a> PREEMPT Mon Oct 22 19:35:14 CST 2018<br />[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c53c7d<br />[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache<br />[ 0.000000] Machine model: Qualcomm Technologies, Inc. MDM <br />------------------------------------------------------------------------------------------------<br />Technical Specifications</p>
<p>LTE Support Bands FDD Band 1/3/5/7/8/28<br />WCDMA 850Mhz and 2100MHz<br />CPU frequency 533MHz<br />Flash + Memory 4Gb + 2 Gb DDR2<br />WIFI<br />2T2R 2.4GHz<br />802.11b/g/n, 300Mbps<br />Interface<br />1 x Power DC Port :<br />DC12V/1A<br />1 x RJ11<br />1x RJ45<br />10Mbps/100Mbps/1000<br />Mbps WAN/LAN Port<br />1x Power Button<br />1x Reset Button<br />1x WPS Button<br />1x 2FF Standard SIM card slot<br />1x USB port</p> gr-osmosdr - Support #3819 (New): OSMO SDR blocks for GNUradiohttps://projects.osmocom.org/issues/38192019-02-28T18:00:07Zchesir
<p>I installed GNUradio, and its GUI, gnuradio-companion, using pybombs. The use of pybombs for installation requires that one set up a prefix point, or directory, so that all installation files are under that directory. When I use the method outlined in <a class="external" href="https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR">https://osmocom.org/projects/gr-osmosdr/wiki/GrOsmoSDR</a>, many files, including the RTL SDR Source block file, are installed, but I do not know which files, aside from (obviously) the block file, should be copied from the default installation locations to a directory under my prefix point for the blocks to actually work. Having copied only the RTL SDR Source block file, and attempting to execute the GRC flowgraph (which contains that one block), I am greeted with the error "Import Error: No module named osmosdr" What do I do?</p> SIMtrace 2 - Bug #3379 (Stalled): documentation on how to use SIMtrace2https://projects.osmocom.org/issues/33792018-07-04T16:10:36Zlaforge
<p>the wiki in the SIMtrace2 redmine project currently only documents flashing, but there should of course be good information on how to use the host tools in order to run the complete system.</p> Linux Kernel GTP-U - Bug #1952 (In Progress): IPv6 support for inner (user) IP layer missinghttps://projects.osmocom.org/issues/19522017-02-18T12:29:29Zlaforge
<p>The 3GPP specs permit for both IPv4 and IPv6, but we only implement IPv4. This is embarrassing and should be changed. Contribution welcome!</p>