= Software Defined Radio (SDR) Showcase using the Epiq Sidekiq Z2 This showcase provides instructions for using the Epiq Sidekiq Z2 Mini-PCIe SDR adapter with a Gateworks SBC. Epiq Solutions specializes in building SDRs for engineering teams and government-focused organizations requiring situational awareness and detailed insight into their RF environments in order to identify and act against wireless threats. See their website for more information [https://epiqsolutions.com/ Link]. [[Image(sidekiqz2.png)]] '''Epiq Sidekiq Z2 SDR''' = What is a Software Defined Radios? A SDR is a radio which can modulate and demodulate radio signals through software commands provided by a host computer. They typically use a dedicated FPGA to quickly process the radio signals in the digital domain. Many support wide frequency bandwidths allowing them to monitor a wide range of radio transmissions and to be reconfigured on the fly. Typical use cases are: * Security Applications by Providing RF Detection of Mobile Devices (Cellular phones, Wifi, BLE, etc..) * Adaptive Wireless Network Configuration and Optimization * Monitor Ship and Aircraft Transmissions * Radio Astronomy * Monitor Broadcast, Amateur and DRM Radio The Epiq Sidekiq Z2 [https://epiqsolutions.com/rf-transceiver/sidekiq-z2/ Link] used in this testing can tune to any frequency between 70Mhz and 6Ghz. That covers from FM radio to 5G cellular. Any radio transmission in this frequency can be monitored with the Z2. Here is a chart showing some of the common radio protocols in that frequency range. ||= Band =||= Frequency =||= Common Use =|| || Very Low Frequency (VLF) || 3kHz to 30kHz || Maritime radio, navigation || || Low Frequency (LF) || 30kHz to 300kHz || Maritime radio, navigation || || Medium Frequency (MF) || 300kHz to 3MHz || AM radio, Aviation radio, navigation || || High Frequency (HF) || 3MHz to 30Mhz || Amateur radio, NFC, aviation, weather || || Very High Frequency (VHF) || 30MHz to 300MHz || FM radio, VHF television || || Ultra High Frequency (UHF) || 300MHz to 3GHz || Mobile radio, Wifi, GPS, 4G, UHF television || || Super High Frequency (SHF) || 3GHz to 30GHz || Satellite, 5G, Wifi, || \\ = Configuring the Epiq Sidekiq Z2 to work with Gateworks SBCs [[Image(sdronboard.jpg,400px)]] '''Epiq Sidekiq Z2 SDR mounted on a [https://www.gateworks.com/products/industrial-single-board-computers/octeon-tx-single-board-computers-gateworks-newport/gw6300-single-board-computer/ Gateworks Newport GW6300 SBC]''' Materials required: * Gateworks SBC with latest Gateworks-Ubuntu image installed (In this testing GW6300 was used) * Epiq Z2 * Two antennas * Serial Console and network connections to the Gateworks SBC The Z2 can be used independently of Gateworks products with its (included) USB adapter. Before connecting your Z2 to a Gateworks board it's best to verify it's functionality and check that your antenna connections are being made correctly. If you will be using the Epiq RF Analyzer software [wiki:/SDR#ERA (ERA)] now is a good time to install it. == Hardware configuration Attach the Z2 to the Gateworks SBC in any slot where USB signaling is provided. Verify antennas are attached to RX and TX U.FL connectors on the Z2. Note you will need antennas tuned to the frequency band you're interested in monitoring. == Software configuration Follow the instructions [wiki:/ubuntu#SSHServer here] to enable "root" access via SSH. This requires using the serial console. With that done, next log into the Gateworks SBC via SSH as root. Now access the Z2 via serial console from the Gateworks SBC {{{#!bash screen /dev/ttyACM0 }}} Username "root" Password "epiq" Execute the following commands to switch the SDR into USB-CDC mode for Linux {{{#!bash fw_setenv udc_config_mode 1 reboot }}} After the SDR had completed its power cycle log back in and verify the changes have been made: {{{ fw_print_env udc_config_mode #udc_config_mode=1 will be displayed }}} Exit screen "ctrl + a", ":", "quit" Verify a network interface has been created, for this testing it is named eth2 {{{ root@focal-newport:~# dmesg |grep cdc_ether [ 12.619443] cdc_ether 3-1:1.0 eth2: register 'cdc_ether' at usb-0000:00:11.0-1, CDC Ethernet Device, 00:e0:22:01:7d:15 [ 12.619589] usbcore: registered new interface driver cdc_ether }}} {{{ root@focal-newport:~# ls /sys/class/net/ can0 eth0 eth1 eth2 lo }}} Assign the interface a DHCP address: {{{ dhclient eth2 }}} If config will show eth2 with the address 192.168.3.9, counterintuitively SSH connections can be made to the Z2 at the 192.168.3.1 address "ssh root@192.168.3.1" == ERA RF Analyzer Software ERA is Epiq's proprietary RF analyzer software. View it [https://epiqsolutions.com/rf-sensing/era/ here] Install Epiq ERA software on the Z2, instructions and files provided by Epiq. Launch ERA and allow the shell to run the application. [[Image(sdr-small.jpg, width=600)]] '''Epiq RF Analyzer Screenshot''' == Port forwarding using nftables to access ERA from your workstation Nftables allows packets to be forwarded from the Gateworks network interface to the Z2 interface and back out to an external network. This will allow access to the ERA web interface from a desktop workstation browser Install nftables and start the service {{{#!bash apt install nftables -y systemctl enable nftables.service systemctl start nftables.service }}} Check if ip forwarding is enabled, by default it is not. {{{#!bash root@focal-newport:~# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 #0 is disabled }}} To enable ip forwarding {{{#!bash sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl -p }}} Configure nftables by copying these commands individually, replace 192.168.0.1 with the IP address of the interface on the Gateworks which is connected to your network (the same used for connecting with SSH) {{{#!bash nft flush ruleset # clear existing rule set nft add table nat nft 'add chain nat postrouting { type nat hook postrouting priority 100 ; }' nft 'add chain nat prerouting { type nat hook prerouting priority -100; }' nft 'add rule nat prerouting ip daddr 192.168.0.1 tcp dport { 3000 } dnat 192.168.3.1:3000' nft 'add rule nat prerouting iif eth0 tcp dport { 1138-1141, 3000 } dnat 192.168.3.1' nft add rule nat postrouting masquerade }}} Verify your changes {{{#!bash nft list ruleset }}} Make the ruleset persistant {{{#!bash nft list ruleset | tee /etc/nftables.conf }}} Open a web browser on your workstation, connect to the running ERA server by typing 192.168.0.1:3000, really :3000 '''Enjoy ERA from your workstation!