honeylab's blog

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

ATOM Cam2にUSB-Ethernet変換アダプタを使って有線LANで使用する

件のATOMCamやATOMCam2は、基本的に自分の配下の無線LANに接続して使うように設定することが前提になっていますが、有線LANを使用したほうがいいような環境(電波状態)もあり、一部のユーザからは何でできないの、という声も上がっているようです。

というわけで、無理やりハックしてATOM Cam2を有線LANで使用できるように調整してみました。

必要なファイル類はここにあります。

github.com


SDカード上には、このリポジトリにあるTest.tarとscriptsフォルダをコピーしておきます

f:id:honeylab:20210626223630p:plain

Test.tarってなんだよ?っていう方はこの辺を参考にしてください。

qiita.com

 

物理的には、USB電源供給OTGケーブルを使用し、ATOM Camに電源を、ATOM Camからのホスト信号をUSB Ethernetアダプタに接続します。

(写真はハック用なので分解された姿です)

 

 たとえばこんなやつで

 

 

 

 

ちなみに、都合のいいことにASIX AX88772 などのUSB-Ethernetドライバがカーネルに組み込まれているため、これらは挿入するだけで認識されます。

未確認ですが、Realtek r8152のドライバもあるため、これも認識する可能性があります。

 

OTGケーブルは付属のケーブルと同一寸法ではないため、屋外に設置するのであれば
この部分をうまいことして防水性能を担保する必要があります。
付属のケーブルは電源の2本しか接続されていないため、このケーブルのA側を加工してもダメです。本体基板のUSBコネクタの信号を使用する必要があります。

 

Test.tar内の test.shの中身はこんな感じです。

github.com

 

このコードにより、本来のカメラアプリ「iCamera_app」の起動前にSDカード上のscripts/pre.shが、起動後にscripts/post.shが呼び出されます。

また、このスクリプトではtelnetdを立てていますので、Advanced IP scannerなどを使用してIPアドレスを確認した後、telnetでshellに接続することができます。

(ユーザ名は root 、パスワードは atomcam2 )

 

f:id:honeylab:20210626235425p:plain

 

pre.shの中身は

github.com

 

ここで、scripts/wpa_cli.shコマンドがミソになります。

github.com

ATOMCamの組み込みアプリでは、wlanの設定のためにwpa_supplicantや設定の取得のためにwpa_cliを外部コマンドとして実行し、結果を読み込むことでwlanの接続状態を取得したり、IPアドレスの確認を行っています。

wpa_cli -p /var/run/wpa_supplicant -i wlan0 STATUS | grep ip_address
wpa_cli -p /var/run/wpa_supplicant -i wlan0 STATUS | grep wpa_state

 内部的には↑のコマンドが呼び出されています。

なんと、これに必要なだけの応答を返すため、中身はたった4行です。ひどい。

#!/bin/sh

echo 'wpa_state=COMPLETED'
echo ip_addresss=`ifconfig eth0 | awk '/inet / {print $2}' | awk -F: '{print $2}'`

 

このwpa_cli.shを本来の/bin/wpa_cliにovermountし、

mount -o bind /media/mmc/scripts/wpa_cli.sh /bin/wpa_cli

 

iCamera_appから呼び出されるようにしてしまい、実際にはwlanではなくusb etherで通信を確立し、iCamera_appをだますことで有線LANを使用可能にすることができます。

 シリアルからifconfigして確認してみると、確かにwlan0の接続が確立していない状態、eth0のみipaddressが来ている状態でATOMアプリから接続ができています。

 f:id:honeylab:20210626231014p:plain

また、この状態でATOMアプリに新規登録する際、適当なSSIDとパスワードの組み合わせを入れておけば、無線LANを一度も使わずに登録ができることを確認しました。

 

さて、scripts/以下のファイルを変更する際に、Test.tarの変更は不要です。

そのため、scripts/pre.sh , scripts/post.sh の中身は自由に書き換えて、ハック用の追加コマンドを実行することができます。

  

突貫で作ってみましたが、とりあえず動いてはいるようです。
もし使う人が多いようならば不具合も出てくるでしょうし、その解決方法も出てくるでしょう。

まあ、とりあえず技術的にはできたよ、っていうことで。

 

電気工事法違反のコインパーキングを見つけた気がしたので改めて確認した

先日とある格安前払い方式のコインパーキングを利用した際、
地中を通したと思われる電線が派手に破損している部分を見つけました。

 

現場はこちら

f:id:honeylab:20210607131151p:plain

 

