CaribouLite, need help!

Introduction
I have just received the CaribouLite. It looks nice but I couldn’t get it to work yet. I need some help with the software.

Hardware
It is smaller than expected. Here are the main chips:


It fits nice on a Raspberry Pi 4B:


Some LEDs are awful bright and some a bit dim. Not sure if that is supposed to be so.

Software
The software is on github:

cd
git clone https://github.com/cariboulabs/cariboulite

Next it says to run a script sudo setup.sh gui but this script is nowhere found. Now I only need the SoapySDR driver and that is in the folder /home/pi/cariboulite/software/libcariboulite. It uses another github repository that needs to be cloned to:

cd
cd cariboulite/software/libcariboulite/src/iir
git clone https://github.com/berndporr/iir1.git .

Make sure to not forget the space and dot at the end of the second command! Now I had first build the iir filter:

cmake .
make
sudo make install

Next follow the build instructions of libcariboulite:

sudo apt install libsoapysdr-dev libpthread-stubs0-dev
sudo apt install cmake
mkdir build 
cd build
cmake ../
make
sudo make install
sudo ldconfig

This worked for me, but when I check the driver and hardware with:

sudo SoapySDRUtil --info
sudo SoapySDRUtil --probe

I get lots of debug info, and an error:

01-27 15:11:20.062  1603  1603 E CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:436 
The assembled modem is not AT86RF215 (product number: 0x35)

Panic! Something wrong with my hardware? No, it probably is only a newer version of the modem chip. Change line 434 of ~/cariboulite/software/libcariboulite/src/cariboulite_setup.c to:

if (modem_pn != 0x35)     // was 0x34

And rebuild the libcariboulite. Next the SoapySDRutil commands work when run with sudo to get root privileges:

Printing 'findCariboulite' Request:
[INFO] [UHD] linux; GNU C++ version 10.2.1 20210110; Boost_107400; UHD_3.15.0.0-4+b1satnogs1
Found Rafael Micro R820T tuner
Found device 0
  channel = S1G
  device_id = 0
  driver = Cariboulite
  label = CaribouLite S1G[5fb1ac1a]
  name = CaribouLite RPI Hat
  serial = 5fb1ac1a
  uuid = b7d99af1-2653-436e-be52-5004a8fca76e
  vendor = CaribouLabs LTD
  version = 0x0001

Found device 1
  channel = HiF
  device_id = 1
  driver = Cariboulite
  label = CaribouLite HiF[5fb1ac1b]
  name = CaribouLite RPI Hat
  serial = 5fb1ac1b
  uuid = b7d99af1-2653-436e-be52-5004a8fca76e
  vendor = CaribouLabs LTD
  version = 0x0001

Found device 2
  default_input = True
  default_output = True
  device_id = 0
  driver = audio
  label = PulseAudio

Found device 3
  driver = rtlsdr
  label = Generic RTL2832U OEM :: 00000001
  manufacturer = Realtek
  product = RTL2838UHIDIR
  serial = 00000001
  tuner = Rafael Micro R820T

Device 0 and 1 are the Cariboulite, device 2 is an audio device which I don’t recognize and device 3 is the normal rtlsdr I use.

But they don’t work when run as an normal user like pi and probably satnogs. I get the error:

: 01-28 08:22:30.118 20767 20767 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio
: 01-28 08:22:30.118 20767 20767 V initCheckPermitted@pigpio.c:7396
: +---------------------------------------------------------+
: |Sorry, you don't have permission to run this program.    |
: |Try running as root, e.g. precede the command with sudo. |
: +---------------------------------------------------------+

The lib pigpio appears to be only working when run as root. But I need to use it with satnogs and need to run it as the satnogs user. Also both sdr++ and gqrx don’t run with sudo, and complain about not being able to acces an audio driver. I can use some help to figure out how to solve this!

Thanks, Eelke.

1 Like

Good morning,

I guess there is a modules being loaded for this device, this is done via /etc/udev/rules.d/ and there we can modify the access.

Here is an airspy exmaple:

cat 52-airspy.rules 
ATTR{idVendor}=="1d50", ATTR{idProduct}=="60a1", SYMLINK+="airspy-%k", MODE="660", GROUP="plugdev"

When this device is activated, members of the group plugdev have rw access.

Now we need to know what udev is used for this CaribouLite SDR.

I hope this is useful

Jan PE0SAT

2 Likes

Thanks Jan for your help. I haven’t gotten much further with the rules yet. Saw some ioctl devices in the logs but that didn’t get me any further. I saw in the code that it tries to open /dev/mem/ and that only works for root, I guess. So I continued the root path.

I noticed in the youtube videos that they run sdrpp with sudo, and it sounded like a must! Mine crashed because of pulseaudio problems when run as root. Have solved this by running a second pulse audio as sudo in a second terminal:

sudo pulseaudio --system=true

Now in another terminal I can run sdr++:

sudo sdrpp

And it shows:

I can see both sdr devices that are associated with the two antenna plugs in the drop down menu! When I hit the play button the system becomes completely unresponsive after a few seconds. I could quickly copy the terminal log:

01-28 17:39:29.603  1593  1593 D CARIBOU_SMI_Main caribou_smi_run_pause_stream@caribou_smi.c:788 RUNNING SMI stream 3
01-28 17:39:29.603  1593  1593 E CARIBOU_SMI_Main caribou_smi_set_driver_streaming_state@caribou_smi.c:678 failed setting smi stream state (1)
[2023-01-28 17:39:29.603] [info] SoapyModule 'SoapySDR Source': Start!
01-28 17:39:29.603  1593  1593 D CARIBOULITE Setup cariboulite_setup_ext_ref@cariboulite_setup.c:296 Setting ext_ref = 32MHz
01-28 17:39:29.603  1593  1593 D RFFC5072 rffc507x_disable@rffc507x.c:247 rfc5071_disable
Set address to 12
01-28 17:39:29.603  1593  1593 D RFFC5072 rffc507x_enable@rffc507x.c:255 rfc5071_enable
01-28 17:39:29.604  1593  1653 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
01-28 17:39:29.604  1593  1593 I RFFC5072 rffc507x_print_stat@rffc507x.c:416 RFFC507X STAT: 0xB37C PLL_LOCK: 1, CT_CAL: 51, KV_CAL: 31, CT_CAL_FAIL: 0
01-28 17:39:29.604  1593  1593 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:705 Frequency setting CH: 1, Wanted: 2251525000.00 Hz, Set: 2251524998.98 Hz (MOD: 2494999808.00, MIX: 4746524806.98)
[INFO] setFrequency dir: 1, channel: 0, freq: 2251524998.98
[2023-01-28 17:39:29.604] [info] SoapyModule 'SoapySDR Source': Tune: 2251525000.0!
01-28 17:39:30.655  1593  2149 W CARIBOU_SMI_Main caribou_smi_thread@caribou_smi.c:638 caribou_smi_timeout

Where the first error is failed setting smi stream state, so no joy yet. There appears to be a problem with the smi (secondary memory interface) interface.

According the caribou_smi docs the following is according expectations:

pi@raspberrypi:~ $ lsmod | grep smi
bcm2835_smi_dev        16384  0
bcm2835_smi            20480  1 bcm2835_smi_dev

Made a small step, but no clue yet howto continue.

Looking into smi and found a couple of interesting articles, maybe you need to enable smi in /boot/config.txt like dtoverlay=smi there are also some GPIO pin options.

Source:

There are a couple of overlay files within the source:

smi-overlay.dts
cariboulite-overlay.dts
smi-dev-overlay.dts

This is looking promising GitHub - cariboulabs/cariboulite at develop_R1

1 Like

There is new information emerging on the Internet. I did enalbe the smi and smi-dev device in /boot/config.txt:

# Caribou lite
dtoverlay=smi
dtoverlay=smi-dev

And after a reboot ls -l /dev/smi shows:
crw------- 1 root root 237, 0 Jan 29 12:30 /dev/smi

