Strange behaviour of dump1090-fa on Orange Pi PC

@obj

  • If I install 32-bit (armhf) dump1090-fa on OrangePiPC from Flightaware repository, the CPU usage is about 40%
  • If I build 32-bit (armhf) dump1090-fa on OrangePiPC using source code cloned from https://github.com/flightaware/dump1090, the cpu usage is in the range of 95% to 105%, and cpu temprature jumps to 75°C.

This happens with both Armbian Bookworm and Armbian Trixie OS

I dont understand why.

Did you check with htop what processes are eating the cpu capacity ? That might give an indication.

Maybe the orangepi / armbian gcc is configured differently, or maybe there’s something going astray with the starch CPU detection etc. The upstream Raspbian gcc armhf package is not configured the same as upstream Debian..

Comparing the output of dump1090-fa --version (look at “detected runtime CPU features” and “selected DSP implementations”) would be a start. comparing gcc -v may also be useful.

1 Like

Thank you @obj for providing insight.

(1) Package built locally on OrangePiPC using Flightaware source code

pi@orangepipc:~$ dump1090-fa --version
-----------------------------------------------------------------------------
| dump1090 ModeS Receiver                                  dump1090-fa 10.2 |
| build options: ENABLE_RTLSDR                                              |
-----------------------------------------------------------------------------
  detected runtime CPU features: ARMv7+NEON+VFPv4
  selected DSP implementations:
    magnitude_uc8                            neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_uc8_aligned                    neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_power_uc8                      neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_power_uc8_aligned              neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_sc16                           neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_sc16_aligned                   neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_sc16q11                        neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_sc16q11_aligned                neon_vrsqrte_armv7a_neon_vfpv4_aligned
    mean_power_u16                           u32_armv7a_neon_vfpv4
    mean_power_u16_aligned                   u32_armv7a_neon_vfpv4_aligned
    count_above_u16                          neon_armv7a_neon_vfpv4
    count_above_u16_aligned                  neon_armv7a_neon_vfpv4

(2) Package from Flightaware repository:

pi@orangepipc:~$ dump1090-fa --version
-----------------------------------------------------------------------------
| dump1090 ModeS Receiver                                  dump1090-fa 10.2 |
| build options: ENABLE_RTLSDR ENABLE_BLADERF ENABLE_HACKRF ENABLE_LIMESDR  |
-----------------------------------------------------------------------------
  detected runtime CPU features: ARMv7+NEON+VFPv4
  selected DSP implementations:
    magnitude_uc8                            neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_uc8_aligned                    neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_power_uc8                      neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_power_uc8_aligned              neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_sc16                           neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_sc16_aligned                   neon_vrsqrte_armv7a_neon_vfpv4_aligned
    magnitude_sc16q11                        neon_vrsqrte_armv7a_neon_vfpv4
    magnitude_sc16q11_aligned                neon_vrsqrte_armv7a_neon_vfpv4_aligned
    mean_power_u16                           u32_armv7a_neon_vfpv4
    mean_power_u16_aligned                   u32_armv7a_neon_vfpv4_aligned
    count_above_u16                          neon_armv7a_neon_vfpv4
    count_above_u16_aligned                  neon_armv7a_neon_vfpv4


(3) GCC version on OrangePiPC
gcc version 14.2.0 (Debian 14.2.0-19)

pi@orangepipc:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-linux-gnueabihf/14/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Debian 14.2.0-19' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-14 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv7-a+fp --with-float=hard --with-mode=thumb --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.2.0 (Debian 14.2.0-19)

 

 

nothing obvious there, other than that’s a newer gcc than what we used to build the bookworm packages:

# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/12/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 12.2.0-14+rpi1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv6+fp --with-float=hard --disable-werror --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Raspbian 12.2.0-14+rpi1) 

Maybe armbian feeds in different optimization flags to the package build, or something. You’d have to build under the two environments and take a close look at the build logging.

1 Like

The armbian os bookworm & trixie for OrangePiPC are done by Armbian “community” developers and may be they have configured gcc differently.

