element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products & Partners
    Products & Partners
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RoadTests & Reviews
  • Products & Partners
  • More
RoadTests & Reviews
Review Blogs Raspberry Pi CM5 roadtest - system boot and RTL-SDR setup
  • Blogs
  • Forum
  • Documents
  • RoadTests
  • Reviews
  • Polls
  • Files
  • Members
  • Sub-Groups
  • More
  • Cancel
  • New
Join RoadTests & Reviews to participate - click to join for free!
  • Share
  • More
  • Cancel
  • Author Author: gpolder
  • Date Created: 16 Sep 2026 7:02 PM Date Created
  • Views 123 views
  • Likes 4 likes
  • Comments 2 comments
Related
Recommended
  • RoadTest
  • software defined radio
  • Raspberry Pi CM5

Raspberry Pi CM5 roadtest - system boot and RTL-SDR setup

gpolder
gpolder
16 Sep 2026
Raspberry Pi CM5 roadtest - system boot and RTL-SDR setup

System boot

Now that Linux is installed, it's time for the first boot. I'm using a Joy-IT RB-LCD10 touchscreen monitor with a resolution of 1280 × 800 pixels. During startup, the system asks for several configuration parameters, including the language and regional settings, keyboard layout, and Wi-Fi credentials.

Initially, I had some trouble connecting to Wi-Fi because of a weak signal. I hadn't realised that the Raspberry Pi was using the internal PCB antenna rather than the external antenna connected through the U.FL connector. This can be changed by adding dtparam=ant2 to the /boot/firmware/config.txt file.

After making this change and rebooting, the system completed the startup process in an impressive less than 18 seconds. This is significantly faster than I have experienced with any of my other Raspberry Pi systems, even with a headless installation.

image

Software updates

In the upper right corner of the screen we encounter a icon showing a arow pointiung down, this means updates are available. You will see this quite often when using the Raspberry Pi. After clicking the icon, a window pops up showing the new available software versions.

image

After pressing instal the software is dowloaded

image

And installed.

image

RTL-SDR

image

Now the system is up and running it's time to start with the initial roadtest plan, testing the capability of the CM5 for software defined radio (SDR) using the RTL-SDR and Ettus Research USRP B205mini-I hardware. I start with the most common and simple RTL-SDR V3. Due to the size of the RTL-SDR and the tight space on the usb connectors an USB extension cable was used to connect the RTL-SDR. Then to be sure eventual existing drivers were removed, and the most recent driver was built from the software repository at https://github.com/osmocom/rtl-sdr.

me@raspberrypi:~ $ sudo apt-get remove rtl-sdr
[sudo] password for me: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package 'rtl-sdr' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
me@raspberrypi:~ $ 
me@raspberrypi:~ $

No previous drivers seems to be installed, now clone the driver source code from the repository:

me@raspberrypi:~ $ git clone https://github.com/osmocom/rtl-sdr.git
Cloning into 'rtl-sdr'...
remote: Enumerating objects: 2065, done.
remote: Counting objects: 100% (775/775), done.
remote: Compressing objects: 100% (134/134), done.
remote: Total 2065 (delta 680), reused 651 (delta 641), pack-reused 1290 (from 2)
Receiving objects: 100% (2065/2065), 465.25 KiB | 8.78 MiB/s, done.
Resolving deltas: 100% (1469/1469), done.
me@raspberrypi:~ $ 

Install required libraries:

me@raspberrypi:~ $ 
me@raspberrypi:~ $ sudo apt install build-essential cmake usbutils libusb-1.0-0-dev
build-essential is already the newest version (12.12).
usbutils is already the newest version (1:018-2).
Installing:
  cmake  libusb-1.0-0-dev

Installing dependencies:
  cmake-data  libjsoncpp26  librhash1  libusb-1.0-doc

Suggested packages:
  cmake-doc  cmake-format  elpa-cmake-mode

Summary:
  Upgrading: 0, Installing: 6, Removing: 0, Not Upgrading: 0
  Download size: 12.7 MB
  Space needed: 51.1 MB / 20.1 GB available

