Code Monkey home page Code Monkey logo

cariboulite's Introduction

CaribouLite

CaribouLite is an affordable, educational, open-source SDR evaluation platform and a HAT for the Raspberry-Pi family of boards (40-pin versions only). It is built for makers, hackers, and researchers and was designed to complement the current SDR (Software Defined Radio) eco-systems offering with a scalable, standalone dual-channel software-defined radio.

Open source hardware association certificate This project has been certified by OSHWA
CaribouLite R2
CaribouLite R2.5 SDR mounted on a RPI-Zero

NOTE: No Support for RPI-5

Due to the architectural changes in RPI5 - the new I/O controller called "RP1" chip, CaribouLite is not supported on RPI5. We assume that the reason is the removal of the SMI interface altogether from the external interfaces by Broadcomm's team. So, if you intend to use CaribouLite on RPI5 please don't - it won't work. Why was the SMI interface deprecated by Broadcomm (either from its hardware or kernel SW support)? Most probably due to the same reason this interface was not documented in the first place - no interest in supporting a high-speed external interface within the 40-pin connector.

Edit: The workaround we are working to support RPI5 anyway - trying to utilize the Display and Camera I/O pins from the 40-pin connector to stream information - FPGA + Kernel module adaptation.

Getting Started & Installation

Use the following steps to install the CaribouLite on your choice of RPI board

  1. Mount the CaribouLite on a un-powered RPI device using the 40-pin header.
  2. Power the RPI device, wait for it to finish boot sequence.
  3. Clone this repository into a local directory of your choise (in this case ~/projects)
mkdir ~/projects
cd ~/projects
git clone https://github.com/cariboulabs/cariboulite
cd cariboulite
  1. Use the following setup command (note: don't sudo it):
    install.sh
    

The setup script requires internet connection and it follows the following automatic steps:

  1. Dependencies installation (apt)
  2. Soapy API tools installation (SoapySDR and SoapyRemote) - only if they are not currently present in the system. Installation from code.
  3. Internal dependencies installation
    1. Utilities and tools
    2. IIR DSP library
    3. SMI stream device module (kernel object) blob generation
  4. Main software and SoapyAPI compilation and installation
  5. Raspberry PI configuration verification. Note - the installer doesn't not actively change the RPI's configuration to fit to CaribouLite. It just checks the /boot/config.txt configuration file and raises warning when problem is detected. Then the user shall need to adjust the parameters accordingly.

Note: the user will be requested to enter their password during the installation process.

Installation Troubleshooting

  1. Modules: Both the spi and arm-i2c dtoverlays should be disabled to run CaribouLite properly. The libcariboulite doen't use them. It uses direct access to /dev/mem to expose these peripherals (through the pigpio library). The interfaces can be disabled (or enabled back whenever needed) by either directly editing the /dev/config.txt file or by using the sudo raspi-config command. The latter is the preferred choice as it is straight forward, less error prone and it works on all RaspberryPi's OS distributions (including DragonOS). If the direct editing path has been chosen (/boot/config.txt), the following lines should be commented out: #dtparam=spi=on #dtparam=i2c_arm=on

  2. Kernel headers - libcariboulite loads a custom kernel module (smi_stream_dev) during startup. The kernel module sources are location in : /software/libcariboulite/caribou_smi/kernel. Recompilation of these .ko obejcts is needed whenever software is pulled. This requires currently to have the local host system to have the kernel headers installed. In addition, upgrading the kernel will require recompilation with the updated kernel headers. Once the smi_stream_dev is listed inside the main kernel tree, this process will become redundant.

  3. sudoing - Currently hardware is accessed through the PIGPIO library. It should be given a root access to control the low level interfaces through the /dev/mem device. The relevant part of the software that is concerned in this matter is the "io_utils" sub-module. Once this module is re-designed to access the hardware through the "gpiomem" and "spidev" modules, this restrictions shall be mitigated (by the definitions of udev rules). So currently, sudo'ing is needed whenever CaribouLite is accessed (including sudo'ing python...).

To compile the API library and SoapySDR API from code please click here

SMI Interface

Unlike many other HAT projects, CaribouLite utilizes the SMI (Secondary Memory Interface) present on all the 40-pin RPI versions. This interface is not thoroughly documented by both Raspberry-Pi documentation and Broadcomm's reference manuals. An amazing work done by Lean2 (code in git repo) in hacking this interface has contributed to CaribouLite's technical feasibility. A deeper overview of the interface is provided by G.J. Van Loo, 2017 Secondary_Memory_Interface.pdf. The SMI interface allows exchanging up to ~500 Mbit/s (depending on the FPGA, data-bus width, etc.) between the RPI and the HAT, and yet, the results vary between the different versions of RPI. The results further depend on the specific RPI version's DMA speeds.

The SMI interface can be accessed from the user space Linux applications as shown in Lean2, but Broadcomm also provided a neat minimal charachter device interface in the /dev directory using the open, close, write, read, and ioctl system calls. More on this interesting interface in the designated readme file. This device driver needs to be loaded using modprobe.

More information on this interface can be found here (HW side) and here (SW side).

Top View
Cariboulite /w RPI Zero, two channels occupied

Hardware Revisions

The board first prototyping (Red) revision (REV1) has been produced and tested to meet our vision on the board's capabilities. This revision was used to test its RF parts, the digital parts, and to develop its firmware and software support over the RPI.

CaribouLite R1 CaribouLite Connectors
CaribouLite Rev1 - the prototype version CaribouLite Rev2.5 - Production Revision

The second revision (REV2) - White - was then designed to further refine the design as described below:

  1. Image rejection filtering improvement - U10 and U12 (HPF & LPF) - have been replaced by integrated LTCC filters by MiniCircuits with much better out-of-band rejection than the former ones.
  2. Removing FPGA flash - redundant given the fact that the the RPI configures the FPGA in <1sec over SPI. Even if we have a whole library of custom made FPGA firmware files, switching between them is as simple and fast as a single linux command.
  3. Board layout improvements and overlays (silkscreen) beautification (including logo).
  4. A single system level 3.3V power (while the FPGA still receives 2.5V and 1.2V for its core). A linear regulator (rather than a switching DC-DC) was used to reduce conducted (power and ground) noise levels.
  5. Top and bottom EMI sheilding option - the EMI/RFI shield design models are provided in the 3d directory
  6. More detailed changes in the schematics.

In summary, in CaribouLite-Rev2.5 PCB design has been thoroughly re-thought to meet its educational needs with performance in mind. The RF path has been annotated with icons to ease the orientation in the schematics sheets, friendly silk writing was added describing system's components by their functionality rather than logical descriptors, and more.

Top View
Top View
Top and Bottom views of CaribouLite Rev2.4 (pre-production)
Top View Top View
Top View Top View
Top and Bottom views of CaribouLite Rev2.5 Top and Bottom views of CaribouLite Rev2.5 with EMI/RFI shields

Specifications

RF Channels:

  • Sub-1GHz: 389.5-510 MHz / 779-1020 MHz
  • Wide tuning channel: 30 MHz - 6 GHz (excluding 2398.5-2400 MHz and 2483.5-2485 MHz)
spectra
Applicable spectra, S1G - sub-1GHz, WB - Wide tuning channel
Note: The gaps are defined by the design constraints of the system and may not exist in real-life hardware. Actual modem synthesizer outputs test show wider margins at room temperature than those written in the datatsheet, but, as noted by Microchip, performance may suffer.

FPGA specifications:

  • 160 LABs / CLBs
  • 1280 Logic Elements / Cells
  • 65536 Total RAM bits
  • 67 I/Os, Temp: -40-100 degC

Applicable RPI models: RPI_1(B+/A+), RPI_2B, RPI_Zero(Zero/W/WH), RPI_3(B/A+/B+), RPI_4B

Parameter Sub-1GHz Wide Tuning Channel
Frequency tuner range 389.5-510 MHz / 779-1020 MHz 30 MHz - 6 GHz (excluding 2398.5-2400 MHz and 2483.5-2485 MHz)
Sample rate (ADC / DAC) 4 MSPS 4 MSPS
Analog bandwidth (Rx / Tx) 2.5 MHz 2.5 MHz
Max Transmit power 14 dBm >10 dBm @ 30-2400 MHz, >5 dBm @ 2400-6000 MHz
Receive noise figure <5 dB <6 dB @ 30-3500 MHz, <8 dB @ 3500-6000 MHz

Note: (1) Feature comparison table with other SDR devices will be published shortly (2) Some of the above specifications are simulated rather than tested (3) Analog bandwidth controlled by the modem (4) The ISM version of the board doesn't contain the wide-range of frequencies (30-6000 MHz) and contains the native capabilities of the Modem IC.

Disclaimer

CaribouLite is a test equipment for RF systems. You are responsible for using your CaribouLite legally.

Definitions: THE SUBJECT CONTENT: all files, software, instructions, information, ideas and knowledge located in this git repository.

