D-Link DCS-8000LH - クラウドカメラをローカル管理IPカメラに変更するノート
(github.com/bmork)- D-Link DCS-8000LH を mydlink アプリ・クラウドサービスに登録せず、ローカルで管理する IP カメラに変えるための作業記録とツール集
- 元のファームウェア 2.01.03 は mydlink アプリ・クラウドサービスに縛られており、ローカルの NIPCA 互換 HTTP API や HTTP・HTTPS・RTSP のビデオストリーミングを提供しない
- 達成された主な機能は、Bluetooth LE を通じたネットワーク・管理者パスワード設定、HTTP・HTTPS MPEG-TS 直接ストリーミング、直接 RTSP ストリーミング、LED・nightmode などの設定をサポートする NIPCA API 構成
- 含まれる
dcs8000lh-configure.pyは、カメララベルの PIN Code と Bluetooth MAC アドレスを使って WiFi 検索、WiFi 設定、ネットワーク情報出力、システム情報ダンプ、カメラコマンド実行、telnetd・lighttpd・RTSP 有効化、unsigned firmware 許可を行う - 完全な変更にはカメラ内部のファイルシステムの 1 つを修正する必要があり、誤るとカメラが文鎮化するリスクがある
- テストと開発の対象はファームウェア v2.01.03 と v2.02.02 で、最終的な全手順は v2.02.02 でのみテストされている
- 必要な環境は、Bluetooth コントローラのある Linux PC、Python 3、bluepy、WPA2-PSK WiFi とパスワード、
squashfs-toolsのmksquashfs、バックアップ用の tftp サーバーまたはファイルアップロードを受け付ける Web サーバー - 修正後の HTTP・HTTPS ストリーミングは
https://カメラIP/video/mpegts.cgiまたはhttps://カメラIP/video/flv.cgiにアクセスし、認証にはadminユーザーとカメラの PIN Code パスワードを使う - RTSP だけが必要なら、ファームウェアを修正せずに Bluetooth の
--rtspオプションで元の D-Link ファームウェア上の永続的な RTSP アクセスを有効化できる userdataパーティションは mydlink クラウドツールに使われ、サンプルのファームウェア更新ではこのパーティションだけを変更し、D-Link カメラ OS の kernel と rootfs はそのまま残す- バックアップは変更前に必要で、
pibパーティションにはモデル番号、ハードウェアリビジョン、MAC アドレス、機能ビット、秘密鍵、PIN Code、パスワードのような、そのカメラ固有のデータが入っている - ローカル Web サーバーは Web GUI ではなく、認証が必要な直接カメラ管理 API を提供し、NIPCA API によってカメラ設定の大半を
curlのようなコマンドラインツールから制御できる
1件のコメント
Hacker Newsのコメント
ほぼすべてのIPカメラやUSBカメラでも、遅延を抑えつつカメラが対応する最高品質で同じような構成にできる
興味があれば、こうした設定を手早くまとめるか、必要な設定ファイルを含むリポジトリとして公開することもできる
市販のスマートプラグで、どこからでも制御するためにクラウドへ接続しない製品が見つからない。どこからでも制御したいわけではなく、ただ自分のLAN内だけで制御したいだけ
修正: 少なくとも amazon.in では見つけられなかった
https://www.amazon.in/s?k=smart+plugs
名前を検索しても出てこない中国製のIPカメラをもらって、屋外の防犯カメラとして使っている。カメラはSDカードに継続的に保存し、有料クラウドオプションは使っていない。KP WIFICAMアプリでインターネット越しにライブ映像も見られる
SDカードに保存された直近数日分の録画もメニューから見たりダウンロードしたりできるが、10分単位に分割されているため、1日分だけ取ろうとしてもほぼ100個のファイルを手動でダウンロードしなければならない
これらのクリップをSDカードからノートPCへ自動ダウンロードしたり、もっと簡単にしたりするにはどうすればいいだろう? モバイルアプリはどうやって録画一覧を取得し、ファイルをダウンロードしているのだろう?
Agent-DVRを動かしてみたところ、ONVIF形式でカメラのフィードを見つけた。なので、モバイルアプリもこのプロトコルを使っている気がするが、https://stackoverflow.com/questions/29159422/get-data-from-l...、数日かけて開発環境を整えて自分でコードを書くことなく、Linuxで使えるようなツールはあるだろうか?
配偶者がカメラごとにアプリを4つも使っているが、それぞれ信じられないような問題があり、SDカードは小さすぎるうえ、購入前に十分説明されていなかったクラウドストレージ料金が法外に高い
買い替えることもできるが、安い製品を買うと、すでに4回繰り返した失敗をまたやる可能性が高い
ソフトウェアがカメラの6倍高くても、十分買う価値がある
低賃金の国の誰かがカメラの壁を見ながら順番に監視してくれるサービスもあればいいのにと思う。西側の警備会社が月に数千ドルも請求している、まさにあのサービスだが、ほとんど強盗みたいなものだ
IPカメラのような重要な製品で、メーカーのクラウドなしにローカルで使える消費者向け製品がまったくないのは本当にいら立たしい
Raspberry Piで構築できるのはわかっているが、モーター制御や高性能な動体検知通知のような一般製品の便利機能もほしい
そういうものを全部自分で開発しなくていい製品なら、今の消費者向け製品価格の2〜3倍でも簡単に払える
私はローカルNASでSynology Surveillance Stationを動かしてReoLinkカメラを制御している。カメラの回転もできるし、動体検知もある
ローカルIPカメラではさらに高度な用途も多い。昨日Synologyの「ディープラーニング」NVRを買ったが、ローカルのDomarカメラで、標準機能のズーム・パン・チルトに加えて人物検知、顔認識、ナンバープレート認識などもサポートしている
私のカメラは全部安価なAliexpress製で、インターネットに接続させたことは一度もなく、怪しいメーカー製アプリもインストールしていない。Blue Irisが動く機器だけを同じVLANに置き、カメラ関連の作業をすべて処理している
PTZ、非常に細かい動体検知、通知、外部アプリ実行トリガーまで対応していて、好きなように連携できる
総コストは、安価なPoE IPカメラが1台あたり約30ドル、Blue Irisが80ドルほど
ただ、小売の消費者向けチャネルで大々的にマーケティングされていないだけ
クラウドが嫌いな人や、もっともな理由で2層構成を望む人にはこれを勧める
Wyze Cam V2を複数台と一緒に2年間使ってきたが、V3ほど低照度感度が良くない点を除けば、かなり堅牢で高速な構成で、特に問題なく動いている
https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks
Dafang-hacksのように信頼できる構成で使える20〜30ドル台の低価格カメラをしばらく探しているが、まだ納得できる代替品は見つかっていない
クラウドカメラの代替を考えたことはあるが、それでも録画、通知、オフサイトストレージは必要だ
今どき、こういう構成では何が最適だろう? 自宅でZoneminderを動かして、SyncthingでVPSにオフサイト保存するような形だろうか?
このチュートリアルはものすごく徹底している
Bjornがこの手法を開発し、非常に丁寧に文書化するために費やした時間は相当なものだったように思える
かっこよくてハッカー精神があるのは理解するけど、用途の深刻さを考えると「なぜ?」としか思えない
泥棒が物を盗むのを防ぐ唯一の手段を、出来の悪いD-Linkカメラのファームウェア改造に頼りたいのだろうか? Amcrest、Dahua、TP-LinkのまともなIPカメラを数百ドルで買ってPoEで接続すれば、少なくとも誰が盗んだのか特定できる可能性は出てくる
適切な場所に高品質のカメラを置かなければ、結局は物が盗まれていくぼやけた写真が1枚残るだけになる。経験上そうだ
カメラは空間を監視し、最良の場合でも悪事を働く人物を法廷で使える程度の詳細さで録画する装置だ。品質が十分で事件をきちんと記録できているなら、機能面で改造したD-LinkとNestカメラの間に大きな違いはない
D-Linkも複数のカメラでサービス終了を進めていて、これはクラウドサービスを止めてカメラを役立たずにし、新製品を買わせるということだ
DCS-5030Lを改造しようとしているところだ。すでにSPI EPROMファームウェアをダンプしてあり、セキュアブートをパッチするためにGhidraでu-bootを逆アセンブルした
写真ではIDは一部黒塗りされていたが、その下のバーコードは隠されていなかった
その値が単なるエンコード形式なのかは分からないが、留意すべきだ
[1] https://github.com/markusfisch/BinaryEye
純粋にローカルネットワークアクセスだけを使うネットワークカメラでは、ONVIF対応製品を選んでNetcam Studioにつないできた
https://www.netcamstudio.com/
そのうえでカメラIPの外部ネットワークアクセスを遮断すれば、メーカーのサーバーに連絡するのを防げる
普通のUSBカメラを使って、ustreamerでMJPEGをHTTP配信している
意外とうまく動くが、処理と保存は全部自前で実装しなければならない。得られるのはスクリーンショットURLとストリーミングURLだけだ
このアイデアは気に入った
うちのIPカメラは全部FTPで自分のサーバーに上げて、サーバーが即座にGoogle Driveへアップロードする。完璧に動いて安上がりだが、それでもインターネットにつながった中国製カメラであることに変わりはない
こういうふうに変換できるカメラ一覧はあるだろうか?
もともとはUSB→GDriveが欲しかったのだが、BrotherスキャナーはUSBでは画面上のスキャン設定の上書きを許さず、FTPでは許すことが分かった
この転送には何を使っている?
カメラ専用のネットワークを別に作り、たとえば別のWi-Fiルーターを置く
カメラが映像を送っているサーバーIPを突き止める
PCやRaspberry Piをこのカメラ用Wi-FiルーターのWANポートにつなぐ
先ほど見つけたカメラサーバーIPをすべてこのPCやRaspberry Piに割り当てる
そうすればカメラからサーバーへ向かう全トラフィックを受け取れるはずで、その後は好きなように処理できる
Yiカメラにカスタムファームウェアをサイドロードして、安定したWi-Fiカメラとして使っている。そのVLANにはインターネットアクセスが一切ない
こういうことをやろうとして長いこと苦労してきた。調べてもFTP/SFTP対応が抜けているものばかりで、LTEで写真をメールアドレスに送ろうとするようなものばかりだ
目的は単純な気象カメラだ。1分ごとに画像を1枚アップロードできればそれでいい。2000年代の古いウェブカメラのような単純なものだ
rPi3とLogitechカメラで未解決の問題にぶつかってしまい、嫌になってほとんど諦めていた