このブログを読んでいる方には、「電気工事士」という資格があることを知っている人は多いかと思いますが、工事をするには資格があるだけではだめです。

そもそも、電気工事士の資格とは他人の財産、生命を感電や火事などによって傷つけたり、失わせたりしないようにするために一定の方法・品質で工事をすることを義務付けるために設定されたものです。当然、各種工事はこの法律に従わなければなりません。
(加えて、業として工事を行う場合は都道府県への工事都道府県への工事業者と業者としての登録が必要です。)

(ちなみにブログ主は第二種電気工事士の免状を取得済みです。認定電気工事従事者の講習も受講済みですが、めんどくさくなって免状の申請をしていません。)

 

 


jeea.or.jp

 

第1図 地中電線路の一般工事方法

 

このような地中を通す、または頻繁に車が通るような部分に電線を通す場合、きちんとした電線の保護が必要です。

 
車両の影響がある場合ですから、上記のサイトにあるようにコンクリート製の暗渠を使い、1.2m以下に埋めるなどの埋設方法をとらなければ違法となります。

それに対してなんじゃこりゃ。

 

f:id:honeylab:20210607112648j:plain

車の通路に投げ出された100Vの配線

 とりあえずフレキ(CD管)には通してはありますが、ほぼ地面の真下に通してあるため、はがれた舗装からむき出しになり、水たまりに浸かっている状態です。
中を通っているケーブルはVVFですから、一応二重絶縁ですが、紫外線には弱く、屋外配線としては直接使用してはいけないことになっています。
また、このCD管自体も対候性はありませんから屋外露出には向きません。

 

さらに駐車場内にいくつかついているLED照明を確認してみます。


地中をPF管から引き出された配線ボックスに接続したまではいいですが、さらに照明までの配線がVVF+PF管のみ、インシュロックで固定されただけです。また、インシュロックも劣化して切れてしまい、ぶらぶらしています。 

f:id:honeylab:20210607112831j:plain

風に吹かれてぶらぶらするPF管

f:id:honeylab:20210607112547j:plain

切れたインシュロックが供えてあります


もう一つの照明、一応水が入らないようにとか思ってPF管をまげて施工しているようですが、PF管をこんな鋭角で曲げているためあっという間に劣化して切れてしまっています。

f:id:honeylab:20210607124739p:plain

これではここから水が浸入し、PF管を通って下のボックス内に溜まっていってしまいます。漏電まっしぐら。

ちなみに正しい方法としては、電線管とエントランスキャップを使う工事が普通です。

f:id:honeylab:20210607130021p:plain

エントランスキャップ

 エントランスキャップだって、値段としては数百円なんですが…

 

加えて、精算機のそばにある配線ボックス…

 

f:id:honeylab:20210607112726j:plain

蓋割れとるやんけ!!!!!!!!
防水のためのボックス割れて水かかり放題じゃん!!!


ひどいひどい。
こんな感じですから、この看板に書いてある同じ経営ではないかと考えられる近隣のパーキング、同様の状態なのではないかと思いチェックしてきました。

 

f:id:honeylab:20210607112711j:plain

 

 

看板②のパーキング

 

そもそも先ほどの駐車場ほど広くないため、照明の数は少なかったですが、
同様にPF管をまげていても施工が不十分なためここから水が浸入してしまいます。

もう一か所もこんなん。

f:id:honeylab:20210607125058p:plain

この駐車場内の照明はすべてこのような状態でした。

 

っていうか、もはや電線の自重で照明の線が引っ張られてるじゃん…

看板につながる照明への配線もVVFからケーブルへの直結で防水もテープ巻きのみですね。中で圧着端子使っていればテープ巻きでも十分ではありますが、これは配電盤にでも入れたいところですが…

 

f:id:honeylab:20210607113310j:plain

さて、看板①のパーキングに来てみました。

予想に反して、こちらは照明間の配線に金属電線管が使われ、正しい工事が行われているようでした。

f:id:honeylab:20210607113709j:plain



一か所PF管が割れていますが、ここはまぁ精算機への配線とコンクリート埋設なので大丈夫かな…

 

さて、こんな感じで街中には皆さんが気づかないまま、違法であったり、大変漏電の危険の高い状態のまま放置されている場所があるようです。

ここはいわゆる駅チカの激安前払い駐車場として、投資を最低限にするために激安の素人工事屋にでも頼んでしまったのでしょうか。

ちなみに管理会社のサイトの説明はこんな感じです。

sanpark.jp

 

f:id:honeylab:20210607131933p:plain

こんな感じの看板、見たことありますよね?