No Warranty: THE SUBJECT CONTENTS ARE PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND, EITHER EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY THAT THE SUBJECT CONTENTS WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR FREEDOM FROM INFRINGEMENT, ANY WARRANTY THAT THE SUBJECT CONTENTS WILL BE ERROR FREE, OR ANY WARRANTY THAT DOCUMENTATION, IF PROVIDED, WILL CONFORM TO THE SUBJECT CONTENTS. FURTHER, THE REPOSITORY OWNERS AND CONTRIBUTORS DISCLAIM ALL WARRANTIES AND LIABILITIES REGARDING THIRD-PARTY SOFTWARE, IF PRESENT IN THE ORIGINAL SOFTWARE, AND DISTRIBUTE IT "AS IS."

Waiver and Indemnity: RECIPIENT AGREES TO WAIVE ANY AND ALL CLAIMS AGAINST THE REPOSITORY OWNERS AND CONTRIBUTORS, THEIR CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT. IF RECIPIENT'S USE OF THE SUBJECT CONTENTS RESULTS IN ANY LIABILITIES, DEMANDS, DAMAGES, EXPENSES OR LOSSES ARISING FROM SUCH USE, INCLUDING ANY DAMAGES FROM PRODUCTS BASED ON, OR RESULTING FROM, RECIPIENT'S USE OF THE SUBJECT CONTENTS, RECIPIENT SHALL INDEMNIFY AND HOLD HARMLESS THE REPOSITORY OWNERS AND CONTRIBUTORS, THEIR CONTRACTORS AND SUBCONTRACTORS, AS WELL AS ANY PRIOR RECIPIENT, TO THE EXTENT PERMITTED BY LAW.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

cariboulite's People

Contributors

3b85a591 avatar franciscod avatar joyel24 avatar k7mdl2 avatar kasbah avatar konimaru avatar m6502 avatar martinherren avatar meexmachina avatar paulo-d2000 avatar seancallinan avatar sergeyvfx avatar sjkelly avatar timgates42 avatar tomdot-dev avatar unixpunk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cariboulite's Issues

Driver fail with SoapySDRServer

I have finally got to the point with PiSDR where I can run cariboulite_test_app without problems and also run SoapySDRServer --bind.

The SDR server is seen as CaribouLite S1G[bd0e0b9a] and CaribouLite HiF[bd0e0b9b] in CubicSDR but as soon as I try to run I get the following.

pi@pisdr:~/projects/cariboulite/build $ sudo SoapySDRServer --bind
######################################################
## Soapy Server -- Use any Soapy SDR remotely
######################################################

Server version: 0.6.0-gc09b2f10
Server UUID: ce191aba-8ba0-1744-8567-1308007f0101
Launching the server... tcp://[::]:55132
Server bound to [::]:55132
Launching discovery server... 
Connecting to DNS-SD daemon... 
[INFO] Avahi version:  avahi 0.8
[INFO] Avahi hostname: pisdr
[INFO] Avahi domain:   local
[INFO] Avahi FQDN:     pisdr.local
[INFO] avahi_entry_group_add_service(pisdr._soapy._tcp)
Press Ctrl+C to stop the server
SoapyServerListener::accept([::ffff:192.168.1.7]:55410)
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55411)
SoapyServerListener::accept([::ffff:192.168.1.7]:55412)
02-17 18:21:36.427  4872  4887 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:560 driver initializing
02-17 18:21:36.427  4872  4887 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:569 Initializing signals
02-17 18:21:36.427  4872  4887 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-17 18:21:36.427  4872  4887 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:202 Setting up board I/Os
02-17 18:21:36.427  4872  4887 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio
02-17 18:21:36.586  4872  4887 I IO_UTILS_Main io_utils_setup@io_utils.c:39 pigpio version 79
02-17 18:21:36.586  4872  4887 I IO_UTILS_SPI io_utils_spi_init@io_utils_spi.c:321 configuring gpio setups
02-17 18:21:36.586  4872  4887 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:583 Initializing FPGA
02-17 18:21:36.586  4872  4887 I FPGA caribou_fpga_init@caribou_fpga.c:116 configuring reset and irq pins
02-17 18:21:36.586  4872  4887 I FPGA caribou_fpga_init@caribou_fpga.c:124 Initializing io_utils_spi
02-17 18:21:36.586  4872  4887 I CARIBOU_PROG caribou_prog_init@caribou_prog.c:84 FPGA is already configured and running
02-17 18:21:36.586  4872  4887 I CARIBOU_PROG caribou_prog_init@caribou_prog.c:87 device init completed
02-17 18:21:36.586  4872  4887 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:596 Programming FPGA
FPGA Versions:
	System Version: 01
	Manu. ID: 01
	Sys. Ctrl Version: 01
	IO Ctrl Version: 01
	SMI Ctrl Version: 01
02-17 18:21:36.587  4872  4887 I FPGA caribou_fpga_program_to_fpga@caribou_fpga.c:188 FPGA already operational - not programming (use 'force_prog=true' to force update)
02-17 18:21:36.587  4872  4887 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:609 FPGA Digital Values: led0: 0, led1: 0, btn: 1, CFG[0..3]: [1,1,1,1]
02-17 18:21:36.587  4872  4887 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:622 Detecting Board Information
02-17 18:21:36.588  4872  4887 I HAT [email protected]:703 # Board Info - Category name: hat
02-17 18:21:36.588  4872  4887 I HAT [email protected]:704 # Board Info - Product name: CaribouLite RPI Hat
02-17 18:21:36.588  4872  4887 I HAT [email protected]:705 # Board Info - Product ID: 0x0001, Numeric: 1
02-17 18:21:36.588  4872  4887 I HAT [email protected]:706 # Board Info - Product Version: 0x0001, Numeric: 1
02-17 18:21:36.588  4872  4887 I HAT [email protected]:707 # Board Info - Product UUID: fa16cc83-a1cf-4706-855e-da09ba493401, Numeric serial: 0xDE8705CD
02-17 18:21:36.588  4872  4887 I HAT [email protected]:708 # Board Info - Vendor: CaribouLabs LTD
02-17 18:21:36.588  4872  4887 I CARIBOULITE Setup cariboulite_print_board_info@cariboulite_setup.c:753 # Board Info - Product Type: CaribouLite FULL
02-17 18:21:36.588  4872  4887 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:272 initializing submodules
02-17 18:21:36.588  4872  4887 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:276 INIT FPGA SMI communication
02-17 18:21:36.588  4872  4887 I CARIBOU_SMI caribou_smi_init@caribou_smi.c:425 initializing caribou_smi
02-17 18:21:36.590  4872  4887 D CARIBOU_SMI_MODULES caribou_smi_check_modules@caribou_smi_modules.c:98 Unloading smi-stream module
02-17 18:21:36.620  4872  4887 D CARIBOU_SMI_MODULES caribou_smi_check_modules@caribou_smi_modules.c:111 Loading smi-stream module
SMI SETTINGS:
    width: 0
    pack: Y
    read setup: 0, strobe: 2, hold: 0, pace: 0
    write setup: 1, strobe: 4, hold: 1, pace: 0
    dma enable: Y, passthru enable: Y
    dma threshold read: 1, write: 63
    dma panic threshold read: 32, write: 32