Following the suggestions on twitter
https://twitter.com/cemaxecuter/status/1619643320694882304
I ran Soapy remote:

sudo SoapySDRServer --bind

And connected with gqrx using soapy=0,driver=remote,remote:driver=Cariboulite,device_id=1

There are my first samples!

In the mean time the developer has posted some news in the issues list:

It looks like we need to switch to the develop_R1 branch and try again. To be continued!

4 Likes

Hej,

mine should arrive today or tomorrow. Hope i’ll quicky find some time for it !

1 Like

Continuing with the branch develop_R1 as indicated by the developer here:

I used the directory /home/pi/projects to checkout cariboulite. There appears to be a hard path some whhere, which seems to make this directory structure mandatory.

It shows howto check out the development branch, update the submodules to include the missing iir library, and next we need to run the script sudo ./install.sh which is in the directory /home/pi/projects/cariboulite as indicated here: setup.sh error · Issue #28 · cariboulabs/cariboulite · GitHub

The script attempts to do everything that is needed to install the software but fails at compiling a software tool for production. I have just removed this tool from the make files. I have edited the file:
/home/pi/projects/cariboulite/software/libcariboulite/CmakeLists.txt and commented out every line containing the search string prod. Now theinstall scripts runs completely:

pi@raspberrypi:~/projects/cariboulite $ sudo ./install.sh 
-- CaribouLite Git Repo
M	software/libcariboulite/CMakeLists.txt
M	software/libcariboulite/src/caribou_smi/kernel/smi_stream_dev_gen.h
M	software/utils/CMakeCache.txt
M	software/utils/CMakeFiles/Makefile.cmake
M	software/utils/CMakeFiles/Makefile2
M	software/utils/CMakeFiles/TargetDirectories.txt
M	software/utils/CMakeFiles/generate_bin_blob.dir/build.make
M	software/utils/Makefile
M	software/utils/generate_bin_blob
Already on 'develop_R1'
Your branch is up to date with 'origin/develop_R1'.
-- Checking Soapy SDR installation (SoapySDRUtil)...
Found SoapySDRUtil at /usr/bin/SoapySDRUtil
-- Updating system and installing uild dependencies...
Hit:1 http://archive.raspberrypi.org/debian bullseye InRelease
Hit:2 http://ppa.launchpad.net/ansible/ansible/ubuntu focal InRelease                                  
Get:3 http://download.opensuse.org/repositories/home:/librespace:/satnogs/Raspbian_11 ./ InRelease [1,548 B]
Hit:4 http://raspbian.raspberrypi.org/raspbian bullseye InRelease                                      
Fetched 1,548 B in 1s (1,239 B/s)                          
Reading package lists... Done
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
git is already the newest version (1:2.30.2-1+deb11u1).
libncurses5-dev is already the newest version (6.2+20201114-2).
module-assistant is already the newest version (0.11.10).
pkg-config is already the newest version (0.29.2-1).
cmake is already the newest version (3.18.4-2+rpt1+rpi1+deb11u1).
raspberrypi-kernel-headers is already the newest version (1:1.20230106-1).
The following packages were automatically installed and are no longer required:
  comerr-dev ieee-data krb5-multidev libbsd-dev libfuse2 libgssrpc4 libkadm5clnt-mit12 libkadm5srv-mit12
  libkdb5-10 libkrb5-dev libmd-dev libnorm-dev libpgm-dev libsodium-dev python3-argcomplete
  python3-dnspython python3-httplib2 python3-libcloud python3-lockfile python3-netaddr python3-pycryptodome
  python3-requests-toolbelt python3-selinux
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-- Compiling main source...
---- 1. External Tools...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/projects/cariboulite/software/utils
[100%] Built target generate_bin_blob
---- 2. SMI kernel module...
mkdir: cannot create directory ‘build’: File exists
-- Kernel release: 5.15.84-v7l+
-- Kernel headers: /usr/src/linux-headers-5.15.84-v7l+
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/kernel/build
compiling module smi_stream_dev.ko...
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/kernel/build/smi_stream_dev.c:800:13: warning: ‘smi_stream_print_smi_inst’ defined but not used [-Wunused-function]
  800 | static void smi_stream_print_smi_inst(struct bcm2835_smi_instance* inst)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/kernel/build/smi_stream_dev.c:150:13: warning: ‘switch_address_channel’ defined but not used [-Wunused-function]
  150 | static void switch_address_channel(void)
      |             ^~~~~~~~~~~~~~~~~~~~~~
The code filename is path: '..', name: 'smi_stream_dev_gen', ext: 'h'
Built target smi_stream_dev
---- 3. Main software...
mkdir: cannot create directory ‘build’: File exists
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/projects/cariboulite/build
[ 17%] Built target iir
[ 26%] Built target datatypes
[ 30%] Built target ustimer
[ 34%] Built target caribou_prog
[ 36%] Built target caribou_fpga
[ 45%] Built target at86rf215
Scanning dependencies of target caribou_smi
[ 47%] Building C object src/caribou_smi/CMakeFiles/caribou_smi.dir/caribou_smi_modules.c.o
[ 50%] Linking C static library libcaribou_smi.a
[ 54%] Built target caribou_smi
[ 67%] Built target io_utils
[ 69%] Built target rffc507x
[ 73%] Built target hat
[ 78%] Built target zf_log
Scanning dependencies of target cariboulite
[ 80%] Building C object CMakeFiles/cariboulite.dir/src/cariboulite_setup.c.o
[ 80%] Building C object CMakeFiles/cariboulite.dir/src/cariboulite_events.c.o
[ 82%] Building C object CMakeFiles/cariboulite.dir/src/cariboulite_radios.c.o
[ 84%] Building C object CMakeFiles/cariboulite.dir/src/cariboulite_radio.c.o
[ 86%] Linking CXX static library libcariboulite.a
[ 86%] Built target cariboulite
Scanning dependencies of target cariboulite_app
[ 89%] Building C object CMakeFiles/cariboulite_app.dir/src/cariboulite_app.c.o
[ 91%] Building C object CMakeFiles/cariboulite_app.dir/src/app_menu.c.o
[ 91%] Linking CXX executable cariboulite_app
[ 91%] Built target cariboulite_app
Scanning dependencies of target fpgacomm
[ 93%] Building C object CMakeFiles/fpgacomm.dir/test/fpga_comm_test.c.o
[ 95%] Linking CXX executable test/fpgacomm
[ 95%] Built target fpgacomm
Scanning dependencies of target caribou_programmer
[ 97%] Building C object CMakeFiles/caribou_programmer.dir/test/caribou_programmer.c.o
[100%] Linking CXX executable test/caribou_programmer
[100%] Built target caribou_programmer
-- Environmental Settings...
---- 1. SPI configuration...
Okay :)
---- 2. ARM I2C Configuration...
Okay :)
---- 3. I2C-VC Configuration...
Okay :)
Done!

And it says it is Done! It has build quite some stuff. For instance a kernel module smi_stream_dev.ko, in /home/pi/projects/cariboulite/software/libcariboulite/src/caribou_smi/kernel/build.

And in /home/pi/projects/cariboulite/build it made an exectable: cariboulite_app. Running it with sudo ./cariboulite_app shows:

Isn’t that an cool ASCII art!

But now I am not sure what to with all this stuff that was build. The script has commented out sudo make install, but that is probably necessary. And what to do with the kernel module? Puzzling…

1 Like

Looking forward to your next update Eelke! Hoping for your success. GL

1 Like

Got mine as well. Not running out of the box. Wish i had time for it.

First quick test on master branch two days ago i managed to build libcariboulite and the SoapySDR module.