実際に事故が起きてからでは遅く、それが大変危険であるために法律で制限されているわけですから遵守されていて当然です。
ましてやそれが不特定多数の方が利用する駐車場のような場所の場合、施工業者だけでなく管理者の責任も逃れられないと思われます。

というわけで、この状態を各種関連窓口に通報してみたいと思います。
この管理業者に通報したとしても内部で処理されてしまったりして今後の改善につながる気があんまりしてませんので、上から順に投げていきたいと思います。

 

調べてみると、管轄の警察・消防・電気工事士の管轄である経済産業省、地域の電気保安協会、などがあるようですので順々にこのURLを添えて投げていってみたいと思います。

 

 

経鼻胃カメラ検査をしたのでDICOMデータをお土産にもらってきた

突然ですが、こちらが私のここ3年間の健康診断の結果です。

https://previews.dropbox.com/p/thumb/ABKJtD1i6J-5nDOUy_Y0Bzra0khPrrlQIYP9sLBfGmZZ8YZHDqmKr2km_JBJnmWT6qqhW1DlYomzPOnvpsFoPPfwwwatuSXr2MsEsg4CXWuoFJS_9aBx7OMDSa2U9f9Z24H7UFYsu69sJYCNpaejX1NCP7V6ry5PfxebaLF8ek_bYbPIjYBaTEXIct7f3x6EqCMGdF8MZgHz6KHbAXQoFpChaAaKsQq-be9XDMKSGzVc5amfR8rigc4QTnL4iJj1y3LT4Dc2WLgU8x7l1dPDyR-myhLqvF9CNXTIvD1rFNA-QbKEHxJONczDuIvG1hdi3YtHGlyo9Q9Dx_LMgM0RXstJagr9sC46Juwbzl5gRdRWhA/p.jpeg?size=2048x1536&size_mode=3

多少悪いですが、急に命に関わったりはしなそうです。

いや、ちょっと血圧がやばそうですが…
(祖父、父どちらも高血圧、脳卒中経験なのでたぶん私もぼちぼちやばいです)

 

この結果だけ眺めて、まぁぼちぼち気を付ければいいや、と思っていたところ、二枚目があることに気づきました。

 

胃部X線:胃ポリープ、胃角部変形の疑い

 

Image

 

 

えぇぇっ!???この辺今まで何か出たことないのに!!!胃ポリープ、はなんとなくわかるけど各部変形の疑いって何!!!???

 

ちょっと調べてみると、胃ポリープは良性の場合もありその場合は様子見、明らかに悪性の場合は摘出、この辺は想像通り。

胃角部変形の疑いって何よ…と調べてみると、胃がんとかでそういう風になることもあるとか

 

うぇぇぇぇ???

やっべやっべ。

ということで慌てて近所の、かつ苦しくない経鼻胃カメラができる病院に転がり込み、偶然翌日朝に検査ができるということで早速予約をとり、翌日鼻から撮影を受けてきました。

 

鼻からカメラ、聞いてた通り楽です。ただ、鼻の奥が狭い場合口からになりますって言われてて、年中点鼻薬が手放せない私は結構ビビっていたんですがねw

 

で、結果としては胃ポリープは治療不要、胃角部変形は若干の胃炎、そのほか食道に若干の胃酸の逆流の形跡があることなどを指摘されましたが、2~3年に一度の内視鏡検査をすればいい、ということになりました。

 

焦った…

 

で、せっかく検査をしたので、その写真をお土産にもらってきました。
なんとなくそういうことができるということは知ってる方も多いと思いますが、
実際にやってみようとするとなんて言ったらいいかわかんなかったり、もらってもどうしようと思ってもらわない方も多いと思いますので、ここではもらえるデータについての技術的情報を書いていきたいと思います。

 

現在、X線内視鏡、超音波検査などで取得された画像データは”DICOM”(ダイコム)と呼ばれる共通画像交換形式ファイルとして保存されることが多いです。
一昔前は、X線X線感光フィルムに撮影・現像し、写真として取り扱われていましたが、今ではX線感光CCDなどで直接デジタルデータが撮影できるため、必要なX線の量も少なく、より安全に、鮮明な画像が取得できるようになっています。
小さなクリニックなどでは機械単位でしかデータを取り扱っておらず、直接機械からCDーRやメモリカードにデータをエクスポートしたりすることもありますが、大病院や電子カルテが扱える病院では撮影データをきちんとカルテと結び付け、診療情報として出力できるようです。

