aki_iic’s blog

己の欲せざる処人に施す事無かれ、狂人の真似するは即ち狂人なり

ADALM-PLUTO(電源投入編)

 前々から興味があったADALM-PLUTOが秋月で取り扱ってくれるようになったので注文してみた。↓

ソフトウエア無線アクティブラーニングモジュール ADALM−PLUTO: 測定器・計測器関連 秋月電子通商-電子部品・ネット通販

 メーカ製品情報:

www.analog.com

 本機はADIのSDRフロントエンドAD9363にXilinx(現AMD)のZynq-7kを組み合わせた学習用モジュールで中ではLinuxが動作しておりホストとはUSB(CDC-ACM)deviceとして接続される(Ubuntu上では /dev/ttyACM0)。以下の事柄はCQ出版のRFワールド no.45 p79〜p90をなぞってるだけなので詳細は同書を参照して下さい。

1.外観

f:id:aki_iic:20211011020713j:plain

adalm-pluto

 写真のとおりコンパクトなモジュールである。MicroBでVBUS供給するが外部電源も可能で変換コネクタ(USB−Aに変換)も添付されている。本体は結構熱くなるので相応の電流を消費していると思われる。

2.接続

 USBケーブル、アンテナ(送信・受信各1本)も付属してるのでホスト(私はUbuntu16.04を使用)と接続すればCDCACMデバイスとして認識されるがその前にUDEVデバイスの設定をする必要がある。

/etc/udev/rules.d$ cat 53-adi-plutosdr-usb.rules 
# allow "plugdev" group read/write access to ADI PlutoSDR devices
# DFU Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b674", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a32", MODE="0664", GROUP="plugdev"
# SDR Device
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", MODE="0664", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", MODE="0664", GROUP="plugdev"
# tell the ModemManager (part of the NetworkManager suite) that the device is not a modem, 
# and don't send AT commands to it
SUBSYSTEM=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="b673", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2fa2", ATTRS{idProduct}=="5a02", ENV{ID_MM_DEVICE_IGNORE}="1"

 これはgithubで公開されてるのでそこから入手する(RFワールド no.45 p83に記載)。

wget https://github.com/analogdevicesinc/plutosdr-fw/raw/master/scripts/53-adi-plutosdr-usb.rules

 これで/dev/ttyACM0デバイスとして認識されるのでssh root@pluto.localでログインする。

$ ssh root@pluto.local
root@pluto.local's password: 
Welcome to:
______ _       _        _________________
| ___ \ |     | |      /  ___|  _  \ ___ \
| |_/ / |_   _| |_ ___ \ `--.| | | | |_/ /
|  __/| | | | | __/ _ \ `--. \ | | |    /
| |   | | |_| | || (_) /\__/ / |/ /| |\ \
\_|   |_|\__,_|\__\___/\____/|___/ \_| \_|

v0.34
https://wiki.analog.com/university/tools/pluto
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
devtmpfs                120504         0    120504   0% /dev
tmpfs                   254804         0    254804   0% /dev/shm
tmpfs                   254804        28    254776   0% /tmp
tmpfs                   254804        44    254760   0% /run
mtd2                       896       196       700  22% /mnt/jffs2
# cat /proc/cpuinfo
processor    : 0
model name    : ARMv7 Processor rev 0 (v7l)
BogoMIPS    : 666.66
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32 
CPU implementer    : 0x41
CPU architecture: 7
CPU variant    : 0x3
CPU part    : 0xc09
CPU revision    : 0

Hardware    : Xilinx Zynq Platform
Revision    : 0003
Serial        : 0000000000000000
# fw_setenv attr_name compatible
# fw_setenv attr_val ad9364
# pluto_reboot reset
# packet_write_wait: Connection to 192.168.2.1 port 22: Broken pipe

3.ファームウェアアップデートと偽装改造(AD9363をAD9364に偽装?)

 Zynq-7kはCortex-A9@667Mhzと今基準では非力だが組み込み機器の制御用プロセサ+FPGAとしては十二分とも言える。令和三年神無月十日現在アップデートしたファームウェアは0.34であったが(入手時のバージョンは0.32)がRFワールド誌に記載されていたAD9363をAD9364に偽装する設定は見かけ上出来るように見える。

root@pluto.local's password: 
Welcome to:
______ _       _        _________________
| ___ \ |     | |      /  ___|  _  \ ___ \
| |_/ / |_   _| |_ ___ \ `--.| | | | |_/ /
|  __/| | | | | __/ _ \ `--. \ | | |    /
| |   | | |_| | || (_) /\__/ / |/ /| |\ \
\_|   |_|\__,_|\__\___/\____/|___/ \_| \_|

v0.34
https://wiki.analog.com/university/tools/pluto
# fw_printenv attr_name
attr_name=compatible
# fw_printenv attr_val
attr_val=ad9364

 matlabは期限切れだしgnuradioは興味無い(ドライバ環境が特殊でつかいづらかったような記憶が)ので今はZynq学習ボードの感無きにしもあらずでSDR勉強中(ディジタル無線通信技術難しいです。。。)故、進捗が有ったらUpするつもりでいる。

 尚、画像制限とやらに引っかかったので写真はアップロード出来ませんでした(10MB制限、とか?)。

20211011追記:10MB制限の件はjpegpngに変換した際に2.4MB→10.6MBに変換された為上限に引っ掛かった模様。寄ってjpegでUpしなおした物を貼り付けておく。