Problems I encountered with Linux-based software, with or without resolutions
rxseger / linuxproblems Goto Github PK
View Code? Open in Web Editor NEWProblems I encountered with Linux-based software
Problems I encountered with Linux-based software
Problems I encountered with Linux-based software, with or without resolutions
rf $ ssh pi rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav - | play -
Found 2 device(s):
0: available=Yes, driver=rtlsdr, label=Generic RTL2832U OEM :: 2, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=0, serial=2, tuner=Rafael Micro R820T,
1: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 00000001, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=1, serial=00000001, tuner=,
^C
rf $ ssh pi rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav - | play -
0: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 2, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=0, serial=2, tuner=,
1: available=No, driver=rtlsdr, label=Generic RTL2832U OEM :: 00000001, manufacturer=Realtek, product=RTL2838UHIDIR, rtl=1, serial=00000001, tuner=,
SSHing in shows the old rx_fm process I launched over SSH is still running:
pi@raspberrypi:~ $ ps ax|grep rx_fm
9773 ? Ssl 0:10 rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav -
9802 ? Ssl 0:00 rx_fm -d driver=rtlsdr,serial=2 -f 97.7M -M wbfm -E wav -
9824 pts/5 S+ 0:00 grep --color=auto rx_fm
workaround: killall rx_fm
, but how can I prevent this from happening in the first place?
Leftover processes are especially problematic with rtl/rx tools, because they maintain control of the USB device (via libusb), making it unavailable to other processes.
Raspbian/Debian's repository has an outdated hackrf from 2014:
pi@raspberrypi:~/hackrf/host/build $ sudo apt search hackrf
Sorting... Done
Full Text Search... Done
gqrx-sdr/stable 2.3.1-2 armhf
Software defined radio receiver
gr-osmosdr/stable 0.1.3-2 armhf
Gnuradio blocks from the OsmoSDR project
hackrf/stable,now 2014.08.1-1 armhf [installed]
Software defined radio peripheral
libhackrf-dev/stable 2014.08.1-1 armhf
Software defined radio peripheral
libhackrf0/stable,now 2014.08.1-1 armhf [installed,automatic]
Software defined radio peripheral
no newer version found when using 'sudo apt update' then apt list --upgradable
.
wouldn't be a problem but https://github.com/pothosware/SoapyHackRF requires a newer version:
pi@raspberrypi:~/SoapyHackRF $ make
Scanning dependencies of target HackRFSupport
[ 25%] Building CXX object CMakeFiles/HackRFSupport.dir/HackRF_Registation.cpp.o
In file included from /home/pi/SoapyHackRF/HackRF_Registation.cpp:22:0:
/home/pi/SoapyHackRF/SoapyHackRF.hpp:356:2: error: ‘hackrf_device_list_t’ does not name a type
hackrf_device_list_t * _list;
^
/home/pi/SoapyHackRF/SoapyHackRF.hpp:371:2: error: ‘transceiver_mode_t’ does not name a type
transceiver_mode_t _current_mode;
^
/home/pi/SoapyHackRF/HackRF_Registation.cpp: In function ‘std::vector<std::map<std::basic_string<char>, std::basic_string<char> > > find_HackRF(const Kwargs&)’:
/home/pi/SoapyHackRF/HackRF_Registation.cpp:33:2: error: ‘hackrf_device_list_t’ was not declared in this scope
hackrf_device_list_t *list;
^
/home/pi/SoapyHackRF/HackRF_Registation.cpp:33:24: error: ‘list’ was not declared in this scope
hackrf_device_list_t *list;
^
/home/pi/SoapyHackRF/HackRF_Registation.cpp:35:27: error: ‘hackrf_device_list’ was not declared in this scope
list =hackrf_device_list();
^
/home/pi/SoapyHackRF/HackRF_Registation.cpp:45:44: error: ‘hackrf_device_list_open’ was not declared in this scope
hackrf_device_list_open(list, i, &device);
^
/home/pi/SoapyHackRF/HackRF_Registation.cpp:84:30: error: ‘hackrf_device_list_free’ was not declared in this scope
hackrf_device_list_free(list);
^
CMakeFiles/HackRFSupport.dir/build.make:54: recipe for target 'CMakeFiles/HackRFSupport.dir/HackRF_Registation.cpp.o' failed
make[2]: *** [CMakeFiles/HackRFSupport.dir/HackRF_Registation.cpp.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/HackRFSupport.dir/all' failed
make[1]: *** [CMakeFiles/HackRFSupport.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2
iMac (Retina 5K, 27-inch)
Ubuntu 16.04 LTS amd64
The desktop appears to be using the full resolution of the retina display (5120 x 2880), making the text microscopically unreadable and hitting the mouse targets (to resize/move windows, etc.) challenging. Compared to OS X running on the same hardware, where the display is scaled properly.
References:
Raspberry Pi 3 with Raspbian OS 2016-05-27-raspbian-jessie.img
Headless setup and VNC
sudo apt install gnuradio
sudo apt install gr-osmosdr
gnuradio-companion
Generate, or run python top_block.py
after generating
:~ $ python top_block.py
linux; GNU C++ version 4.9.1; Boost_105500; UHD_003.007.003-0-unknown
Xlib: extension "RANDR" missing on display ":2.0".
Using Volk machine: neon_hardfp_orc
Traceback (most recent call last):
File "top_block.py", line 211, in <module>
main()
File "top_block.py", line 205, in main
tb = top_block_cls()
File "top_block.py", line 114, in __init__
peak_hold=False,
File "/usr/lib/python2.7/dist-packages/gnuradio/wxgui/fftsink_gl.py", line 126, in __init__
persist_alpha=persist_alpha,
File "/usr/lib/python2.7/dist-packages/gnuradio/wxgui/fft_window.py", line 277, in __init__
self.plotter = plotter.channel_plotter(self)
File "/usr/lib/python2.7/dist-packages/gnuradio/wxgui/plotter/channel_plotter.py", line 49, in __init__
grid_plotter_base.__init__(self, parent, MIN_PADDING)
File "/usr/lib/python2.7/dist-packages/gnuradio/wxgui/plotter/grid_plotter_base.py", line 50, in __init__
plotter_base.__init__(self, parent)
File "/usr/lib/python2.7/dist-packages/gnuradio/wxgui/plotter/plotter_base.py", line 94, in __init__
wx.glcanvas.GLCanvas.__init__(self, parent, wx.ID_ANY, attribList=attribList); # Specifically use the CTOR which does NOT create an implicit GL context
File "/usr/lib/python2.7/dist-packages/wx-3.0-gtk2/wx/glcanvas.py", line 106, in __init__
_glcanvas.GLCanvas_swiginit(self,_glcanvas.new_GLCanvas(*args, **kwargs))
wx._core.PyAssertionError: C++ assertion "ok" failed at ../src/unix/glx11.cpp(442) in GetGLXVersion(): GLX version not found
iMac (Retina 5K, 27-inch, Late 2014)
Ubuntu 16.04 LTS amd64
booted using Mac Linux USB Loader (MLUL)
The system boots, showing the textual display, but as soon as it attempts to switch to graphical video, the screen goes black.
Raspberry Pi 3 with Raspbian OS 2016-05-27-raspbian-jessie.img, headless setup and VNC
sudo apt install gnuradio
sudo apt install gr-osmosdr
gnuradio-companion
Create a trivial flowgraph with an Audio Sink:
attempt to run it. Fails with an ALSA error:
Generating: "/home/pi/top_block.py"
Executing: "/home/pi/top_block.py"
linux; GNU C++ version 4.9.1; Boost_105500; UHD_003.007.003-0-unknown
Xlib: extension "RANDR" missing on display ":2.0".
Using Volk machine: neon_hardfp_orc
gr-osmosdr 0.1.3 (0.1.3) gnuradio 3.7.5
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy
FATAL: No supported devices found to pick from.
Trying to fill up 1 missing channel(s) with null source(s).
This is being done to prevent the application from crashing
due to gnuradio bug #528.
gr::log :INFO: audio source - Audio sink arch: alsa
gr::log :ERROR: audio_alsa_sink0 - [default]: set_channels failed: Invalid argument
Traceback (most recent call last):
File "/home/pi/top_block.py", line 204, in <module>
tb.Start(True)
File "/usr/lib/python2.7/dist-packages/grc_gnuradio/wxgui/top_block_gui.py", line 73, in Start
self.start()
File "/usr/lib/python2.7/dist-packages/gnuradio/gr/top_block.py", line 104, in start
top_block_start_unlocked(self._tb, max_noutput_items)
File "/usr/lib/python2.7/dist-packages/gnuradio/gr/runtime_swig.py", line 4726, in top_block_start_unlocked
return _runtime_swig.top_block_start_unlocked(*args, **kwargs)
RuntimeError: check topology failed on audio_alsa_sink(20) using ninputs=1, noutputs=0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.