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の最新版では正常に動作しない場合があります。この場合ひとつ古いバージョンでやってみると上手くいくことが多いようです。例を次に示します。
インストールされているライブラリの確認は次のコマンドで出来ます。
4.Firmwareのupdate
ADALM-PLUTOのFirmwareはまだ正規のバージョンにはなっていなくってバグがまだフィックスされていないようです。特にネットで格安のものを購入した場合はバージョンが古い可能性があるので、購入したら直ぐにUpdateした方が良いようです。と言っても市販のソフトのような自動でアップデートしてくれるインストーラーは用意されていませんのですべて手動でアップデートする必要があります。最新のバージョンは次から確認できます。
https://github.com/analogdevicesinc/plutosdr-fw
現在インストールされているFirmwareのバージョンは次から確認できます。
ADALM-PLUTOをPCのUSBに接続してPLUTOSDRというドライブにあるLICENSE.htmlにFirmwareのバージョンが記述されています。
バージョンアップの方法は次のとおりです。
新しいFirmwareをPCの外部デバイスとして認識されているPLUTOSDRにコピペし「取り出し」操作をします。
実際はこんな感じ
「取り出し」とはこれです。
5.Firmwareのupgrade
アマチュア無線をやろうとしている人にはこれは必須です。ADALM-PLUTOに搭載されているAD9363というデバイスは携帯電話用のデバイスとして開発されたAD9361の兄弟でハードウェアそのものは同じものです。このAD9361をベースにFirmwareで機能を制限して兄弟のデバイスが作られています。AD9363というのは格安で教材用に機能を大幅に制限したデバイスです。
FREQ
Response Channel
BW
AD9361 70MHz – 6GHz 56MHz
AD9363 385MHz – 3.8GHz 20MHz
AD9364 70MHz – 6GHz 56MHz
AD9363のFirmwareをAD9364のFirmwareに書き換えることによって動作周波数範囲を拡張することが出来ます。
まずCOMポート接続機能を持った端末アプリケーションを準備します。私は昔から使い慣れているTera Termを使いました。Tera Termの接続画面を次に示します。
接続できるとログイン画面が現れます。
ログインIDは root
パスワードは analog
です。次の画面の上半分の文字が出てきたらログイン成功です。
多くの場合上から二番目までで作業は完了です。あまり言いたくないけどAD9361にもなるんですね(笑)。
詳細は下記を参照ください。
https://wiki.analog.com/university/tools/pluto/users/customizing#updating_to_the_ad9364
6.ドライバのインストールは基本中の基本
ここで失敗するとなかなか抜け出せませんので注意が必要です。ドライバは何が必要なのかは環境や目的によって違ってくるのでケースバイケースで対応が必要です。
ここにあります↓
https://wiki.analog.com/university/tools/pluto/users
正しくデバイスドライバがインストールされるとWindowsのデバイスマネジャーで次のとおり確認できます。
これは私の場合ですが、このとおりになっていないと正しくインストール出来なかったかファイルが壊れていると思われるので、原因を突き止めて再トライする必要があります。
これが結構鬼門です。インストールしたつもりが正しくビルドされていなくシステムがエラーになったり正しく動作しない場合があります。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の間に相性があるのに気が付きました。古いPCにlibiioをインストールするとファイルが正しくビルドされないことがあるようです。このような時は古いバージョンのlibiioをインストールし直してみると上手くいく場合があります・・・私はlibiio-0.19まで試してみました(笑)メーカーも心得ていてちゃんと古いバージョンもダウンロード出来るように残してあります。ちなみにlibiioのビルドされたファイルはPCの次の場所に格納されています。
赤線を引いたこれらのファイルが正しくビルドされていないか壊れているとシステムが正しく動作しないです。それで正しくビルドされているか確認する方法があるので必ず次のコマンドを実行して確認することをお勧めします。
(3)
PythonからADALM-PLUTOを操作するためのドライバ
Windows用のドライバとIIOドライバが既にインストールされている必要があります。Pylibiioを下記のとおりインストールします。
pythonを起動するとインストールが成功した場合は下半分のように表示されます。
PyADI-IIOを下記のとおりインストールします。
これらのインストールは私の場合エラーが表示されてすんなりインストールできませんでした。IIOドライバのバージョンが関係ありますしエラー表示されたらエラーの内容を読み取って対処する必要があります。
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.参考
私のソフトウェア無線機の実験ベンチ
#2に続く・・・
No comments:
Post a Comment