- Environment: Ubuntu 18.04
Build the firmware follwing the instructions in the Build firmware section.
For PlutoSDR, you can download prebuilt firmware files from https://github.com/seanstone/adrv-fw/releases/tag/201907, and put the files underplutosdr-fw/build/pluto/images/
. You can then flash them via the upload
target like:
$ make upload
- Insert SD card
- Connect Power, USB, Ethernet
- Switch on power
- Connect USB-UART such that the red LED is on.
- Login via serial terminal. For example:
install picocom
# apt-get install picocom
and
$ picocom -b 115200 /dev/ttyUSB0
account/password: root
/analog
The IP address for the host and the device need to be set. For example,
(adrv9364) # fw_setenv ipaddr_eth 192.168.1.1
(adrv9364) # fw_setenv ipaddr_host 192.168.1.100
(adrv9364) # reboot
You can adjust the IP address configuration for different devices.
Once the network is configured, you can login via ssh:
- ADRV9364
$ ssh [email protected]
or
$ ssh [email protected]
- PlutoSDR
$ ssh [email protected]
or
$ ssh [email protected]
Password: analog
Console based spectrum analyzer.
Example usage:
(adrv9364) # retrogram-plutosdr --rate 61e6 --bw 56e6 --gain 73 --freq 935e6 --step 5e6
- Install GNURadio
# apt-get install gnuradio
- Install GNURadio blocks for IIO
# apt-get install libiio-dev libad9361-dev gr-iio
(no module specified)
-> Industrial IO
-> PlutoSDR Source/Sink
- Buffer size: Size of the internal buffer in samples. The IIO blocks will only input/output one buffer of samples at a time
- Device URI:
192.168.1.1
- RF Bandwidth(MHz): Configures TX/RX analog filters
- Sample Rate(MSPS): Frequency at which the hardware will input/output samples
For more information, see https://wiki.analog.com/resources/tools-software/linux-software/gnuradio
Example RX flowgraph: rx.grc
- Disable GUI blocks and adjust the top block:
- Set
Generate Options
to "toNo GUI
. - Set
Run Options
toRun to Completion
.
- Generate the flowgraph and copy the generated python script to the device by
scp
.
$ scp top_block.py [email protected]:/root/
- Log in to the device and run the python script on the device.
(adrv9364) # ./top_block.py
See pluto_tx_onboard.grc for example.
Host-based spectrum analyzer.
Follow steps descibed here
- Add PPAs
# add-apt-repository -y ppa:bladerf/bladerf
# add-apt-repository -y ppa:myriadrf/drivers
# add-apt-repository -y ppa:myriadrf/gnuradio
# add-apt-repository -y ppa:gqrx/gqrx-sdr
# apt-get update
- Install GQRX
# sudo apt-get install gqrx-sdr
Set device options:
- Install requied system packages
# apt-get install build-essential libncurses-dev device-tree-compiler libssl-dev dfu-util
- Install Xilinx Vivado HLx Editions (2018.3)
- Download from https://www.xilinx.com/support/download.html
- Install to
/opt/Xilinx/
- Init repository from https://github.com/seanstone/adrv-fw
$ git clone https://github.com/seanstone/adrv-fw
$ cd adrv-fw
$ git submodule init
$ git submodule update
- Apply necessary patches
$ make patch
$ make patch-hdl
- Choose target to build:
- Build for ADRV9364
$ make TARGET=adrv9364
- Build for PlutoSDR
$ make TARGET=pluto
- Adding a file to the firmware root filesystem:
Put the file in
targets/platform/rootfs_overlay
in the fimrware source and rebuild the firmware
For PlutoSDR, there are two interfaces to flash the firmware.
Flash the firmware file using the upload
target. This will copy the firmware file to the PlutoSDR MSD(Mass Strorage Device), and start flashing once the device is ejected:
$ make upload
The MSD interface requires a working Linux system with a properly set up MSD gadget. If the MSD interface is working, you can see the MSD device on the host computer file manager when you plug it in.
The DFU is a low-level interface tht can be used to recover the firmware if the Linux system fails to boot up.
Reference: https://wiki.analog.com/university/tools/pluto/users/firmware
-
Enter the DFU mode by holding the hidden button using a pin while powering on (before plugging the USB cable).
-
Flash the DFU firmware by the
dfu-all
target:
$ make dfu-all