02-17 18:21:36.634  4872  4887 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:286 INIT MODEM - AT86RF215
02-17 18:21:36.634  4872  4887 I AT86RF215_Main [email protected]:160 configuring reset and irq pins
02-17 18:21:36.634  4872  4887 I AT86RF215_Main [email protected]:168 Adding chip definition to io_utils_spi
02-17 18:21:36.634  4872  4887 I AT86RF215_Main [email protected]:197 Modem identity: Version: 03, Product: 35
02-17 18:21:36.635  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO09: Transceiver ready
02-17 18:21:36.645  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.657  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.668  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.679  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.691  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.702  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.714  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=29, Q=27
02-17 18:21:36.714  4872  4887 I AT86RF215_Main [email protected]:143 Calibration Results of the modem: I=29, Q=27
02-17 18:21:36.725  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.737  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.748  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.759  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.771  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.782  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.794  4872  4887 D AT86RF215_Main [email protected]:137 Calibration of modem: I=49, Q=17
02-17 18:21:36.794  4872  4887 I AT86RF215_Main [email protected]:143 Calibration Results of the modem: I=49, Q=17
02-17 18:21:36.794  4872  4887 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:296 Configuring modem initial state
02-17 18:21:36.795  4872  4887 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:339 This board is a Full version CaribouLite - setting ext_ref: modem, 32MHz
02-17 18:21:36.795  4872  4887 D CARIBOULITE Radio cariboulite_radio_ext_ref@cariboulite_radio.c:82 Setting ext_ref = 32MHz
02-17 18:21:36.795  4872  4887 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:365 INIT MIXER - RFFC5072
02-17 18:21:36.795  4872  4887 I RFFC5072 [email protected]:115 Initializing RFFC507x driver
02-17 18:21:36.795  4872  4887 I RFFC5072 [email protected]:119 Setting up device GPIOs
02-17 18:21:36.795  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO09: Transceiver ready
02-17 18:21:36.795  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
02-17 18:21:36.825  4872  4887 I RFFC5072 [email protected]:132 Received spi handle 3
02-17 18:21:36.828  4872  4887 I RFFC5072 [email protected]:411 RFFC507X DEVID: 0x8A01 ID: 0x1140, Rev: 1 (RFFC507x)
	native kernel chunk size: 524288 bytes  IO_UTILS_SPI Setup:
    MISO Pin: 19
    MOSI Pin: 20
    SCK Pin: 21
    Number of chips: 4
      CHIP handle: #0
        CS Pin: 18
        CLK Speed: 0
        SPI Mode: 0
        MISO / MOSI swap: 0
        Chip type: fpga communication icd (0)
        Hard spi handle: 0
            Hard spi id: 1
            Hard spi channel: 0
      CHIP handle: #1
        CS Pin: 18
        CLK Speed: 0
        SPI Mode: 0
        MISO / MOSI swap: 0
        Chip type: lattice ice40 programmer (3)
        Hard spi handle: -1
      CHIP handle: #2
        CS Pin: 17
        CLK Speed: 0
        SPI Mode: 0
        MISO / MOSI swap: 0
        Chip type: modem - at86rf215 (2)
        Hard spi handle: 1
            Hard spi id: 1
            Hard spi channel: 1
      CHIP handle: #3
        CS Pin: 16
        CLK Speed: 0
        SPI Mode: 0
        MISO / MOSI swap: 0
        Chip type: mixer - rffc507x / rffc207x (1)
        Hard spi handle: -1
02-17 18:21:36.832  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 0, dir = RX, activate = 1
02-17 18:21:36.832  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO09: Transceiver ready
02-17 18:21:36.833  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:839 Setup Modem state tx_prep
02-17 18:21:36.833  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:36.943  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 0, dir = RX, activate = 0
02-17 18:21:37.044  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:37.044  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 1
02-17 18:21:37.044  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
02-17 18:21:37.045  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:839 Setup Modem state tx_prep
02-17 18:21:37.045  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:37.156  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 0
02-17 18:21:37.261  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:37.262  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 0, dir = RX, activate = 0
02-17 18:21:37.362  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:37.362  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 0
SoapyServerListener::accept([::ffff:192.168.1.7]:55422)
02-17 18:21:37.462  4872  4887 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:390 Cariboulite submodules successfully initialized
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:455 Testing modem communication and versions
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:470 Testing mixer communication and versions
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:482 Testing smi communication
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:487 Self-test process finished successfully!
02-17 18:21:37.463  4872  4887 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
	MODEM Version: AT86RF215IQ (without basebands), version: 03Printing 'findCariboulite' Request:
    {remote: tcp://192.168.1.36:55132}
    {soapy_remote_no_deeper: }
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55460)
SoapyServerListener::accept([::ffff:192.168.1.7]:55461)
Printing 'findCariboulite' Request:
    {channel: S1G}
    {device_id: 0}
    {driver: Cariboulite}
    {label: CaribouLite S1G[bd0e0b9a]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9a}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
SoapyServerListener::accept([::ffff:192.168.1.7]:55462)
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55463)
Printing 'findCariboulite' Request:
    {channel: S1G}
    {device_id: 0}
    {driver: Cariboulite}
    {label: CaribouLite S1G[bd0e0b9a]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9a}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
02-17 18:21:41.257  4872  4913 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 0, dir = RX, activate = 1
02-17 18:21:41.257  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO09: Transceiver ready
02-17 18:21:41.258  4872  4913 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:839 Setup Modem state tx_prep
02-17 18:21:41.258  4872  4913 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:41.372  4872  4913 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 0, dir = RX, activate = 0
02-17 18:21:41.472  4872  4913 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
SoapyServerListener::accept([::ffff:192.168.1.7]:55464)
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55465)
Printing 'findCariboulite' Request:
    {channel: HiF}
    {device_id: 1}
    {driver: Cariboulite}
    {label: CaribouLite HiF[bd0e0b9b]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9b}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
SoapyServerListener::accept([::ffff:192.168.1.7]:55466)
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55467)
Printing 'findCariboulite' Request:
    {channel: HiF}
    {device_id: 1}
    {driver: Cariboulite}
    {label: CaribouLite HiF[bd0e0b9b]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9b}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
02-17 18:21:41.516  4872  4917 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 1
02-17 18:21:41.517  4872  4917 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:839 Setup Modem state tx_prep
02-17 18:21:41.517  4872  4917 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:41.517  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
02-17 18:21:41.628  4872  4917 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 0
02-17 18:21:41.728  4872  4917 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55498)
SoapyServerListener::accept([::ffff:192.168.1.7]:55499)
Printing 'findCariboulite' Request:
    {channel: HiF}
    {device_id: 1}
    {driver: Cariboulite}
    {label: CaribouLite HiF[bd0e0b9b]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9b}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
SoapyServerListener::accept([::ffff:192.168.1.7]:55500)
SoapyServerListener::close()
SoapyServerListener::close()
SoapyServerListener::accept([::ffff:192.168.1.7]:55501)
Printing 'findCariboulite' Request:
    {channel: HiF}
    {device_id: 1}
    {driver: Cariboulite}
    {label: CaribouLite HiF[bd0e0b9b]}
    {name: CaribouLite RPI Hat}
    {remote: tcp://192.168.1.36:55132}
    {serial: bd0e0b9b}
    {soapy_remote_no_deeper: }
    {uuid: fa16cc83-a1cf-4706-855e-da09ba493401}
    {vendor: CaribouLabs LTD}
    {version: 0x0001}
02-17 18:21:43.877  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 1
02-17 18:21:43.878  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
02-17 18:21:43.878  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:839 Setup Modem state tx_prep
02-17 18:21:43.879  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:43.989  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 0
02-17 18:21:44.089  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:46.105  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 0
02-17 18:21:46.205  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:827 Setup Modem state trx_off
02-17 18:21:46.210  4872  4921 D CARIBOULITE Radio cariboulite_radio_ext_ref@cariboulite_radio.c:82 Setting ext_ref = 32MHz
02-17 18:21:46.210  4872  4921 D RFFC5072 [email protected]:252 rfc5071_disable
02-17 18:21:46.211  4872  4921 D RFFC5072 [email protected]:260 rfc5071_enable
02-17 18:21:46.212  4872  4921 I RFFC5072 [email protected]:421 RFFC507X STAT: 0x1C7C PLL_LOCK: 0, CT_CAL: 28, KV_CAL: 31, CT_CAL_FAIL: 0
02-17 18:21:46.212  4872  4921 I RFFC5072 [email protected]:421 RFFC507X STAT: 0xA17C PLL_LOCK: 1, CT_CAL: 33, KV_CAL: 31, CT_CAL_FAIL: 0
02-17 18:21:46.212  4872  4921 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:782 Frequency setting CH: 1, Wanted: 100000000.00 Hz, Set: 99999999.36 Hz (MOD: 2494999808.00, MIX: 2594999807.36)
02-17 18:21:46.213  4872  4889 D AT86RF215_Events at86rf215_radio_event_handler@at86rf215_events.c:61 INT @ RADIO24: Transceiver ready
02-17 18:21:46.214  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:805 Activating channel 1, dir = RX, activate = 1
02-17 18:21:46.214  4872  4921 D CARIBOULITE Radio cariboulite_radio_activate_channel@cariboulite_radio.c:853 Setup Modem state cmd_rx
02-17 18:21:46.323  4872  4921 D CARIBOULITE Radio cariboulite_radio_ext_ref@cariboulite_radio.c:82 Setting ext_ref = 32MHz
02-17 18:21:46.323  4872  4921 D RFFC5072 [email protected]:252 rfc5071_disable
02-17 18:21:46.323  4872  4921 D RFFC5072 [email protected]:260 rfc5071_enable
02-17 18:21:46.325  4872  4921 I RFFC5072 [email protected]:421 RFFC507X STAT: 0x217C PLL_LOCK: 0, CT_CAL: 33, KV_CAL: 31, CT_CAL_FAIL: 0
02-17 18:21:46.325  4872  4921 I RFFC5072 [email protected]:421 RFFC507X STAT: 0x8E7C PLL_LOCK: 1, CT_CAL: 14, KV_CAL: 31, CT_CAL_FAIL: 0
02-17 18:21:46.325  4872  4921 D CARIBOULITE Radio cariboulite_radio_set_frequency@cariboulite_radio.c:782 Frequency setting CH: 1, Wanted: 100000000.00 Hz, Set: 99999999.36 Hz (MOD: 2494999808.00, MIX: 2594999807.36)
caribou_smi_read -> Timeout
02-17 18:21:46.584  4872  4923 D CARIBOULITE Radio cariboulite_radio_read_samples@cariboulite_radio.c:971 SMI reading operation returned timeout
caribou_smi_read -> Timeout
02-17 18:21:46.847  4872  4923 D CARIBOULITE Radio cariboulite_radio_read_samples@cariboulite_radio.c:971 SMI reading operation returned timeout
caribou_smi_read -> Timeout
02-17 18:21:47.109  4872  4923 D CARIBOULITE Radio cariboulite_radio_read_samples@cariboulite_radio.c:971 SMI reading operation returned timeout
caribou_smi_read -> Timeout
02-17 18:21:47.371  4872  4923 D CARIBOULITE Radio cariboulite_radio_read_samples@cariboulite_radio.c:971 SMI reading operation returned timeout
caribou_smi_read -> Timeout

All appears to be good apart from "SMI reading operation returned timeout"

Getting cariboulite working with OpenWebRX

When the project strated and i signed in for this board one of my questions was :
Will the board run with OpenWebRX and there was stated Yes it will!
This was for me one of the reasons to support the board since that could be a great SDR solution, the Cariboulite in combination with a great websdr.

Does someone have any clue you i should get this working since the board is not in the list of supported SDR's and i could imagine some work needs to be done to get it gooing but would be great ...

nl13974

Tips for getting it to work in GnuRadio with Soapy

Just got it working in GnuRadio (3.9-Maint) with the Soapy.

  • Sample Rate must be set to 4E6 (4M). Anything else is rejected.

Here's what you need to know for the Soapy Custom Source settings:

  • Under "General"
- Driver: Cariboulite
- Device Arguments: device_id=1
  • Under "RF Options"
    Note that the only antenna string that works for device_id=1 is "TX/RX 6GHz" (yes, with the space in it!)

The other default options i changed

Ch0: Antenna:      TX/RX 6GHz  
Ch0: Automatic DC Removal: False
Ch0 Overall Gain Value: 50

20230210_233438601_iOS

20230210_233445892_iOS

20230210_232614277_iOS

I've had it running here receiving a 2 MHz chunk of the FM Broadcast Band here, and it seems stable. I'm going to run it over the weekend.

GPS PPS sync ?

Is there a chance a timestamp sync to the PPS from a GPS would be possible ?

potential asynchronous FIFO issues

First of all, many thanks for your contribution! This is a great foundation for tailor made SDR design. So, I could not wait for your delivery so I decided to review and play with your design (using verilog simulation first and lately using a home made board).

Back to the issue, it seems you have built your own asynchronous FIFO from dual_clock_fifo module which looks suitable and you get rid of graycode handling (which is commonly used to address metastablity issues). Is there a reason for that?

Furthermore, it seems that you should take into account address width when your compute full_o and empty_o, otherwise you may have overflow issues

basically, I would expect something like
full_o <= ((wr_addr + 2) & ((2**ADDR_WIDTH)-1)) == rd_addr;
instead of
full_o <= (wr_addr + 2) == rd_addr;

https://github.com/cariboulabs/cariboulite/blob/main/firmware/complex_fifo.v#L30
https://github.com/cariboulabs/cariboulite/blob/main/firmware/complex_fifo.v#L34
https://github.com/cariboulabs/cariboulite/blob/main/firmware/complex_fifo.v#L49

Which Raspberian (32- or 64- bit?)

I didn't see any mention of which Raspberian is preferred. It looks like the code was written to handle either one, but I like to stay on the "happy path" and use what the developers to their primary work/testing on.

SMI and samples loss

Hi @meexmachina ,

Lately, I have been reviewing your new SMI kernel modules and if I understand well you are restarting SMI and DMA transfers as soon as you copied samples into kfifo.
So, I am wondering how you could avoid 100% of loss because this restart process (SMI and DMA) occurs in DMA ISR (and this ISR may have some significant latency depending on system load and this latency could be large enough to fill up the FPGA fifos ending up in samples loss.

I have confirmed the above assumptions with a home made test bench using your drivers stressing a bit the system to simulate a decent user land application. From time to time I noticed some loss (more or less severe depending on the load). To detect such loss, I had to implement a transport protocol including sequence numbering and CRC otherwise it could be pretty difficult to detect some issues.

So my questions are as follows:

  1. Do you still rely on DMA ISR to restart the whole SMI/DMA process?
  2. Do you experience samples loss when stressing the system?
  3. Did you find a way to configure SMI for endless transfer - one start, infinite length -?

zeromq required

clean install of raspberry pi OS, running install.sh on the R1 branch:

lcd.c:9:10: fatal error: zmq.h: No such file or directory 9 | #include <zmq.h> | ^~~~~~~ compilation terminated. make[2]: *** [src/production_utils/CMakeFiles/production_utils.dir/build.make:108: src/production_utils/CMakeFiles/production_utils.dir/lcd.c.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:1090: src/production_utils/CMakeFiles/production_utils.dir/all] Error 2 make: *** [Makefile:149: all] Error 2

Need to add libzmq3-dev to the list of packages pulled in from apt

generate_binary_blob built for ELF 32

Trying to compile on Raspberry Pi OS (64 bit) results in the following error
make[2]: ../../../../../utils/generate_bin_blob: No such file or directory make[2]: *** [CMakeFiles/smi_stream_dev.dir/build.make:88: smi_stream_dev] Error 127 make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/smi_stream_dev.dir/all] Error 2 make: *** [Makefile:103: all] Error 2

Because generate_bin_blob was built against arch armhf
~/projects/cariboulite/software/utils $ file generate_bin_blob generate_bin_blob: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=573ee2b3695f08006e45fa327db5f261bc70f094, not stripped

The solution if you have this problem is to install the armhf libc
sudo dpkg --add-architecture armhf && sudo apt update && sudo apt-get install libc6:armhf

Confused about some drilling files

Because of the limitation of the jlcpcb production process, the minimum drilling hole diameter is 0.2mm, but the drilling hole diameter used in the two drilling files TX1 and TX2 is 0.102mm, so it may not be approved.

List of dependencies not found

As I'm doing a workaround for the missing setup.sh, the instructions seem to require building some stuff. From a Stock Raspbian 64 Full Install, I seem to be missing some build tools. Most importantly, is cmake, which was not installed.

I'm hesitant from going further, because it always leads down a hole of installing stuff, over and over. I'm sure someone has it all figured out, by now.

Will the "setup.sh" install these? If not, could we have a list of build dependencies to install starting from a stock raspbian install?

Full-duplex support

Is there a chance to update components supporting full-duplex transmission?

Misleading Instructions

Please can we change the readme as it is unhelpful to beginners. I understand it isn't ready yet, it might be best to say that at the top and ask non-developers to wait., we waited a year for the hardware shortage to resolve so a few more weeks for software isn't going to be an issue.. Also it needs to state the requirements, which OS to install on, what packages need to be installed (PIOS lite doesn't even come with cmake or git) etc. need to be made clearer.

couldn't open smi driver file '/dev/smi'

Hi All.

Hardware: Raspi Zero W v 1.3
Software: RaspberryPi OS bullseye 32bit

I've been having trouble with the kernel module appears to fail (log below) with couldn't open smi driver file '/dev/smi' This error seems to occur AFTER rebooting the Zero when it had no issue. Rebooting does not resolve the issue, and I seem to have patchy success in cloning the main repo and recompiling. Log below.

The one time I have managed to get SoapySDRServer to see anything, connecting to it just saw Gqrx or CubicSDR lock up, or operate VERY slowly.

I'm not particularly code-savvy so any advice appreciated :)

==========================

02-20 20:42:28.245  1186  1186 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:276 INIT FPGA SMI communication
02-20 20:42:28.245  1186  1186 I CARIBOU_SMI caribou_smi_init@caribou_smi.c:442 initializing caribou_smi
02-20 20:42:28.255  1186  1186 D CARIBOU_SMI_MODULES caribou_smi_check_modules@caribou_smi_modules.c:111 Loading smi-stream module
02-20 20:42:28.828  1186  1186 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:460 couldn't open smi driver file '/dev/smi'
02-20 20:42:28.831  1186  1186 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:280 Error setting up smi submodule
02-20 20:42:28.843  1186  1186 D CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:436 CLOSE FPGA communication
02-20 20:42:28.850  1186  1186 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 0
02-20 20:42:28.859  1186  1186 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 1
02-20 20:42:28.863  1186  1186 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed
02-20 20:42:28.864  1186  1186 E FPGA caribou_fpga_close@caribou_fpga.c:225 caribou_fpga_close: dev not initialized
02-20 20:42:28.868  1186  1186 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:240 Releasing board I/Os - closing SPI
02-20 20:42:28.871  1186  1186 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:243 Releasing board I/Os - io_utils_cleanup
02-20 20:42:28.940  1186  1186 E CARIBOULITE Test main@cariboulite_test_app.c:68 driver init failed, terminating...

==========================

SoapySDR CaribouLite driver issue

Following the recommendation here: #43 (comment)

SDR++ works but the spectrum is not displayed correctly. The spectrum is mirrored.

The issue is the same with GQRX, GNU Radio and SigDigger, CubicSDR as mentionned by #61 (comment)

The spectrum is displayed correctly when using an RTL-SDR key with its SoapySDR driver.

kicad project

Hi,

would like to know if you plan to share the project pcb file (in kicad would be great).

I want modify the design to make a more simple and cheapest project to evaluate the AT86RF215 with the raspberry pi and most of the RF mixer part is not needed.

P.D.

From your bom the MAAM-011206-TR1000 RF amplifier is obsolete and the replace part MAAM-011206-TR3000 cost 11 euros in mouser and you use 2!! and total bom is almost 100€ on mouser(the best place i found they have all components).

Thanks,
your project is very promising, I hope you can make it to buy one.

pcb project

Hi,

would like to know if you plan to share the project pcb file (in kicad would be great).

I would like modify the design to make a more simple and cheapest project to evaluate the AT86RF215(maybe put more than one in one pcb or make them stackable for multiple channels) with the raspberry pi and most of the RF mixer part is not needed.

P.D.

From your bom the MAAM-011206-TR1000 RF amplifier is obsolete and the replace part MAAM-011206-TR3000 cost 11 euros in mouser and you use 2!! and total bom is almost 100€ on mouser(the best place i found they have all components).

Thanks,
your project is very promising, I hope you can make it to buy one.

(Request) Account for DragonOS in installer

In the installer there’s a line that pulls in the raspberry pi headers. This is not needed in the case of DragonOS Pi64 as it does not use the traditional Pi OS kernel, but instead the aarch64 22.04 Ubuntu kernel. The headers are also pre-installed to match the kernel.

If there was somehow an exception to not installing that one single thing in the case someone runs the installer on DragonOS Pi64 then the installer will cause no issues and the person will end up with the same result as runnin it on Pi OS/PiSSR etc with the added benefit of all other applications pre-installed.

But to be honest, i will likely just have everything for CaribouLite Pre-installed soon, still probably helpful to adjust the installer in case someone ones to update.

Thank you.

ADS-B with CaribouLite ISM?

Hi, based on specifications ADS-B (1090 MHz) should be slightly outside CaribouLite ISM frequency range (1020 MHz max).
But I also read that frequency ranges are somewhat conservative.
Is the maximum tunable frequency of 1020 MHz a hardware limit in the sense that the modem can't be tuned at 1090 MHz? Or it will be some kind of software-based limit?
So overall the question is if I could be able to receive ADS-B (1090 MHz) signals with CaribouLite ISM version, thank you.

Ballpark pricing?

I've always wanted an SDR, but they still seem pretty pricey. Any idea what the target/ballpark pricing will be?

[Suggestion] rpisdr fork

Hello,
I got issues and many other users also to make it work, I know it is still in dev phase so my idea is that maybe you will provide fork of rpisdr image (or raspbian with sdr software like sdr++) with all drivers and libs configured which will allow quick start for users to check how it works.

Adding connectors to bypass the RF switch?

Hi,
I stumbled across your impressive project. Do you plan on adding something like U.FL sockets on J1/J3 of the RF switch (U11) to bypass it in cases where a user wants a dedicated rx and tx connector for bands higher than 1GHz? Using a 0 ohm resistor one could choose between the different options?
Regards

Module insertion 'smi_stream_dev' failed

Ho Folks,
Having trouble getting the CaribouLite working

Hardware: Raspberry Pi Zero W v1.1
OS: Raspberry Pi OS 11 (Bullseye) armhf 32bit
Linux sdrpi 5.15.61+ #1579 Fri Aug 26 11:08:59 BST 2022 armv6l GNU/Linux

when attempting to run ./cariboulite_test_app , I get the following:

12-15 12:50:52.490 1205 1205 D CARIBOU_SMI_MODULES caribou_smi_check_modules@caribou_smi_modules.c:111 Loading smi-stream module

02-15 12:50:52.520 1205 1205 E CARIBOU_SMI_MODULES caribou_smi_insert_smi_modules@caribou_smi_modules.c:71 Module insertion 'smi_stream_dev' failed

02-15 12:50:52.523 1205 1205 E CARIBOU_SMI caribou_smi_init@caribou_smi.c:434 Problem reloading SMI kernel modules

02-15 12:50:52.535 1205 1205 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:280 Error setting up smi submodule

02-15 12:50:52.538 1205 1205 D CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:436 CLOSE FPGA communication

02-15 12:50:52.548 1205 1205 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 0

02-15 12:50:52.554 1205 1205 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 1

02-15 12:50:52.557 1205 1205 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed

02-15 12:50:52.558 1205 1205 E FPGA caribou_fpga_close@caribou_fpga.c:225 caribou_fpga_close: dev not initialized

02-15 12:50:52.561 1205 1205 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:240 Releasing board I/Os - closing SPI

02-15 12:50:52.564 1205 1205 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:243 Releasing board I/Os - io_utils_cleanup

02-15 12:50:52.622 1205 1205 E CARIBOULITE Test main@cariboulite_test_app.c:68 driver init failed, terminating...

It looks ;like something is recognised, but the kernel driver is not loading.

./SoapySDRUtil -probe amongst the errors is reporting back some CaribouLite information


-- Device identification

driver=Cariboulite
hardware=Cariboulite Rev2
device_id=0
fpga_revision=1
hardware_revision=0x0001
product_name=CaribouLite RPI Hat
serial_number=901841913
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

[INFO] Desposing radio type '0'

Which Raspberry PI OS to install ?

What is the recommended OS for a successful installation of CaribouLite?

I'm using PiSDR Version 6.1 (64-bits) and today's install script (develop_R1) went through without error...

How do I check the correct installation of CaribouLite?

Thanks in advance for your support.
Michel

Jetson support

Hi, Im looking forward to use this compact TRX SDR.
By the way, caribou lite can be controlled by Jetson?
If so , Jetson use GPGPU can process much IQ signals faster.

Self test returns not AT86RF215 modem

Running self test usually fails due to a mismatched modem. The exception is if I perform a receive I/Q test and then run the self test it passes. Running the self-test a second time I get the error message again:

02-02 16:42:25.355 692 692 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:457 Testing modem communication and versions
02-02 16:42:25.355 692 692 E CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:463 The assembled modem is not AT86RF215 / IQ variant (product number: 0x0d)
02-02 16:42:25.355 692 692 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:472 Testing mixer communication and versions
02-02 16:42:25.356 692 692 I CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:484 Testing smi communication
02-02 16:42:25.356 692 692 E CARIBOULITE Setup cariboulite_self_test@cariboulite_setup.c:493 Self-test process finished with errors
MODEM Version: not AT86RF215 IQ capable modem (product number: 0x0d, versions 03)

no license or hard to find

Hello,

it's not clear how this code is licensed. Can you put some information about license in the readme?

Thanks in advance.

CMake Error at gr-cariboulite

Doen anyone resolve this issue?
I am using branch develop_R1.

pi@pisdr:~/projects/cariboulite/software/gr-cariboulite/build $ cmake ../
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning at CMakeLists.txt:15 (find_package):
  By not providing "FindCaribouLite.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "CaribouLite", but CMake did not find one.

  Could not find a package configuration file provided by "CaribouLite"
  (requested version 1.0) with any of the following names:

    CaribouLiteConfig.cmake
    cariboulite-config.cmake

  Add the installation prefix of "CaribouLite" to CMAKE_PREFIX_PATH or set
  "CaribouLite_DIR" to a directory containing one of the above files.  If
  "CaribouLite" provides a separate development package or SDK, be sure it
  has been installed.


CMake Error at CMakeLists.txt:20 (include):
  include could not find load file:

    GrComponent


CMake Error at CMakeLists.txt:21 (GR_REGISTER_COMPONENT):
  Unknown CMake command "GR_REGISTER_COMPONENT".


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.18)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring incomplete, errors occurred!
See also "/home/pi/projects/cariboulite/software/gr-cariboulite/build/CMakeFiles/CMakeOutput.log".

need libsoapysdr-dev

clean install of raspberrypi OS 64 bit. install.sh does not compile cariboulite_app, fpgacomm, or caribou_programmer unless libsoapysdr-dev is present.

without libsoapysdr-dev:
3. Main software... -- The C compiler identification is GNU 10.2.1 -- The CXX compiler identification is GNU 10.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Check if compiler accepts -pthread -- Check if compiler accepts -pthread - yes -- Found Threads: TRUE -- Could NOT find SoapySDR (missing: SoapySDR_DIR) CMake Warning at CMakeLists.txt:53 (message): SoapySDR development files not found - skipping support

HiF missing: only S1G is found

SoapySDRUtil --probe only returns S1G.

I also get a "wrong kernel driver" error during the SMI initialization:

01-29 20:12:05.420  1155  1155 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:137 # Board Info - Product Type: CaribouLite FULL
01-29 20:12:05.420  1155  1155 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:313 initializing submodules
01-29 20:12:05.420  1155  1155 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:317 INIT FPGA SMI communication
01-29 20:12:05.421  1155  1155 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:141 initializing caribou_smi
01-29 20:12:05.421  1155  1155 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
01-29 20:12:05.421  1155  1155 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:190 Finished interogating 'smi' driver. Native batch length (bytes) = 524288

Any hint at what to look at/investigate would be great ;)

