Refer to the official documentation.
In short, you can mount the pluto as a mass storage device, copy the
pluto.frm file into it at the root, then umount and eject the device.
The led should start blinking quickly, incicating the flash is in progress. Do NOT disconnect the pluto from power while this is in progress. Wait for it to stop blinking quickly and the new image should be ready to use.
Connect to the pluto
Refer to official analog wiki for full details but here are the cliff notes:
minicom -D /dev/ttyACM0
ip link set enp0s20u3 up
ip addr add 192.168.2.2/24 dev enp0s20u3
enp0s20u3with whatever name the CDC ECM device was assigned on your machine)
Credentials: root / analog
Once connected, the
osmo-rfds binary can be used to control the loopback.
# osmo-rfds -h osmo-rfds [options] -t, --tx-freq -r, --rx-freq -T, --tx-gain -R, --rx-gain -s, --samplerate -c, --buffer-count -b, --buffer-size -a, --amplitude -d, --delay -h, --help
Options should be fairly self-explanatory.
rx-freqare the frequencies used, in Hz.
rx-gainare the gain settings in dB. (Refer to iio_info for valid values)
samplerateis the configured sample rate in Hz. This will influence the bandwidth that's echoed back as well as the delay granularity. Minimum sample rate supported by IIO is ~ 2.1 Msps.
buffer-sizeare advanced IIO parameters which are included only for testing and should be left to their default values.
amplitudeis the scaling applied to the received signal before retransmission. Beware of overflows !
delayis the delay to be applied, in number of samples before retransmitting the signal. Range is from 0 to 32767
To do a quick test, place the pluto near an UHD device.
Start the pluto relay with RX on 1G and TX on 1.1G with a 1000 samples delay:
# osmo-rfds -t 1100000000 -r 1000000000 -d 1000 [+] Options : . TX frequency : 1100.000 MHz . TX gain : -40.0 dB . RX frequency : 1000.000 MHz . RX gain : 40.0 dB . Sample Rate : 4.000 Msps . Buffer count : 4 . Buffer size : 4096 bytes . Echo amplitude : 0.2 . Echo delay : 1000 samples
Then start the uhd pinger to Tx on 1G and RX on 1.1G :
./pinger -r 1100000000 -t 1000000000 [+] Options : . TX frequency : 1000.000 MHz . TX gain : 60.0 dB . RX frequency : 1100.000 MHz . RX gain : 60.0 dB . Master Clock Rate : Auto . Sample Rate : 2.000 Msps . Burst length : 256 samples . Burst period : 250.000 ms . Maximum delay : 5.000 ms [INFO] [UHD] linux; GNU C++ version 6.4.0; Boost_106500; UHD_188.8.131.52-99-g8e7768c7 [INFO] [B200] Detected Device: B205mini [INFO] [B200] Operating over USB 3. [INFO] [B200] Initialize CODEC control... [INFO] [B200] Initialize Radio control... [INFO] [B200] Performing register loopback test... [INFO] [B200] Register loopback test passed [INFO] [B200] Setting master clock rate selection to 'automatic'. [INFO] [B200] Asking for clock rate 16.000000 MHz... [INFO] [B200] Actually got clock rate 16.000000 MHz. [INFO] [B200] Asking for clock rate 32.000000 MHz... [INFO] [B200] Actually got clock rate 32.000000 MHz. [+] Echo at (0.000000, 0.000000, 159487) : [+] Echo at (0.098540, 615.705994, 549) : 549 (615.705994) [+] Echo at (0.072381, 1.956668, 583) : 583 (1.956668) [+] Echo at (0.073429, 2.770400, 583) : 583 (2.770400) [+] Echo at (0.073496, 2.343132, 583) : 583 (2.343132) [+] Echo at (0.072222, 2.368830, 583) : 583 (2.368830) [+] Echo at (0.073371, 3.440041, 583) : 583 (3.440041)
This shows a delay of 583 samples.
If we run the pinger with RX on the same frequency as TX we get a 50 samples delay. So of those 583 samples, only 533 samples are due to the pluto echo.
533 samples at 2 Msps = 266.5 us. We asked for a delay of 1000 samples at 4 Msps = 250 us. The additional 16.5 us represent the minimal delay due to analog delays and fixed processing pipelines in the pluto.