cariboulabs / cariboulite

CaribouLite turns any 40-pin Raspberry-Pi into a Tx/Rx 6GHz SDR
1.06k stars 96 forks source link

Pi 4 Dragon OS - Problem with latest build #157

Closed cascmptrski closed 7 months ago

cascmptrski commented 7 months ago

Attempted to build from github clone this morning. Running the install script failed with code errors in CaribouLiteCpp.hpp as there were classes not included that were required. I added the "#include " statement as suggested by the build system. Once this was added, everything loaded properly.

Prior to running the install script, I commented out line 29 which loaded headers line for raspbian and left the one for ubuntu intact.

Next I updated the config.txt file as noted both in #94 and by the output of the install script.

On running SoapySDR --find and/or SoapySDR --probe, it finds the caribou board, but is failing on reading the fpga as follows (Note: I did add the "dtoverlay=spi1-3cs" line at the end of the config.txt file to allow communications). It appears that /dev/smi is not getting set up properly, even though lsmod shows the driver is present.

~$ sudo lsmod | grep smi
bcm2835_smi            24576  0

$ sudo SoapySDRUtil --find
######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

[INFO] SoapyCaribouliteSession, sessionCount: 0
11-30 15:05:34.809 545216 545216 I FPGA caribou_fpga_program_to_fpga@caribou_fpga.c:209 FPGA already operational - not programming (use 'force_prog=true' to force update)                    
11-30 15:05:34.809 545216 545216 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:537 couldn't open smi driver file '/dev/smi' (No such file or directory)                                        
11-30 15:05:34.809 545216 545216 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:288 Error setting up smi submodule                                                       
11-30 15:05:34.810 545216 545216 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed                                                                              
11-30 15:05:34.810 545216 545216 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized                                                                         
[ERROR] cariboulite_init_driver() failed                                                       
Printing 'findCariboulite' Request:
shm_open: No such file or directory
[ERROR] sdrplay_api_Open() Error: sdrplay_api_Fail
[ERROR] Please check the sdrplay_api service to make sure it is up. If it is up, please restart it.                                                                                           
[INFO] [UHD] linux; GNU C++ version 11.3.0; Boost_107400; UHD_4.1.0.5-0-unknown
[ERROR] SoapySDR::Device::enumerate(sdrplay) sdrplay_api_Open() failed
Found device 0
  channel = S1G
  device_id = 0
  driver = Cariboulite
  label = CaribouLite S1G[a06d5a2e]
  name = CaribouLite RPI Hat
  serial = a06d5a2e
  uuid = b231e8bb-581f-421a-ba18-36df20e72751
  vendor = CaribouLabs LTD
  version = 0x0001

Found device 1
  channel = HiF
  device_id = 1
  driver = Cariboulite
  label = CaribouLite HiF[a06d5a2f]
  name = CaribouLite RPI Hat
  serial = a06d5a2f
  uuid = b231e8bb-581f-421a-ba18-36df20e72751
  vendor = CaribouLabs LTD
  version = 0x0001

11-30 15:05:36.313 545216 545216 E FPGA caribou_fpga_close@caribou_fpga.c:246 caribou_fpga_close: dev not initialized                                                                         
11-30 15:05:36.313 545216 545216 E CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:465 FPGA communication release failed (-1)                                            
11-30 15:05:36.313 545216 545216 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:340 closing uninitialized device 

Any suggestions would be greatly appreciated. Is there perhaps another repository I should be using?

Looking at the system log, I find the following:

Nov 30 15:44:28 ubuntu systemd-modules-load[355]: Failed to find module 'smi_stream_dev'
Nov 30 15:44:28 ubuntu kernel: [    7.399340] smi-bcm2835 fe600000.smi: initialised

The module smi_stream_dev exists in the build directory, but is not being found by the system. Perhaps this is the real source of the problem??

Okay, looks like the same problem as #104

ubuntu@ubuntu:~/Projects/cariboulite/driver/build$ strings smi_stream_dev.ko | grep vermagic=
vermagic=5.15.0-1037-raspi SMP preempt mod_unload modversions aarch64

ubuntu@ubuntu:~/Projects/cariboulite/driver/build$ uname -a
Linux ubuntu 5.15.0-1043-raspi #46-Ubuntu SMP PREEMPT Mon Nov 13 15:08:58 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

Now to figure out how to rebuild smi_stream_dev to the latest kernel version and try to understand why that did not happen when I ran the install script this morning.

Update: Following the instructions here https://github.com/cariboulabs/cariboulite/tree/main/docs/smi for rebuilding the driver (note the cmake command is wrong and should be cmake ../../)

I then re-ran the install script and rebooted, and everything works properly.

mvmn commented 7 months ago

Which version of DragonOS do you have?