Jun 15, 2022

ADALM-PLUTOの使い方(基本編)

 1.  概要

欧米の理系の学生の間で人気のAnalog Devices 社製の ADALM-PLUTO、何故か日本では人気が今一つのようです。この一番大きな問題は日本語の詳しい取扱説明書が無いことに起因しているのでしょうか? ちなみにAnalog Devices社ではオンラインドキュメントや簡単なクイックスタート(もちろん英文です)は作られているようですが、ほとんどの人が読んでいないと苦言を呈していますね・・・。これはADALM-PLUTOが学生の教材として格安に作るという思想によるもので、およそ無駄に費用の掛かるものはハード及びソフトから極力省いているという事のようです。それでADALM-PLUTOを入手して自分なりにいろいろ調べたことを纏めてみました。

2.学習に必要なもの

ADALM-PLUTOを買ってネット上で公開されている情報によってソフトウェア無線機を作る事は可能で多くの情報が巷に溢れています。もちろんそれはそれで良いのですが、せっかく教材として売られているのですからちょっとばかりソフトウェア無線のさわりだけでも学習してみようと思う訳です。

ソフトウェア無線機は従来の古典的なアナログの無線機と違ってハードそのものは高周波が扱えるデジタルのLSIでそのLSIの周辺に外部から入出力される信号を処理してLSIに受け渡しするFPGAで構成されています。なのでハード的に外から弄れる部分は殆どありません。外部から入力するソフトウェアでどのようにでもなるというのが大きな特徴です・・・それが故に使い方は千差万別で新しい使い方や発明につながるようなことが出来るという事でしょう・・・だから教材なんですよね。

ソフトウェア無線機はソフトウェアが無いと動きません。もちろんパッケージとして売られているか公開されているソフトウェアを使って動かすことは可能です。それはそれでそれまでのことでソフトウェア無線機を使いこなしているとは言い難い事です。それで私も半世紀ぶりぐらいにプログラミングの勉強をしてみました。今最も流行っている・・・小学生も勉強しているという・・・Pythonの小学生向け?の教科書を買って勉強しました(笑)。プログラミングをやるためのPCは安物で充分です。もちろん扱う無線の種類によっては高性能のものが必要かもしれませんが普通の電話程度のものなら1万円ぐらいの中古PCで充分遊べます。あとは動作を確認するための測定器類・・・アマチュアのお遊びですから高級なものは要りません、、格安の中華スペアナがあれば充分かと(笑)。


もうひとつプログラミングの教材になる次の書籍を用意しました。Pythonによる無線信号処理について詳しく解説されているコンピュータサイエンスの専門誌です。


それでは、次から思いつくままにADALM-PLUTOにまつわるヒントを書き並べてみました。

3.ADALM-PLUTOを動かすのにPythonの最新版が良いとは限らない
Pythonを使ってライブラリやドライバをインストールする時にPCとの相性でPythonの最新版では正常に動作しない場合があります。この場合ひとつ古いバージョンでやってみると上手くいくことが多いようです。例を次に示します。


コマンドのpypythonと同じです。この時Pythonの最新版は3.10だったのですがバージョン3.9を指定しています。
インストールされているライブラリの確認は次のコマンドで出来ます。

4.Firmwareupdate

ADALM-PLUTOFirmwareはまだ正規のバージョンにはなっていなくってバグがまだフィックスされていないようです。特にネットで格安のものを購入した場合はバージョンが古い可能性があるので、購入したら直ぐにUpdateした方が良いようです。と言っても市販のソフトのような自動でアップデートしてくれるインストーラーは用意されていませんのですべて手動でアップデートする必要があります。最新のバージョンは次から確認できます。

https://github.com/analogdevicesinc/plutosdr-fw

現在インストールされているFirmwareのバージョンは次から確認できます。

ADALM-PLUTOPCUSBに接続してPLUTOSDRというドライブにあるLICENSE.htmlFirmwareのバージョンが記述されています。

バージョンアップの方法は次のとおりです。

新しいFirmwarePCの外部デバイスとして認識されているPLUTOSDRにコピペし「取り出し」操作をします。


実際はこんな感じ


「取り出し」とはこれです。


5.Firmwareupgrade

アマチュア無線をやろうとしている人にはこれは必須です。ADALM-PLUTOに搭載されているAD9363というデバイスは携帯電話用のデバイスとして開発されたAD9361の兄弟でハードウェアそのものは同じものです。このAD9361をベースにFirmwareで機能を制限して兄弟のデバイスが作られています。AD9363というのは格安で教材用に機能を大幅に制限したデバイスです。

             FREQ Response      Channel BW

AD9361   70MHz – 6GHz        56MHz

