openwebrx demo badly broken - not suitable at all for beginers

openwebrx demo badly broken - not suitable at all for beginers

[main]     rmmod: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin file '/lib/modules/4.15.0-45-generic/modules.builtin.bin'
[main]     rmmod: ERROR: Module dvb_usb_rtl28xxu is not currently loaded
[main]     
[main]     Cloning into 'openwebrx'...
[main]     
[main]     Cloning into 'csdr'...
[main]     
[main]     ***** compiling libcsdr *****
[main]     NOTE: you may have to manually edit Makefile to optimize for your CPU (especially if you compile on ARM, please edit PARAMS_NEON).
[main]     Auto-detected optimization parameters: -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE
[main]     rm -f dumpvect*.vect
[main]     gcc -std=gnu99 -O3 -ffast-math -fdump-tree-vect-details -dumpbase dumpvect -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE fft_fftw.c libcsdr_wrapper.c  -g -lm -lrt -lfftw3f -DUSE_FFTW -DLIBCSDR_GPL -DUSE_IMA_ADPCM -Wno-unused-result -fpic -shared -Wl,-soname,libcsdr.so.0.15 -o libcsdr.so.0.15
[main]     gcc: error: unrecognized command line option ‘-mfloat-abi=hard’
[main]     
[main]     gcc: error: unrecognized command line option ‘-mfpu=neon’
[main]     
[main]     gcc: error: unrecognized command line option ‘-mvectorize-with-neon-quad’
[main]     
[main]     make: *** [Makefile:57: libcsdr.so] Error 1
[main]     
[main]     NOTE: you may have to manually edit Makefile to optimize for your CPU (especially if you compile on ARM, please edit PARAMS_NEON).
[main]     Auto-detected optimization parameters: -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE
[main]     rm -f dumpvect*.vect
[main]     gcc -std=gnu99 -O3 -ffast-math -fdump-tree-vect-details -dumpbase dumpvect -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE fft_fftw.c libcsdr_wrapper.c  -g -lm -lrt -lfftw3f -DUSE_FFTW -DLIBCSDR_GPL -DUSE_IMA_ADPCM -Wno-unused-result -fpic -shared -Wl,-soname,libcsdr.so.0.15 -o libcsdr.so.0.15
[main]     gcc: error: unrecognized command line option ‘-mfloat-abi=hard’
[main]     
[main]     gcc: error: unrecognized command line option ‘-mfpu=neon’
[main]     
[main]     gcc: error: unrecognized command line option ‘-mvectorize-with-neon-quad’
[main]     
[main]     make: *** [Makefile:57: libcsdr.so] Error 1
[main]     
[main]     Removing intermediate container 0d4c3a9f2297
[main]     The command '/usr/src/app/install.sh' returned a non-zero code: 2
[Info]     Uploading images
[Success]  Successfully uploaded images
[Error]    Some services failed to build:
[Error]      Service: main
[Error]        Error: The command '/usr/src/app/install.sh' returned a non-zero code: 2
[Info]     Built on arm03
[Error]    Not deploying release.
Remote build failed

maybe just change blog

to say it DOES NOT work with Pi 4

doesnt work on rasp pi 3 either

[main]     ***** disabling DVB-T driver *****
[main]     rmmod: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin file '/lib/modules/4.15.0-45-generic/modules.builtin.bin'
[main]     rmmod: ERROR: Module dvb_usb_rtl28xxu is not currently loaded
[main]     
[main]     Cloning into 'openwebrx'...
[main]     
[main]     Cloning into 'csdr'...
[main]     
[main]     ***** compiling libcsdr *****
[main]     NOTE: you may have to manually edit Makefile to optimize for your CPU (especially if you compile on ARM, please edit PARAMS_NEON).
[main]     Auto-detected optimization parameters: -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE
[main]     rm -f dumpvect*.vect
[main]     gcc -std=gnu99 -O3 -ffast-math -fdump-tree-vect-details -dumpbase dumpvect -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE fft_fftw.c libcsdr_wrapper.c  -g -lm -lrt -lfftw3f -DUSE_FFTW -DLIBCSDR_GPL -DUSE_IMA_ADPCM -Wno-unused-result -fpic -shared -Wl,-soname,libcsdr.so.0.15 -o libcsdr.so.0.15
[main]     In file included from libcsdr_wrapper.c:1:
[main]     libcsdr.c:320:9: note: #pragma message: Manual NEON optimizations are ON: we have a faster shift_addfast_cc now.
[main]      #pragma message "Manual NEON optimizations are ON: we have a faster shift_addfast_cc now."
[main]              ^~~~~~~
[main]     
[main]     In file included from libcsdr_wrapper.c:1:
[main]     libcsdr.c:468:9: note: #pragma message: Manual NEON optimizations are ON: we have a faster fir_decimate_cc now.
[main]      #pragma message "Manual NEON optimizations are ON: we have a faster fir_decimate_cc now."
[main]              ^~~~~~~
[main]     
[main]     ./parsevect dumpvect*.vect
[main]     /bin/sh: 1: ./parsevect: not found
[main]     
[main]     make: [Makefile:59: libcsdr.so] Error 127 (ignored)
[main]     
[main]     gcc -std=gnu99 -O3 -ffast-math -fdump-tree-vect-details -dumpbase dumpvect -mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad -funsafe-math-optimizations -Wformat=0 -DNEON_OPTS -DCSDR_DISABLE_FFTW_MEASURE csdr.c -g -lm -lrt -lfftw3f -DUSE_FFTW -DLIBCSDR_GPL -DUSE_IMA_ADPCM -L. -lcsdr -Wno-unused-result -o csdr
[main]     In file included from /usr/include/arm-linux-gnueabihf/bits/libc-header-start.h:33,
[main]                      from /usr/include/stdio.h:27,
[main]                      from csdr.c:34:
[main]     /usr/include/features.h:184:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
[main]      # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
[main]        ^~~~~~~
[main]     
[main]     csdr.c:163:6: warning: trigraph ??< ignored, use -trigraphs to enable [-Wtrigraphs]
[main]      "    ??<jump_to_function_docs_on_github>\n"

