ADALM-PLUTOをコマンドラインから使う方法の技術メモです。
本家はこちら->IIO Command Line Tools
解説
iio_info
USBで接続したあと接続するURIを確認する。
iio_info -s
Available contexts:
0: 192.168.2.1 (Analog Devices PlutoSDR ... [ip:pluto.local]
1: .... [usb:2.9.5]
などが出力される。以下これをURIに用いる。
iio_info -u ip:pluto.local
iio_attr
具体的な操作はこちらを使用する。
(ローカル周波数とフィルタの帯域幅の設定)
ローカル周波数は325MHzから3800MHzの間、帯域幅は20MHzまで
#デバイスは"ad9361-phy"
#チャネルは"RX_LO"と"voltage0"
iio_attr -u ip:pluto.local -c ad9361-phy RX_LO frequency 82500000
iio_attr -u ip:pluto.local -c ad9361-phy voltage0 rf_bandwidth 300000
サンプリング周波数は521kspsから61.4Mspsで次のように設定する。しかし、低いサンプリング周波数はこれでは設定できず、ダウンサンプラーを設定する必要がある。
#デバイスはad9361-phy
#チャネルはvoltage0
iio_attr -u ip:pluto.local -c ad9361-phy voltage0 sampling_frequency 705600
ダウンサンプラーを設定するには、次のようなコマンドで行えることになっている。しかしながら、コンパイル済みのiio_attrは、入力バッファが256バイトに制限されているため、コマンドラインツールでは、小さなタップのフィルタしか設定できない。このため、libiioを直接叩いて設定するしかない。
iio_attr -u ip:pluto.local -d ad9361-phy filter_fir_config
RX 3 GAIN -6 DEC 4
TX 3 GAIN 0 INT 4
<FIR パラメータ>
データキャプチャーは、こんな感じでstd_outにバイナリデータで出力される。単発のデータでよければこれでキャプチャできる。コマンドラインツールではキャプチャしてデータを出力する処理に時間がかかり、連続して受信しようとするとギャップがあいてしまう。
#デバイスは"cf-ad9361-lpc"
#1024サンプルの(I,Q)を取り込む
iio_readdev -u ip:pluto.local -b 512 -s 1024 cf-ad9361-lpc
Juliaでデータを取り込むには、STDOUT出力を16bit signedのI,Qデータとして読み取ればよい。
dat=Array{Int16}(undef,1024*2)
open(`iio_readdev -u ip:pluto.local -b 512 -s 1024 cf-ad9361-lpc` ) do io
read!(io,dat)
end
性能、残課題など
IIO Command Line ToolでPlutoを設定し、データを取り込む方法を解説しました。しかしながら、ダウンサンプルフィルタを設定したり、データを連続的に取り込むには、libiioを直接叩く必要があります。
関連記事)
KATU @0x20FE, Julia ライブラリ呼び出し
KATU @0x20FE, ADALM PLUTOでFM受信(Julia版)
KATU @0x20FE, ADALM PLUTOでFM受信してみる(python版)
参考情報)
JA1SYK,http://www5.wind.ne.jp/ja1syk/pluto/pluto-index.html
JA1SYK,ADALM-PLUTO(PlutoSDR)の設定マニュアル