install.sh failed with "initializing pigpio failed"

when I run install.sh, I got the following errors (all other steps are good). I am using the latest code as 02/19/2023

3. Main software...
mkdir: cannot create directory ‘build’: File exists
[INFO] SoapyCaribouliteSession, sessionCount: 0
02-20 00:23:09.386  7756  7756 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:560 driver initializing
02-20 00:23:09.388  7756  7756 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:569 Initializing signals
02-20 00:23:09.390  7756  7756 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-20 00:23:09.392  7756  7756 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:202 Setting up board I/Os
02-20 00:23:09.398  7756  7756 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio
02-20 00:23:09.402  7756  7756 V [email protected]:7396 
+---------------------------------------------------------+
|Sorry, you don't have permission to run this program.    |
|Try running as root, e.g. precede the command with sudo. |
+---------------------------------------------------------+


02-20 00:23:09.409  7756  7756 E IO_UTILS_Main io_utils_setup@io_utils.c:36 initializing pigpio failed
02-20 00:23:09.410  7756  7756 E CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:205 Error setting up io_utils
[ERROR] cariboulite_init_driver() failed
02-20 00:23:09.411  7756  7756 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-20 00:23:09.421  7756  7756 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:699 driver being released
02-20 00:23:09.423  7756  7756 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:708 driver released
[INFO] SoapyCaribouliteSession, sessionCount: 0
02-20 00:23:09.573  7765  7765 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:560 driver initializing
02-20 00:23:09.574  7765  7765 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:569 Initializing signals
02-20 00:23:09.576  7765  7765 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-20 00:23:09.578  7765  7765 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:202 Setting up board I/Os
02-20 00:23:09.580  7765  7765 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio
02-20 00:23:09.582  7765  7765 V [email protected]:7396 
+---------------------------------------------------------+
|Sorry, you don't have permission to run this program.    |
|Try running as root, e.g. precede the command with sudo. |
+---------------------------------------------------------+


