出荷直後にアレな感じのATOM Cam2ですが、赤外線関係以外は普通に使えるようですので、基板周りの解析をしていきたいと思います。
前回ATOM Camを解析した時は、FlashROMを引っぺがしてダンプしてしまう、という力技を使用しましたが、今回はその際に発見されていたテストモードを使用し、フラッシュメモリをダンプするというお手柔らかな方法でファイルシステムをダンプします。
テストモードの使用方法はこの辺を
実際に使用したダンプスクリプトはこんな感じ
これをTest.rarに突っ込み、microSDカードに入れて起動させるとフラッシュのダンプが取得できます。
取得したファイルをwslに持っていき、binwalk -eM で展開します.
rootfsはこんな感じ
app領域
スタートアップスクリプトを見てみると
どうやら、/configs/.debug_flag というファイルを置いておくと起動時にカメラアプリを起動しないようです。
あと、Unknown , Don't change! が不気味ですがw
/etc/shadow を見てみると、rootパスワードは初代と同じようです。
このパスワードを使用すると、シェルにログインできました。
さて、ハードウェア的に気になるのは背面USBのデータ端子が接続されているか、と
USBモードがホストか、デバイスのどちらで動作しているか、ということです。
OTG電源供給ケーブルを接続し、試してみると…
なんとUSBメモリやUSB-LANなどが認識できました。
どうやらホストモードで動作しているようです。これは素晴らしい!
(公式には当然サポートされませんが)いろいろな機器をつないで遊ぶことができそうです。
お、atomcam2のUSBポート、HOSTで動いてるわ。
— ひろみつ(honeylab) (@bakueikozo) 2021年5月21日
USBメモリ、ether、CH430とか普通に動く。
appにdongleのハンドラ残ってるからハード的には普通にドングルも使えるんじゃないの? pic.twitter.com/fMhRUVhFSO
ところで、公式スペックでは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