Manual Pi Build Issue

Hi everyone!

Finally got around to trying to build the Pi package manually. It looks like the system got through most of the script. But it ended up with the following:

The following packages will be DOWNGRADED:

flask 3.0.0-pyhd8ed1ab_0 → 2.1.3-pyhd8ed1ab_0
werkzeug 3.0.1-pyhd8ed1ab_0 → 2.0.2-pyhd8ed1ab_0

Downloading and Extracting Packages

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
./krakensdr_aarch64_install_doa.sh: line 87: git: command not found
cp: cannot stat ‘krakensdr_doa/util/kraken_doa_start.sh’: No such file or directory
cp: cannot stat ‘krakensdr_doa/util/kraken_doa_stop.sh’: No such file or directory

howdy!@raspberrypi:~ $ uname -a
Linux raspberrypi 6.1.0-rpi6-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.58-1+rpt2 (2023-10-27) aarch64 GNU/Linux

It appears that the script failed on some simple steps quite early on.

I would try run the script again from scratch, but if it happens again, I think the only way to troubleshoot it is to run through each command in the script line by line.

Got some time while on vaca to mess with this. Rebuilt the Pi from the Pi imager - used the 64 bit non-desktop Pi OS image that was built in early December 2023.

piadmin@raspberrypi:~ $ sudo apt update
Hit:1 Index of /debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 Index of /debian bookworm InRelease
Hit:4 Index of /debian bookworm-updates InRelease
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
6 packages can be upgraded. Run ‘apt list --upgradable’ to see them.
piadmin@raspberrypi:~ $ sudo apt -y install build-essential git cmake libusb-1.0-0-dev lsof libzmq3-dev clang php -cli nodejs gpsd libfftw3-3 libfftw3-dev
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
E: Unable to locate package libfftw3-3

Please download the latest script, we updated it a couple of weeks ago as the “-3” package appears to have been deprecated in favor of the “-bin” package.

Done. Grabbed the new script. I’m using the Pi OS 64 bit version. Should I be using something else?

There were a lot of warnings as follows:

/home/piadmin/kfr/include/kfr/dft/impl/dft-impl.hpp:369:13: warning: loop not unrolled: the optimizer was unable to perform the requested transformation; the transformation might be disabled or specified as part of an unsupported transformation ordering [-Wpass-failed=transform-warning]

In file included from /home/piadmin/kfr/include/kfr/dft/cache.hpp:28:
/home/piadmin/kfr/include/kfr/dft/fft.hpp:148:21: error: no member named ‘avx512’ in ‘kfr::cpu_t’
case cpu_t::avx512:
~~~~~~~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:150:21: error: no member named ‘avx2’ in ‘kfr::cpu_t’
case cpu_t::avx2:
~~~~~~~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:152:21: error: no member named ‘avx’ in ‘kfr::cpu_t’
case cpu_t::avx:
~~~~~~~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:154:21: error: no member named ‘sse42’ in ‘kfr::cpu_t’
case cpu_t::sse42:
~~~~~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:155:21: error: no member named ‘sse41’ in ‘kfr::cpu_t’
case cpu_t::sse41:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:157:21: error: no member named ‘ssse3’ in ‘kfr::cpu_t’
case cpu_t::ssse3:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:159:21: error: no member named ‘sse3’ in ‘kfr::cpu_t’
case cpu_t::sse3:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:322:21: error: no member named ‘avx512’ in ‘kfr::cpu_t’
case cpu_t::avx512:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:324:21: error: no member named ‘avx2’ in ‘kfr::cpu_t’
case cpu_t::avx2:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:326:21: error: no member named ‘avx’ in ‘kfr::cpu_t’
case cpu_t::avx:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:328:21: error: no member named ‘sse42’ in ‘kfr::cpu_t’
case cpu_t::sse42:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:329:21: error: no member named ‘sse41’ in ‘kfr::cpu_t’
case cpu_t::sse41:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:331:21: error: no member named ‘ssse3’ in ‘kfr::cpu_t’
case cpu_t::ssse3:
~^
/home/piadmin/kfr/include/kfr/dft/fft.hpp:333:21: error: no member named ‘sse3’ in ‘kfr::cpu_t’
case cpu_t::sse3:
~^
In file included from /home/piadmin/kfr/capi/capi.cpp:29:
In file included from /home/piadmin/kfr/include/kfr/dft.hpp:27:
/home/piadmin/kfr/include/kfr/dft/convolution.hpp:159:5: error: no member named ‘avx512’ in ‘kfr::cpu_t’
CMT_MULTI_PROTO_GATE(make_convolve_filter(taps, block_size))
^

fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [capi/CMakeFiles/kfr_capi.dir/build.make:76: capi/CMakeFiles/kfr_capi.dir/capi.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:205: capi/CMakeFiles/kfr_capi.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
–2024-01-05 12:59:36-- https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.s h
Resolving github.com (github.com)… 140.82.114.3
Connecting to github.com (github.com)|140.82.114.3|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: https://github.com/conda-forge/miniforge/releases/download/23.3.1-1/Miniforge3-Linux-x86_64.sh [following]
–2024-01-05 12:59:37-- https://github.com/conda-forge/miniforge/releases/download/23.3.1-1/Miniforge3-Linux-x86_64 .sh
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response… 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/221584272/6b843e17-f2d2-49f7- 8fca-702997a3762d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240105%2Fus-east-1%2Fs3 %2Faws4_request&X-Amz-Date=20240105T175926Z&X-Amz-Expires=300&X-Amz-Signature=6b4fec95c556e39831893e862c1669fbb788e9 d675090f892fc406b63c313361&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=221584272&response-content-dispositi on=attachment%3B%20filename%3DMiniforge3-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following ]
–2024-01-05 12:59:37-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/221584272/6b84 3e17-f2d2-49f7-8fca-702997a3762d?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240105%2 Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240105T175926Z&X-Amz-Expires=300&X-Amz-Signature=6b4fec95c556e39831893e8 62c1669fbb788e9d675090f892fc406b63c313361&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=221584272&response-co ntent-disposition=attachment%3B%20filename%3DMiniforge3-Linux-x86_64.sh&response-content-type=application%2Foctet-st ream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)… 185.199.110.133, 185.199.111.133, 185.199 .108.133, …
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 87007851 (83M) [application/octet-stream]
Saving to: ‘Miniforge3-Linux-x86_64.sh’