02-20 00:23:09.587  7765  7765 E IO_UTILS_Main io_utils_setup@io_utils.c:36 initializing pigpio failed
02-20 00:23:09.589  7765  7765 E CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:205 Error setting up io_utils
[ERROR] cariboulite_init_driver() failed
02-20 00:23:09.591  7765  7765 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-20 00:23:09.598  7765  7765 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:699 driver being released
02-20 00:23:09.600  7765  7765 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:708 driver released
-- Configuring done
-- Generating done
-- Build files have been written to: /home/qiang/projects/cariboulite/build
[ 12%] Built target iir
[ 20%] Built target datatypes
[ 24%] Built target ustimer
[ 27%] Built target caribou_prog
[ 29%] Built target caribou_fpga
[ 37%] Built target at86rf215
Scanning dependencies of target caribou_smi
[ 38%] Building C object src/caribou_smi/CMakeFiles/caribou_smi.dir/caribou_smi_modules.c.o
[ 40%] Linking C static library libcaribou_smi.a
[ 42%] Built target caribou_smi
[ 53%] Built target io_utils
[ 55%] Built target rffc507x
[ 59%] Built target hat
[ 66%] Built target production_utils
[ 70%] Built target zf_log
[ 75%] Built target cariboulite
[ 77%] Linking CXX executable cariboulite_util
[ 79%] Built target cariboulite_util
[ 81%] Linking CXX executable cariboulite_test_app
[ 83%] Built target cariboulite_test_app
[ 85%] Linking CXX executable test/fpgacomm
[ 87%] Built target fpgacomm
[ 88%] Linking CXX executable test/caribou_programmer
[ 90%] Built target caribou_programmer
[ 92%] Linking CXX shared module libSoapyCariboulite.so
[100%] Built target SoapyCariboulite
[ 12%] Built target iir
[ 20%] Built target datatypes
[ 24%] Built target ustimer
[ 27%] Built target caribou_prog
[ 29%] Built target caribou_fpga
[ 37%] Built target at86rf215
[ 42%] Built target caribou_smi
[ 53%] Built target io_utils
[ 55%] Built target rffc507x
[ 59%] Built target hat
[ 66%] Built target production_utils
[ 70%] Built target zf_log
[ 75%] Built target cariboulite
[ 79%] Built target cariboulite_util
[ 83%] Built target cariboulite_test_app
[ 87%] Built target fpgacomm
[ 90%] Built target caribou_programmer
[100%] Built target SoapyCariboulite
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/arm-linux-gnueabihf/SoapySDR/modules0.8-2/libSoapyCariboulite.so
-- Set runtime path of "/usr/local/lib/arm-linux-gnueabihf/SoapySDR/modules0.8-2/libSoapyCariboulite.so" to ""
-- Up-to-date: /usr/local/lib/libcariboulite.a
-- Installing: /usr/local/bin/cariboulite_util
-- Set runtime path of "/usr/local/bin/cariboulite_util" to ""

aarch 22.04 Ubuntu missing smi

Working w/ a Pi4 and DragonOS Pi64 (22.04). So far having installed the libs and iir I'm getting the following results

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

[INFO] SoapyCaribouliteSession, sessionCount: 0
01-28 19:03:12.399 11346 11346 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:535 driver initializing
01-28 19:03:12.400 11346 11346 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:544 Initializing signals                  
01-28 19:03:12.400 11346 11346 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:678 setting up signal handler            
01-28 19:03:12.400 11346 11346 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:178 Setting up board I/Os                            
01-28 19:03:12.400 11346 11346 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio                                                  
01-28 19:03:12.400 11346 11346 V [email protected]:7396                                                                                
+---------------------------------------------------------+                                                                                      
|Sorry, you don't have permission to run this program.    |                                                                                      
|Try running as root, e.g. precede the command with sudo. |                                                                                      
+---------------------------------------------------------+                                                                                      
                                                                                                                                                 
                                                                                                                                                 
01-28 19:03:12.400 11346 11346 E IO_UTILS_Main io_utils_setup@io_utils.c:36 initializing pigpio failed                                           
01-28 19:03:12.400 11346 11346 E CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:181 Error setting up io_utils                        
01-28 19:03:12.400 11346 11346 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:313 initializing submodules                   
01-28 19:03:12.400 11346 11346 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:317 INIT FPGA SMI communication               
01-28 19:03:12.400 11346 11346 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:141 initializing caribou_smi                                    
01-28 19:03:12.400 11346 11346 E CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:146 can't open smi driver file '/dev/smi'                       
01-28 19:03:12.400 11346 11346 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:321 Error setting up smi submodule            
01-28 19:03:12.400 11346 11346 E FPGA caribou_fpga_close@caribou_fpga.c:144 caribou_fpga_close: dev not initialized                              
01-28 19:03:12.401 11346 11346 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:221 Releasing board I/Os - closing SPI             
01-28 19:03:12.401 11346 11346 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:326 closing uninitialized device                                 
01-28 19:03:12.401 11346 11346 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:224 Releasing board I/Os - io_utils_cleanup        
[ERROR] cariboulite_init_driver() failed                                                                                                         
01-28 19:03:12.401 11346 11346 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:678 setting up signal handler
Printing 'findCariboulite' Request:                                                                                                              
[INFO] [UHD] linux; GNU C++ version 11.2.0; Boost_107400; UHD_4.1.0.5-3                                                                          
Found device 0
  channel = S1G
  device_id = 0
  driver = Cariboulite
  label = CaribouLite S1G[ca381142]
  name = CaribouLite RPI Hat
  serial = ca381142
  uuid = c522fca7-00fb-4669-a0c5-f56a417af315
  vendor = CaribouLabs LTD
  version = 0x0001

Found device 1
  channel = HiF
  device_id = 1
  driver = Cariboulite
  label = CaribouLite HiF[ca381143]
  name = CaribouLite RPI Hat
  serial = ca381143
  uuid = c522fca7-00fb-4669-a0c5-f56a417af315
  vendor = CaribouLabs LTD
  version = 0x0001

I can run w/ Sudo and get the following,

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