On the other hand the Armbian for Raspberry Pi are done by armbian’s “mainstream” developers, and dump1090-fa built on this distro do NOT give any issue. I have written to microSD card, the Armbian forky for RPi model 4, and both dump1090-fa and piaware work perfectly OK.

Following two packages I built on RPi Model 4 using Flightaware source-code both work normally

(1) Raspberry Pi OS trixie
gcc version 14.2.0 (Debian 14.2.0-19)

pi@rpios-trixie:~ $ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/14/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 14.2.0-19' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr --with-gcc-major-version-only --program-suffix=-14 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-offload-targets=nvptx-none=/build/reproducible-path/gcc-14-14.2.0/debian/tmp-nvptx/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 14.2.0 (Debian 14.2.0-19)

 

pi@rpios-trixie:~ $ dump1090-fa --version
-----------------------------------------------------------------------------
| dump1090 ModeS Receiver                                  dump1090-fa 10.2 |
| build options: ENABLE_RTLSDR ENABLE_BLADERF ENABLE_HACKRF ENABLE_LIMESDR  |
-----------------------------------------------------------------------------
  detected runtime CPU features:
  selected DSP implementations:
    magnitude_uc8                            neon_vrsqrte_armv8_neon_simd
    magnitude_uc8_aligned                    neon_vrsqrte_armv8_neon_simd
    magnitude_power_uc8                      neon_vrsqrte_armv8_neon_simd
    magnitude_power_uc8_aligned              neon_vrsqrte_armv8_neon_simd
    magnitude_sc16                           neon_vrsqrte_armv8_neon_simd
    magnitude_sc16_aligned                   neon_vrsqrte_armv8_neon_simd
    magnitude_sc16q11                        neon_vrsqrte_armv8_neon_simd
    magnitude_sc16q11_aligned                neon_vrsqrte_armv8_neon_simd
    mean_power_u16                           u32_armv8_neon_simd
    mean_power_u16_aligned                   u32_armv8_neon_simd
    count_above_u16                          generic_armv8_neon_simd
    count_above_u16_aligned                  generic_armv8_neon_simd_aligned

(2) Armbian OS forky for Raspberry Pi Model 4
gcc version 15.2.0 (Debian 15.2.0-12)

pi@armbian-forky:~$ cat /proc/cpuinfo | grep Model
Model           : Raspberry Pi 4 Model B Rev 1.1
pi@armbian-forky:~$
pi@armbian-forky:~$ lsb_release -sc
forky
pi@armbian-forky:~$
pi@armbian-forky:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/aarch64-linux-gnu/15/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 15.2.0-12' --with-bugurl=file:///usr/share/doc/gcc-15/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust,cobol,algol68 --prefix=/usr --with-gcc-major-version-only --program-suffix=-15 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-offload-targets=nvptx-none=/build/reproducible-path/gcc-15-15.2.0/debian/tmp-nvptx/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=4
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 15.2.0 (Debian 15.2.0-12)

 

pi@armbian-forky:~$ dump1090-fa --version
-----------------------------------------------------------------------------
| dump1090 ModeS Receiver                                  dump1090-fa 10.2 |
| build options: ENABLE_RTLSDR ENABLE_BLADERF ENABLE_HACKRF ENABLE_LIMESDR  |
-----------------------------------------------------------------------------
  detected runtime CPU features:
  selected DSP implementations:
    magnitude_uc8                            neon_vrsqrte_armv8_neon_simd
    magnitude_uc8_aligned                    neon_vrsqrte_armv8_neon_simd
    magnitude_power_uc8                      neon_vrsqrte_armv8_neon_simd
    magnitude_power_uc8_aligned              neon_vrsqrte_armv8_neon_simd
    magnitude_sc16                           neon_vrsqrte_armv8_neon_simd
    magnitude_sc16_aligned                   neon_vrsqrte_armv8_neon_simd
    magnitude_sc16q11                        neon_vrsqrte_armv8_neon_simd
    magnitude_sc16q11_aligned                neon_vrsqrte_armv8_neon_simd
    mean_power_u16                           u32_armv8_neon_simd
    mean_power_u16_aligned                   u32_armv8_neon_simd
    count_above_u16                          generic_armv8_neon_simd
    count_above_u16_aligned                  generic_armv8_neon_simd_aligned