How to run two krakens simultaneously on one computer?

Hi,
I use Kraken to collect raw data on GNU Radio via VirtualBox. I obtain output by entering raw data into my own algorithm. When I did this with a single kraken, everything went smoothly so far.
Now I want to use two Krakens at the same time to record raw data with GNU Radio via Virtualbox. I thought I could do this using the second KrakenSDR source block. To do this, I needed to change the IP address of the second kraken, but I could not achieve this. Is there a way I can run two Krakens simultaneously on a single computer? How can I change the IP address? I would be happy if you help.

The code isn’t designed to have more than one instance running per machine at the moment, but I think it could be done.

If you’re running on the same machine, it’ll be the same IP address. But you’d need to change the port.

We don’t have an exposed setting for the port, but if you run a second instance of the code in another folder you could try changing the port here heimdall_daq_fw/Firmware/_daq_core/eth_server.h at fe57d1a96434a77074524f0fb7a17f9c88a8e507 · krakenrf/heimdall_daq_fw · GitHub, and then in your GNU Radio block.

I think it’s possible that you’d also need to change the control interface port here heimdall_daq_fw/Firmware/_daq_core/hw_controller.py at fe57d1a96434a77074524f0fb7a17f9c88a8e507 · krakenrf/heimdall_daq_fw · GitHub

I did as you said and created a new file named “gr_heimdall_daq2”. Then I changed the port line in the eth_server.h code in the new file to “#define IQ_SERVER_PORT 6000”. Then I changed the same process in the hw_controller.py code to “self.ctr_iface_port_no = 6001 # TODO: Set this port number from the ini file”.

You recommended that I change these, in addition to these; I changed the line in the iq_eth_sink.py code to “self.port = 6000”.
Finally, I changed the line found in the daq_start_sm.sh code to
"# Check ports(IQ server:5000, Hardware controller:5001)
while true; do
port_ready=1
lsof -i:6000 >/dev/null
out=$?
if test $out -ne 1
then
port_ready=0
fi
lsof -i:6001 >/dev/null
out=$? ".

Then, I compiled the changes I made by entering the commands
“cd/heimdall_daq2/Firmware/_daq_core/
make”
from the command window.

First, for testing purposes, I ran the heimdall code that I moved to port 6000 by installing only one kraken, and then I changed the port to 6000 in the GNU radio blocks and tested it. GNU radio worked with port 6000.

I tried the following to do this with two krakens;
First, I plugged the first kraken into my computer and ran heimdall, the noise led blinked for a while, everything was normal up to this point, then when I plugged the second kraken into my computer and ran the second heimdall (gr_heimdall_daq2) while the first kraken was plugged into my computer, the noise led of the first kraken turned green but did not go out. Here, I would wait for the led of the second kraken to blink.

Then, while both krakens were plugged into my computer, I ran the first heimdall, the noise led of the first kraken turned on and did not go out. In other words, having both krakens connected at the same time prevented heimdall from working properly.

As a result, I could not run heimdall for the second kraken in either case.

I tried to explain the process in detail, I am waiting for your help in this regard.
1

It’s possible that you’re also running into USB bandwidth limitations.

Two KrakenSDRs will be unable to run on the same USB controller as the max USB bandwidth will be exceeded. It could also cause timing issues with the USB packets.

If there’s any chance of two Krakens on the same PC working, you’ll need to run them on each on USB ports with individual dedicated USB controllers.

Not sure if you’re already set up for that, but if not it would mean getting a separate USB controller card for your PC, and running one Kraken on that.

I asked my question under the topic “How to install gr-krakensdr on GNU Radio running natively on Windows” but I wanted to ask it here too.

What do you think about this method? Do you think it could work? If you think it is possible, can you give details or prepare a guide?

We’ve never tested this, but I do think this could work.

In this case, you would just need to set the IP address of each individual Raspberry Pi running its own Heimdall instance in the GNU Radio blocks. I don’t think you’d need to modify the ports.