Open Source Mobile Communications: Issueshttps://osmocom.org/https://osmocom.org/favicon.ico?16647414092024-03-22T05:59:54ZOpen Source Mobile Communications
Redmine rtl-sdr - Bug #6413 (New): Incorrect Debian/Debian-like binary packageshttps://osmocom.org/issues/64132024-03-22T05:59:54ZFFY00
<p>Hi,</p>
<p>It seems the binary packages for Debian and Debian-like distributions, such as Ubuntu, for librtlsdr are incorrect.</p>
<p>You are shipping a librtlsdr0 package for 2.x version, which has a SO version with a major of 2. The correct package should be librtlsdr2. Not shipping a .so.0 in a librtlsdr0 package means that all software that was built against it will now result in an unresolved linker dependency.</p>
<p>With that said, I would also recommend the SO version to not be tied to the project version, as that would require all existing packages to be rebuilt against the new library package, even if there weren't any ABI changes. I don't know if there were any ABI changes between .so.0 and .so.2, but if there weren't, I would recommend for rtl-sdr 2.x to still ship a SO with a 0 major version (in this case, also a .so.2 now, since version 2.x has already been released with that SO name).</p>
<p>Cheers,<br />Filipe LaĆns</p> rtl-sdr - Bug #6012 (New): Update wiki for macos buildhttps://osmocom.org/issues/60122023-04-22T23:40:42Zmores
<p>If you follow instructions for "Building with autotools:" you will get:</p>
<p>./configure: line 12636: syntax error near unexpected token `LIBUSB,'<br />./configure: line 12636: `PKG_CHECK_MODULES(LIBUSB, libusb-1.0 >= 1.0)'</p>
<p>on macos.</p>
<p>Please update wiki to include:</p>
<p>autoreconf -i -I/opt/homebrew/share/aclocal</p> rtl-sdr - Bug #6005 (New): rtl-test and rtl-sdr exit code=-5 when running on Windows 10 WSL and U...https://osmocom.org/issues/60052023-04-16T23:27:10Zmluckham
<p>While trying to get radiosonde_auto_rx 6.0 to work on Windows 10 WSL and Ubuntu, neither the RTL-SDR.COM dongle nor an older DVB-T+DAB+FM dongle were detected by auto_rx.py. Increasing the log level to debug showed that rtl_sdr was returning a non-zero error code.</p>
<p>Echoing the return code ($#) after running rtl_sdr or rtl_test on the command line, -5 is being returned instead of zero. Modifying auto_rx/autorx/utils.py to accept a return code of 5 allowed the SDR to be detected and operate normally.</p>
<p>Moving to the rtl-sdr code, in librtlsdr.c, the rtl_read_async() method returns -5 from the variable 'r' if a non-zero error was returned from r=libusb_cancel_transfer. The main also returns the non-zero value of 'r' which is the problem.</p>
<p>I reported these findings on: [<a class="external" href="https://github.com/projecthorus/radiosonde_auto_rx/issues/765">https://github.com/projecthorus/radiosonde_auto_rx/issues/765</a> [<a class="external" href="https://github.com/projecthorus/radiosonde_auto_rx/issues/765">https://github.com/projecthorus/radiosonde_auto_rx/issues/765</a>]].</p>
<p>Moving on to Windows 10 WSL, the dorssel/usbipd-win project bridges Windows 10 USB devices to the Ubuntu environment. I submitted a request for assistance to the project and they advised how to capture debug information. Their response: [<a class="external" href="https://github.com/dorssel/usbipd-win/issues/572">https://github.com/dorssel/usbipd-win/issues/572</a> [<a class="external" href="https://github.com/dorssel/usbipd-win/issues/572">https://github.com/dorssel/usbipd-win/issues/572</a>]]</p>
<p>Here is the code change that I made to librtlsdr.c to absorb the error code and return the normal exit code=0. There are two changes flagged with the comment '// Mike'. I don't know whether this change is generic enough - it just works in this situation.</p>
<pre><code class="c syntaxhl">
<span class="kt">int</span> <span class="nf">rtlsdr_read_async</span><span class="p">(</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="n">rtlsdr_read_async_cb_t</span> <span class="n">cb</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">ctx</span><span class="p">,</span>
<span class="kt">uint32_t</span> <span class="n">buf_num</span><span class="p">,</span> <span class="kt">uint32_t</span> <span class="n">buf_len</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
<span class="kt">int</span> <span class="n">r</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">struct</span> <span class="n">timeval</span> <span class="n">tv</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
<span class="k">struct</span> <span class="n">timeval</span> <span class="n">zerotv</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span>
<span class="k">enum</span> <span class="n">rtlsdr_async_status</span> <span class="n">next_status</span> <span class="o">=</span> <span class="n">RTLSDR_INACTIVE</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">RTLSDR_INACTIVE</span> <span class="o">!=</span> <span class="n">dev</span><span class="o">-></span><span class="n">async_status</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">2</span><span class="p">;</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_status</span> <span class="o">=</span> <span class="n">RTLSDR_RUNNING</span><span class="p">;</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_cancel</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="n">dev</span><span class="o">-></span><span class="n">cb</span> <span class="o">=</span> <span class="n">cb</span><span class="p">;</span>
<span class="n">dev</span><span class="o">-></span><span class="n">cb_ctx</span> <span class="o">=</span> <span class="n">ctx</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">buf_num</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_num</span> <span class="o">=</span> <span class="n">buf_num</span><span class="p">;</span>
<span class="k">else</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_num</span> <span class="o">=</span> <span class="n">DEFAULT_BUF_NUMBER</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">buf_len</span> <span class="o">></span> <span class="mi">0</span> <span class="o">&&</span> <span class="n">buf_len</span> <span class="o">%</span> <span class="mi">512</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="cm">/* len must be multiple of 512 */</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_len</span> <span class="o">=</span> <span class="n">buf_len</span><span class="p">;</span>
<span class="k">else</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_len</span> <span class="o">=</span> <span class="n">DEFAULT_BUF_LENGTH</span><span class="p">;</span>
<span class="n">_rtlsdr_alloc_async_buffers</span><span class="p">(</span><span class="n">dev</span><span class="p">);</span>
<span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_num</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
<span class="n">libusb_fill_bulk_transfer</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
<span class="n">dev</span><span class="o">-></span><span class="n">devh</span><span class="p">,</span>
<span class="mh">0x81</span><span class="p">,</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_len</span><span class="p">,</span>
<span class="n">_libusb_callback</span><span class="p">,</span>
<span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="n">dev</span><span class="p">,</span>
<span class="n">BULK_TIMEOUT</span><span class="p">);</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">libusb_submit_transfer</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">r</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"Failed to submit transfer %i</span><span class="se">\n</span><span class="s">"</span>
<span class="s">"Please increase your allowed "</span>
<span class="s">"usbfs buffer size with the "</span>
<span class="s">"following command:</span><span class="se">\n</span><span class="s">"</span>
<span class="s">"echo 0 > /sys/module/usbcore"</span>
<span class="s">"/parameters/usbfs_memory_mb</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_status</span> <span class="o">=</span> <span class="n">RTLSDR_CANCELING</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">while</span> <span class="p">(</span><span class="n">RTLSDR_INACTIVE</span> <span class="o">!=</span> <span class="n">dev</span><span class="o">-></span><span class="n">async_status</span><span class="p">)</span> <span class="p">{</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">libusb_handle_events_timeout_completed</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">ctx</span><span class="p">,</span> <span class="o">&</span><span class="n">tv</span><span class="p">,</span>
<span class="o">&</span><span class="n">dev</span><span class="o">-></span><span class="n">async_cancel</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">r</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"libusb_handle_events_timeout_completed returned: %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">r</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">r</span> <span class="o">==</span> <span class="n">LIBUSB_ERROR_INTERRUPTED</span><span class="p">)</span> <span class="cm">/* stray signal */</span>
<span class="k">continue</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="n">RTLSDR_CANCELING</span> <span class="o">==</span> <span class="n">dev</span><span class="o">-></span><span class="n">async_status</span><span class="p">)</span> <span class="p">{</span>
<span class="n">next_status</span> <span class="o">=</span> <span class="n">RTLSDR_INACTIVE</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">)</span>
<span class="k">break</span><span class="p">;</span>
<span class="k">for</span><span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">dev</span><span class="o">-></span><span class="n">xfer_buf_num</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">continue</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="n">LIBUSB_TRANSFER_CANCELLED</span> <span class="o">!=</span>
<span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-></span><span class="n">status</span><span class="p">)</span> <span class="p">{</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">libusb_cancel_transfer</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">xfer</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"libusb_cancel_transfer : %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">r</span><span class="p">);</span>
<span class="cm">/* handle events after canceling
* to allow transfer status to
* propagate */</span>
<span class="cp">#ifdef _WIN32
</span> <span class="n">Sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="cp">#endif
</span> <span class="n">libusb_handle_events_timeout_completed</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">ctx</span><span class="p">,</span>
<span class="o">&</span><span class="n">zerotv</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
<span class="c1">// Mike: first call return r=0, after that r=-5, final call</span>
<span class="k">if</span> <span class="p">(</span><span class="n">r</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span>
<span class="k">continue</span><span class="p">;</span>
<span class="n">next_status</span> <span class="o">=</span> <span class="n">RTLSDR_CANCELING</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// Mike</span>
<span class="k">if</span> <span class="p">(</span><span class="n">r</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"final r return value %d, reset to 0"</span><span class="p">,</span> <span class="n">r</span><span class="p">);</span>
<span class="n">r</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">dev_lost</span> <span class="o">||</span> <span class="n">RTLSDR_INACTIVE</span> <span class="o">==</span> <span class="n">next_status</span><span class="p">)</span> <span class="p">{</span>
<span class="cm">/* handle any events that still need to
* be handled before exiting after we
* just cancelled all transfers */</span>
<span class="n">libusb_handle_events_timeout_completed</span><span class="p">(</span><span class="n">dev</span><span class="o">-></span><span class="n">ctx</span><span class="p">,</span>
<span class="o">&</span><span class="n">zerotv</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="n">_rtlsdr_free_async_buffers</span><span class="p">(</span><span class="n">dev</span><span class="p">);</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_status</span> <span class="o">=</span> <span class="n">next_status</span><span class="p">;</span>
<span class="k">return</span> <span class="n">r</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">rtlsdr_cancel_async</span><span class="p">(</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="n">dev</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="cm">/* if streaming, try to cancel gracefully */</span>
<span class="k">if</span> <span class="p">(</span><span class="n">RTLSDR_RUNNING</span> <span class="o">==</span> <span class="n">dev</span><span class="o">-></span><span class="n">async_status</span><span class="p">)</span> <span class="p">{</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_status</span> <span class="o">=</span> <span class="n">RTLSDR_CANCELING</span><span class="p">;</span>
<span class="n">dev</span><span class="o">-></span><span class="n">async_cancel</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/* if called while in pending state, change the state forcefully */</span>
<span class="c">#if 0
if (RTLSDR_INACTIVE != dev->async_status) {
dev->async_status = RTLSDR_INACTIVE;
return 0;
}
#endif
</span> <span class="k">return</span> <span class="o">-</span><span class="mi">2</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">uint32_t</span> <span class="nf">rtlsdr_get_tuner_clock</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">dev</span><span class="p">)</span>
<span class="p">{</span>
<span class="kt">uint32_t</span> <span class="n">tuner_freq</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="cm">/* read corrected clock value */</span>
<span class="k">if</span> <span class="p">(</span><span class="n">rtlsdr_get_xtal_freq</span><span class="p">((</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="p">)</span><span class="n">dev</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="o">&</span><span class="n">tuner_freq</span><span class="p">))</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">return</span> <span class="n">tuner_freq</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">rtlsdr_i2c_write_fn</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">addr</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="n">buf</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="n">rtlsdr_i2c_write</span><span class="p">(((</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="p">)</span><span class="n">dev</span><span class="p">),</span> <span class="n">addr</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">len</span><span class="p">);</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">rtlsdr_i2c_read_fn</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">addr</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="o">*</span><span class="n">buf</span><span class="p">,</span> <span class="kt">int</span> <span class="n">len</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="n">rtlsdr_i2c_read</span><span class="p">(((</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="p">)</span><span class="n">dev</span><span class="p">),</span> <span class="n">addr</span><span class="p">,</span> <span class="n">buf</span><span class="p">,</span> <span class="n">len</span><span class="p">);</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">rtlsdr_set_bias_tee_gpio</span><span class="p">(</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">int</span> <span class="n">gpio</span><span class="p">,</span> <span class="kt">int</span> <span class="n">on</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">dev</span><span class="p">)</span>
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<span class="n">rtlsdr_set_gpio_output</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="n">gpio</span><span class="p">);</span>
<span class="n">rtlsdr_set_gpio_bit</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="n">gpio</span><span class="p">,</span> <span class="n">on</span><span class="p">);</span>
<span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="kt">int</span> <span class="nf">rtlsdr_set_bias_tee</span><span class="p">(</span><span class="n">rtlsdr_dev_t</span> <span class="o">*</span><span class="n">dev</span><span class="p">,</span> <span class="kt">int</span> <span class="n">on</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="n">rtlsdr_set_bias_tee_gpio</span><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">on</span><span class="p">);</span>
<span class="p">}</span>
</code></pre> rtl-sdr - Bug #5922 (New): rtl_sdr bytes_to_read wraparound for n > 2**31https://osmocom.org/issues/59222023-02-23T21:33:58Znikolicj
<p>In rtl_sdr: bytes_to_read wraps around for larger captures (e.g. when trying to log 1000s of IQ samples at 2.4M samples/s):</p>
<p>rtl_sdr test.iq -f 440000000 -s 2400000 -g 34 -n 2400000000</p>
<p>I attached a patch that fixes it (I lack the permission to open a PR). Tested on a 64bit Ubuntu 22.04 machine.</p> osmo-fl2k - Bug #5918 (New): -flto broken in releasehttps://osmocom.org/issues/59182023-02-22T15:34:15Zzero_chaos
<p>Hi! It's been a while since your last tag, and some notable fixes have gone in. I know there isn't a ton of active development lately, but that seems like all the more reason for a fresh tag. I am currently testing link time optimization stuff in Gentoo, and came across this bug:<br /><a class="external" href="https://bugs.gentoo.org/861959">https://bugs.gentoo.org/861959</a><br />It seems to be fixed by <a class="external" href="https://gitea.osmocom.org/sdr/osmo-fl2k/commit/d56968352c626dda51552bb469ac23a8964d6d29">https://gitea.osmocom.org/sdr/osmo-fl2k/commit/d56968352c626dda51552bb469ac23a8964d6d29</a> , however, there seem to be a lot of additional desirable fixes.<br />Please consider tagging a new release.</p> OsmoBTS - Bug #5895 (New): LC15: Audio Quality Problem sometime after cf7a7fcebf625a14fd764355c3b...https://osmocom.org/issues/58952023-02-07T03:11:09Zkeith
<p>Writing this up now while it's a bit fresh...</p>
<p>I have spent the last 12 hours or so working with people on site to try to track down these problems:</p>
<p>Fierce complaints about audio quality (no audio, unintelligible, intermittent, chopped)</p>
<p>Observation of a lot of very variable Q in meas reps, especially on downlink (associated with bad audio) and more pronounced when the call B-leg was using another codec such as G.729 on the other side of the PBX, - in fact not transcoding at site and sending AMR to our data centre and trancoding there to PCMA/U for the upstream VoIP was giving better results most of the time.</p>
<p>However, today I discovered the extent of how bad this was on local MS to MS calls.</p>
<p>After exhausting everything I could think of, we went back to the timeline and there were some opinions that this started around a date last year which seemed to be around the time I changed this site away from osmo-nitb. Given I wasn't seeing any signalling problems, I had been looking for problems with maybe the MGW or something with RTP that would have changed. but I could find nothing.</p>
<p>Of course none of that was at fault, what happened was that along with the move to osmo-bsc, I built v1.4.0 of osmo-bts - I think not 1.5.0 because at the time 1.4.0 built against the libs I had on the BTS, anyway, going back to the binary I had built before from cf7a7fce "solves" the problem.</p>
<p>Given the current somewhat tense situation I don't envisage "test"-ing anything at this site for the time being so I can't exactly try to dissect between cf7a7fce and 1.4.0 not that it would be very easy to run each commit against a bunch of manual tests that annoy the local people, asking them to make calls to each other.</p>
<p>So what to do? Well note it at least. I don't have another lc15 to test on. <br />Maybe shout-out to the main devs who committed code that touched lc15 or common, (which seems to have to do with power control, interference measurements) to see if they have any ideas. My feeling is that something that was done is not happy on the LC15 PHY.</p>
<p>There's the chance that this was fixed since 1.4.0 or in another lib.</p>
<p><em>Trivia: cf7a7fce is the last commit that can do RSL/OML bring-up against osmo-nitb.. that's why that one.</em></p> OsmoHLR - Feature #5865 (New): Automate selection of LU Reject Causehttps://osmocom.org/issues/58652023-01-20T13:59:07Zkeith
<p>There is some suggestion in <a class="external" href="https://gerrit.osmocom.org/c/osmo-hlr/+/16808">https://gerrit.osmocom.org/c/osmo-hlr/+/16808</a> that osmo-hlr could use some criteria to decide what cause/reason to send to the GSUP client when rejecting a Location/Routing Update</p>
<p>Possibly, sending "IMSI Unknown in HLR" is wrong when the SIM is foreign to our network.</p>
<p>We could have a regex config option to let osmo-hlr know what is "our" SIM or not. Or maybe a GSUP client like osmo-msc can comunicate MNC-MCC info from the MSC network config over GSUP? I'm not familiar with GSUP.</p> OsmocomBB - Bug #5831 (New): SE K2x0i: built-in SIM reader is not workinghttps://osmocom.org/issues/58312022-12-15T23:46:08Zfixeria
<p>Currently the mobile app fails to use built-in SIM reader of my Sony Ericsson K200i:</p>
<pre>
DMM INFO subscriber.c:596 Requesting SIM file 0x2fe2
DSIM INFO sim.c:223 got new job: SIM_JOB_READ_BINARY (handle=00000004)
DSIM INFO sim.c:712 go MF
DSIM INFO sim.c:256 SELECT (file=0x3f00)
DSIM INFO sim.c:181 sending APDU (class 0xa0, ins 0xa4)
DSIM INFO sim.c:200 Using built-in SIM reader
DSIM INFO sim.c:901 received APDU (len=0 sw1=0x00 sw2=0x00)
DSIM INFO sim.c:979 command failed
DSIM INFO sim.c:147 sending result to callback function (type=1)
</pre>
<p>This is what the firmware log looks like:</p>
<pre>
OsmocomBB Layer 1 (revision osmocon_v0.0.0-2885-g86f46edd-modified)
======================================================================
Device ID code: 0xb496
Device Version code: 0x0000
ARM ID code: 0xfff3
cDSP ID code: 0x0128
Die ID code: e515201ce51557b9
======================================================================
REG_DPLL=0x2413
CNTL_ARM_CLK=0xf0a1
CNTL_CLK=0xff91
CNTL_RST=0xfff7
CNTL_ARM_DIV=0xfff9
======================================================================
Power up simcard:
key=20 pressed
key=20 released
Checking TIFFS for the RF calibration records
...
L1CTL_RESET_REQ: FULL!
SIM Request (7): a0 a4 00 00 02 3f 00
SIM: ACK read failed
SIM Response (2): 00 00
</pre>
<p>Note the <code>key=20 pressed/released</code>, I wasn't actually pressing anything.</p> rtl-sdr - Feature #5291 (New): Ship the udev rules upstreamhttps://osmocom.org/issues/52912021-11-04T17:52:16ZAsciiWolf
<p>Please, consider submitting the [udev rules](<a class="external" href="https://git.osmocom.org/rtl-sdr/tree/rtl-sdr.rules">https://git.osmocom.org/rtl-sdr/tree/rtl-sdr.rules</a>) to upstream (systemd). Here is an example how to do it: <a class="external" href="https://github.com/systemd/systemd/pull/20561">https://github.com/systemd/systemd/pull/20561</a></p>
<p>Without this, it is [not possible](<a class="external" href="https://github.com/flatpak/xdg-desktop-portal/issues/227#issuecomment-946760482">https://github.com/flatpak/xdg-desktop-portal/issues/227#issuecomment-946760482</a>) to use RTL-SDR devices in Flatpak and other special configurations where it is not possible to install the rtl-sdr libs/udev rules system-wide.</p> rtl-sdr - Bug #5220 (New): Undefined reference to libusb_dev_mem_freehttps://osmocom.org/issues/52202021-08-28T22:14:52Zphysnoct
<p>Linker didn't found the libusb-1.0.<br />Libusb-1.0 is installed in /usr/local</p> rtl-sdr - Bug #4758 (New): rtl_tcp no longer works on macos 10.15 via macportshttps://osmocom.org/issues/47582020-09-17T04:41:25Zrhymepays
<p>rtl_tcp no longer works on MacOS 10.15 (catalina) installed via macports. I was able to install an old port in order to get it to work. It appears that the code which sets up the tcp server contains a bug. The other executables in the package appear to work correctly.</p>
<p>Output from running rtl_tcp with no arguments:<br />Found 1 device(s):<br /> 0: Realtek, RTL2838UHIDIR, SN: 00000001</p>
<p>Using device 0: Generic RTL2832U OEM<br />Found Rafael Micro R820T tuner<br />[R82XX] PLL not locked!<br />Tuned to 100000000 Hz.<br />rtl_tcp bind error: Invalid argumentlistening...<br />Use the device argument 'rtl_tcp=127.0.0.1:1234' in OsmoSDR (gr-osmosdr) source<br />to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).</p>
<p>Output from dtruss of networking syscalls:<br />socket(0x2, 0x1, 0x6) = 5 0<br />setsockopt(0x5, 0xFFFF, 0x4) = 0 0<br />setsockopt(0x5, 0xFFFF, 0x80) = 0 0<br />bind(0x5, 0x7FFEEC5BAB20, 0x80) = -1 22<br />listen(0x5, 0x1, 0x0) = 0 0</p>
<p>I am not sure which commit introduced the bug but it is between be2e4f89 and d794155b.<br />Last known good commit: be2e4f89<br />Commit which contains issue: d794155b</p> rtl-sdr - Support #4367 (New): "Communications Toolbox Support Package for RTL-SDR Radio" from "M...https://osmocom.org/issues/43672020-01-17T17:18:02ZStarhowl
<p>When trying to install Communications Toolbox Support Package for RTL-SDR Radio from<br /><a class="external" href="https://de.mathworks.com/matlabcentral/fileexchange/44991-communications-toolbox-support-package-for-rtl-sdr-radio">https://de.mathworks.com/matlabcentral/fileexchange/44991-communications-toolbox-support-package-for-rtl-sdr-radio</a><br />, I get a 502-error from the installer on that webpage.</p>
<p>I posted an included link on Freenode, where to bot immediately delivered a 502 for<br /><a class="external" href="http://sdr.osmocom.org/trac/raw-attachment/wiki/rtl-sdr/RelWithDebInfo.zip">http://sdr.osmocom.org/trac/raw-attachment/wiki/rtl-sdr/RelWithDebInfo.zip</a><br />which appears to have moved to<br /><a class="external" href="https://osmocom.org/attachments/download/2242/RelWithDebInfo.zip">https://osmocom.org/attachments/download/2242/RelWithDebInfo.zip</a><br />instead.</p>
<p>Connecting via a German or US IP didn't resolve the issue, a different user on the same channel with the bot also confirmed the 502.</p>
<p>Can you please include the file at its former location to make the installer work again?</p> rtl-sdr - Feature #3315 (New): review and possibly apply patches from debian packagehttps://osmocom.org/issues/33152018-06-03T13:16:31Zlaforge
<p>There's a number of patches in the Debian package whcih might be useful to apply to mainline.</p>
<p>I'm particularly thinking of the following patches:<br /><pre>
hurd-usb
improve-librtlsdr-pc-file
improve-scanning-range-parsing
ipv6-support
use-udev-uaccess-rules
</pre></p>
<p>which can be found at <a class="external" href="https://salsa.debian.org/bottoms/pkg-rtl-sdr/tree/debian/debian/patches">https://salsa.debian.org/bottoms/pkg-rtl-sdr/tree/debian/debian/patches</a></p> osmo-fl2k - Feature #3210 (New): man pageshttps://osmocom.org/issues/32102018-04-24T20:04:48Zalteholz
<p>it would be nice to have man pages for the four binaries available</p> Cellular Network Infrastructure - Feature #3142 (New): Further simplification of "NITB like" setupshttps://osmocom.org/issues/31422018-04-05T20:09:38Zlaforge
<p>Running the post-NITB network is quite a lot more complex than the old code.</p>
<p>There are some ideas on how to make it simpler to run small, self-contained networks while removing some complexity</p>
<ul>
<li>I was also wondering if we should spend time on "MGW-less operation". In theory, you only need OsmoMGW if you have no IP-level routing between your Abis / A / core network [like any decent network operator for security reasons]. But then, if you run everything on one machine, and don't need/want transcoding, and have transparent routing between all components, we could do without the MGW.</li>
</ul>
<ul>
<li>stp-less operation should also be possible (but make configuration actually more complicated), as both the "ASP" (client) and "SG" (server) role are inside libosmo-sigtran, and hence the server could run inside the MSC without the need of an external stp (osmo-stp is just a thin wrapper with vty around libosmo-sigtran)</li>
</ul>
<p>Let's keep this as a reminder and create sub-tasks as ideas materialize more</p> OsmoMSC - Feature #1974 (New): VLR: high water mark on subscriber storagehttps://osmocom.org/issues/19742017-03-08T14:54:50Zneelsnhofmeyr@sysmocom.de
<p>In libvlr, we (will) keep every subscriber in RAM as long as it still has valid auth tuples (3GPP TS 33.102 Annex C.2.3).<br />Most subscribers will still have auth tuples left upon detaching, so we would store <strong>all</strong> subscribers.</p>
<p>Implement a configurable way of limiting the number of subscribers kept in RAM, e.g. a fixed max size.<br />If this is reached, discard those subscribers that have been inactive for the longest time first.</p> OsmoMSC - Feature #1973 (New): VLR: efficient subscriber lookuphttps://osmocom.org/issues/19732017-03-08T14:52:10Zneelsnhofmeyr@sysmocom.de
<p>In libvlr, we (will) keep every subscriber in RAM as long as it still has valid auth tuples (3GPP TS 33.102 Annex C.2.3).<br />Most subscribers will still have auth tuples left upon detaching, so we would store <strong>all</strong> subscribers.<br />Storing numerous subscribers in a linear list is inefficient, implement a hash table for faster access times.</p> OsmoBTS - Feature #1755 (New): osmo-bts-sysmo L1: unify hLayer3 handlinghttps://osmocom.org/issues/17552016-06-16T11:27:40Zneelsnhofmeyr@sysmocom.de
<p>In <a class="external" href="https://gerrit.osmocom.org/264">https://gerrit.osmocom.org/264</a> , some hLayer3 use was added.<br />However, some of the messages were already using hLayer3.</p>
<p>After the patch, the prim_init() sets a hLayer3 which is overwritten<br />shortly after that, so the other functionality is not affected by this patch.</p>
<p>Some functions to generate hLayer3 for a timeslot and similar already existed,<br />and also to retrieve a timeslot and similar back from a hLayer3 handle.</p>
<p>And also, the other hLayer3 functions use a "magic" byte<br />(like the most significant byte always set to 0xbb).</p>
<p>So in fact, we should have rejected this patch, and we should follow up with<br />a merger of my hLayer3 to the existing hLayer3 infrastructure.<br />The priority is low though, since no harm is done.</p>
<p>See:</p>
<ul>
<li>osmo-bts/src/osmo-bts-sysmo/oml.c
<ul>
<li>mph_send_activate_req()</li>
<li>mph_send_config_logchpar()</li>
<li>mph_send_config_ciphering()</li>
<li>mph_send_deactivate_req()</li>
</ul></li>
</ul> OsmoBTS - Feature #1576 (New): consider using hLayer2 as a pointer storagehttps://osmocom.org/issues/15762016-02-23T15:38:30Zlaforge
<p>This would speed up the l1if_hLayer_to_lchan lookup. Not sure if it's worth the extra risk.</p> SDR (Software Defined Radio) - Bug #1474 (New): USB Claim Interface Errorhttps://osmocom.org/issues/14742016-02-19T22:50:52Z
<p>Hello,</p>
<p>I have heard lots of good things about this code. I have currently tried it on Win7HP and <a class="wiki-page new" href="https://osmocom.org/projects/sdr/wiki/WinXPH">WinXPH</a> but in both cases I see the error below.</p>
<p>C:\SpectrumAnalyser>rtl_sdr /tmp/capture.bin -s 1.8e6 -f 392e6<br />Found 1 device(s):<br /> 0: ezcap USB 2.0 DVB-T/DAB/FM dongle</p>
<p>Using device 0: ezcap USB 2.0 DVB-T/DAB/FM dongle<br />usb_claim_interface error -12<br />Failed to open rtlsdr device #0.</p>
<p>C:\SpectrumAnalyser></p>
<p>----<br />Best regards, John.</p>