honeylab's blog

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

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