usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

Raspberry Pi 4B and B205mini

AL
Arthur Lobo
Wed, Sep 30, 2020 12:00 AM

Hi All:

I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the procedure at:
https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi
However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
while building UHD.
I also set the CPU Governor and Thread Priority Scheduling according to:
https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks

Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini on a headless RPI (X forwarding to
a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate on the display) of once per second and at 10 MSPS freezes.

Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages.

I also overclocked the RPi4B to 2.2 GHz with the same result.

Any suggestions to get higher sampling rates with the RPi4B-B205mini setup?

Thanks.

Arthur

Hi All: I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the procedure at: https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../ while building UHD. I also set the CPU Governor and Thread Priority Scheduling according to: https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini on a headless RPI (X forwarding to a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate on the display) of once per second and at 10 MSPS freezes. Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages. I also overclocked the RPi4B to 2.2 GHz with the same result. Any suggestions to get higher sampling rates with the RPi4B-B205mini setup? Thanks. Arthur
MD
Marcus D. Leech
Wed, Sep 30, 2020 12:17 AM

On 09/29/2020 08:00 PM, Arthur Lobo via USRP-users wrote:

Hi All:

I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the
procedure at:
https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi
However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake
-DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
while building UHD.
I also set the CPU Governor and Thread Priority Scheduling according to:
https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks

Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini
on a headless RPI (X forwarding to
a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate
on the display) of once per second and at 10 MSPS freezes.

Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages.

I also overclocked the RPi4B to 2.2 GHz with the same result.

Any suggestions to get higher sampling rates with the RPi4B-B205mini
setup?

Thanks.

Arthur

You could try adding:

num_recv_frames=128

to your device arguments in the USRP source.

But also, "headless" display over ethernet is often a serious bottleneck.

What happens if you just use "uhd_fft" rather than your own flow-graph?

What does "benchmark_rate" have to say about how fast you can actually
move samples into the RPI4?

On 09/29/2020 08:00 PM, Arthur Lobo via USRP-users wrote: > Hi All: > > I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the > procedure at: > https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi > However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake > -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../ > while building UHD. > I also set the CPU Governor and Thread Priority Scheduling according to: > https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks > > Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini > on a headless RPI (X forwarding to > a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate > on the display) of once per second and at 10 MSPS freezes. > > Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages. > > I also overclocked the RPi4B to 2.2 GHz with the same result. > > Any suggestions to get higher sampling rates with the RPi4B-B205mini > setup? > > Thanks. > > Arthur > You could try adding: num_recv_frames=128 to your device arguments in the USRP source. But also, "headless" display over ethernet is often a serious bottleneck. What happens if you just use "uhd_fft" rather than your own flow-graph? What does "benchmark_rate" have to say about how fast you can actually move samples into the RPI4?
RE
Ron Economos
Wed, Sep 30, 2020 5:23 AM

Just for comparison, I can easily do 10 Msps with a Beagleboard X-15 and
B210. Also, benchmark_rate works fine at 20 Msps. This is without Thread
Priority Scheduling.

I'm also using X forwarding (with a wired 1 Gbps Ethernet connection).
The GUI Frequency Sink is sending 120 Mbps over the network.

Some items I'm using.

  1. "recv_frame_size=16360, num_recv_frames=128" in the UHD USRP Source block

Device Address.

  1. I'm building UHD with specific NEON flags. The Beagleboard X-15 has a
    2-core 32-bit armv7 processor at 1.5 GHz.

cmake -DCMAKE_CXX_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard
-mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi"
-DCMAKE_C_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4
-mtune=cortex-a15 -Wno-psabi" -DCMAKE_ASM_FLAGS:STRING="-march=armv7ve
-mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -g" ../

You could try some other options for the Pi4, especially if you're using
a 64-bit OS.

-march=armv8-a or -march=native

-mtune=cortex-a72

-mfpu=neon-fp-armv8

Unfortunately, I don't have a Pi4 test these options with.

Ron

