The premise
Intrigued by the world of under-documented, box-of-pandora hardware from China, I acquired a Neptune SDR P210. To my pleasant surprise it just motly worked out of the box. I did not yet succeed to make the secon RX/TX channel work though. This post summarizes my findings, while providing an overview.
The Package
The cardboard box that ended up on my doormat includes:
- Black PCB with two pre-installed heatsinks (on the Zynq and the RF Transceiver)
- Two black antennas
- One slide-out antenna
- A super flexible USB type A 2.0 to type C cable
- A white RJ45 cable
- An 32 gigabyte SD card with pre-installed firmware
The PCB was contained in an ESD-safe bag which itself was wrapped with bubble wrap, stuffed together with the rest into a cardboard box – decent protection for shipping.
The Hardware
The board is well fabricated, solder joints look good. The main components found on the board are:
- Analog Devices AD9363 RF Transceiver
- Xilinx XC7Z020-2CLG400I Zynq 7000 SOC
- Realtek RTL8211E Phy
- Winbond W25Q256JV QSPI Flash
The board features various electromechanical interfaces:
- 4 × SMA-female (2 Tx, 2 Rx)
- 2 × USB-C 2.0
- 1 × GBit Ethernet
- 1 × 10 Pin 1.25 mm pitch debug connector
- 1 × Micro-SD card slot
- 1 × 2 Bit DIP Switch
- 2 × Push-Buttons
- 1 × U.FL female
The USB-C 2.0 port next to the Ethernet is used both to provide power and data to the board.
When connected, it presents itself with the under VID:PID 0456:b673
with the name Analog Devices, Inc. LibIIO based AD9363 Software Defined Radio [ADALM-PLUTO]
.
Behind this USB device multiple endpoints present, among other things:
- A
cdc_acm
serial endpoint (/dev/ttyACM0
/dev/serial/by-id/usb-Analog_Devices_Inc._PlutoSDR__ADALM-PLUTO_-if03
)- At 115200 Baud, a serial console of the Linux running on the Neptune SDR can be found.
- Default login are identical to the Pluto SDR, user
root
with passwordanalog
.
- a
rndis_host
Ethernet via USB endpoint- A DHCP server runs on the Neptune SDR, hence you get assigned the IPv4
192.168.2.10/24
by default. - The Neptune SDR itself is configured as
192.168.2.1
, password based login with the credentials above works. - Thanks to Multicast DNS, the Neptune SDR can also be accessed via
pluto.local
- No IPv6 addresses are configured at all.
- A DHCP server runs on the Neptune SDR, hence you get assigned the IPv4
- A
scsi
disk- 30 MiB in size
- Formatted as FAT32, containing
config.txt
info.html
with links to learning resourcesLICENSE.html
with license notesimg/
, a folder with colorful images for theinfo.html
The other USB-C 2.0 port next to the DIP switches presents itself as a ch341-uart
under VID:PID 1a86:7523
.
Both the ch341-uart
and the cdc_acm
endpoint from the former USB port operate on separate UART channels of the Zynq, i. e. they can both be used at the same time without interference.
However, only the former USB port (next to the Ethernet plug) is capable of powering the board, and no USB device is present on the latter USB port without power on the board.
This is valuable for a stand-alone setup, where one only supplies power to the former USB port, while occasionally hooking up with the latter, e.g. to debug network failure using the local serial console.
Booting both from the internal QSPI Flash or an external SD-Card is supported, and the boot source is selected via the DIP switches.
Software Support
The device just works like a Pluto SDR, through the Industrial IO (IIO) API.
Access to the radio is provided via USB, Serial, IP or locally using /dev/iio*
.
Software like GNU Radio has built-in support for IIO.
In addition, the SoapyPlutoSDR plugin enables a wide array of applications such as GQRX, SigDigger or SDRangel to interface with the Neptune SDR.
The board works fine when booted from the QSPI flash, so I did not bother tinkering with the firmware on the Micro-SD.
The End
The device boringly fulfills its promises. Obviously, the firmware is mostly identical to the Pluto SDR’s firmware, with some minor adjustments. Next up, an investigation of the firmware is due. In particular, the differences to a stock Pluto SDR strike my interest. So far, some build-scripts Neptune SDR compatible software can be found on my Neptune-SDR-nix-utils repo.