先日買ったUSBオーディオインタフェース Focusrite Scarlett Solo (以下Scarlett)のファームウェアは、制御アプリ(Focusrite Control、以下FC)で自動確認・ダウンロードしている訳ではなく、ユーザが適宜webサイトを見て更新に気付いたら、自分でFCをダウンロード・インストールする必要があり、それを実行すれば通知が出ることが分かった。また、更新されたファームウェアはFCのインストール時に展開されることも分かった。

自分でwebサイトを見て更新をチェックするのは面倒だし(絶対に忘れる)、僕は基本的にWindowsを使っていないから、FCを動かすこと自体が面倒だ。とはいえ、ファームウェアはそれほど頻繁に変わらないだろうし、問題に気付いた時にチェックする程度で充分だろう。そもそも、僕はScarlettをたまにしか使わないw それでもおもしろそうだったので、自動で更新チェックとダウンロードができるようにしてみた。

もちろんFocusriteのサイトにAPIがある訳でもないので、いつもながらの古色蒼然としたスクレーピングなどを駆使して更新をチェックすることにした。以下に手順を示す(いつもと同様、こういうニッチなことに需要があるとは思えないので、概要とか概念(、そしてLinuxがいかに便利かw)の紹介に留めた)。

  1. Focusriteのダウンロードページ(製品ごとにURLが違うので、指定しやすい)をダウンロードする。
    • Scarlett Solo(3G)の例: https://customer.focusrite.com/support/downloads?brand=Focusrite&product_by_type=1365&download_type=software
  2. ダウンロードしたページ(HTML)を解析してFCのバージョンを調べる。
    • FCバージョンの記載例: <h3>Focusrite Control Windows - 3.4.0</h3> : 太字がFCのバージョン
  3. あらかじめ保存しておいた現在のFCバージョンと異なっていたら、あるいは、現在のFCバージョンが保存されていなかったら、FCをダウンロードする。ダウンロードURLは上記ページ中にある。
    • FCのダウンロードURLの記載例: href="/sites/customer/files/downloads/Focusrite%20Control-3.4.0.exe"
  4. ダウンロードしたFCを展開し、中のデバイス記述ファイル(XML)を取得する。
    • FCのインストーラーは(今のところ、)Inno Setupというプログラムで作られているので、Linuxでは(実際にインストールしなくても、)innoextractというプログラムで中身を展開できる。
    • デバイス記述ファイル名の例: app/Server/Resources/Devices/Scarlett Solo (3rd Gen).xml
  5. デバイス記述ファイルを解析して、ファームウェア(以下、FW)のバージョンを調べる。
    • FWバージョンの記載例: <segment name="App_Upgrade" nickname="App" version="1552" file="SctG3_Solo.bin" encrypted="true"> : 太字がFWのバージョン
  6. あらかじめ保存しておいた現在のFWバージョンと異なっていたら、あるいは、現在のFWバージョンが保存されていなかったら、FWが更新されていると通知する。
  7. FCとFWのバージョンが変わっていたら、どこかに保存する。

ページのURL、スクレーピング、HTMLの解析、インストーラーの展開、ファイル名の決め打ち、XMLの解析など、多くの点でひ弱(Focusrite側の変更に弱い)ではあるが、他に方法がないので仕方ない。まあ、変更が頻繁でない限りは便利だろう。今は動作確認中だが、問題なかったら、4日に1回程度チェックするようにcrontabに設定しようと思っている。

なお、もしFWが更新されていた場合には、(試行錯誤の挙句ノートPCにインストールした)本物のWindowsにFCをインストールし、それにScarlettを接続してFWを更新しようと思っている。

  •   0
  •   0

コメントを書く

名前    

メール 

URL