<link>https://people.skolelinux.org/pere/blog/</link>
<atom:link href="https://people.skolelinux.org/pere/blog/index.rss" rel="self" type="application/rss+xml" />
+ <item>
+ <title>rtlsdr-scanner, software defined radio frequency scanner for Linux - nice free software</title>
+ <link>https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html</link>
+ <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/rtlsdr_scanner__software_defined_radio_frequency_scanner_for_Linux____nice_free_software.html</guid>
+ <pubDate>Tue, 7 Mar 2023 23:10:00 +0100</pubDate>
+ <description><p>Today I finally found time to track down a useful radio frequency
+scanner for my software defined radio. Just for fun I tried to locate
+the radios used in the areas, and a good start would be to scan all
+the frequencies to see what is in use. I've tried to find a useful
+program earlier, but ran out of time before I managed to find a useful
+tool. This time I was more successful, and after a few false leads I
+found a description of
+<a href="https://www.kali.org/tools/rtlsdr-scanner/">rtlsdr-scanner
+over at the Kali site</a>, and was able to track down
+<a href="https://gitlab.com/kalilinux/packages/rtlsdr-scanner.git">the
+Kali package git repository</a> to build a deb package for the
+scanner. Sadly the package is missing from the Debian project itself,
+at least in Debian Bullseye. Two runtime dependencies,
+<a href="https://gitlab.com/kalilinux/packages/python-visvis.git">python-visvis</a>
+and
+<a href="https://gitlab.com/kalilinux/packages/python-rtlsdr.git">python-rtlsdr</a>
+had to be built and installed separately. Luckily '<tt>gbp
+buildpackage</tt>' handled them just fine and no further packages had
+to be manually built. The end result worked out of the box after
+installation.</p>
+
+<p>My initial scans for FM channels worked just fine, so I knew the
+scanner was functioning. But when I tried to scan every frequency
+from 100 to 1000 MHz, the program stopped unexpectedly near the
+completion. After some debugging I discovered USB software radio I
+used rejected frequencies above 948 MHz, triggering a unreported
+exception breaking the scan. Changing the scan to end at 957 worked
+better. I similarly found the lower limit to be around 15, and ended
+up with the following full scan:</p>
+
+<p><a href="https://people.skolelinux.org/pere/blog/images/2023-04-07-radio-freq-scanning.png"><img src="https://people.skolelinux.org/pere/blog/images/2023-04-07-radio-freq-scanning.png" width="100%"></a></p>
+
+<p>Saving the scan did not work, but exporting it as a CSV file worked
+just fine. I ended up with around 477k CVS lines with dB level for
+the given frequency.</p>
+
+<p>The save failure seem to be a missing UTF-8 encoding issue in the
+python code. Will see if I can find time to send a patch
+<a href="https://github.com/CdeMills/RTLSDR-Scanner/">upstream</a>
+later to fix this exception:</p>
+
+<pre>
+Traceback (most recent call last):
+ File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
+ save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
+ File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
+ handle.write(json.dumps(data, indent=4))
+TypeError: a bytes-like object is required, not 'str'
+Traceback (most recent call last):
+ File "/usr/lib/python3/dist-packages/rtlsdr_scanner/main_window.py", line 485, in __on_save
+ save_plot(fullName, self.scanInfo, self.spectrum, self.locations)
+ File "/usr/lib/python3/dist-packages/rtlsdr_scanner/file.py", line 408, in save_plot
+ handle.write(json.dumps(data, indent=4))
+TypeError: a bytes-like object is required, not 'str'
+</pre>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+</description>
+ </item>
+
<item>
<title>OpenSnitch available in Debian Sid and Bookworm</title>
<link>https://people.skolelinux.org/pere/blog/OpenSnitch_available_in_Debian_Sid_and_Bookworm.html</link>
would like to give more visibility. I'll stop here to avoid delaying
this post.</p>
-<p>As usual, if you use Bitcoin and want to show your support of my
-activities, please send Bitcoin donations to my address
-<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
-</description>
- </item>
-
- <item>
- <title>LinuxCNC translators life just got a bit easier</title>
- <link>https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</link>
- <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html</guid>
- <pubDate>Fri, 3 Jun 2022 21:10:00 +0200</pubDate>
- <description><p>Back in oktober last year, when I started looking at the
-<a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a> system, I
-proposed to change the documentation build system make life easier for
-translators. The original system consisted of independently written
-documentation files for each language, with no automated way to track
-changes done in other translations and no help for the translators to
-know how much was left to translated. By using
-<a href="https://po4a.org/">the po4a system</a> to generate POT and PO
-files from the English documentation, this can be improved. A small
-team of LinuxCNC contributors got together and today our labour
-finally payed off. Since a few hours ago, it is now possible to
-translate <a href="https://hosted.weblate.org/projects/linuxcnc/">the
-LinuxCNC documentation on Weblate</a>, alongside the program itself.</p>
-
-<p>The effort to migrate the documentation to use po4a has been both
-slow and frustrating. I am very happy we finally made it.</p>
-
<p>As usual, if you use Bitcoin and want to show your support of my
activities, please send Bitcoin donations to my address
<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>