[INFO] SoapyCaribouliteSession, sessionCount: 0
01-28 19:03:42.792 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:535 driver initializing
01-28 19:03:42.792 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:544 Initializing signals                  
01-28 19:03:42.792 12081 12081 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:678 setting up signal handler            
01-28 19:03:42.792 12081 12081 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:178 Setting up board I/Os                            
01-28 19:03:42.792 12081 12081 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio                                                  
01-28 19:03:42.911 12081 12081 I IO_UTILS_Main io_utils_setup@io_utils.c:39 pigpio version 79                                                    
01-28 19:03:42.911 12081 12081 D ICE40 [email protected]:343 Resetting FPGA reset pin to 0                                  
01-28 19:03:42.912 12081 12081 I IO_UTILS_SPI io_utils_spi_init@io_utils_spi.c:309 configuring gpio setups                                       
01-28 19:03:42.912 12081 12081 I ICE40 [email protected]:71 device init completed                                                 
01-28 19:03:42.912 12081 12081 I CARIBOULITE Setup cariboulite_configure_fpga@cariboulite_setup.c:257 Configuring the FPGA a internal firmware blob                                                                                                                                               
01-28 19:03:42.912 12081 12081 I ICE40 [email protected]:120 RESET low, Waiting for CDONE low                        
01-28 19:03:42.914 12081 12081 I ICE40 [email protected]:216 Sending bitstream of size 32220                     
01-28 19:03:44.351 12081 12081 I ICE40 [email protected]:238 bitstream sent 32220 bytes                          
01-28 19:03:44.352 12081 12081 I ICE40 [email protected]:158 sending dummy clocks, waiting for CDONE to rise (or fail)
01-28 19:03:44.352 12081 12081 I ICE40 [email protected]:169 0 dummy clocks sent                                      
01-28 19:03:44.352 12081 12081 I ICE40 [email protected]:248 FPGA programming - Success!                         
                                                                                                                                                 
01-28 19:03:44.352 12081 12081 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:436 removing an spi device with handle 0                   
01-28 19:03:44.352 12081 12081 I ICE40 [email protected]:100 device release completed                                          
01-28 19:03:44.352 12081 12081 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:575 INIT FPGA SPI communication           
01-28 19:03:44.352 12081 12081 I FPGA caribou_fpga_init@caribou_fpga.c:114 configuring reset and irq pins                                        
01-28 19:03:44.352 12081 12081 I FPGA caribou_fpga_init@caribou_fpga.c:122 Initializing io_utils_spi                                             
01-28 19:03:44.352 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:583 Testing FPGA communication and versions...                                                                                                                                             
01-28 19:03:44.352 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:586 FPGA Versions: sys: 1, manu.id: 1, sys_ctrl_mod: 1, io_ctrl_mod: 1, smi_ctrl_mot: 1                                                                                                    
01-28 19:03:44.352 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:592 FPGA Errors: 00                       
01-28 19:03:44.352 12081 12081 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:607 ====> FPGA Digital Values: led0: 0, led1: 0, btn: 1, CFG[0..3]: [1,1,1,1]                                                                                                              
01-28 19:03:44.352 12081 12081 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:611 Detected Board Information:           
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:131 # Board Info - Category name: hat                                                                                                                                                
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:132 # Board Info - Product name: CaribouLite RPI Hat                                                                                                                                 
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:133 # Board Info - Product ID: 0x0001, Numeric: 1                                                                                                                                    
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:134 # Board Info - Product Version: 0x0001, Numeric: 1                                                                                                                               
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:135 # Board Info - Product UUID: c522fca7-00fb-4669-a0c5-f56a417af315, Numeric serial: 0x651C08A1                                                                                    
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:136 # Board Info - Vendor: CaribouLabs LTD                                                                                                                                           
01-28 19:03:44.353 12081 12081 I CARIBOULITE_CONFIG cariboulite_config_print_board_info@cariboulite_config.c:137 # Board Info - Product Type: CaribouLite FULL                                                                                                                                    
01-28 19:03:44.353 12081 12081 I CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:313 initializing submodules                   
01-28 19:03:44.353 12081 12081 D CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:317 INIT FPGA SMI communication               
01-28 19:03:44.353 12081 12081 I CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:141 initializing caribou_smi                                    
01-28 19:03:44.353 12081 12081 E CARIBOU_SMI_Main caribou_smi_init@caribou_smi.c:146 can't open smi driver file '/dev/smi'                       
01-28 19:03:44.353 12081 12081 E CARIBOULITE Setup cariboulite_init_submodules@cariboulite_setup.c:321 Error setting up smi submodule            
01-28 19:03:44.353 12081 12081 D CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:504 CLOSE FPGA communication               
01-28 19:03:44.353 12081 12081 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:436 removing an spi device with handle 0                   
01-28 19:03:44.353 12081 12081 E FPGA caribou_fpga_close@caribou_fpga.c:144 caribou_fpga_close: dev not initialized                              
01-28 19:03:44.353 12081 12081 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:221 Releasing board I/Os - closing SPI             
01-28 19:03:44.353 12081 12081 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:224 Releasing board I/Os - io_utils_cleanup        
[ERROR] cariboulite_init_driver() failed                                                                                                         
01-28 19:03:44.363 12081 12081 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:678 setting up signal handler
Printing 'findCariboulite' Request:                                                                                                              
[INFO] [UHD] linux; GNU C++ version 11.2.0; Boost_107400; UHD_4.1.0.5-3                                                                          
Found device 0
  channel = S1G
  device_id = 0
  driver = Cariboulite
  label = CaribouLite S1G[ca381142]
  name = CaribouLite RPI Hat
  serial = ca381142
  uuid = c522fca7-00fb-4669-a0c5-f56a417af315
  vendor = CaribouLabs LTD
  version = 0x0001

Found device 1
  channel = HiF
  device_id = 1
  driver = Cariboulite
  label = CaribouLite HiF[ca381143]
  name = CaribouLite RPI Hat
  serial = ca381143
  uuid = c522fca7-00fb-4669-a0c5-f56a417af315
  vendor = CaribouLabs LTD
  version = 0x0001


01-28 19:03:45.530 12081 12081 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:690 driver being released
01-28 19:03:45.530 12081 12081 D CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:504 CLOSE FPGA communication               
01-28 19:03:45.530 12081 12081 E FPGA caribou_fpga_close@caribou_fpga.c:144 caribou_fpga_close: dev not initialized                              
01-28 19:03:45.530 12081 12081 E CARIBOULITE Setup cariboulite_release_submodules@cariboulite_setup.c:508 FPGA communication release failed (-1) 
01-28 19:03:45.530 12081 12081 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:221 Releasing board I/Os - closing SPI             
01-28 19:03:45.530 12081 12081 E IO_UTILS_SPI io_utils_spi_close@io_utils_spi.c:326 closing uninitialized device                                 
01-28 19:03:45.530 12081 12081 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:224 Releasing board I/Os - io_utils_cleanup        
01-28 19:03:45.530 12081 12081 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:698 driver released

Attempting to access with GQRX (non root)

soapy_sighandler caught SIGSEGV
[INFO] soapy_sighandler killing soapy_cariboulite (cariboulite_release_driver)
01-28 19:07:05.729 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:690 driver being released
01-28 19:07:05.729 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:698 driver released                            
CaribouLite: Signal [11] received from pid=[0]                                                                                                   
Signal [11] caught, with the following information:                                                                                              
   signal errno = 0                                                                                                                              
   signal process pid = 0                                                                                                                        
   signal process uid = 0                                                                                                                        
   signal status = 0                                                                                                                             
   signal errno / SIGSEGV / the process access invalid region of memory                                                                          
SIGSEGV: memory access violation                                                                                                                 
01-28 19:07:05.729 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:690 driver being released                      
01-28 19:07:05.729 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:698 driver released                            
01-28 19:07:05.820 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:690 driver being released                      
01-28 19:07:05.820 18473 18473 I CARIBOULITE Setup cariboulite_release_driver@cariboulite_setup.c:698 driver released

Undefined symbol

Hello,
I built latest commit of main branch it works better than before (at least less errors during SoapySdrUtil and built in test binary works), however still got one issue that prohibits sdr plus plus usage:

SoapySDRUtil: symbol lookup error: /usr/local/lib/aarch64-linux-gnu/SoapySDR/modules0.8/libSoapyCariboulite.so: undefined symbol: _ZN3Iir7CascadeC2Ev
Is this known issue?

SoapySDRUtil --find commands fails

Using the develop_R1 branch and cherry-picked in the PRs from @MartinHerren

Has anyone worked past this issue?

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

[ERROR] SoapySDR::loadModule(/usr/local/lib/aarch64-linux-gnu/SoapySDR/modules0.8/libSoapyCariboulite.so)
  dlopen() failed: libiir.so.1: cannot open shared object file: No such file or directory
No devices found! 

Failed installing Soapy.

Tried to install on a RPi- ZW with the latest and fresh OS. Followed the instruction as stated.
Stage 3 encountered problems:

[ 3 ] Checking Soapy SDR installation (SoapySDRUtil)...
Did not find SoapySDRUtil. Do you want to clone and install? (Y/[N]):
./install.sh: line 55: SoapySDRUtil: command not found
./install.sh: line 56: SoapySDRUtil: command not found
mkdir: missing operand
Try 'mkdir --help' for more information.

