Getting up and running with LimeSDR XTRX

Thanks @andrewback .

I have couple of queries in integrating LimeSDR XTRX.

  1. If we want to connect LimeSDR XTRX v1.2 board with PC/Raspberry pi, Which miniPCIe to USB adapter would you recommend, Since default adapters which are available in the market support only USB bus interface, not PCI-E bus type. As per XTRX HW spec, It uses PCIe bus internally, Correct me if I’m wrong.

  2. Can we install Lime Suite via a package/installer (as per Lime Suite - Myriad-RF Wiki) or Do we need to build Lime Suite from source code (litepcie-update branch), as you mentioned in previous thread.

  3. Can we follow Lime Suite source code build instruction from Lime Suite - Myriad-RF Wiki or Is there any updated build instruction for Ubuntu/linux ?

You cannot use USB for interfacing and must use PCIe. Fairwaves did sell a USB<>mPCIe adapter, but this was based on a chip which is now obsolete and I’m not sure how well it ever worked. Trying to tunnel PCIe over USB is a bad idea. Please use a proper PCIe interface.

If you need an SDR with a USB interface, I would suggest using LimeSDR Mini v2.

At this point you need to build from source using the branch specified.

It should be mostly the same to build, with one major difference: you will also need to build and install the PCIe kernel driver:

Documentation that covers all of this is being worked on and should hopefully be ready in the next week or so.

Thank you Andrew!

We have our own form factor which has mini PCIe port, but porting driver into hardened OS what we are using, is quite a challenge. So we are looking for form factor which supports LimeSDR XTRX. Do you have any such thing ?. I was wondering how others are porting XTRX into their PC without using any adapter.

I would appreciate your help!

If one lane of PCIe will suffice there are various off the shelf options, usually small form factor and industrial PCs, that have an mPCIe slot.

If you need two lanes you will need a custom design. We will soon be offering a full size PCIe to mPCIe adapter board, that has two lanes and an integrated RF front-end. If you’re signed up to the LimeSDR XTRX campaign you should be notified once this becomes available.

Thanks you Andrew!

I signed up to the LimeSDR XTRX campaign. May I know the documentation for building LimeSuite and other XTRX related driver support is ready ?, Since you mentioned in the previous thread that, it will be ready by this week.

It’s being published here, but still very much a work in progress:

https://limesuiteng.myriadrf.org/

This gets rebuilt whenever the development branch is merged into stable. If you want to get the very latest docs you would need to track the develop branch in:

And either build the docs yourself, or just read the reStructuredText files that the docs are built from.

Hi Andrew,

Can you share us the documentation to build pcie-linux-module and it’s stable branch ?

Thanks,
Roopa

Hi Andrew,

This is regarding LimeSuite GUI. Since we are trying to bring-up LimeSDR XTRX in a our form-factor which doesn’t have display, Can we skip LimeSuite GUI from building Limesuite Bundle ?

Thanks,
Roopa

Hi roopa,
GUI is optional and will not be built if wxWidgets libraries are not installed, or -DENALBE_GUI=off option is passed to cmake.
The pcie linux kernel module is now integrated into LimeSuiteNG repository and will be built/installed along other components. It just needs to have linux-kernel-headers package installed.

I tried to install LimeSuiteNG with develop branch using below commands.

git clone https://github.com/myriadrf/LimeSuiteNG
cd LimeSuiteNG
git checkout develop
sudo ./install_dependencies.sh
cmake -B build && cd build
make -j24
sudo make install

But still not working with SoapySDR…

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

Found device 0
  addr = /dev/LimeXTRX0_control
  driver = lime
  label = LimeXTRX0 [PCIe]
  media = PCIe
  name = LimeXTRX0
  serial = 0000000000000000 <-- my board is corrupted???

Also, The Soapy LimeSDR Source not working on GNU Radio.
Is it still in development?

Executing: /usr/bin/python3 -u /home/user/GNU Radio/untitled.py