On 9/29/20 17:00, Arthur Lobo via USRP-users wrote:

Hi All:

I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the
procedure at:
https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi
However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake
-DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
while building UHD.
I also set the CPU Governor and Thread Priority Scheduling according to:
https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks

Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini
on a headless RPI (X forwarding to
a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate
on the display) of once per second and at 10 MSPS freezes.

Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages.

I also overclocked the RPi4B to 2.2 GHz with the same result.

Any suggestions to get higher sampling rates with the RPi4B-B205mini
setup?

Thanks.

Arthur


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Just for comparison, I can easily do 10 Msps with a Beagleboard X-15 and B210. Also, benchmark_rate works fine at 20 Msps. This is without Thread Priority Scheduling. I'm also using X forwarding (with a wired 1 Gbps Ethernet connection). The GUI Frequency Sink is sending 120 Mbps over the network. Some items I'm using. 1) "recv_frame_size=16360, num_recv_frames=128" in the UHD USRP Source block Device Address. 2) I'm building UHD with specific NEON flags. The Beagleboard X-15 has a 2-core 32-bit armv7 processor at 1.5 GHz. cmake -DCMAKE_CXX_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_C_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_ASM_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -g" ../ You could try some other options for the Pi4, especially if you're using a 64-bit OS. -march=armv8-a or -march=native -mtune=cortex-a72 -mfpu=neon-fp-armv8 Unfortunately, I don't have a Pi4 test these options with. Ron On 9/29/20 17:00, Arthur Lobo via USRP-users wrote: > Hi All: > > I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the > procedure at: > https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi > However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake > -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../ > while building UHD. > I also set the CPU Governor and Thread Priority Scheduling according to: > https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks > > Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini > on a headless RPI (X forwarding to > a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate > on the display) of once per second and at 10 MSPS freezes. > > Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages. > > I also overclocked the RPi4B to 2.2 GHz with the same result. > > Any suggestions to get higher sampling rates with the RPi4B-B205mini > setup? > > Thanks. > > Arthur > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
AL
Arthur Lobo
Mon, Oct 5, 2020 3:53 AM

Hi Marcus/Ron:

I built gcc 10.1 from source with the following compiler options in the .cmake file:
set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a72" CACHE STRING "" FORCE)
(Ref "New Major Release of GCC" https://www.raspberrypi.org/forums/viewtopic.php?t=273441)
The other options "-mfpu=neon-fp-armv8 -mfloat-abi=hard" are not taken.
Benchmark_rate now runs at 30 MSPS for 900 sec (output as follows):

[INFO] [UHD] linux; GNU C++ version 10.1.0; Boost_107100; UHD_4.0.0.HEAD-0-g90ce6062
[00:00:00.022222] Creating the usrp device with: ...
[INFO] [B200] Detected Device: B205mini
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test...
[INFO] [B200] Register loopback test passed
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Actually got clock rate 16.000000 MHz.
Using Device: Single USRP:
Device: B-Series Device
Mboard 0: B205mini
RX Channel: 0
RX DSP: 0
RX Dboard: A
RX Subdev: FE-RX1
TX Channel: 0
TX DSP: 0
TX Dboard: A
TX Subdev: FE-TX1

[00:00:01.927367201] Setting device timestamp to 0...
[INFO] [B200] Asking for clock rate 30.000000 MHz...
[INFO] [B200] Actually got clock rate 30.000000 MHz.
[00:00:02.244691822] Testing receive rate 30.000000 Msps on 1 channels
[00:15:02.295329970] Benchmark complete.

Benchmark rate summary:
Num received samples:    27001584054
Num dropped samples:      0
Num overruns detected:    0
Num transmitted samples:  0
Num sequence errors (Tx): 0
Num sequence errors (Rx): 0
Num underruns detected:  0
Num late commands:        0
Num timeouts (Tx):        0
Num timeouts (Rx):        0

Done!

real 15m2.837s
user 3m35.016s
sys 10m32.291s

Benchmark_rate at 40 MSPS still causes ERROR_CODE_TIMEOUT messages after ~1 min 15 sec.

With Device Arguments set to "recv_frame_size=16360,num_recv_frames=128" and
Realtime Scheduling turned on in the Options Block, the GRC block approach with
Qt GUI Frequency Sink runs upto 40 MSPS with a 1024-point FFT spectrum display refresh rate of ~1 per sec with wireless X forwarding.
Connecting a monitor instead of X forwarding allows upto 35 MSPS (complex int16) with combined Qt GUI Frequency Sink and waterfall
and an update rate of ~3 per sec.

uhd_fft freezes at 8 MSPS.

Thanks.

Arthur


From: USRP-users usrp-users-bounces@lists.ettus.com on behalf of Ron Economos via USRP-users usrp-users@lists.ettus.com
Sent: Wednesday, September 30, 2020 5:23 AM
To: usrp-users@lists.ettus.com usrp-users@lists.ettus.com
Subject: Re: [USRP-users] Raspberry Pi 4B and B205mini

Just for comparison, I can easily do 10 Msps with a Beagleboard X-15 and B210. Also, benchmark_rate works fine at 20 Msps. This is without Thread Priority Scheduling.

I'm also using X forwarding (with a wired 1 Gbps Ethernet connection). The GUI Frequency Sink is sending 120 Mbps over the network.

Some items I'm using.

  1. "recv_frame_size=16360, num_recv_frames=128" in the UHD USRP Source block

Device Address.

  1. I'm building UHD with specific NEON flags. The Beagleboard X-15 has a 2-core 32-bit armv7 processor at 1.5 GHz.

cmake -DCMAKE_CXX_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_C_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_ASM_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -g" ../

You could try some other options for the Pi4, especially if you're using a 64-bit OS.

-march=armv8-a or -march=native

-mtune=cortex-a72

-mfpu=neon-fp-armv8

Unfortunately, I don't have a Pi4 test these options with.

Ron

On 9/29/20 17:00, Arthur Lobo via USRP-users wrote:
Hi All:

I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the procedure at:
https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi
However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../
while building UHD.
I also set the CPU Governor and Thread Priority Scheduling according to:
https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks

Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini on a headless RPI (X forwarding to
a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate on the display) of once per second and at 10 MSPS freezes.

Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages.

I also overclocked the RPi4B to 2.2 GHz with the same result.

Any suggestions to get higher sampling rates with the RPi4B-B205mini setup?

Thanks.

Arthur


USRP-users mailing list
USRP-users@lists.ettus.commailto:USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Hi Marcus/Ron: I built gcc 10.1 from source with the following compiler options in the .cmake file: set(CMAKE_CXX_FLAGS "-march=armv8-a -mtune=cortex-a72" CACHE STRING "" FORCE) (Ref "New Major Release of GCC" https://www.raspberrypi.org/forums/viewtopic.php?t=273441) The other options "-mfpu=neon-fp-armv8 -mfloat-abi=hard" are not taken. Benchmark_rate now runs at 30 MSPS for 900 sec (output as follows): [INFO] [UHD] linux; GNU C++ version 10.1.0; Boost_107100; UHD_4.0.0.HEAD-0-g90ce6062 [00:00:00.022222] Creating the usrp device with: ... [INFO] [B200] Detected Device: B205mini [INFO] [B200] Operating over USB 3. [INFO] [B200] Initialize CODEC control... [INFO] [B200] Initialize Radio control... [INFO] [B200] Performing register loopback test... [INFO] [B200] Register loopback test passed [INFO] [B200] Setting master clock rate selection to 'automatic'. [INFO] [B200] Asking for clock rate 16.000000 MHz... [INFO] [B200] Actually got clock rate 16.000000 MHz. Using Device: Single USRP: Device: B-Series Device Mboard 0: B205mini RX Channel: 0 RX DSP: 0 RX Dboard: A RX Subdev: FE-RX1 TX Channel: 0 TX DSP: 0 TX Dboard: A TX Subdev: FE-TX1 [00:00:01.927367201] Setting device timestamp to 0... [INFO] [B200] Asking for clock rate 30.000000 MHz... [INFO] [B200] Actually got clock rate 30.000000 MHz. [00:00:02.244691822] Testing receive rate 30.000000 Msps on 1 channels [00:15:02.295329970] Benchmark complete. Benchmark rate summary: Num received samples: 27001584054 Num dropped samples: 0 Num overruns detected: 0 Num transmitted samples: 0 Num sequence errors (Tx): 0 Num sequence errors (Rx): 0 Num underruns detected: 0 Num late commands: 0 Num timeouts (Tx): 0 Num timeouts (Rx): 0 Done! real 15m2.837s user 3m35.016s sys 10m32.291s Benchmark_rate at 40 MSPS still causes ERROR_CODE_TIMEOUT messages after ~1 min 15 sec. With Device Arguments set to "recv_frame_size=16360,num_recv_frames=128" and Realtime Scheduling turned on in the Options Block, the GRC block approach with Qt GUI Frequency Sink runs upto 40 MSPS with a 1024-point FFT spectrum display refresh rate of ~1 per sec with wireless X forwarding. Connecting a monitor instead of X forwarding allows upto 35 MSPS (complex int16) with combined Qt GUI Frequency Sink and waterfall and an update rate of ~3 per sec. uhd_fft freezes at 8 MSPS. Thanks. Arthur ________________________________ From: USRP-users <usrp-users-bounces@lists.ettus.com> on behalf of Ron Economos via USRP-users <usrp-users@lists.ettus.com> Sent: Wednesday, September 30, 2020 5:23 AM To: usrp-users@lists.ettus.com <usrp-users@lists.ettus.com> Subject: Re: [USRP-users] Raspberry Pi 4B and B205mini Just for comparison, I can easily do 10 Msps with a Beagleboard X-15 and B210. Also, benchmark_rate works fine at 20 Msps. This is without Thread Priority Scheduling. I'm also using X forwarding (with a wired 1 Gbps Ethernet connection). The GUI Frequency Sink is sending 120 Mbps over the network. Some items I'm using. 1) "recv_frame_size=16360, num_recv_frames=128" in the UHD USRP Source block Device Address. 2) I'm building UHD with specific NEON flags. The Beagleboard X-15 has a 2-core 32-bit armv7 processor at 1.5 GHz. cmake -DCMAKE_CXX_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_C_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -Wno-psabi" -DCMAKE_ASM_FLAGS:STRING="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a15 -g" ../ You could try some other options for the Pi4, especially if you're using a 64-bit OS. -march=armv8-a or -march=native -mtune=cortex-a72 -mfpu=neon-fp-armv8 Unfortunately, I don't have a Pi4 test these options with. Ron On 9/29/20 17:00, Arthur Lobo via USRP-users wrote: Hi All: I installed UHD 4.0 and GRC 3.9 on a Raspberry Pi 4B following the procedure at: https://wiki.gnuradio.org/index.php/InstallingGRFromSource_on_Raspberry_Pi However I did not specify DNEON_SIMD_ENABLE=OFF in the command cmake -DNEON_SIMD_ENABLE=OFF -DCMAKE_INSTALL_PREFIX=/usr/local ../ while building UHD. I also set the CPU Governor and Thread Priority Scheduling according to: https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks Testing USRP Source->Frequency Sink in GRC at 4 MSPS with a B205mini on a headless RPI (X forwarding to a NUC7i7BNH PC) over USB3 shows an update rate (spectrum refresh rate on the display) of once per second and at 10 MSPS freezes. Running benchmark_rate at 20 MSPS will cause ERROR_CODE_TIMEOUT messages. I also overclocked the RPi4B to 2.2 GHz with the same result. Any suggestions to get higher sampling rates with the RPi4B-B205mini setup? Thanks. Arthur _______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com<mailto:USRP-users@lists.ettus.com> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com