[ 4 ] Checking the installed Soapy utilities...

Failed installing Soapy. Exiting...

How can I fix this?

FPGA programming failed

Using develop_R1 build, I get the following error when running cariboulite_test_app:

sudo ./cariboulite_test_app 
02-13 18:17:07.649  2166  2166 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:560 driver initializing
02-13 18:17:07.649  2166  2166 I CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:569 Initializing signals
02-13 18:17:07.650  2166  2166 I CARIBOULITE Setup cariboulite_setup_signal_handler@cariboulite_setup.c:687 setting up signal handler
02-13 18:17:07.650  2166  2166 I CARIBOULITE Setup cariboulite_setup_io@cariboulite_setup.c:202 Setting up board I/Os
02-13 18:17:07.650  2166  2166 I IO_UTILS_Main io_utils_setup@io_utils.c:26 initializing pigpio
02-13 18:17:07.759  2166  2166 I IO_UTILS_Main io_utils_setup@io_utils.c:39 pigpio version 79
02-13 18:17:07.759  2166  2166 I IO_UTILS_SPI io_utils_spi_init@io_utils_spi.c:321 configuring gpio setups
02-13 18:17:07.759  2166  2166 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:583 Initializing FPGA
02-13 18:17:07.759  2166  2166 I FPGA caribou_fpga_init@caribou_fpga.c:116 configuring reset and irq pins
02-13 18:17:07.759  2166  2166 I FPGA caribou_fpga_init@caribou_fpga.c:124 Initializing io_utils_spi
02-13 18:17:07.760  2166  2166 I CARIBOU_PROG caribou_prog_init@caribou_prog.c:84 FPGA is already configured and running
02-13 18:17:07.760  2166  2166 I CARIBOU_PROG caribou_prog_init@caribou_prog.c:87 device init completed
02-13 18:17:07.760  2166  2166 D CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:596 Programming FPGA
FPGA Versions:
	System Version: FF
	Manu. ID: FF
	Sys. Ctrl Version: FF
	IO Ctrl Version: FF
	SMI Ctrl Version: FF
02-13 18:17:07.761  2166  2166 I CARIBOU_PROG caribou_prog_configure_prepare@caribou_prog.c:148 RESET low, Waiting for CDONE low
02-13 18:17:07.763  2166  2166 I CARIBOU_PROG caribou_prog_configure_from_buffer@caribou_prog.c:259 Sending bitstream of size 32220
02-13 18:17:08.898  2166  2166 I CARIBOU_PROG caribou_prog_configure_from_buffer@caribou_prog.c:281 bitstream sent 32220 bytes
02-13 18:17:08.898  2166  2166 I CARIBOU_PROG caribou_prog_configure_finish@caribou_prog.c:192 sending dummy clocks, waiting for CDONE to rise (or fail)
02-13 18:17:08.898  2166  2166 I CARIBOU_PROG caribou_prog_configure_finish@caribou_prog.c:203 0 dummy clocks sent
02-13 18:17:08.898  2166  2166 I CARIBOU_PROG caribou_prog_configure_from_buffer@caribou_prog.c:291 FPGA programming - Success!

FPGA Versions:
	System Version: FF
	Manu. ID: FF
	Sys. Ctrl Version: FF
	IO Ctrl Version: FF
	SMI Ctrl Version: FF
02-13 18:17:08.999  2166  2166 E FPGA caribou_fpga_program_to_fpga@caribou_fpga.c:182 Programming failed
02-13 18:17:08.999  2166  2166 E CARIBOULITE Setup cariboulite_init_driver_minimal@cariboulite_setup.c:599 FPGA programming failed
02-13 18:17:08.999  2166  2166 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 0
02-13 18:17:08.999  2166  2166 I IO_UTILS_SPI io_utils_spi_remove_chip@io_utils_spi.c:475 removing an spi device with handle 1
02-13 18:17:08.999  2166  2166 I CARIBOU_PROG caribou_prog_release@caribou_prog.c:122 device release completed
02-13 18:17:08.999  2166  2166 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:240 Releasing board I/Os - closing SPI
02-13 18:17:08.999  2166  2166 I CARIBOULITE Setup cariboulite_release_io@cariboulite_setup.c:243 Releasing board I/Os - io_utils_cleanup
02-13 18:17:09.005  2166  2166 E CARIBOULITE Test main@cariboulite_test_app.c:68 driver init failed, terminating...
pi@raspberrypi:~/projects/cariboulite/build $ 

HF Support

Any chance RX/TX will work in 1-30 Mhz range? Hams would love it! :)

Hardware Issue Question

I just got my Caribou Lite (6GHZ R2.8) from mouser. I am having issues getting it working. I just want to verify that there should be no components soldered in the "MXR IN" box on the top of the unit and nothing soldered in on the MIXER part of the unit on the bottom (All picture I see have these fully populated). I know it went through a lot of hardware revisions.

I am probably just not setting up the software correctly but want to make sure I am not chasing my tail and just didn't get an unfinished piece of hardware.

Thanks,
Sean

SDR is center frequency problems

With my unit up and running I have been able to confirm that it does tune to stations BUT...

It is hard to explain, when moving the center frequency causing the SDR to change frequency I can slightly move left and right of where known stations are and I will get nothing but then I will see "pops" and if I manage to stop exactly when the "pops" happen then i can listen to a station or two. But if I move the center 1Hz then I'm back to the left right dance to get it to stick again..

Video..
https://youtu.be/NLId4RBuCbg

Even after I get it working if I just stop and start the SDR without touching the frequency it will loose tune...

Is any one else experiencing this behavior?

stack several cariboulites

Hi again, just have another doubt:

I have seen in first version of pcb you have pictures with 2 stacked boards, is this possible?.

It would be amazing to stack several cariboues for MIMO or radar. something like the kerberos with the rtl-sdr chip but with better price per chip and best performance and quality.

I imagine some clock management and sync data interleaved between boards has to be done and the throughput increase almost to the limit of SMI but there is nothing similar in market at low price.

Other bottleneck could be how the raspberry manage the amount of data for processing.

Maybe I could help if you want with this since have experience with fpgas and raspberry and I'm very interested in this option.

No receiving any signal.

Has anyone actually managed to tune in to any frequency yet?

I finally have it running on my RPI Zero 2W with SoapyRemote but I cannot even pick my local radio station...

Proposal to get alligned.

All, i would like to make an proposal.
We have a discussions tab and we have the main page.
We all try to get the cariboulite hat working on all kind of platforms and hardware.
Would it be an idea to:

  • ask the founders to investigate what hardware and what os is at this moment supported and signed off as working
  • ask the founders to turn the procedure 180 degrees and when the want to let one of us to do a specific test on os or hardware they announce it in the discussion forum of in the main page or here?
  • make a seperate location with build procedures that have been tested and deliverd a result or partly result where the result is also documented

For me: i have build with succes on a pi zero 2n but tuning is still an issue, i am willing to rewrite what i have done, the depends, and so on, and the outcome.

It could be an approach for the founders and developers to have a bette overview in progress and prioritize the issues.

We all want to have a working cariboulite, and for me, it would be great if it runs on a pizero but when we conclude it needs a pi4 it is better to make that statement than try time over time to get something working on hardware that does not suit the needs.

Also close the issues metioned that have been fixed now, so we get an overview of the issues that need attention. As far as i know the build script is working now, in the main branch.

regards
Eelco

update on compiling and getting things work

Today i did some rework, and installed as suggested the PIsdr image and did a full update and upgrade.
Then i installed the modules sudo apt-get install soapysdr-module-all libsoapysdr-dev soapysdr-tools
And used the main branch.
The compile proces had no issues .. it looked all fine.
When i started SDR ++ it still looked fine and then...
starting up is saw these : Today i did some rework, and installed as suggested the PIsdr image and did a full update and upgrade.
Then i installed the modules sudo apt-get install soapysdr-module-all libsoapysdr-dev soapysdr-tools
And used the main branch.
The compile proces had no issues .. it looked all fine.
When i started SDR ++ it still looked fine and then...
starting up is saw these :
image

Thats the first issue any clue?
Then it all looks ok, soapy sdr, and even cariboulite is shown .. well this is again a step forward...
image

But then i press start and this is the result :
image

The situation:
PiZero 2 with PiSDR

snippet config.txt
[all]
#dtparam=i2c_vc=on
dtoverlays=smi
#dtoverlays=smi-dev

any clues where i have made an errror?

setup.sh error

I can clone the github repository onto my Raspberry Pi 4B:
mkdir ~/projects
cd ~/projects
git clone https://github.com/cariboulabs/cariboulite
cd cariboulite
Than I get an error message when trying to run sudo setup.sh (sudo: setup.sh: command not found)
sudo setup.sh gui

or

sudo setup.sh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.