Skip to content

Running UHD software locally on AntSDR #103

@DmitryPan

Description

@DmitryPan

I have prepared Debian sid (armhf) chroot environment on E200 locally and compiled AntSDR UHD host driver. Running uhd_find_devices locally detects AntSDR without any errors, while running uhd_usrp_probe locally produces the following errors.

root@ant:/# /usr/local/bin/uhd_usrp_probe 
[INFO] [UHD] linux; GNU C++ version 14.2.0; Boost_108300; UHD_4.1.0.0-0-45cabfde
[INFO] [ANT] Detected Device: ANTSDR
[ERROR] [UHD] An unexpected exception was caught in a task loop.The task loop will now exit, things may not work.EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [UHD] Exception caught in safe-call.
  in virtual radio_ctrl_core_3000_impl::~radio_ctrl_core_3000_impl()
  at /opt/antsdr_uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:66
this->peek32(0); _async_task.reset(); -> AssertionError: accum_timeout < _timeout
  in uint64_t radio_ctrl_core_3000_impl::wait_for_ack(bool)
  at /opt/antsdr_uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:228

[INFO] [ANT] Detected ANT net state; resetting device.
[INFO] [ANT] Detected Device: ANTSDR
[ERROR] [UHD] An unexpected exception was caught in a task loop.The task loop will now exit, things may not work.EnvironmentError: IOError: recv error on socket: Connection refused
[ERROR] [UHD] Exception caught in safe-call.
  in virtual radio_ctrl_core_3000_impl::~radio_ctrl_core_3000_impl()
  at /opt/antsdr_uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:66
this->peek32(0); _async_task.reset(); -> AssertionError: accum_timeout < _timeout
  in uint64_t radio_ctrl_core_3000_impl::wait_for_ack(bool)
  at /opt/antsdr_uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:228

Error: AssertionError: accum_timeout < _timeout
  in uint64_t radio_ctrl_core_3000_impl::wait_for_ack(bool)
  at /opt/antsdr_uhd/host/lib/usrp/cores/radio_ctrl_core_3000.cpp:228

I can confirm that running uhd_usrp_probe remotely and other UHD software (e.g. ormo-trx-uhd) remotely on another Zynq7020 device (not AntSDR) works well with AntSDR. This means that Zynq7020 SoC has enough processing power to do something useful. It's possible to run on PlutoSDR and its clones (same SoC, different API) ADS-B, FM radio and basically everything that has sampling rate below 500 KHz and can be done with GNU Radio.

AntSDR likely sends/receives data to/from the network using FPGA and bypassing the Linux kernel, so the packets are not received by the software running locally. Is there a workaround to run the UHD software locally on AntSDR? Maybe iptables, brctl, tap, tun or route? Is possible to open the source code of /sbin/e200 binary to study the problem and possibly resolve it?

AntSDR UHD driver is built on UHD version 4.1. Is it possible to patch UHD 4.9 to support AntSDR?

Please do not advice to run UHD software remotely, as it requires tens to hundreds of megabits of bandwidth. Alternative solution is to use SBC alongside with AntSDR on remote end and process radio data on SBC, but in this case there are a lot of cheaper SDRs to connect to SBC - B210 clones, LimeSDR, etc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions