NanoVNA、ファームウェアのバージョンアップ方法(0.2.2にバージョンアップ)

手元のNanoVNA、残念ながら壊してしまったが、その前にファームウェアのバージョンアップを行った。最近のファームウェアの目玉はなんと言っても、1.5GHz対応。これはすごい。大本(オリジナル)のNanoVNAが300MHzまでだったのを、中国のエンジニア(?)が900MHzまでに拡張したものが安価に出回っているわけだけど、それをさらに大本の開発者さんが1.5GHzまでに拡張なさった。これで、1.2GHzのアマチュアバンドのアンテナをいじりやすくなったわけだ。と言っても、私は1.2GHzの無線機は持っていないけど。

それと、電池残量表示もできるようになっている(これは、ユーザの方によるコントリビュート)。これまで、何度かいきなり電源が切れてしまって残念に思ったことがあるけど、これで電池残量の目安がわかるようになり、安心。

というわけで、バージョンアップ。簡単にできるものだと思ったのだけど、これが実際は大ハマリ。以下、その記録。

バージョンアップのマニュアル

先日から「NanoVNAを使ってみるシーズ」みたいな記事を書いていたが、その途中で「NanoVNA User Guide」がリリースされた。大変ありがたい。最初からこれがあれば楽だったろうな。このマニュアルを参考にさせてもらいつつ動作させてみていた。また、自分が理解していたことの確認にも使わせてもらった。

ファームウェアのバージョンアップ手順もこのマニュアルに詳しく書かれている。

それともう一つ、こちらのブログ記事も参考にさせてもらった。

ということで、これらを見れば手順はわかるのだけど、実際のところはかなり苦労したわけで…。

ダイオードの取付け

電池残量を表示できるようにするためには、基板に未搭載のダイオード(D2)を取り付ける。そのあたりはこちらの記事が詳しい。

ショットキーバリアダイオードがいいとのことなので、手持ちにある1N60(ショットキータイプ)を使うことにする。秋月で購入したもの。

手元の個体を見ると電池からのリード線がコネクタで接続されている。これが、なんと、D2のランドを隠してしまっている。

これじゃムリなので、コネクタを一旦外し、D2にかかっているコネクタの一部を切り取ろうかと。コネクタの厚み分の隙間が確保できれば、ダイオードの足のハンダ付けはできそう。

ということこでコネクタを外そうとするが、これが外れない。足二本を温めれば表面実装なら簡単に取れるだろうと勝手に想像していたのだけど、実際はスルーホール部品だった。これが抜けない抜けない。後で気づいたけど、−端子はベタグランドにベタでつながっていた(サーマルリリーフではなく)。抜けないわけだ。結局、コネクタは壊してしまった。コネクタを新しいものに変えようかと思ったけれど、ベタグランドにつながっているスルーホールはハンダが抜けない。しかも、穴サイズが非常に小さく作られており、それもハンダが抜きづらい要因の一つ。諦めて、電池のリード線は直付けにした。

コネクタのピンを引き抜く際にレジストに傷を付けたようで、+と−の間隔が非常に狭くなってしまい、とても怖い。今になって思えば、コネクタを外すのではなく、上向きに曲げれば切り取れたように思う。スルーホール部品だってことに気づいていればそうしたかも。

さらに、コネクタを抜くのに苦労している間に、そばのC1を外してしまったようでなくなっていた…。配線を調べてみるとパスコンのようだったので、手元にあった1608の1µFを付けておいた。元はいくつのが付いていたんだろう…。

CLI VS GUI

マニュアルによれば、ファームウェアのバージョンアップには二つの方法がある。一つがCLI(コマンドライン)、もう一つがGUI。マニュアルを見て思うに、どっちの方が圧倒的に楽ということもなさそう。ということで、それぞれのデメリットから考えてみる。

  • CLI
    • ドライバの入替えが必要。元のドライバに戻すにはドライバの削除を行う(自動再インストール)。GUIツールの方ではドライバは変更しないで使うようなので、両者の両立は無理。
    • コマンドラインの引数が面倒(長い)。ま、これはコピペで済む。
  • GUI
    • ファームウェアのファイル形式変換が必要。そのためのツールもGUIツールに同梱されているようだ。
    • 操作手順がやや複雑。コマンドラインの引数が面倒なのと同程度か。

デメリットを挙げてみるも、どっちもどっち。

どうしようかと思ったけど、GUIを試してみることにした。早速、ツールをダウンロード。ダウンロードサイトはこちら。

開いたら下の方にスクロール。

ソフトウェアを入手」をクリック。

ACCEPT」を押す(しかない)。

なんだよ、名前とメールアドレスを登録しないとダウンロードできないのかよ…。この時点で嫌になってCLIに変更。

というわけで、dfu-utilをダウンロード。

ここのReleaseのリンクをクリック。

この時点で最新版はdfu-util-0.9-win64.zipだったので、これをダウンロードし、ZIPを展開。

ファームウェアのダウンロード

NanoVNAのファームウェアをダウンロードしておく。

この時点では0.2.2が最新版だったので、これ(nanovna-firmware-0.2.2.zip)をダウンロード。さきほどのdfu-utilと同じフォルダに持っていってZIPを展開。

展開すると「build」というフォルダができる。

NanoVNAをDFUモードで起動

ファームウェアをアップグレードするために、NanoVNAをDFU(Device Firmware Upgrade)モードで起動する。

端子をジャンパ

NanoVNAをDFUモードでにするには、基板上のVDDBOOT0をジャンパする。

この個体、穴が非常に小さく、かなり細めのワイヤでなければ入らなかった。なお、ファームウェアをアップグレードすれば、本体メニューからDFUモードに入れるそうなので、この一回だけしか使わない(なので、ハンダ付けはしなかった)。

NanoVNAを起動

VDDBOOT0をジャンパした状態で、NanoVNAの電源を入れる。DFUモードで立ち上がると真っ白な画面になる。

この状態になったらジャンパを外してOK。

ドライバをインストール

DFUモードになったNanoVNAをPCにつなぐとドライバが自動インストールされる。

「その他のデバイス」の中に見える。

デバイスマネージャーでは「ユニバーサル シリアル バス コントローラー」の中。

何度かやっていると「ユニバーサル シリアル バス デバイス」の中に見えることもあった。

ドライバの入替え

続いて、ドライバを入れ替える。自動インストールされたドライバではdfu-utilが動かないため。やり方は、USBaspのドライバ入替えで使ったのと同じでZadigを使う。

Atmel Studio 7.0でビルドしたバイナリをAVRに書き込む方法をまとめておく。 書込みツール AVRにプログラムを書き込むに...

Zadigを起動する。

「Options」の「List All Devices」にチェックを入れる(選択する)。

ST32 BOOTLOADER」を選択する。Driverは「WinUSB」を選ぶ。そして、「Replace Driver」をクリック。

しばらく時間がかかる。応答がなくなくなることもある。が、我慢して待つ。最大5分程度?

このメッセージが出れば完了。Zadigは閉じてOK。

ファームウェアの書込み

書込みの前に、前提条件の確認。dfu-utilとファームウェアを同じフォルダに展開していること。図を再掲。

では、「コマンドプロンプト」を開く。「NanoVNA User Guide」では「Windows PowerShell」を使うことになっているが、この程度のことはコマンドプロンプトでも大丈夫なはず。その確認を兼ねて、敢えてコマンドプロンプトで実行してみる。

ちなみに、Windows PowerShellは、ざっくり言うとコマンドプロンプトの上位互換。だったらコマンドプロンプトは廃止してWindows PowerShellだけにすれば良さそうなものだけど、コマンドプロンプトは未だに存在する。なぜだろう?

ま、ともかく、開いたコマンドプロンプトで先程のフォルダに移動する。今回の場合は、「R:\DFU」フォルダ。

※クリックで拡大

ディレクトリを「dfu-utilを展開したフォルダ」に移動し、念のためファイル等を確認。そして、書込みコマンドを打ち込む。

dfu-util.exe -d 0483:df11 -a 0 -s 0x08000000:leave -D ..\build\ch.bin

マニュアルにあったように、ファイル名はエクスプローラからのドラッグ&ドロップでもOK(コマンドプロンプトでも使える)。または、適当なところまで打ち込んでTABキーで補間も使える。

コマンドは「dfu-util.exe」。他にも「dfu-なんちゃら.exe」がたくさんあるので間違えないように。実際、間違えてしまい。しばらく悩んでしまった。同様に、ファームウェアを展開したフォルダにも「ch.なんちゃら」が複数あるので注意。
PowerShellの場合は、コマンドのパスを指定しないと認識されないようだ。マニュアルにあるようにフルパスで記述するか、「.\dfu-util.exe …」とカレントディレクトリであることを明示する。

打ち間違いがないことを確認し、実行。

最後のあたりに「File downloaded successfully」と出ているので大丈夫だろう。

起動確認

ファームウェアが書き込まれると、自動でリセットがかかり、再起動する。

ここで再び悩んだ。立ち上がりはしたものの、新しくなっていないんじゃないかと。というのも、ブログやTwitterに書き込まれているのを見ると、

のようにSTOP周波数が1500MHzになっているのとか、

といったバージョン情報画面が出てきているので、てっきり、こういう状態で立ち上がるのかと。

つまり、起動画面としてバージョン情報が出て、STOP周波数は自動で1500MHzになっているものだとばかり勝手に思い込んでいたわけだ(ファームウェアが書き込まれたことで、設定状態はクリアされて1500MHzになるのだろうと)。

しかしそうはならない。起動画面(と勝手に思っているもの)は出てこないし、STOP周波数も900MHzのまま。書込みに失敗したかと思って、何度か書込みをやってみたけれど、結果は変らず。

そうこうしているうちに、画面の左上に電池マークが表示されていることに気づいた。

これが出ているということは、新しいファームウェアで立ち上がっている(古いファームウェアだと電池マーク表示に対応していない)。苦労してダイオードを付けた甲斐があった。

「なんだ、書き込めてたのか」と思い、トップメニューを表示してみる。

CONFIG」というメニューがある。これは以前はなかったはず。これをタップ。

VERSION」をタップ。

無事、バージョン情報が表示された。ちゃんと、「0.2.2」になっている。何だ、やっぱりそう言うことか。

CONFIGメニューの中に「→DFU」という項目がある。これを使うと、DFUモードに移行できる。基板上でジャンパする必要はない。

STIMULUS」を開いてSTOP周波数に「1500M」を設定。

ちゃんと1500MHzになった。ファームウェアを入替えたからと言ってメモリの内容が初期化されるわけではなく、以前保存してあった「0」のパラメータを使って起動するようだ。

と、ここまでは良かったのだが…。

ファームウェアがハングアップ

以前のパラメータで立ち上がったとは言え、そこに保存されいたキャリブレーション情報が使えるわけではなさそう(表示されるグラフが変)。ということで、キャリブレーションを実行。

一通り終えて保存しようとしたら画面が真っ白に…。

電源を入れ直したら治ったので、再度キャリブレーションを試みたが、キャリブレーションの途中など、色んな所で同様にハングアップ。キャリブレーションできず、まともに動いていない。

仕方なく、他のバージョンを入れてみる。0.2系がダメ(相性が悪い?)のかと考え、0.1.1を入れてみたけどダメ(やはりハングアップ)。続いて、0.2.1を入れてみるが、これもダメ。hugen79板(マニュアル参照)の「NanoVNA-H__900_ch_20191003」も試したけれど、これも同様。

続いて、0.2.0。なんと、これでキャリブレーションができた。なぜうまく行ったのかわからないけど、ともかくハングアップせずにキャリブレーションできた。

0.2.0なら安定してる使えるのかと思ったけれど、ひょっとしたら、この状態なら0.2.2でも上手くいくのかもしれないと思い、再び、0.2.2にアップグレード。

今度は上手く行った。予想通りではあるが…。

設定情報のエリアにゴミが入ってしまっていたのが、色々やっているうちに取れた感じ?よくわからないが、0.2.2でも安定して動作する。ハングアップしない。

【追記】
どうやら、手順としては、先にタッチパネルのキャリブレーションを行った方がいいようだ。

また、ファームウェアバージョンアップ後の本体キャリブレーションの際には、キャリブレーション自体を行う前にRESETが必要と思っておいた方がいい(RESETはキャリブレーションメニューの中にある)。キャリブレーション実行後は、正常に行えたかスミスチャートをチェック(オープン、ショート、ロードでの様子)。正常でなければ、再びRESETからやり直し。これは非常に重要。

タッチパネルのキャリブレーション

安定して動くようになったが、タッチパネルの動作がちょっとおかしい。そこで、タッチパネルのキャリブレーションを行うことにする。トップメニューの「CONFIG」を開く。

TOUCH CAL」をタップ。

画面の指示に従って、左上隅をタップ。

続いて、右下隅。

これで、キャリブレーション完了。

念のため、動作確認。

TOUCH TEST」をタップ。

画面が真っ黒になるので、ペンを自由に滑らせる。

軌跡がちゃんと付いて来ればOK。タッチパネルからペンを離せば先程のメニューに戻る。

上手く行かなければ、再度キャリブレーション。完全に狂ってしまってどうしてもメニューが選べなくなってしまったら、電源を入れ直せば元の状態には戻る。これで再度キャリブレーション。

キャリブレーションが上手く行っていることが確認できたら、この状態を保存する。

SAVE」をタップ。これで完了。

まとめなど

ファームウェアの書き込みが上手く行っていないとか思っていたのは単に勘違いだったのでおいておくとして、ファームウェアの書込みを行ったら、まずはタッチパネルのキャリブレーション。そして、測定の方のキャリブレーション。

操作の途中でハングアップしてしまったら、いろんなバージョンのファームウェアの書込みをやってみているうちに問題が解消するかも。あくまで経験談であり、保証できるものではないけど。

スポンサーリンク
スポンサーリンク