Continue? [Y/n] 
Get:1 http://deb.debian.org/debian trixie/main arm64 cmake-data all 3.31.6-2 [2,268 kB]
Get:2 http://deb.debian.org/debian trixie/main arm64 libjsoncpp26 arm64 1.9.6-3 [72.9 kB]
Get:3 http://deb.debian.org/debian trixie/main arm64 librhash1 arm64 1.4.5-1 [129 kB]
Get:4 http://deb.debian.org/debian trixie/main arm64 cmake arm64 3.31.6-2 [9,906 kB]
Get:5 http://deb.debian.org/debian trixie/main arm64 libusb-1.0-0-dev arm64 2:1.0.28-1 [81.3 kB]
Get:6 http://deb.debian.org/debian trixie/main arm64 libusb-1.0-doc all 2:1.0.28-1 [205 kB]
Fetched 12.7 MB in 1s (9,423 kB/s)      
Selecting previously unselected package cmake-data.
(Reading database ... 142246 files and directories currently installed.)
Preparing to unpack .../0-cmake-data_3.31.6-2_all.deb ...
Unpacking cmake-data (3.31.6-2) ...
Selecting previously unselected package libjsoncpp26:arm64.
Preparing to unpack .../1-libjsoncpp26_1.9.6-3_arm64.deb ...
Unpacking libjsoncpp26:arm64 (1.9.6-3) ...
Selecting previously unselected package librhash1:arm64.
Preparing to unpack .../2-librhash1_1.4.5-1_arm64.deb ...
Unpacking librhash1:arm64 (1.4.5-1) ...
Selecting previously unselected package cmake.
Preparing to unpack .../3-cmake_3.31.6-2_arm64.deb ...
Unpacking cmake (3.31.6-2) ...
Selecting previously unselected package libusb-1.0-0-dev:arm64.
Preparing to unpack .../4-libusb-1.0-0-dev_2%3a1.0.28-1_arm64.deb ...
Unpacking libusb-1.0-0-dev:arm64 (2:1.0.28-1) ...
Selecting previously unselected package libusb-1.0-doc.
Preparing to unpack .../5-libusb-1.0-doc_2%3a1.0.28-1_all.deb ...
Unpacking libusb-1.0-doc (2:1.0.28-1) ...
Setting up libusb-1.0-doc (2:1.0.28-1) ...
Setting up libusb-1.0-0-dev:arm64 (2:1.0.28-1) ...
Setting up libjsoncpp26:arm64 (1.9.6-3) ...
Setting up cmake-data (3.31.6-2) ...
Setting up librhash1:arm64 (1.4.5-1) ...
Setting up cmake (3.31.6-2) ...
Processing triggers for man-db (2.13.1-1) ...
Processing triggers for libc-bin (2.41-12+rpt1+deb13u4) ...
me@raspberrypi:~ $ 

And compile the drivers:

me@raspberrypi:~ $ cd rtl-sdr
me@raspberrypi:~/rtl-sdr $ mkdir build
me@raspberrypi:~/rtl-sdr $ cd build
me@raspberrypi:~/rtl-sdr/build $ cmake -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON ../
-- The C compiler identification is GNU 14.2.0
-- 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.
-- Extracting version information from git describe...
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1")
-- Checking for module 'libusb-1.0'
--   Found libusb-1.0, version 1.0.28
-- Building with kernel driver detaching enabled
-- Building with usbfs zero-copy support disabled, use -DENABLE_ZEROCOPY=ON to enable
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Failed
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Building for version: 2.0.3 / 2.0.3
-- Using install prefix: /usr/local
-- Configuring done (0.8s)
-- Generating done (0.0s)
-- Build files have been written to: /home/me/rtl-sdr/build
me@raspberrypi:~/rtl-sdr/build $  
 me@raspberrypi:~/rtl-sdr/build $ sudo make install