Running a SoapySDR probe only showed one of the claimed channels (the sub-GHz one):

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=Cariboulite
  hardware=Cariboulite Rev2
  device_id=0
  fpga_revision=1
  hardware_revision=0x0001
  product_name=CaribouLite RPI Hat
  serial_number=2387085822
  vendor_name=CaribouLabs LTD

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 1 Tx
  Timestamps: NO

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: NO
  Supports AGC: YES
  Stream formats: CS16, CS8, CF32, CF64
  Native format: CS16 [full-scale=4095]
  Antennas: TX/RX Sub1GHz
  Full gain range: [0, 69] dB
    Modem AGC gain range: [0, 69] dB
  Full freq range: [389.5, 510], [779, 1020] MHz
    RF freq range: [389.5, 510], [779, 1020] MHz
  Sample rates: 4 MSps
  Filter bandwidths: 0.02, 0.05, 0.1, 0.2, 0.25, 1, 1.25, 1.5625, 2, 2.5 MHz
  Sensors: RSSI, ENERGY, PLL_LOCK_MODEM

----------------------------------------------------
-- TX Channel 0
----------------------------------------------------
  Full-duplex: NO
  Supports AGC: NO
  Stream formats: CS16, CS8, CF32, CF64
  Native format: CS16 [full-scale=4095]
  Antennas: TX/RX Sub1GHz
  Full gain range: [0, 31] dB
    Modem PA gain range: [0, 31] dB
  Full freq range: [389.5, 510], [779, 1020] MHz
    RF freq range: [389.5, 510], [779, 1020] MHz
  Sample rates: 4 MSps
  Filter bandwidths: 0.08, 0.1, 0.125, 0.16, 0.2, 0.4, 0.5, 0.625, 0.8, 1 MHz
  Sensors: PLL_LOCK_MODEM

Didn’t get any further first. Lot of errors while doing the probe. Also when trying to run cariboulite_app.

Today i tried to switch to the develop_R1 branch. Running install.sh it wouldn’t build out of the box, needed a little patch:

diff --git a/software/libcariboulite/src/production_utils/CMakeLists.txt b/software/libcariboulite/src/production_utils/CMakeLists.txt
index 1d64b3a..0342705 100644
--- a/software/libcariboulite/src/production_utils/CMakeLists.txt
+++ b/software/libcariboulite/src/production_utils/CMakeLists.txt
@@ -22,4 +22,5 @@ target_link_libraries(test_power_mon rt m pthread zmq ${SUPER_DIR}/zf_log/build/
 
 #Generate the static library from the sources
 add_library(production_utils STATIC ${SOURCES_LIB})
+target_link_libraries(production_utils zmq)
 target_include_directories(production_utils PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

Now i can at least run cariboulite_app as you:

	   ____           _ _                 _     _ _         
	  / ___|__ _ _ __(_) |__   ___  _   _| |   (_) |_ ___   
	 | |   / _` | '__| | '_ \ / _ \| | | | |   | | __/ _ \  
	 | |__| (_| | |  | | |_) | (_) | |_| | |___| | ||  __/  
	  \____\__,_|_|  |_|_.__/ \___/ \__,_|_____|_|\__\___|  


 Select a function:
 [0]  Hard reset FPGA
 [1]  Soft reset FPGA
 [2]  Print board info and versions
 [3]  Program FPGA
 [4]  Perform a Self-Test
 [5]  FPGA Diginal I/O
 [6]  FPGA RFFE control
 [7]  FPGA SMI fifo status
 [8]  Modem transmit CW signal
 [9]  Modem receive I/Q stream
 [99]  Quit
    Choice:   2

=====================================
Board Information (HAT)
	Category name: hat
	Product name: CaribouLite RPI Hat
	Product ID: 0x0001, Numeric: 1
	Product Version: 0x0001, Numeric: 1
	Product UUID: 28caa3c7-11fe-45fd-b77c-05d0f8d71713, Numeric serial: 0x8E4809FE
	Vendor: CaribouLabs LTD
	Product Type: CaribouLite FULLFPGA Versions:
	System Version: 01
	Manu. ID: 01
	Sys. Ctrl Version: 01
	IO Ctrl Version: 01
	SMI Ctrl Version: 01
	MODEM Version: AT86RF215IQ (without basebands), version: 03
Library Versions:
	(Major, Minor, Rev): (1, 0, 1)

At least something responds and reports the same serial number as in the initial SoapySDR test.

The new install.sh script doesn’t seem to build the SoapySDR module nor does it seem to install anything.

So still a lot to explore to get it work.

2 Likes

Try: sudo SoapySDRUtil --find it will show both devices (among others), next you can probe the second channel with: sudo SoapySDRUtil --probe="driver=Cariboulite,device_id=1"

Thanks for submitting the merge requests on github, I think the dev can use a little help. I have changed the CMakefile and indeed now it compiles everything. Nice! Thanks a lot!

Currently I have branch develop_R1 installed, but this does not install every thing like soapy. I had previously installed the main branch, and that provides the current soapy. I am running a mix.

I played with it again, and for the first time I have received real signals. But before that I always had the feeling I got a waterfall with a very low noise floor, indicating something in the RF path is not working, or smi interface is not working and gives back a stream of nothing or so. The solution is to change the gain slider a bit after starting. Somehow it needs this to get going!

I used Sigdigger on the laptop this time, and sudo SoapySDRServer --bind on the Pi. The settings in Sigdigger are mostly automatically detected:

The spectrum does not show the usual FM broadcast transmitters by default:

I changed the Modem AGC slider to 43dB and turned on the FM Demodulator under Audio preview:

And there I have it!! We see two FM stations, which I can llsten to by selecting them. It works!!! :partying_face:

In the terminal I am always seeing:

02-03 18:17:51.211  3268  3366 E CARIBOU_SMI_Main caribou_smi_set_driver_streaming_state@caribou_smi.c:678 failed setting smi stream state (1)

Even if the music plays!

Another big step, but I still have the idea that it is very fragile and it all could use some stability improvements. I am not sure if it is usable in this state to receive some satellites, in the S-band, which is my goal.

2 Likes

Indeed with device_id=1 it gets the 2nd device. There are also 2 different serial numbers to address the devices.

I also try a mix. develop_R1 doesn’t compile/install the SoapyCariboulite module. Probably they (he ?) are reworking the libcariboulite driver and don’t have time to keep the SoapySDR module up to date with it for the moment. It is commented out in the CMakeLists.txt, haven’t tried to build it yet on this branch.
At least cariboulite_app runs and it seems to set up kernel modules, overlays and more.

On master it builds and installs the SoapyCariboulite module. It just ‘forgets’ to install the required libiir.so, i’ll probably open a 1 line MR for it :wink:

I can start a SoapySDRServer and connect to it but it immediately segfaults on both devices.

I’m currently trying on a Pi Zero W… so 32 bit OS. I will also try on a Pi Zero 2W with a 64 bit OS as development seems currently focused on aarch64 (initial video they published was on a Pi Zero W…)

So currently you’re still much farther than what i achieved.

On Twitter it was rightfully pointed out that I had many lost samples. This is a network issue on my side. I also tried with a point to point network cable and got 96% speed. Still not perfect, but the audio sounded better.

Top left window (through vnc) shows Pi load. Bottom left the load on the laptop. The network is running on 16 mbit. On the right is Sigdigger on the laptop.

1 Like

Thanks @hb9fxx, for mentioning rx_tools and rx_sdr in your comment: setup.sh error · Issue #28 · cariboulabs/cariboulite · GitHub I had heard about it but never looked into it. And didn’t know it could be used to get the IQ samples of any soapy sdr to be piped to rffft. You really helped me! I gave it try with:

sudo rx_sdr -s 4000000 -g 60 -a 'TX/RX 6GHz' -F CS16 -d 'driver=Cariboulite,device_id=1' -f 88000000 - | rffft -f 88000000 -s 4000000 -F int

And next in rfplot it shows:

I had expected only the two FM stations, as shown in earlier screenshots. I am not sure why I get these bands. Gain could be to high, or maybe still a problem in the type of data used in rx_sdr and rffft. Anyway another step!! :smiley:

1 Like

Yeap, rx_tools seems like a nice tool. Considered it could be a good candidate to get packaged into debian. Some work was already done. Looking at the issues and the fact that it seems unmaintained refrained me to get further. Will need some more testing.

One thing i noticed with the CaribouLite and playing with rx_sdr on the sub-1Ghz device at 402 MHz:

02-05 08:32:30.591 26897 26897 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:705 Frequency setting CH: 0, Wanted: 402000000.00 Hz, Set: 0.00 Hz (MOD: 401999936.00, MIX: 0.00)
[INFO] setFrequency dir: 1, channel: 0, freq: 401999936.00

So it seems it cannot set any frequency. As the CaribouLite has a reference clock input (probably not supported yet) it could be interesting to use it with a GPSDO in the future. This frequency offset will be something to take into account when comparing STRF records with someone else (use the effective frequency instead of the requested one).

Otherwise still issues here on my Pi Zero W:

First error seems not fatal and doesn’t prevent from running:

02-05 08:32:29.250 26897 26897 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:141 initializing caribou_smi
02-05 08:32:29.251 26897 26897 E CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:185 failed reading native batch length, setting the default - this error is not fatal but we have wrong kernel drivers
02-05 08:32:29.252 26897 26897 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:190 Finished interogating 'smi' driver. Native batch length (bytes) = 524288

I don’t know if you have the same in the logs. Happens always, with rx_sdr or soapysdr server.

Second is the one you mentioned above and proposed a fix:

02-05 08:32:29.477 26897 26897 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:414 Cariboulite submodules successfully initialized
02-05 08:32:29.480 26897 26897 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:430 Testing modem communication and versions
02-05 08:32:29.482 26897 26897 E CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:436 The assembled modem is not AT86RF215 (product number: 0x35)
02-05 08:32:29.484 26897 26897 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:445 Testing mixer communication and versions
02-05 08:32:29.485 26897 26897 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:457 Testing smi communication
02-05 08:32:29.487 26897 26897 E CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:467 Self-test process finished with errors
02-05 08:32:29.487 26897 26897 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:436 removing an spi device with handle 0
02-05 08:32:29.490 26897 26897 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:221 Releasing board I/Os - closing SPI
02-05 08:32:29.490 26897 26897 V spiClose@pigpio.c:4847 bad handle (0)
02-05 08:32:29.491 26897 26897 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:356 pigpio says 0 is a BAD HANDLE
02-05 08:32:29.491 26897 26897 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:224 Releasing board I/Os - io_utils_cleanup
[ERROR] cariboulite_init_driver() failed
.
.
.
.
02-05 08:32:30.584 26897 26897 E IO_UTILS_SPI io_utils_spi_transmit@io_utils_spi.c:478 uninitialized device
02-05 08:32:30.585 26897 26897 E IO_UTILS_SPI io_utils_spi_transmit@io_utils_spi.c:478 uninitialized device
02-05 08:32:30.585 26897 26897 E IO_UTILS_SPI io_utils_spi_transmit@io_utils_spi.c:478 uninitialized device

Fixed with changing the modem type. It is fixed in develop_R1 but as the master branch is the one working better i submitted a PR backporting it to master.

Third error is the one you also mentioned

02-05 08:32:30.622 26897 26897 E CARIBOU_SMI_Main caribou_smi_set_driver_streaming_state@caribou_smi.c:678 failed setting smi stream state (1)

SoapySDR Server with CubicSDR: CubicSDR crashes
SoapySDR Server with Sig Digger: No crash, no waterfall displayed. Might be a network performance issue on the Pi Zero W
rx_sdr: can dump an IQ file but seems only zeros (or 7Fs…).

I have different results. Setting the frequency works:

02-05 20:10:47.153  1481  1481 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:705 Frequency setting CH: 1, Wanted: 89000000.00 Hz, Set: 88999999.24 Hz (MOD: 2494999808.00, MIX: 2583999807.24)

Same for the kernel:

02-05 20:10:46.980  1481  1481 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:141 initializing caribou_smi
02-05 20:10:46.980  1481  1481 E CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:185 failed reading native batch length, setting the default - this error is not fatal but we have wrong kernel drivers
02-05 20:10:46.980  1481  1481 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:190 Finished interogating 'smi' driver. Native batch length (bytes) = 524288

I am running develop_R1, and that has the 0x35 fixed. So no problem there.

And still the third error:

02-05 20:10:47.155  1481  1481 E CARIBOU_SMI_Main caribou_smi_set_driver_streaming_state@caribou_smi.c:678 failed setting smi stream state (1)

Are you on 32 bit or 64 bit OS? I am using 64.

I must admit I cannot reproduce the rfplot screenshot anymore. As of it only works one time. I did a reboot, but even then it doesn’t work. Good night!

1 Like

So we seem to have similar behaviors and errors/warning beside my zero signal. I’m on 32 bit for the moment.

Setting the frequency seems to work in my case too, just not exactly the requested frequency:

Requesting 402 MHz in both case:

Sub1G device:

02-05 20:46:09.996 18791 18791 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:705 Frequency setting CH: 0, Wanted: 402000000.00 Hz, Set: 0.00 Hz (MOD: 401999936.00, MIX: 0.00)
[INFO] setFrequency dir: 1, channel: 0, freq: 401999936.00
Tuned to 402000000 Hz.

HiF device:

02-05 20:45:13.259 18735 18735 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:705 Frequency setting CH: 1, Wanted: 402000000.00 Hz, Set: 402000001.27 Hz (MOD: 2494999808.00, MIX: 2896999809.27)
[INFO] setFrequency dir: 1, channel: 0, freq: 402000001.27
Tuned to 402000000 Hz.

Both claim to be tuned to 402000000 Hz, but the info line before says 401999936.00 Hz for Sub1G and 402000001.27 Hz for HiF. So in the first device the error seems to be of 64 Hz, in the second device only 1 Hz. First case might be an issue for STRF with a GPSDO.
The Set: ... field in the debug line seems confusing. Probably due to the fact that no mixing is involved in the Sub1GHz device.

Good night… won’t have time to play before Tuesday.

Gave it another try using the updated main branch, no luck yet.

sdrpp: symbol lookup error: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libSoapyCariboulite.so: undefined symbol: _ZN3Iir7CascadeC2Ev

Is the error that I get. And earlier it complains about not being able to lock:

02-17 14:43:43.208  1498  1498 V initInitialise@pigpio.c:8306 Can't lock /var/run/pigpio.pid
02-17 14:43:43.208  1498  1498 E IO_UTILS_Main io_utils_setup@io_utils.c:36 initializing pigpio failed
02-17 14:43:43.208  1498  1498 E CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:205 Error setting up io_utils
[ERROR] cariboulite_init_driver() failed
02-17 14:43:43.208  1498  1498 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
[ERROR] SoapySDR::loadModule(/usr/local/lib/SoapySDR/modules0.7/libSoapyCariboulite.so)
  duplicate entry for Cariboulite (/usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libSoapyCariboulite.so)
	MODEM Version: AT86RF215IQ (without basebands), version: 03Printing 'findCariboulite' Request:
1 Like

After staring at the errors for a while I suddenly realized that libSoapyCariboulite.so is installed twice, in two seperate directories. I removed all libSoapyCar* files in both locations. And while doing this I figured I have the same problem for the libiir. I also removed all these files. In addition I ran sudo /sbin/ldconfig -p | grep 'iir' and cleaned libiir in these locations.

Next I ran the install.sh script again to install the libs and did reboot.

Then I was able to run pulse audio for root and SDR++ as root in two terminals:

sudo pulseaudio --system=true
sudo sdrpp

And it shows:

One can even change frequency as seen in the bottom of the waterfall. That is new and didn’t work before! However there is a weird mirror thing going on. The left half and right half are each others mirror. So only half the spectrum can be used. This is a regression I haven’t seen in the previous results.

1 Like

Hello Eelke, have you made any progress here? My Caribou has crossed the Atlantic and will be arriving here anyday soon, so any helpful hints based on your experience would certainly save me time and frustration!
Regards.