honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

SwitchBot Indoor CameraのOSS/GPLソースコードがなかなか届かないけど

honeylab.hatenablog.jp

 

こちらの記事にあるように、このカメラ、いわゆる中華カメラOEM製品で、
ReaktekのSDKを使用してカメラのアプリを、クラウドサーバとしては"TUYA"というプラットフォームを利用しているようです。
そのため、u-boot(GPLv2)、Linux Kernel(GPLv2)、busybox(GPLv2)などが例によってOSSのコードを利用しています。

※例によっての例※

honeylab.hatenablog.jp

 

本来は製品の公開と同時、もしくは製品などに添付する形でOSSの使用許諾宣言を添付したり、著作権者の表示が必要で、また製品・バイナリの入手者からの請求に応じてソースコードを提供する必要があります。これは任意、サービスではなく、そもそも製品の提供時に満たされていなければいけない条件ですので、現時点でこの製品は

GPL Violated」である、という状態です。

 一応、開発担当者には伝えている、とされていますが、それからそろそろ2週間ぐらいたつので、早めにソースコードが欲しいのですが…

 

なんだよおまえGPL警察かようぜーなとお思いかもしれませんが、ぶっちゃけその辺は私はどうでもよくて、この製品のGPLコードを手に入れてさっさと解析して、この機械を自由に改造できるようにしたいのです。

 

 

GPLは、プログラム(日本国著作権法ではプログラムの著作物)の複製物を所持している者に対し、概ね以下のことを許諾するライセンスである。

  1. プログラムの実行[注釈 2]
  2. プログラムの動作を調べ、それを改変すること(ソースコードへのアクセスは、その前提になる)
  3. 複製物の再頒布
  4. プログラムを改良し、改良を公衆にリリースする権利(ソースコードへのアクセスは、その前提になる)

 

 と、Wikipediaにはこのように書かれています。

特に、おそらくu-bootのソースコードにはmicroSDからのファームウェア更新ルーチンが含まれているため、それを使用してファイルシステムの書き換えを行いたいのです。

 

(Ghidraで解析してみてるんですが、なんかうまくいかないの…)

さて、ソースコードが手に入らないので似た製品のソースコードがないかを調べていたところ、割とメジャーな TP-Link C100が同じSoCであるRTS3903を使用し、コードを公開しているようでした。

 

ダウンロードしてみると、大変親切なことに、Reaktek RTS3903 SDKに含まれるソースコードの多く、さらにビルド用のGCCまで一緒に公開してくれていました。
大変親切ですので、展開して中身をあれこれ調べているところです。

www.tp-link.com

このgccでビルドしたコードはおそらくそのままSwitchbot Indoor Cameraで動かすことができると思います。

ところで大変興味深いのですが、このアーカイブに含まれる環境はOpenWrtのファームウェア作成環境のようで make 一発で書き込み用のファームウェアまで作成することができる完全なものでした。すごいすごい。

 というわけで、ある程度はRTS3903の素性もわかり、buildrootを使用してIndoor Cam上で動く実行バイナリを作成するところまではやってきました。

RTS3903はMIPSなんですが、ATOM Camとかに使われてるMIPS32より圧倒的に古い、MIPS Iというレベルのコードしかサポートしていないようで、buildrootの2013年版のリリースまで戻る必要がありました。

 

f:id:honeylab:20210724143415p:plain

シリアルログインだと、カメラアプリからのデバッグメッセージが延々と表示されて醜いのですが、telnetdを動かすことができるとそれに邪魔されずにシステムを調べることができます。

さて、もはや全然普通の使い方してないんですが、これからどういじっていこうかなぁ