この診療情報、総合受付や診療科受付、担当医師などに「検査画像データをCDでください」というだけでもらうことが可能です。特に理由の説明は必要です。紹介状の必要性などを聞かれるかもしれませんが、画像が個人的に欲しいです、とだけ言えばいいです。
料金は自費なので1000円~3000円(税抜き)の場合がほとんどですが、病院によっては即日とはいかない場合もあります。

 今回は大きな病院だったこともあってか、立派にラベルも印刷されたCD-Rが当日、一時間ぐらい待って1000円で発行してもらえました。

 

 

では、この中には何が入っているのでしょうか。
まず、先述したDICOM画像データが入っています。
DICOM画像データの入ったCDは、パソコン汎用機ではない検査・閲覧機器などで読み込むことも考慮してDICOMDIRという認識ファイルと、DICOMディレクトリが必ず存在しています。

f:id:honeylab:20210528102040p:plain

DICOMDIRファイル(バイナリデータ)

そのため、DICOM対応機器に挿入すれば見ることができます。

が、そんなものは一般家庭や、ちょっとしたクリニックには無いこともあります。

しかし、一般の家庭でも見ることを考慮し、CD-R作成の際に汎用PCやブラウザでも閲覧可能になるように、PCビューワソフトやhtmlディレクトリを出力してくれていることが多いです。

 

DICOM画像ファイルは、デジカメの写真などについている.JPGなどのような拡張子を持ちません。

f:id:honeylab:20210528102200p:plain

DICOMDIRフォルダ内にあるファイル

画像フォーマット情報(色深度)や患者情報、撮影条件などがファイル内にバイナリデータとして埋め込まれているだけです。

f:id:honeylab:20210528102246p:plain


どちらかというと、その情報のほうが重要です。
いくら画像を見せられても、それがどんな機器で、どんな条件で撮影されたかの情報を含まなければ、医療診断画像としては役に立たないからです。

 

このCD-Rには”AOC_mini”というビューワが付属していました。

f:id:honeylab:20210528102736p:plain

これは、DICOM画像ワークステーション”Array AOC"という機器から出力された機能のようです。

Array AOCについてのFAQ - 製品情報 | Array Corporation - アレイ株式会社

f:id:honeylab:20210528102505p:plain

 

ソフトを起動すると、収録された画像のサムネイルが表示されます。

f:id:honeylab:20210528102855p:plain

内臓画像のため、一応ぼかしてますw

パソコンに詳しい方ならこのソフトを使っていろいろできるとは思いますが、トーンカーブの修正などを行って、患部の読影を行う、などお医者さんが使うと便利な機能がついていて、一般的な画像編集ソフトとはだいぶ使い勝手が違うため、慣れるまでは結構難しいと思いますw

 

f:id:honeylab:20210528103147p:plain

 

それとは別に、記念に見るだけ、や家族への説明などのため、ビュワーのほかに、INDEX.HTMファイルがあり、ブラウザからも閲覧できます。

f:id:honeylab:20210528102631p:plain



… コスプレROM写真集と一緒ですね!←

 

ブラウザでならボタンをポチポチするだけで、撮影画像を見ることができます。

 

が、こちらはJPGがされた画像が出力されていて解像度も多少低く、医療診断に使うには不正確になる可能性があります。
しかし、家族に対して、患部はここだよ!などと説明したり、今後の話し合いをしたりするためには非常に重要なツールとなると思います。

ほら、便利!!

重要な診断を受けた場合、是非データをもらっておくと可能性が広がると思います。
皆さんもぜひ!!!

 

 

 

 

例のごとくATOM Cam2を使い倒す(telnetdとftpdを使う)

さて、ATOM Cam2ですが、例のごとくONVIF対応もなく、
NAS対応がされていないようで、せっかく防水外部設置ができるのに、例えばmicroSD内のファイルを一括ダウンロードするような操作のために本体にアクセスしなければいけなかったりしていまいち使いにくいです。

NAS対応についてですが内部的には対応しているようですが、IPアドレスなどの設定情報を書き込むUIが無いために動作していないように見えます)

f:id:honeylab:20210526022225p:plain

起動ログにはNASに関するメッセージが出ている

ということで、ATOM Cam2を遠隔操作、自動化するための方法をまとめておきます。

 

できること

telnetによるシェル操作

ftpによるファイル転送

注意

・上記の機能追加はセキュリティ上の脆弱性となります。パスワードを適切に設定したり、アクセスポイントに対するセキュリティを強化するなど、十分な対策を行う必要があります。

また、この機能は本体のFlashに何の変更も与えません。
機能が不要になった場合、microSD内のTest.tarを削除すれば、完全に元のカメラシステムに戻ります。

 

やり方

ATOM Cam2では、先代のATOM Camと同じようにファクトリテスト用の謎のバックドアシステムがあります。

qiita.com


これがそのまま残っていますので利用します。
簡単のために私が作成したTest.tarパッケージを置いておきます。

github.com

 

このTest.tarを空、もしくは現在ATOM Cam2で使用しているmicroSDのルートフォルダに入れます。

f:id:honeylab:20210526015513p:plain

microSDを挿入し、ATOM Cam2を再起動します。

しばらくして、カメラがネットワークに接続したら、IPアドレスを確認します。
ローカルLAN内を検索できるアプリや、無線LANルータのDHCP割り当て確認などを使用してもいいですが、ATOMアプリのカメラ→デバイス情報でIPアドレスを確認することもできます。

起動時のスクリプトはこんな感じになっています。

github.com

 

IPアドレスを確認したら、telnetを試してみます。

tera termやRLogin、wsl上のtelnetなどが使用できます。

 

f:id:honeylab:20210526015633p:plain

f:id:honeylab:20210526020535p:plain

ログインに必要なパスワードは"atomcam2"としてあります。
取り扱いには注意してください。

Test.tar内、shadowファイルにハッシュ化されて記述されています。もし変更したい場合、Test.tarを展開し、この部分を編集し、再度Test.tarを作成することができます。

Test.tarのディレクトリ構成を変えると動作しなくなります。

 

ログインしてしまえば、通常のLinuxのように何でも処理することができます。

f:id:honeylab:20210526022113p:plain

 

デフォルトでインストールされているbusyboxシュリンクされていましたので、
このカメラのベースとなっているWyzecam用に作成されたカスタムファームウェアからコピーしています。

github.com

 

