No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 719 | 720 | 721 |...| 1183 | 1184 | 1185 || Next»

GoPro に telnet する

GoPro User Forum の Hero3 Black Firmware Studies & Physical Teardown Photos スレッドのこれこれに従って GoPro に telnet できたのでメモ.至極簡単.

まず,下記の内容の autoexec.ash を GoPro の SD カードのルートに置く.改行コードは LF でないとコケるとか.やってることは,おまじないに sleep 4 をはさみつつ usbポートをイーサネットにする設定をしたうえで telnetd を起動,というだけ.

sleep 4
t app linux_usb enable
sleep 4
lu_util exec 'telnetd -l /bin/sh'

あとは,USBケーブルを抜いた状態で GoPro を起動 → 暫く待つ → USBケーブルを繋げる → usb0 とかのインターフェースができる → ifconfig とかで 10.9.9.2 とかの IP を振る → telnet 10.9.9.1 で GoPro に入れる.

さて,これで autoexec.ash で実行させるスクリプトなどの開発がやりやすくなった.df で使用量とか見えるのでSDカードの容量が一定量を超えたら古いファイルを消してしまうとかはすぐに出来そう.あとはUSBから電源をとっているかどうかと録画中か否かの判定ができればよいのだけど…… GoPro App で見られる情報なので自分の httpサーバを覗きに行くという手段でもいいか.

あー,これって GoPro HERO3+ BE ならうまくいくけど HERO3 BE だとデバイスがすぐに落ちるな.

しょうがないのでここに書いてある wifi 経由の接続に変えよう.autoexec.ash を下記の内容(cherokee を殺して telnet を立ち上げる)にして,wifi をオンにして GoPro 起動して,その wifi に繋いだうえで 10.5.5.9 の 8080 に telnet する.

sleep 4
lu_util exec 'pkill cherokee'
lu_util exec 'telnetd -l /bin/sh -p 80' 

とりあえずOK.

GoPro のループ撮影を誤認識してた

一回の撮影は特定の長さ(ないしカードいっぱい)になるように上書きをするが,過去の撮影は上書きしない.GoPro マスターディストリビューター(日本総代理店)のページ には「ループ撮影 : データがFULLになった時に、古いデーターを消去して上書きをしていくモード。」としか書いてないので,過去の撮影も上書きするものだと思いっきり勘違いした.まあ,GoPro の使い道を考えると正しい仕様なのだけど.

うーん,だがしかし,この仕様だと単純には常時撮影のドライブレコーダとして使えんな.背面コネクタからキー連動で電源入れてワンボタンモードで自動で撮影開始するところまではいいが,その後カードがいっぱいになると撮影不能になる.適当なタイミングで要らないファイルを削除しなければならないが,これを背面コネクタからだけで自動化するのは面倒.GoPro App で手動で消すのもいいけどワンボタンモードを設定していると GoPro App で接続できないし……

やっぱもっとソフトウェア的にやるべきだな,Hero3 Black Firmware Studies & Physical Teardown Photos とかを参考に.なんか USB 経由でコンソールがとれたり autoexec.ash を書いておくと色々出来たり(Super One Button Mode)できるようだし.Wifi 経由で GoPro 内の http サーバに対して特定の URL 叩き込むとかいういうのも良いかもしれない(GoPro Hero 3 Black Edition Python API/Wrapper,).

晴れなので阿蘇へ

今日は勝った.雲海と光るラピュタの道.

阿蘇山をぐるっと囲む雲海.もうちょっと厚くなっててくれると嬉しかったのだけど……

そして今朝は霜がびっしり降るくらいに寒かった.阿蘇乙姫のアメダスを見ると7時に-0.1℃だったとか.

だがしかし,寒くても相変わらずカメラたくさん.先週より人が多かった気がする.バイクも結構来てたけど今朝とかクソ寒かったんじゃなかろうか?

関数ポインタは void* に入れてはいけない

Cの言語仕様に関数ポインタからデータ用のポインタへの変換の定義が書いてないので何が起こっても何も文句を言えないらしい.なんとなく身の回りでは動くことのほうが多いのだけど,本来やってはいけないことであると.POSIX 2008 の仕様としては関数ポインタを void* に代入してもちゃんともとに戻せることが要求されてたようだけど(こことか),今の web 上の仕様を見てもその部分(2.12.3)が見当たらないので POSIX 的にも不定になったのか読む文章を間違えとるのか.

確かによく考えるとハーバードアーキテクチャなマシンとかだったらデータとコードでポインタが全く別物かもしれないのか.うーん……

とどのつまり,データと関数は別物なので混ぜるな危険.

悩ましい

日本でやる国際ワークショップの登録フォームに何故か英語版と日本語版の2つがあり,日本語版のフォームの頭には「Registration form (for Japanese)」と書かれている. ……日本人は日本語のフォームを使えってこと? 基本的にホテルの予約用だと思うので日本語で書いたほうが処理が楽だったりするのだろうか.

とりあえず,日本語のフォームを日本語で埋めて,それを英語のメールでローカルオーガナイザーに投げるとかいうあほな事をしてみた.メールも日本語でよかった気もするけれどさじ加減がよく分からん.

あとで買おうと思っていた漫画が

いつの間にかオンライン書店で軒並み注文不可とか…… 重版かからないかぎり出版社にも在庫なしであると.

そして色々とうろちょろしてたら最終的にヨドバシ・ドット・コムで在庫を発見.ヨドバシって漫画も売ってたのね.とりあえずありがたい.

«Prev || 1 | 2 | 3 |...| 719 | 720 | 721 |...| 1183 | 1184 | 1185 || Next»
Search
Feeds

Page Top