[INFO] Make connection: ''
Traceback (most recent call last):
  File "/home/user/GNU Radio/untitled.py", line 149, in <module>
    main()
  File "/home/user/GNU Radio/untitled.py", line 127, in main
    tb = top_block_cls()
  File "/home/user/GNU Radio/untitled.py", line 86, in __init__
    self.soapy_limesdr_source_0 = soapy.source(dev, "fc32", 1, '',
RuntimeError: Failed to make connection with ''

>>> Done (return code 1)

Did you install CubicSDR from packages, or compiled it from Source?
There seems to be problems with using SoapySDR, the packages might install old plugin version wich is linked to old LimeSuite. I’m looking into sorting it out.

Meanwhile, you can install gnuradio-dev package, and compile LimeSuiteNG with cmake ../ -DENABLE_GNURADIO=on , that will build a gnu radio plugin, and gnu radio companion will show “LimeSDR Source (RX)” and “LimeSDR Sink (Tx)” blocks.

Thank you for your reply.
I remember that CubicSDR was installed from apt.
I will try to re-install some packages this weekend with your comment in mind.

Thank you!
Facing build error while building LimeSuiteNG, Here the details go on…
I tried to build LimeSuiteNG from develop branch using the below commands.

git clone GitHub - myriadrf/LimeSuiteNG
cd LimeSuiteNG
git checkout develop
sudo ./install_dependencies.sh
cmake -B build && cd build
make -j32

Snippets of build logs :

[ 38%] Building CXX object src/CMakeFiles/limesuiteng.dir/comms/PCIe/LitePCIe.cpp.o
make[4]: *** [scripts/Makefile.build:297: /home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.o] Error 1
make[3]: *** [Makefile:1911: /home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module] Error 2
make[2]: *** [src/comms/PCIe/linux-kernel-module/CMakeFiles/litepcie-kernel.dir/build.make:62: src/comms/PCIe/linux-kernel-module/litepcie.ko] Error 2
make[1]: *** [CMakeFiles/Makefile2:671: src/comms/PCIe/linux-kernel-module/CMakeFiles/litepcie-kernel.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…

[ 53%] Linking CXX static library liboglGraph.a
[ 53%] Built target oglGraph
[ 53%] Linking CXX shared library liblimesuiteng.so
[ 53%] Built target limesuiteng
make: *** [Makefile:130: all] Error 2

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

Could you help me if anything I missed out ?

-Roopa

cmake results:

– The C compiler identification is GNU 9.4.0
– The CXX compiler identification is GNU 9.4.0
– Check for working C compiler: /usr/bin/cc
– Check for working C compiler: /usr/bin/cc – works
– Detecting C compiler ABI info
– Detecting C compiler ABI info - done
– Detecting C compile features
– Detecting C compile features - done

> Blockquote

– Check for working CXX compiler: /usr/bin/c++
– Check for working CXX compiler: /usr/bin/c++ – works
– Detecting CXX compiler ABI info
– Detecting CXX compiler ABI info - done
– Detecting CXX compile features
– Detecting CXX compile features - done
– Enabling native optimizations
– 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 **
– Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB
– Performing Test HAVE_CXX_ATOMICS_WITHOUT_LIB - Success
– Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
– Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success
– Found libusb-1.0:
– - LIBUSB_1_INCLUDE_DIRS: /usr/include/libusb-1.0
– - LIBUSB_1_LIBRARIES: /usr/lib/x86_64-linux-gnu/libusb-1.0.so
– Linux Kernel release: 5.15.0-101-generic ()
– Linux Kernel headers: /usr/src/linux-headers-5.15.0-101-generic
– Found wxWidgets: -L/usr/lib/x86_64-linux-gnu;-pthread;;;-lwx_gtk3u_richtext-3.0;-lwx_baseu_xml-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_xrc-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_aui-3.0;-lwx_gtk3u_core-3.0;-lwx_baseu-3.0;-lwx_gtk3u_gl-3.0 (found version “3.0.4”) **
– wxWidgets_DEFINITIONS: _FILE_OFFSET_BITS=64;WXUSINGDLL;WXGTK
– wxWidgets_INCLUDE_DIRS: /usr/lib/x86_64-linux-gnu/wx/include/gtk3-unicode-3.0;/usr/include/wx-3.0
– wxWidgets_LIBRARIES: -L/usr/lib/x86_64-linux-gnu;-pthread;;;-lwx_gtk3u_richtext-3.0;-lwx_baseu_xml-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_xrc-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_aui-3.0;-lwx_gtk3u_core-3.0;-lwx_baseu-3.0;-lwx_gtk3u_gl-3.0
– Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so **
– OPENGL_INCLUDE_DIR: /usr/include
– OPENGL_LIBRARIES: /usr/lib/x86_64-linux-gnu/libOpenGL.so;/usr/lib/x86_64-linux-gnu/libGLX.so;/usr/lib/x86_64-linux-gnu/libGLU.so
– Could NOT find Gnuplot (missing: GNUPLOT_EXECUTABLE) **
– Enabling native optimizations
– Found Git: /usr/bin/git (found version “2.25.1”) **
– Module LMS7Support configured with version: 0.1.0-f6263e3
– Found Doxygen: /usr/bin/doxygen (found version “1.8.17”) found components: doxygen missing components: dot mscgen dia
– **
– ######################################################
– Packages found:
** * Threads

** * libusb-1.0

** Adds USB communication support for FT601 chip

** Adds USB communication support for Cypress FX3 chip

** * LinuxKernelHeaders

** * wxWidgets

** * OpenGL**
** * SoapySDR**
** Adds LimeSuiteNG bindings for SoapySDR**
** * Git**
** * Doxygen**

– ######################################################
– Missing required packages:

– ######################################################
– Missing recommended packages:

– ######################################################
– Missing optional packages:
** * Gnuplot**

– ######################################################
– ## LimeSuiteNG enabled features
– ######################################################
– **
** * HEADERS, The limesuiteng headers

** * LIBRARY, The limesuiteng library**
** * USB_FTDI, USB support for FTDI**
** * USB_FX3, USB support for Cypress FX3**
** * LITE_PCIE, PCIe support**
** * LITEPCIE_KERNEL_MODULE, Build Linux LitePCIe kernel module**
** * GUI, GUI Application for LimeSuite**
** * EXAMPLES, LimeSuite library API examples**
** * CLI, LimeSuite command line interface tools**
** * AMARISOFT_PLUGIN, LimeSuite Amarisoft integration plugin**
** * DESKTOP, LimeSuiteNG freedesktop integration**
** * SOAPYSDR, SoapySDR bindings for LimeSuite**
** * UDEV_RULES, Install Linux udev rules**
** * API_DOXYGEN, LMS API Doxygen documentation**

– ######################################################
– ## LimeSuiteNG disabled features
– ######################################################
– **
** * TESTING, Build GoogleTest tests to test the library

** * GNURADIO, GNU Radio 3.9+ Plug-in**
** * HDSDR, HDSDR plugin for limesuiteng**

– Install prefix: /usr/local
– Build timestamp: 2024-04-24
– Lime Suite version: 0.1.0-gf6263e3c
– ABI/so version: 0.1-1
– Configuring done
– Generating done
===================================================================

What Linux version are you using, the The C compiler identification is GNU 9.4.0 is quite old.

I’m using Linux version : 5.15.0-101-generic.

That’s the Linux kernel version. What distribution is it, like Ubuntu, NetBSD, ArchLinux…
you can run command uname -a to get the info.

Please attach the full build log, because you are running the make -j32 it is compiling in multithreaded mode, so the error messages are scattered in the log.

Or you can try to compile just the failing module make litepcie-kernel

uname -a :

Linux 5.15.0-101-generic #111~20.04.1-Ubuntu SMP Mon Mar 11 15:44:43 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

make litepcie-kernel : build logs

[100%] Building Linux kernel module in dir: /home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_dma_init’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:159:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
159 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:159:5: note: use option ‘-std=c99’, ‘-std=gnu99’, ‘-std=c11’ or ‘-std=gnu11’ to compile your code
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:163:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
163 | for (int j = 0; j < dmachan->bufferCount; j++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:187:18: error: redefinition of ‘j’
187 | for (int j = 0; j < dmachan->bufferCount; j++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:163:18: note: previous definition of ‘j’ was here
163 | for (int j = 0; j < dmachan->bufferCount; j++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:187:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
187 | for (int j = 0; j < dmachan->bufferCount; j++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_dma_free’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:222:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
222 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:226:9: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
226 | for (int j = 0; j < dmachan->bufferCount; j++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_dma_writer_start’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:340:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
340 | for (int i = 0; i < dmachan->bufferCount; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_stop_dma’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:405:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
405 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_interrupt’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:444:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
444 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_read’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:614:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
614 | for (int i = 0; i < bufCount; ++i)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_ctrl_write’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1187:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1187 | for (int i = 0; i < count; i += sizeof(value))
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_ctrl_read’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1201:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1201 | for (int i = 0; i < count; i += sizeof(value))
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_alloc_chdev’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1272:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1272 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1294:14: error: redefinition of ‘i’
1294 | for (int i = 0; i < s->channels; i++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1272:14: note: previous definition of ‘i’ was here
1272 | for (int i = 0; i < s->channels; i++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1294:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1294 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1329:14: error: redefinition of ‘i’
1329 | for (int i = 0; i < s->channels; i++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1294:14: note: previous definition of ‘i’ was here
1294 | for (int i = 0; i < s->channels; i++)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1329:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1329 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘litepcie_free_chdev’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1339:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1339 | for (int i = 0; i < s->channels; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘FreeIRQs’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1388:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1388 | for (int i = device->irqs - 1; i >= 0; --i)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘AllocateIRQs’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1409:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1409 | for (int i = 0; i < irqs; i++)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c: In function ‘ReadInfo’:
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1443:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1443 | for (int i = 0; i < count; i += sizeof(uint32_t))
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1449:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1449 | for (int n = 0; n < 10; ++n)
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1460:14: error: redefinition of ‘i’
1460 | for (int i = 0; i < count; i += sizeof(uint32_t))
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1443:14: note: previous definition of ‘i’ was here
1443 | for (int i = 0; i < count; i += sizeof(uint32_t))
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1460:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1460 | for (int i = 0; i < count; i += sizeof(uint32_t))
| ^~~
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1471:14: error: redefinition of ‘i’
1471 | for (int i = 10; i < 18; ++i)
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1460:14: note: previous definition of ‘i’ was here
1460 | for (int i = 0; i < count; i += sizeof(uint32_t))
| ^
/home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.c:1471:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
1471 | for (int i = 10; i < 18; ++i)
| ^~~
make[5]: *** [scripts/Makefile.build:297: /home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module/litepcie.o] Error 1
make[4]: *** [Makefile:1911: /home/roopa/home/workspace/LimeSuiteNG/build/src/comms/PCIe/linux-kernel-module] Error 2
make[3]: *** [src/comms/PCIe/linux-kernel-module/CMakeFiles/litepcie-kernel.dir/build.make:62: src/comms/PCIe/linux-kernel-module/litepcie.ko] Error 2
make[2]: *** [CMakeFiles/Makefile2:671: src/comms/PCIe/linux-kernel-module/CMakeFiles/litepcie-kernel.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:678: src/comms/PCIe/linux-kernel-module/CMakeFiles/litepcie-kernel.dir/rule] Error 2
make: *** [Makefile:294: litepcie-kernel] Error 2

old linux distributions compiler defaulted to C89 standard. I’ve added flag to specify newer standard, so now should work for you.

A post was split to a new topic: Fairwaves XTRX Rev. 4 use with new gateware and Lime Suite NG