$ apt-cache search osmosdr gr-osmosdr - Gnuradio blocks from the OsmoSDR project libgnuradio-osmosdr0.2.0t64 - Gnuradio blocks from the OsmoSDR project - library libosmosdr-dev - Software defined radio support for OsmoSDR hardware (development files) libosmosdr0 - Software defined radio support for OsmoSDR hardware (library) osmo-sdr - Software defined radio support for OsmoSDR hardware (tools) soapyosmo-common0.8 - Use gr-osmosdr drivers with SoapySDR (common files) soapysdr-module-osmosdr - OsmoSDR device support for SoapySDR (default version) soapysdr0.8-module-osmosdr - OsmoSDR device support for SoapySDR
gr-osmosdr - generic gnuradio SDR I/O block While originally being developed for the OsmoSDR hardware, this block has become a generic SDR I/O block for a variety of SDR hardware, including:
FUNcube Dongle / Pro+ through gr-funcube RTL2832U based DVB-T dongles through librtlsdr RTL-TCP spectrum server (see librtlsdr project) MSi2500 based DVB-T dongles through libmirisdr SDRplay RSP through SDRplay API library gnuradio .cfile input through libgnuradio-blocks RFSPACE SDR-IQ, SDR-IP, NetSDR (incl. X2 option), Cloud-IQ, and CloudSDR AirSpy Wideband Receiver through libairspy CCCamp 2015 rad1o Badge through libhackrf Great Scott Gadgets HackRF through libhackrf Nuand LLC bladeRF through libbladeRF library Ettus USRP Devices through Ettus UHD library Fairwaves UmTRX through Fairwaves' module for UHD Fairwaves XTRX through libxtrx Red Pitaya SDR transceiver http://bazaar.redpitaya.com FreeSRP through libfreesrp By using the gr-osmosdr block you can take advantage of a common software API in your application(s) independent of the underlying radio hardware.
$ apt-cache search librtlsdr librtlsdr-dev - Software defined radio receiver for Realtek RTL2832U (development) librtlsdr2 - Software defined radio receiver for Realtek RTL2832U (library)
+
2025.09.24
ubuntu 22.04 에 librtlsdr0 를 설치해서 정상적으로 gqrx 작동하는 것 확인함
$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=835580k,nr_inodes=208895,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=196088k,mode=755) /dev/mmcblk0p1 on / type ext4 (rw,relatime,errors=remount-ro,commit=120) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=3927) hugetlbfs on /dev/hugepages type hugetlbfs (rw,nosuid,nodev,relatime,pagesize=2M) debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime) mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime) configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime) fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime) tmpfs on /tmp type tmpfs (rw,nosuid,relatime) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) /dev/mmcblk0p1 on /var/log.hdd type ext4 (rw,relatime,errors=remount-ro,commit=120) /dev/zram1 on /var/log type ext4 (rw,nosuid,nodev,noexec,relatime,discard) sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=196084k,nr_inodes=49021,mode=700,uid=1000,gid=1000) portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
commit=120은 2분에 한번 강제 저장인데
그렇다고 해서 무조건 또 저장이 되는건 아니라고
그런데. relatime 해놓고 commit 하면 sd 카드 수명 팍팍 갉아 먹는거 아닌가?
$ aplay -L null Discard all samples (playback) or generate zero samples (capture) default Playback/recording through the PulseAudio sound server lavrate Rate Converter Plugin Using Libav/FFmpeg Library samplerate Rate Converter Plugin Using Samplerate Library speexrate Rate Converter Plugin Using Speex Resampler jack JACK Audio Connection Kit oss Open Sound System pulse PulseAudio Sound Server speex Plugin using Speex DSP (resample, agc, denoise, echo, dereverb) upmix Plugin for channel upmix (4,6,8) vdownmix Plugin for channel downmix (stereo) with a simple spacialization hw:CARD=ODROIDC2,DEV=0 ODROID-C2, Direct hardware device without any conversions plughw:CARD=ODROIDC2,DEV=0 ODROID-C2, Hardware device with all software conversions sysdefault:CARD=ODROIDC2 ODROID-C2, Default Audio Device dmix:CARD=ODROIDC2,DEV=0 ODROID-C2, Direct sample mixing device usbstream:CARD=ODROIDC2 ODROID-C2 USB Stream Output
odroid c2 / armbian 쓰는데 termiantor 가 기본 터미널이라 쓸데없이(!) 폰트만 커서 마음에 안들어
변경하는법 찾음. 단축키로는 x-terminal-emulator가 실행되고
이게 연결된 프로그램으로 넘겨주는 듯 한데, gnome-terminal이 간결하고 짱이지 ㅋ
$ sudo update-alternatives --config x-terminal-emulator 대체 항목 x-terminal-emulator에 대해 (/usr/bin/x-terminal-emulator 제공) 2개 선택이 있습니다.
선택 경로 우선순� 상태 ------------------------------------------------------------ * 0 /usr/bin/terminator 50 자동 모드 1 /usr/bin/gnome-terminal.wrapper 40 수동 모드 2 /usr/bin/terminator 50 수동 모드
Press <enter> to keep the current choice[*], or type selection number: 1 update-alternatives: using /usr/bin/gnome-terminal.wrapper to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in manual mode
$ cmake ../ -- The CXX compiler identification is GNU 13.3.0 -- The C compiler identification is GNU 13.3.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Build type not specified: defaulting to release. CMake Error at CMakeLists.txt:87 (find_package): By not providing "FindGnuradio.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Gnuradio", but CMake did not find one.
Could not find a package configuration file provided by "Gnuradio" (requested version 3.9) with any of the following names:
GnuradioConfig.cmake gnuradio-config.cmake
Add the installation prefix of "Gnuradio" to CMAKE_PREFIX_PATH or set "Gnuradio_DIR" to a directory containing one of the above files. If "Gnuradio" provides a separate development package or SDK, be sure it has been installed.
$ sudo apt-get install gnuradio-dev
[ 30%] Building CXX object lib/CMakeFiles/gnuradio-lora.dir/message_socket_sink_impl.cc.o /home/minimonk/src/gr-lora/lib/decoder_impl.cc:28:10: fatal error: liquid/liquid.h: No such file or directory 28 | #include <liquid/liquid.h> | ^~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [lib/CMakeFiles/gnuradio-lora.dir/build.make:76: lib/CMakeFiles/gnuradio-lora.dir/decoder_impl.cc.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:234: lib/CMakeFiles/gnuradio-lora.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
$ apt-cache search liquid libliquid-dev - signal processing library for software defined radio (development files) libliquid1 - signal processing library for software defined radio liquidctl - CLI and Python drivers for AIO liquid coolers and other devices liquidprompt - adaptative prompt for bash & zsh liquidsoap - audio streaming language liquidsoap-doc - Documentation for Liquidsoap liquidsoap-mode - Emacs mode for editing Liquidsoap code liquidwar - truly original multiplayer wargame liquidwar-data - data files for Liquid War liquidwar-server - Liquid War server ruby-jekyll-gist - Liquid tag for displaying GitHub Gists in Jekyll sites ruby-jekyll-include-cache - Jekyll plugin to cache the rendering of Liquid includes ruby-liquid - Ruby library for rendering safe HTML and email templates ruby-liquid-c - liquid performance extension in C
[ 45%] Linking CXX shared library libgnuradio-lora.so /usr/bin/ld: cannot find -llog4cpp: No such file or directory collect2: error: ld returned 1 exit status make[2]: *** [lib/CMakeFiles/gnuradio-lora.dir/build.make:205: lib/libgnuradio-lora.so.1.0.0.0] Error 1 make[1]: *** [CMakeFiles/Makefile2:234: lib/CMakeFiles/gnuradio-lora.dir/all] Error 2 make: *** [Makefile:146: all] Error 2
$ apt-cache search log4cpp liblog4cpp-doc - C++ library for flexible logging (documentation) liblog4cpp5-dev - C++ library for flexible logging (development) liblog4cpp5v5 - C++ library for flexible logging (runtime)
$ sudo apt-get install liblog4cpp5-dev
+
2025.09.22
gr-lora
s$ ./lora_receive_file_nogui.py [?] Download test LoRa signal to decode? [y/N] y [+] Downloading https://research.edm.uhasselt.be/probyns/lora/usrp-868.1-sf7-cr4-bw125-crc-0.sigmf-data -> ./example-trace.sigmf-data . . . . . . . . . . . . . . . . . . [+] Downloading https://research.edm.uhasselt.be/probyns/lora/usrp-868.1-sf7-cr4-bw125-crc-0.sigmf-meta -> ./example-trace.sigmf-meta . . [+] Configuration: 868.1 MHz, SF 7, CR 4/8, BW 125 kHz, prlen 8, crc on, implicit off [+] Decoding. You should see a header, followed by 'deadbeef' and a CRC 5 times. Bits (nominal) per symbol: 3.5 Bins per symbol: 128 Samples per symbol: 1024 Decimation: 8 vmcircbuf_prefs::get :info: /home/minimonk/.gnuradio/prefs/vmcircbuf_default_factory failed to open: bad true, fail true, eof true 04 90 40 de ad be ef 70 0d (p) 04 90 40 de ad be ef 70 0d (p) 04 90 40 de ad be ef 70 0d (p) 04 90 40 de ad be ef 70 0d (p) 04 90 40 de ad be ef 70 0d (p) [+] Done
Generating: "/home/minimonk/src/gr-lora/apps/lora_receive_realtime.py" >>> Warning: This flow graph contains a throttle block and another rate limiting block, e.g. a hardware source or sink. This is usually undesired. Consider removing the throttle block. >>> Warning: The block 'blocks_throttle_0' is deprecated.
qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in "" [INFO] [UHD] linux; GNU C++ version 13.2.0; Boost_108300; UHD_4.6.0.0+ds1-5.1ubuntu0.24.04.1 Traceback (most recent call last): File "/home/minimonk/src/gr-lora/apps/lora_receive_realtime.py", line 234, in <module> main() File "/home/minimonk/src/gr-lora/apps/lora_receive_realtime.py", line 212, in main tb = top_block_cls() ^^^^^^^^^^^^^^^ File "/home/minimonk/src/gr-lora/apps/lora_receive_realtime.py", line 77, in __init__ self.uhd_usrp_source_0 = uhd.usrp_source( ^^^^^^^^^^^^^^^^ RuntimeError: LookupError: KeyError: No devices found for -----> Empty Device Address