[root@Ingenic:~]# busybox
BusyBox v1.29.0.git (2018-06-23 20:08:52 CEST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2015.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --install [-s] [DIR]
or: function [arguments]...

BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.

Currently defined functions:
[, [[, acpid, add-shell, addgroup, adduser, adjtimex, arch, arp,
arping, ash, awk, base64, basename, beep, blkdiscard, blkid, blockdev,
bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, chat, chattr,
chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear,
cmp, comm, conspy, cp, cpio, crond, crontab, cryptpw, cttyhack, cut,
date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df,
dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, dpkg,
dpkg-deb, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,
envdir, envuidgid, ether-wake, expand, expr, factor, fakeidentd, false,
fatattr, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep,
find, findfs, flash_eraseall, flock, fold, free, freeramdisk, fsck,
fsck.minix, fsfreeze, fstrim, ftpd, ftpget, ftpput, fuser, getopt,
getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump,
hexedit, hostid, hostname, httpd, hush, hwclock, i2cdetect, i2cdump,
i2cget, i2cset, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd,
init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs,
iplink, ipneigh, iproute, iprule, iptunnel, kbd_mode, kill, killall,
killall5, klogd, last, less, link, linux32, linux64, linuxrc, ln,
loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq,
lpr, ls, lsattr, lsmod, lsof, lspci, lsscsi, lsusb, lzcat, lzma, lzop,
makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs,
mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd,
mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt,
mv, nameif, nanddump, nandwrite, nbd-client, nc, netstat, nice, nl,
nmeter, nohup, nproc, nslookup, ntpd, nuke, od, openvt, partprobe,
passwd, paste, patch, pgrep, pidof, ping, ping6, pipe_progress,
pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv,
printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev,
readahead, readlink, readprofile, realpath, reboot, reformime,
remove-shell, renice, reset, resize, resume, rev, rm, rmdir, rmmod,
route, rpm, rpm2cpio, rtcwake, run-init, run-parts, runlevel, runsv,
runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch,
setconsole, setfattr, setfont, setkeycodes, setlogcons, setpriv,
setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha3sum,
sha512sum, showkey, shred, shuf, slattach, sleep, smemcap, softlimit,
sort, split, ssl_client, start-stop-daemon, stat, strings, stty, su,
sulogin, sum, sv, svc, svlogd, svok, swapoff, swapon, switch_root,
sysctl, syslogd, tac, tail, tar, taskset, tc, tcpsvd, tee, telnet,
telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute,
traceroute6, true, truncate, tty, ttysize, tunctl, ubiattach,
ubidetach, ubimkvol, ubirename, ubirmvol, ubirsvol, ubiupdatevol,
udhcpc, udhcpd, udpsvd, uevent, umount, uname, unexpand, uniq,
unix2dos, unlink, unlzma, unshare, unxz, unzip, uptime, users, usleep,
uudecode, uuencode, vconfig, vi, vlock, volname, w, wall, watch,
watchdog, wc, wget, which, who, whoami, whois, xargs, xxd, xz, xzcat,
yes, zcat, zcip

これだけ入ってればたいていのことはできるのではないですかね。

 

続いて、ftpの動作テストです。

FFFTPなどを使用して、接続設定を作成し、接続してみます。

f:id:honeylab:20210526021243p:plain


 SDカード上の録画ファイルは /media/mmc/record に発生します

f:id:honeylab:20210526021341p:plain

このように、mp4ファイルが個別にアクセスできます。

telnetftp、この二つがあれば外部からのファイルアクセスの自動化は十分に可能だと思います。

例えば、一定時間ごとにFTP経由で同期するようにNASに設定したり、別のマシンからとりに行く、などが自由にできると思います。

 

最後に、この操作に関して、製造元は一切関知していませんので、問い合わせなどしないように。
また、いつ使えなくなるかもわかりません。
お約束ですが、これを実行したことで発生する不利益については関知しません。

 

ATOM Cam2 解析

出荷直後にアレな感じのATOM Cam2ですが、赤外線関係以外は普通に使えるようですので、基板周りの解析をしていきたいと思います。

 

前回ATOM Camを解析した時は、FlashROMを引っぺがしてダンプしてしまう、という力技を使用しましたが、今回はその際に発見されていたテストモードを使用し、フラッシュメモリをダンプするというお手柔らかな方法でファイルシステムをダンプします。

 

テストモードの使用方法はこの辺を

qiita.com

実際に使用したダンプスクリプトはこんな感じ

gist.github.com

 

これをTest.rarに突っ込み、microSDカードに入れて起動させるとフラッシュのダンプが取得できます。

Image

取得したファイルをwslに持っていき、binwalk -eM で展開します.

 

rootfsはこんな感じ

f:id:honeylab:20210522000132p:plain

app領域

f:id:honeylab:20210522000215p:plain

f:id:honeylab:20210522000303p:plain

スタートアップスクリプトを見てみると

f:id:honeylab:20210522000349p:plain

どうやら、/configs/.debug_flag というファイルを置いておくと起動時にカメラアプリを起動しないようです。

あと、Unknown , Don't change! が不気味ですがw

 

/etc/shadow を見てみると、rootパスワードは初代と同じようです。
このパスワードを使用すると、シェルにログインできました。

 

f:id:honeylab:20210522000641p:plain

 

さて、ハードウェア的に気になるのは背面USBのデータ端子が接続されているか、と
USBモードがホストか、デバイスのどちらで動作しているか、ということです。

 

OTG電源供給ケーブルを接続し、試してみると…

なんとUSBメモリやUSB-LANなどが認識できました。
どうやらホストモードで動作しているようです。これは素晴らしい!
(公式には当然サポートされませんが)いろいろな機器をつないで遊ぶことができそうです。

 

 ところで、公式スペックではCPUは1.5GHzになってますが、起動時にLinuxからとれる値としては1.39GHz、って感じですね。これは初代と同じです。

[ 0.000000] CCLK:1392MHz L2CLK:696Mhz H0CLK:200MHz H2CLK:200Mhz PCLK:100Mhz

どっかでガバナ加速してるのか、実はこの値なのかはわかりません(性能にはあまり関係ないと思います)

サポートしているUSB関係のドライバは

[ 0.502930] usbcore: registered new interface driver zd1201
[ 0.508720] usbcore: registered new interface driver r8152
[ 0.514419] usbcore: registered new interface driver asix
[ 0.520084] usbcore: registered new interface driver usb-storage
[ 0.526388] usbcore: registered new interface driver usbserial
[ 0.532448] usbcore: registered new interface driver usb_ch34x
[ 0.538493] ch34x: USB to serial driver for USB to serial chip ch340, ch341, etc.
[ 0.546217] ch34x: V1.16 On 2020.12.23
[ 0.550108] usbcore: registered new interface driver ch37x
[ 0.555804] usbcore: registered new interface driver pl2303
[ 0.561574] usbserial: USB Serial support registered for pl2303
[ 0.596532] usbcore: registered new interface driver usbhid
[ 0.602278] usbhid: USB HID core driver

zd1201はとあるUSB無線LAN、r8152,asixはUSB-有線LAN、
あとはUSBストレージとUSBシリアルであるch340,ch341、

ch37xはどうもSPI、パラレル対応のUSB I/Oっぽいです。
あとpl2303とUSB HID。

これだけあれば、ちょっとした工作なら困らなそうです。

 

/usr/bin 以下にncなども含んだbusyboxへのアプレットシンボリックリンクがありますが、実際に入っているbusyboxは結構シュリンクされてるようですで、もう少し込み入った操作をしたいときにはbusyboxを改めて持ってきたほうがよさそうです。

BusyBox v1.22.1 (2017-11-13 08:56:53 CST) multi-call binary.
BusyBox is copyrighted by many authors between 1998-2012.
Licensed under GPLv2. See source distribution for detailed
copyright notices.

Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --install [-s] [DIR]
or: function [arguments]...

BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.

Currently defined functions:
arping, ash, awk, blkid, cat, chmod, chown, cp, cut, date, dd, depmod,
devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, du,
dumpleases, echo, egrep, env, false, fdflush, fdformat, fdisk, fgrep,
find, flash_eraseall, flashcp, flock, free, freeramdisk, fsync, getopt,
getty, grep, groups, gunzip, gzip, halt, head, hostid, hostname, hush,
hwclock, id, ifconfig, init, insmod, kill, killall, killall5, klogd,
linux32, linux64, linuxrc, ln, logger, login, logread, ls, lsmod, lsof,
lsusb, makedevs, md5sum, mdev, mkdir, mkdosfs, mkfs.vfat, mknod,
mkswap, mktemp, modinfo, modprobe, mount, mountpoint, mv, netstat,
nslookup, pgrep, pidof, ping, pkill, pmap, poweroff, printf, ps,
pstree, pwd, readahead, readlink, reboot, rev, rm, rmdir, rmmod, route,
sed, seq, setarch, sh, sleep, sort, sum, swapoff, swapon, switch_root,
sync, sysctl, syslogd, tail, tar, telnetd, time, timeout, top, touch,
tr, true, tty, ttysize, udhcpc, udhcpd, umount, usleep, vi, vlock,
watch, watchdog, wc, wget, whois, xargs, zcat

さて、中身はこんな感じかな。

1と2の差はやっぱりイメージセンサの強化によるものがほとんどですので、ファームウェア自体はまぁだいたいATOM Cam初代と一緒ですw

なんか面白いものつながらないかなぁw

 

ATOM Cam2が届いた&赤外線問題の検証

 発売翌々日、クロネコヤマトにて到着しました。

翌日に到着した人はレターパックだったっぽいです。

 

早速ながら分解し、シリアルのログを見てみました。

gist.github.com

 

ぱっと見ですがまぁそんなに変わらず、注目のTest.tarを利用した裏機能もどうやら残っているように見えます。

f:id:honeylab:20210521042955p:plain

Test.tarが使えれば↓のような裏カスタマイズが可能です。

honeylab.hatenablog.jp

 

ログインプロンプトも出ますが、とりあえずrootパスワードは不明です。
前回の、なんだったっけ……?

Test.tarでFlashダンプツールを作って/etc/passwd見てみればいいかな?

 

で、本体解析がまだまだなんですが、赤外線機能の不具合によるスペシャルお代わりが発生しました。

www.atomtech.co.jp

なんともう一個もらえるらしいです。

中の人お疲れ様です…

 

で、その不具合の原因と、簡単に改善する方法がないかを検証してみました。

こちらの記事を参考に分解していきます。

js2y.com

赤外線LED基板と防水マウンタを取り出してみます。

f:id:honeylab:20210521043406p:plain

 

f:id:honeylab:20210521043549p:plain

f:id:honeylab:20210521043622p:plain

どうやらこの部品が「遮光性の低い材料を間違えて使用した」もののようです。

Image

別のATOM Camのナイトビジョンモードで撮影すると、赤外LEDの光がマウンタの足のほうまで透過して透けているのが見えると思います。

この光が映像に悪影響を及ぼしているものなのか、確認してみます。

赤外線LEDの左側2個だけにアルミテープを巻き、材料内への回り込みを減少させてみます。

f:id:honeylab:20210521043933p:plain

これで撮影した映像と、出荷時の状態で撮影した映像を比べてみると…

 

Image明らかに、左側の明るい光が減少しています。

このように、この材料内への赤外光の侵入を減らせば状況が改善するものと思われます。(って公式も言ってるでしょ…)

例えば、塗装するなどの方法で改善させることは可能かもしれませんが、一般的には再出荷を待って置き換えるのがよさそうです。

(っていうか、赤外線が必須の人が全員ではないので、その人にとっては完全にボーナスなのですがw)

 

尚、このような作業を行うには分解や改造が発生し、保証を受けられないばかりか防水性能の逸失や技適などの問題が絡んできますので、上記のような改造を進めるものではありません。

 

さて、ぼちぼちと本体側のhackの準備をしなきゃなぁ
まずはパスワードパスワード…

ゲーセンでお菓子取る奴のミニチュア「SWEET CAPSULE LAND 4」を魔改造する

hobby.watch.impress.co.jp

 

ゲーセンでおなじみのお菓子取る奴、namcoのSWEET LAND 4をミニチュア化した奴が発売されたとのこと。

ガチャの品数としては、中のターンテーブルが単色塗りつぶしか、景品が入った柄に入っているか、x筐体色3色で6種類らしいです。

この商品のポイント、なんと外側のギアを手で回すとターンテーブルが回る!

f:id:honeylab:20210515054123p:plain

Twitterで見かけて、これは改造しなければ←とその辺を見たものの見当たらず、
もうおっさんは疲れたのでメルでカリっとして送ってもらいました。

 

到着し、嫁に発見され、さっさと組みあげられてしまった(シール貼っちゃうと改造がめんどいんだってば…)ものがこちら

f:id:honeylab:20210515054356p:plain

(3色のうち2つ。この記事を書いた時にはすでに分解済みw)

 

うーん、いい出来。これを飾っておくだけなんてもったいない!!!

 

改造のネタ…まぁ当然ターンテーブルは回すよね。
クレーンのギミックは無理か…

あとは照明はいるかな

あと、あの謎のBGM、これが流せればミニチュアゲーセンオブジェクトとしては合格だろ、ということで早速魔改造していきます。

まずは手持ちの部品だけで作ることを目標にしたのでだいぶ無理がありますw

 

ターンテーブルを回すには当然モーターが要ります。
しかし、普通のモータでは当然入らず、かなり小さいものを探す必要があります。
また、モータが小さくても、十分減速させてやらないとターンテーブルの回転には使えません。

いろいろ探してみたところ、部品箱の奥からサーボモータを発見しました。

f:id:honeylab:20210515054502p:plain


しかし、普通のサーボモータは回転範囲が決まっていて連続回転はできません。
調べてみるとこのサーボモータ、内部のストッパーを殺してしまえば360度回転のできる減速ギアボックスになりそうだということがわかりました。

fukuno.jig.jp

 

というわけで、サーボモータ開封してバチバチと改造していきます。
上の記事の内容に加えて、ポテンショメータのストッパーも破壊します。

 

(…今気づいたけど、+80円で連続回転型が売ってるのね…)

 

サーボ本体の外装もゴリゴリと削っていきます。

が、入らん…

 

うーん、とりあえず試作一号を作ることを目標にして、ちょっとぐらいはみ出てもいいか!

ということにして、底もぶち抜き、内部にエポキシ接着剤で固定します。

 

f:id:honeylab:20210515055323p:plain



これでうまくいったら、もうちょっと小さいサーボでも探そう。

 

ターンテーブルに、適当にデザインして印刷したお菓子の柄を貼ります。

f:id:honeylab:20210515055144p:plain

ねじでサーボモータに取り付けます。

f:id:honeylab:20210515055452p:plain

 

うん、いい感じ。

しかし、1.5Vの電池で動かしてもちょっと早いな。
使い古した1Vぐらいの電池でちょうどいいぐらい。
適当にPWMしてもいいけど、なんか適当な抵抗で落としてもいい気がする。

 

続いてBGM再生機能。

内蔵MP3プレイヤーとかでもいいけど、それではちょっとつまらないので
Bluetoothモジュールを内蔵してみます。
これで、iPhoneなんかから好きな音楽を鳴らすことができます。

 

電池→5V昇圧DC/DC→BTモジュール→アンプ基板→スピーカと配線し、中に押し込みます。

f:id:honeylab:20210515055637p:plain

スピーカーは、超小型のやつを使ったためちょっと音圧が低いかな…
もうちょっと最適化できそう。

 

ターンテーブルを回転させてしまうため、クレーンギミックが自立しなくなるため、
ドームから吊る必要があります(簡単のため両面テープでくっつけています)

 

 

さて、ミュージックスタート

 

youtu.be

 

できたw

 

 

さてさて、あとは照明とか、電池をちゃんと内蔵するとか、をやりたいな。

改造用にはあと2台あるしなw