パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

アクションカメラ Q3H-2 ファームウェア改造 つづき

最近ずっと、残念画質のアクションカメラ Q3H-2 のファームウェアを改造して、多少ともその能力を引き出すべく、ちょっと研究している。

海外のアクションカメラの掲示板を見ていると、imx179s.ko を改造した話が色々でているが、IDA pro という、逆アセンブルもできるツールを使っているらしい。プロ用のソフトらしく、結構なお値段。こんな激安アクションカメラだけでなく、Windows のソフト等の解析もできる。無償の試用版もあるのだが、x86 のバイナリに対応しているのみで、アクションカメラの ARM には対応せず。ちなみに、カメラの OS は Android の派生したものらしい(Camdroid?)。

掲示板で、輪郭強調とスムージング処理のパラメータは、imx179s.ko の中にあるという情報を元に、なんとか解析できないか調査してみた。軽くテキストエディタで開くと、最初に ELF の文字が。ELF のファイルフォーマットで入っているらしい。ELF ファイルの中身を解析するのに、Linux の objdump というプログラムが使えるとか。ということで、とりあえず中身の構造を見せてくれる objdump -x imx179s.ko をやってみたら、それらしい出力が得られた。拙宅の自宅サーバーの CentOS だと、バージョンが古くて objdump が対応していないファイル、とか言ってきたので、別の Linux PC を使ったりで結構手間がかかったり。

それはさておき、海外の掲示板に、ちょうど imx179s.ko を IDA で解析しているところの画面キャプチャが投稿されていて、輪郭強調等のパラメータの場所のラベルが載っていた。"imx179s_4k_v3_isp_iso_settings" というのが 4K や 2.7K 録画の際のパラメータらしい。.data セクションの中にあって、objdump -x の結果から、.data 内の位置がわかる(00051d38 とか)。それと、.data 自体の開始位置(File off)も、objdump の最初の方から拾って、足し合わせれば、ファイルの先頭からの位置がわかった。

後は、適当なバイナリエディタ(小生は Stirling)を使って、該当部分を書き換えれば良い。imx179s_4k_v3_isp_iso_settings は、256バイトずつ 6 セット並んでいる。ISO 100, 200, 400, 800, 1600, 3200 に対するもの。ISO 値を上げると、ノイズが増えたり、特性も変わるので、画像処理のパラメータを変えるのだろう。

問題は、パラメーターをどう変えれば、いいか、という所。実は、未だにどれをどの値にしたらいいのかは。わからない。手元のカメラに多分使わないファイル"squashfs-root\etc\hawkview\ov4689_sdv\isp_iso_param.ini"があって、その中に少しパラメータの情報があるが、ほとんどこれだけではわからず。

実際、色々いじりながら、ファームウェアを書き換えて試すしか無い。1 バイト書き換えるだけでも、imx179s.ko 書き換え → 2-system.img にパック → full_img.fex にパック → makeimag でパック → PhoenixSuit でカメラにファームウェア全体に書き戻し、という面倒な作業をしないといけない。フラッシュメモリもどれくらい書き換えても問題ないか不安だったりしつつ書き換える。

実は、海外の掲示板では、内蔵フラッシュに書き込むシステムの一部を、microSD カードの方へ持ってくる方法も開発されている。これを使わせてもらうのが良さそうだが、こっちにはトライしていない。やってみるべきか。

つづく…