Hi there, thank you for your feedback. It looks like one of the upstream dependencies may have changed recently causing the build failure. We’ve raised this internally with our team and we’ll advise once we have a working solution.

1 Like

Hello,
It looks like the errors you received were due to using a 64 bit OS. Some OpenWebRX dependencies are not 64 bit-compatible. When initially creating the application, please choose the Raspberry Pi 3 (not 64 bit) device. If you are using a Pi4, choose that when you add a device to the application in the subsequent step. I just tested the OpenWebRX project on a Pi3 and Pi4 using the 32 bit OS and it built/ran as expected. (You may still see a few compiler errors/warnings but it should build and upload successfully.) Let us know if this still does not work for you.
I agree that we could have been clearer about that on the blog post so it will be updated!

1 Like

great but still a bit confused ! are you saying build a pi 3 32 bit image for a pi 4 ?

also if i create a pi 4 app i can only build pi 3 64 bit images so do i need to create a pi 3 app to build pi 3 images for pi 4s ???

and why the distinction at app level between pi 3 and pi 4 if pi 4 apps let you build pi 3 images anyway ???

sorry im getting more and more confused

@osde8info hey there, welcome to the forums, and thanks for trying the project.

I have just pushed an update to the project on Github which will now allow it to build for the Raspberry Pi 4 out of the box, but I don’t have an SDR to hand to test full functionality; we’ll probably have to wait for @alanb128 there unless you can test it on your hardware.

To explain a bit how it works: the Pi 4 runs 64-bit balenaOS which is really quite awesome as it then allows you to run both 64-bit and 32-bit containers side by side on the same device. This is great if you have a Pi 3 app that runs a 32-bit container as you can simply move it to the Pi 4 without any extra work to make it run on the 64-bit OS.

In the Dockerfile.template for this project on line 1 you’ll see %%BALENA_MACHINE_NAME%%. This Dockerfile will apply to all device types unless there is a more precise match. When the project is built, this variable is replaced with the device type of your application, in the case of a Pi 4 app, it would be replaced with raspberrypi4-64 which would cause the project to be built with a 64-bit container, which can sometimes cause issues with the dependencies and libraries used if it was only meant for 32-bit.

What I’ve just done is add Dockerfile.aarch64 which will apply to the Raspberry Pi 4, and in it you’ll see that I have set the device type to raspberrypi3. This means when you push this project to a Pi 4 application now, the builders will automatically build the 32-bit Pi 3 version of the app and run it on the Pi 4.

Give it a try and let us know if it works for you! :slight_smile:

1 Like

so to recap i need to create a pi 4 app and a pi 4 device (sd) then clone websdr repo and balena push and everything should work ? will let you know what happens in an hour or so

btw i still think this should never have been posted on the blog as a beginners project and overriding pi 4 arch with pi 3 still seems an additional hack that will confuse beginners

bbtw the blog needs more beginner projects that do not require purchase of extra hw such as screens lights sdrs etc

@osde8info yes that should work, I have confirmed that it builds successfully here but as I mentioned I don’t have an SDR to test - do let us know if it works for you.

The setup of architecture is additional configuration that was perhaps missed in the original post (if that is indeed the fix), it doesn’t mean that it should never have been posted, it’s a very simple thing to address in the project, and we can simply update it. That’s how we can improve and develop our projects going forward, thanks to users like yourself who give it a try and let us know when there are issues.

The perfect project if you don’t want to use any additional hardware is balenaSound, this works with just a Pi and nothing else. Do you have ideas for any others that don’t need hardware? We’re always on the look out for those too! :slight_smile:

1 Like

im working on it ! and will try the signage example next as i DO have a spare monitor

Great! Keep us posted with how you get on. We’re still working through all of our projects to add support for the Pi 4; a lot of them are done but there are a lot still to do. We are working on adding Pi 4 support to balenaDash this week in fact!

1 Like

will have to boot up another xubuntu vm instead of wsl

sorry this will add an hour delay to finding out if websdr now works

As a default for new forum users we have a limit of 3 topics in the first 24 hours since signing up, so that’s the rate limit you’ll be hitting - you haven’t been blocked. Let us know how it goes with the CLI.

I can confirm that the project now builds for Raspberry Pi 4 out of the box with the addition of Chris’ changes and works with the RTL-SDR. Let us know if you run into any problems!

1 Like

i can also confirm pi 4 os now runs the modified pi 3 websdr image fine