PREFIX=/home/piadmin/miniforge3
Unpacking payload …
./Miniforge3-Linux-x86_64.sh: 312: /home/piadmin/miniforge3/conda.exe: Exec format error
./krakensdr_x86_install_doa.sh: line 47: conda: command not found
./krakensdr_x86_install_doa.sh: line 48: conda: command not found
./krakensdr_x86_install_doa.sh: line 49: conda: command not found
./krakensdr_x86_install_doa.sh: line 51: conda: command not found
./krakensdr_x86_install_doa.sh: line 52: conda: command not found
./krakensdr_x86_install_doa.sh: line 54: conda: command not found
./krakensdr_x86_install_doa.sh: line 55: conda: command not found
./krakensdr_x86_install_doa.sh: line 56: conda: command not found
./krakensdr_x86_install_doa.sh: line 57: conda: command not found
Cloning into ‘heimdall_daq_fw’…
remote: Enumerating objects: 1372, done.
remote: Counting objects: 100% (617/617), done.
remote: Compressing objects: 100% (182/182), done.
remote: Total 1372 (delta 450), reused 515 (delta 394), pack-reused 755
Receiving objects: 100% (1372/1372), 1.97 MiB | 9.33 MiB/s, done.
Resolving deltas: 100% (878/878), done.
gcc -Wall -std=gnu99 -march=native -O2 -I. -c -o ini.o ini.c
gcc -Wall -std=gnu99 -march=native -O2 -I. -c -o log.o log.c
gcc -Wall -std=gnu99 -march=native -O2 -I. -c -o iq_header.o iq_header.c
gcc -Wall -std=gnu99 -march=native -O2 -I. -c -o sh_mem_util.o sh_mem_util.c
gcc -Wall -std=gnu99 -march=native -O2 -I. log.o ini.o iq_header.o -o rtl_daq.out rtl_daq.c -lpthread -lzmq -L. -lr tlsdr -lusb-1.0
gcc -Wall -std=gnu99 -march=native -O2 -I. sh_mem_util.o log.o ini.o iq_header.o -o rebuffer.out rebuffer.c -lrt -lm
gcc -Wall -std=gnu99 -march=native -O2 -I. sh_mem_util.o log.o ini.o iq_header.o -o iq_server.out iq_server.c -lrt
gcc -Wall -std=gnu99 -march=native -O2 -I. -DARM_NEON -c fir_decimate.c -o fir_decimate.o
gcc -Wall -std=gnu99 -march=native -O2 -I. fir_decimate.o sh_mem_util.o log.o ini.o iq_header.o -o decimate.out -lrt -L. -lNE10 -lm
/usr/bin/ld: cannot find -lNE10: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:42: decimate_arm_neon] Error 1
./krakensdr_x86_install_doa.sh: line 72: conda: command not found
./krakensdr_x86_install_doa.sh: line 73: conda: command not found
./krakensdr_x86_install_doa.sh: line 74: conda: command not found
./krakensdr_x86_install_doa.sh: line 75: conda: command not found
./krakensdr_x86_install_doa.sh: line 76: conda: command not found
./krakensdr_x86_install_doa.sh: line 77: conda: command not found
./krakensdr_x86_install_doa.sh: line 79: pip3: command not found
./krakensdr_x86_install_doa.sh: line 80: pip3: command not found
./krakensdr_x86_install_doa.sh: line 81: pip3: command not found
./krakensdr_x86_install_doa.sh: line 82: pip3: command not found
./krakensdr_x86_install_doa.sh: line 83: pip3: command not found
./krakensdr_x86_install_doa.sh: line 84: pip3: command not found
./krakensdr_x86_install_doa.sh: line 86: conda: command not found
./krakensdr_x86_install_doa.sh: line 87: conda: command not found
./krakensdr_x86_install_doa.sh: line 89: conda: command not found
./krakensdr_x86_install_doa.sh: line 90: conda: command not found
./krakensdr_x86_install_doa.sh: line 91: conda: command not found
Cloning into ‘krakensdr_doa’…
remote: Enumerating objects: 3319, done.
remote: Counting objects: 100% (728/728), done.
remote: Compressing objects: 100% (127/127), done.
remote: Total 3319 (delta 640), reused 637 (delta 601), pack-reused 2591
Receiving objects: 100% (3319/3319), 1.75 MiB | 7.33 MiB/s, done.
Resolving deltas: 100% (1565/1565), done.

Looks like you might have downloaded the x86 script by mistake? It’s trying to install KFR which is only for x86 systems. If you are installing on a Pi make sure that you are using the aarch64 script.

Ah crap.

You’re right. I ran the wrong script. This is my first day working with computers! :wink:

Let me go reimage it and try again.

WOOHOO! I think it finished.

I saw this happen a number of times and it slowed installation down quite a bit:

Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.

This also happened:

Looking in indexes: Simple index, piwheels - Simple index
Collecting dash_bootstrap_components==1.1.0
Downloading https://www.piwheels.org/simple/dash-bootstrap-components/dash_bootstrap_components-1.1.0-py3-none-any.whl (210 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 210.6/210.6 kB 235.0 kB/s eta 0:00:00
Collecting dash>=2.0.0 (from dash_bootstrap_components==1.1.0)
Downloading https://www.piwheels.org/simple/dash/dash-2.14.2-py3-none-any.whl (10.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━╺━━━━━━━━━━━━ 6.9/10.2 MB 139.0 kB/s eta 0:00:24
ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
dash>=2.0.0 from https://www.piwheels.org/simple/dash/dash-2.14.2-py3-none-any.whl#sha256=7898dcdc57095b7acdcb7e4bfb876cf9e011aabec12adadd5f22537df0a169b9 (from dash_bootstrap_components==1.1.0):
Expected sha256 7898dcdc57095b7acdcb7e4bfb876cf9e011aabec12adadd5f22537df0a169b9
Got 63362a6a0b9b8031b4a2c24beaa4f493112bd647964ef44832dfc13c27afc0bf