[sudo] password for me: 
[  3%] Building C object src/CMakeFiles/rtlsdr.dir/librtlsdr.c.o
[  6%] Building C object src/CMakeFiles/rtlsdr.dir/tuner_e4k.c.o
[  9%] Building C object src/CMakeFiles/rtlsdr.dir/tuner_fc0012.c.o
[ 12%] Building C object src/CMakeFiles/rtlsdr.dir/tuner_fc0013.c.o
[ 15%] Building C object src/CMakeFiles/rtlsdr.dir/tuner_fc2580.c.o
[ 18%] Building C object src/CMakeFiles/rtlsdr.dir/tuner_r82xx.c.o
[ 21%] Linking C shared library librtlsdr.so
[ 21%] Built target rtlsdr
[ 25%] Building C object src/CMakeFiles/rtlsdr_static.dir/librtlsdr.c.o
[ 28%] Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_e4k.c.o
[ 31%] Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc0012.c.o
[ 34%] Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc0013.c.o
[ 37%] Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_fc2580.c.o
[ 40%] Building C object src/CMakeFiles/rtlsdr_static.dir/tuner_r82xx.c.o
[ 43%] Linking C static library librtlsdr.a
[ 43%] Built target rtlsdr_static
[ 46%] Building C object src/CMakeFiles/convenience_static.dir/convenience/convenience.c.o
[ 50%] Linking C static library libconvenience_static.a
[ 50%] Built target convenience_static
[ 53%] Building C object src/CMakeFiles/rtl_sdr.dir/rtl_sdr.c.o
[ 56%] Linking C executable rtl_sdr
[ 56%] Built target rtl_sdr
[ 59%] Building C object src/CMakeFiles/rtl_tcp.dir/rtl_tcp.c.o
[ 62%] Linking C executable rtl_tcp
[ 62%] Built target rtl_tcp
[ 65%] Building C object src/CMakeFiles/rtl_test.dir/rtl_test.c.o
[ 68%] Linking C executable rtl_test
[ 68%] Built target rtl_test
[ 71%] Building C object src/CMakeFiles/rtl_fm.dir/rtl_fm.c.o
[ 75%] Linking C executable rtl_fm
[ 75%] Built target rtl_fm
[ 78%] Building C object src/CMakeFiles/rtl_eeprom.dir/rtl_eeprom.c.o
[ 81%] Linking C executable rtl_eeprom
[ 81%] Built target rtl_eeprom
[ 84%] Building C object src/CMakeFiles/rtl_adsb.dir/rtl_adsb.c.o
[ 87%] Linking C executable rtl_adsb
[ 87%] Built target rtl_adsb
[ 90%] Building C object src/CMakeFiles/rtl_power.dir/rtl_power.c.o
[ 93%] Linking C executable rtl_power
[ 93%] Built target rtl_power
[ 96%] Building C object src/CMakeFiles/rtl_biast.dir/rtl_biast.c.o
[100%] Linking C executable rtl_biast
[100%] Built target rtl_biast
Install the project...
-- Install configuration: "Release"
-- Installing: /etc/udev/rules.d/rtl-sdr.rules
-- Installing: /usr/local/include/rtl-sdr.h
-- Installing: /usr/local/include/rtl-sdr_export.h
-- Installing: /usr/local/lib/librtlsdr.so.2.0.3
-- Installing: /usr/local/lib/librtlsdr.so.0
-- Installing: /usr/local/lib/librtlsdr.so
-- Installing: /usr/local/lib/librtlsdr.a
-- Installing: /usr/local/bin/rtl_sdr
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_sdr" to ""
-- Installing: /usr/local/bin/rtl_tcp
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_tcp" to ""
-- Installing: /usr/local/bin/rtl_test
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_test" to ""
-- Installing: /usr/local/bin/rtl_fm
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_fm" to ""
-- Installing: /usr/local/bin/rtl_eeprom
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_eeprom" to ""
-- Installing: /usr/local/bin/rtl_adsb
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_adsb" to ""
-- Installing: /usr/local/bin/rtl_power
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_power" to ""
-- Installing: /usr/local/bin/rtl_biast
-- Set non-toolchain portion of runtime path of "/usr/local/bin/rtl_biast" to ""
-- Installing: /usr/local/lib/pkgconfig/librtlsdr.pc
-- Installing: /usr/local/lib/cmake/rtlsdr/rtlsdrTargets.cmake
-- Installing: /usr/local/lib/cmake/rtlsdr/rtlsdrTargets-release.cmake
-- Installing: /usr/local/lib/cmake/rtlsdr/rtlsdrConfig.cmake
-- Installing: /usr/local/lib/cmake/rtlsdr/rtlsdrConfigVersion.cmake
me@raspberrypi:~/rtl-sdr/build $ 
me@raspberrypi:~/rtl-sdr/build $ sudo ldconfig
me@raspberrypi:~/rtl-sdr/build $ sudo vi /etc/modprobe.d/rtlsdr-blacklist.conf

Put in the folowing lines in /etc/modprobe.d/rtlsdr-blacklist.conf, to prevent the Linux DVB kernel driver from automatically claiming an RTL-SDR USB dongle:

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
blacklist dvb_usb_rtl2832u
blacklist dvb_usb_v2
blacklist dvb_core

After rebooting the system sudo reboot an pluging in the RTL-SDR it can be listed with lsusb

me@raspberrypi:~ $ lsusb
........
Bus 004 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
........
me@raspberrypi:~ $ 

Finally, I listened to the local broadcast news station on the FM band using rtl_fm. Since the IO board has no separate audio output and my HDMI display does not provide one either, I used a Bluetooth speaker. The raw audio output from rtl_fm was piped directly to pw-play. The parameters, particularly the sample rate and audio format, required some tweaking, but in the end the setup worked quite well.

me@raspberrypi:~ $ rtl_fm -f 98.9e6 -M wbfm -s 154000 -r 48000 - | pw-play -a --format=s16 --rate=48000 --channels=1 -
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Tuner gain set to automatic.
Tuned to 99185500 Hz.
Oversampling input by: 7x.
Oversampling output by: 1x.
Buffer size: 7.60ms
Exact sample rate is: 1078000.010281 Hz
Sampling at 1078000 S/s.
Output at 154000 Hz.
^CSignal caught, exiting!

User cancel, exiting...
me@raspberrypi:~ $ 

Bottom line

The CM5 proved more than capable of handling the RTL-SDR, from building and installing the latest drivers to receiving an FM broadcast and playing the demodulated audio through a Bluetooth speaker. The lack of a dedicated audio output on both the IO board and the display required a slightly different approach, but using rtl_fm together with pw-play provided a simple and effective solution. Overall, this was a good first demonstration of the CM5 as a compact SDR platform, and it leaves plenty of scope for further testing with more advanced SDR hardware and software.

  • Sign in to reply
  • michaelng1129
    michaelng1129 18 days ago

    Great! A very detailed sharing.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • Qbit
    Qbit 22 days ago

    Awesome write-up, that sub-18s boot time is impressive!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube