--- /dev/null
+Title: rtlsdr-scanner, software defined radio frequency scanner for Linux - nice free software
+Tags: english, debian, nice free software
+Date: 2023-03-07 23:10
+
+<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>