Skip to content

Latest commit

 

History

History
187 lines (156 loc) · 12.3 KB

README.md

File metadata and controls

187 lines (156 loc) · 12.3 KB

KrakenSDR Resources:

KrakenSDR Front Panel:

KrakenSDR
Image Source

KrakenSDR 5 Channel Internal Breakdown:

KrakenSDR
Image Source

Alternatives to KrakenSDR Multi-Channel Phase Coherent SDR:

  • The $2,165.00 Ettus USRB B210 2 channel phase coherent transceiver.

Current Issues:

Please see my GitHub Issue #5 regarding KrakenSDR and GNURadio.

  • I do a complete x86_64 krakensdr_doa and gr-krakensdr install from scratch using the install scripts on a fresh install of Linux Mint 21.3.
  • This issue deals with the error message "Exception: Failed to get IQ Samples" when running a GNU Radio flow graph.
  • The root cause comes from the rtlsdr_demod_write_reg failed with -9 error in the rtl_daq.log file.
    • Per user KrakenRF: "This is the core problem. This usually means that there is some problem communicating with the KrakenSDR. So most likely a USB data cable problem. Please try another high quality USB cable, and also try the ports on the back of your PC. Sometimes the ports on the front of desktop computers are internally connected with very low quality cabling, and so they won't work well with high data rate devices."
    • Update: after extensive testing, the problem was with my laptop USB ports. For whatever reason, they do not like the KrakenSDR. I wish I had a better answer. I fired up another laptop with a fresh Win10 image and WSL2 running Ubuntu 22.04. I installed the USBIPD-WIN package and was able to bind the 5 KrakenSDR radios to WSL. I did a manual x86_64 install of the krakensdr_doa and gr-krakensdr in WSL2 the same way as I described at the beginning of the GH Issue. When I run kraken_fft_display.grc it seems to work pretty well. No dropped IQ samples this time and no failures. Although this is not ideal, it is something I can deal with. It appears to be some problem with my laptop USB ports and not related to the KrakenSDR.

Known Issues:

Notes on KrakenSDR Power Requirements:

Mobile:

In order to set up a mobile DoA setup using a Rasperry Pi 4 or 5, The following power requirements need to be taken into account:

  • The Raspberry Pi 4 requires at least a 5V 3.0A (15W) power supply. Note that the CanaKit Pi 4 power supply we used was rated at 18W.
  • The Raspberry Pi 5 requires a 27W power supply (5.0V 5.4A)
  • The KrakenSDR docs state that it draws a nominal value of 11W, and requires at least a 5V 2.4A (12W) power supply.
    • Note that this nominal value does not take into account any current supplied by any of the 4.5V bias-tees for each SMA input. Any additional current for this purpose must be added to the 12W baseline if the bias-tee is used.
    • As a result, I have found a reasonable 2 × 30W USB-C cigarette lighter power supply here that seems to have ample power: USB C Car Charger, 60W Cigarette Lighter

Stationary:

Here are the cables and power supply I used for indoor stationary operation:

Notes on the Preconfigured VirtualBox VM:

  1. After importing the OVA appliance to VBox 7.0+:

    • Allocate 4 vCPUs & 8192 MB of RAM to the Kraken Ubuntu VM.
    • Increase the display video memory to 128 MB.
    • Make sure to test run and UPDATE the image (this may take awhile).
      • In Ubuntu, if this does not happen automatically, then click Activities in the top right corner and search for Software Updater.
    • With the KrakenSDR plugged in and powered on:
      • The RTL-SDR USB Device Filter should already be added in the VBox hypervisor.
      • If not, add it here: Settings -> USB -> USB Device Filters
  2. Next, we need to fix the 16 MB usbfs_memory_mb that will prevent using all 5 RTL-SDRs in the KrakenSDR.

    • Temporary Fix (Does Not Survive Reboot):
      • open a terminal and login as root: sudo su and enter the password.
      • now enter echo 0 > /sys/module/usbcore/parameters/usbfs_memory_mb
      • now verify the change by logging out of the root terminal (CTRL+d) and entering cat /sys/module/usbcore/parameters/usbfs_memory_mb and we should now see the value 0.
      • This allows for testing of 5 channel simulaneous operation. Open 5 separate terminals:
        • In the first terminal, enter kraken_test -d0 to open channel 0.
        • In the second terminal, enter kraken_test -d1 to open channel 1.
        • In the third terminal, enter kraken_test -d2 to open channel 2.
        • In the fourth terminal, enter kraken_test -d3 to open channel 3.
        • In the fifth terminal, enter kraken_test -d4 to open channel 4.
        • Each terminal should hang and update itself periodically, indicating the channel is opened, until a CTRL+c is entered. If any of the tests fail to run then the value of the usbfs_memory_mb has likely been reset to 16, which is an insufficient value to retreive all data from the 5 RTL-SDRs simultaneously via USB-C from the Kraken.
    • Permanent Fix (Ubuntu): change the grub config when booting:
      • Edit /etc/default/grub: sudo nano /etc/default/grub
        • Append usbcore.usbfs_memory_mb=0 to the GRUB_CMDLINE_LINUX variables between the double quotes.
        • CTRL+x to exit and save.
      • From the command line, enter: sudo grub-mkconfig -o /boot/grub/grub.cfg to write the new grub configuration. We need to reboot for this to take effect.
      • Next, enter: reboot
      • After reboot, in a new terminal window enter: cat /sys/module/usbcore/parameters/usbfs_memory_mb and we should see a value of 0 if the USBFS fix worked.
      • Now we must verify that all 5 KrakenSDR channels can be opened simultaneously.
  3. Next, we need to change the Hemdall DAQ Data Interface settings:

    • Enter: nano ~/krakensdr_doa/heimdall_daq_fw/Firmware/daq_chain_config.ini
    • At the bottom of the file, under the [data_interface] section:
      • replace old interface with ethernet: out_data_iface_type = eth
      • CTRL+x to exit and save.
  4. Download the two missing Heimdall bash scripts from the gr-krakensdr repo:

    • heimdall_only_start.sh
    • heimdall_only_stop.sh
    • Place both scripts into the root krakensdr folder of the VM: ~/krakensdr_doa/
    • Open a terminal, navigate to ~/krakensdr_doa/ and make both scripts executable:
      • sudo chmod +x heimdall_only_start.sh heimdal_only_stop.sh
    • In order to run GNU Radio, the heimdall_only_start.sh
    • Without running this script, when executing a flow graph the following error is encountered:
      • Ethernet Connection Failed, Error: <class 'ConnectionRefusedError'>
  5. Revert back to Xorg from wayland to avoid the warnings when running flow graphs in GNU Radio:

    • Edit the following file: sudo nano /etc/gdm3/custom.conf
      • Uncomment the line WaylandEnable=False
      • CTRL+x to save and exit.
    • Edit the following file: sudo nano /etc/environment
      • Append the following on a new line: QT_QPA_PLATFORM=xcb
      • CTRL+x to save and exit.
      • Now reboot: sudo reboot now
      • check the following: echo $XDG_SESSION_TYPE and it should NOT return wayland
        • In my case, it returned x11
    • In some instances, this warning was preventing the output GUI window from opening.
  6. When running a GNURadio flow graph, if you receive a warning message popup that states:

The xterm executable is missing. You can change this setting in your gnuradio.conf, 
in section [grc] 'xterm_executable' 
  • Then it can be corrected by editing /grc.conf:
    • sudo nano /etc/gnuradio/conf.d/grc.conf
    • find the line that begins with the variable xterm_executable=... and change it to:
      • xterm_executable=/usr/bin/gnome-terminal (Assuming you are using gnome-terminal like I am)
      • CTRL+x to save and exit.
  1. When running a GNURadio Flow Graph in the VM which requires realtime scheduling and the following error message in the console is encountered:
def main(top_block_cls=transceiver_CSS_loopback, options=None):   
    if gr.enable_realtime_scheduling() != gr.RT_OK:   
        gr.logger("realtime").warning("Error: failed to enable real-time scheduling.")
AttributeError: 'gnuradio.gr.gr_python.logger' object has no attribute 'warning'

The fix is to allow user's tasks gain the ability to ask for real-time scheduling.

  • Run the following in a terminal:
echo "$(whoami)  -  rtprio  99" | sudo tee /etc/security/limits.d/99-rtprio.conf

Then perform a reboot and the problem should be solved. Thanks to This GitHub Issue #6923 for the solution.


Please note that none of the links provided here are mine nor do I benefit at all from sharing them. It's strictly to help those who may need it in the future. Thanks for visiting.