AD9363     385MHz – 3.8GHz   20MHz

AD9364     70MHz – 6GHz        56MHz

AD9363FirmwareAD9364Firmwareに書き換えることによって動作周波数範囲を拡張することが出来ます。

まずCOMポート接続機能を持った端末アプリケーションを準備します。私は昔から使い慣れているTera Termを使いました。Tera Termの接続画面を次に示します。


接続できるとログイン画面が現れます。

ログインIDは root

パスワードは  analog

です。次の画面の上半分の文字が出てきたらログイン成功です。


Firmwareのバージョンとツールの場所が表示されたら以下のように入力します。


多くの場合上から二番目までで作業は完了です。あまり言いたくないけどAD9361にもなるんですね(笑)。

詳細は下記を参照ください。

https://wiki.analog.com/university/tools/pluto/users/customizing#updating_to_the_ad9364

6.ドライバのインストールは基本中の基本
ここで失敗するとなかなか抜け出せませんので注意が必要です。ドライバは何が必要なのかは環境や目的によって違ってくるのでケースバイケースで対応が必要です。


(1) Windows PCADALM-PLUTOをドライブするためのデバイスドライバ
ここにあります↓
https://wiki.analog.com/university/tools/pluto/users



正しくデバイスドライバがインストールされるとWindowsのデバイスマネジャーで次のとおり確認できます。


これは私の場合ですが、このとおりになっていないと正しくインストール出来なかったかファイルが壊れていると思われるので、原因を突き止めて再トライする必要があります。

(2) IIOデバイス 
これが結構鬼門です。インストールしたつもりが正しくビルドされていなくシステムがエラーになったり正しく動作しない場合があります。IIOとはIndustrial I/Oの略でPCと周辺機器との間のいろんなことに対応できる入出力のデバイスドライバです。特にAD変換やDA変換に関与していて送受信の根幹的なところを担っているようです。なので、これが問題だと送信できない(パワーが出ない)受信できない(感度が悪い)という事が起こります。Windows用のIIOデバイスドライバはLibiioというドライバファイルにまとめられていて次のところからダウンロードしてインストールします。https://wiki.analog.com/resources/tools-software/linux-software/libiio

 
または直接libiioのファイルリストからインストールします。 
https://github.com/analogdevicesinc/libiio/releases/

 
最初これが正しくインストールされているかなんて気に留めていなかったのですが不穏な動作に気が付いていろいろ調べていくうちにlibiioのバージョンとPCの間に相性があるのに気が付きました。古いPClibiioをインストールするとファイルが正しくビルドされないことがあるようです。このような時は古いバージョンのlibiioをインストールし直してみると上手くいく場合があります・・・私はlibiio-0.19まで試してみました(笑)メーカーも心得ていてちゃんと古いバージョンもダウンロード出来るように残してあります。ちなみにlibiioのビルドされたファイルはPCの次の場所に格納されています。

 
赤線を引いたこれらのファイルが正しくビルドされていないか壊れているとシステムが正しく動作しないです。それで正しくビルドされているか確認する方法があるので必ず次のコマンドを実行して確認することをお勧めします。 

(3) PythonからADALM-PLUTOを操作するためのドライバ 
Windows用のドライバとIIOドライバが既にインストールされている必要があります。Pylibiioを下記のとおりインストールします。

pythonを起動するとインストールが成功した場合は下半分のように表示されます。 
PyADI-IIOを下記のとおりインストールします。



必ずインストールが成功したかを確かめます。
これらのインストールは私の場合エラーが表示されてすんなりインストールできませんでした。IIOドライバのバージョンが関係ありますしエラー表示されたらエラーの内容を読み取って対処する必要があります。

7.まとめ
ADALM-PLUTOPythonで動かす場合のヒントについてざっと纏めてみました。細かいことを言えばもっとありそうだけれどもAnalog Devices社が言っているようにウェブの情報を探せば大概解決できるようです(英文ですが・・・)。
Pluto/M2k was designed never to have to be rebooted - but software bugs happen. Before you reboot things - try to ask yourself “why”, what went wrong, how do I reproduce, and how can I file a bug report that will help someone debug.

8.参考 
私のソフトウェア無線機の実験ベンチ


結構古いタダ同然のPCを使っています・・・アマチュアなのでこんなんで充分かと(笑)。ただし複雑な計算・・・広帯域のスペクトラム表示、変調波形などを見ようとすると途中で止まったりします(超笑)。デジタル無線信号波の送受信も可能なんだけれども、知識が追っつかない(超超笑)。

 

続けて別稿で今回製作した実戦につかえるソフトウェア無線機について解説します。
#2に続く・・・

No comments:

Post a Comment