The solving environment failure is normal. Not sure why you’re getting those other errors, but I guess it’s all working now?

I had a few minutes to mess with it tonight. Upon connecting everything up, I couldn’t connect to port 8080.

Saw that it looked like I needed to go start everything up on the Pi. Ran out of time to do that today.

Does the build script not setup everything to start on boot?

The script cannot set up autoboot. Setting that up can depend on the particular flavor of Linux being used and most people installing to their main laptop/system probably don’t want it autobooting at startup.

Here’s what happens when I try to start it:

piadmin@mbl-pi-krakensdr-01:~/krakensdr_doa $ sudo ./kraken_doa_start.sh
./kraken_doa_start.sh: line 4: conda: command not found
./kraken_doa_start.sh: line 5: conda: command not found
Shut down DAQ chain …
Config file check bypassed [ WARNING ]
kernel.sched_rt_runtime_us = -1
Traceback (most recent call last):
File “/home/piadmin/krakensdr_doa/heimdall_daq_fw/Firmware/fir_filter_designer .py”, line 16, in
from scipy import signal
ModuleNotFoundError: No module named ‘scipy’
DAQ chain not started!

Remote Control is DISABLED
To enable Remote Control please install miniserve and jq.
Then change ‘en_remote_control’ setting in _share/settings.json file to ‘true’.
Finally, apply settings by restarting the software.

Starting KrakenSDR Direction Finder
Web Interface Running at 0.0.0.0:8080
Data Out Server Running at 0.0.0.0:8081

Did you restart after running the script?

If you did then something’s still gone wrong with your install and it’s failed early on, and was unable to install conda.

At this stage you can only try troubleshoot by running the commands in the script line by line, until you see what line is causing the error on your system.

Finally had a day to sit down and mess with this, and I think I figured out the problem.

TL;DR - I do not use “krakenrf” as my home directory. I use “piadmin”.

I started with a fresh, fresh, fresh install of PiOS this morning. And during the install script, I watched everything very carefully for errors. Aside from a few notification warnings, everything appeared to install correctly.

Digging into the issue a little, it looks like the system could not find the conda binary. And I think, perhaps the eval code in the start.sh file isn’t working correctly to find it.

I went and found the binary and tried running conda activate kraken and that seemed to work.

So, I commented out the eval code and added:

“source /home/piadmin/miniforge3/etc/profile.d/conda.sh”

Rebooted and ran the start script and in the end, I ended up with:

Have a coffee watch radar

Remote Control is DISABLED
To enable Remote Control please install miniserve and jq.
Then change ‘en_remote_control’ setting in _share/settings.json file to ‘true’.
Finally, apply settings by restarting the software.

Starting KrakenSDR Direction Finder
Web Interface Running at 0.0.0.0:8080
Data Out Server Running at 0.0.0.0:8081

And success hitting 0.0.0.:8080 in a web browser!

What is the Remote Control DISABLED blurb about? Is that something I need to do?

For the pre-built Pi image, what does the startup look like? Is it configured in systemd? If so, are those service scripts available?

I’ve got systemd calling the startup script, but that doesn’t seem to be working.

Remote Control Disabled is irrelevant to most users. It’s something that can be enabled for specific users.

The Pi4 image uses systemd as well to autoboot by running the kraken_doa_start.sh script. One important thing to note is that for autoboot you have to edit kraken_doa_start.sh and uncomment the “source /home/krakenrf/miniforge3/etc/profile.d/conda.sh” line, and comment out "eval “$(conda shell.bash hook)”.

Thanks Carl.

I had reached out to a couple of Unix buddies who helped me tweak my node-services-doo-hickie script for systemd.

I needed to add:

RemainAfterExit=true
Type=oneshot

It starts up perfectly now. In case someone finds this via Google, here’s my script:

$ cat /lib/systemd/system/kraken_startup.service

[Unit]
Description=Kraken Startup
After=multi-user.target

[Service]
ExecStart=/home/piadmin/krakensdr_doa/kraken_doa_start.sh
RemainAfterExit=true
Type=oneshot

[Install]
WantedBy=multi-user.target