LEDライトがイエロー点灯のまま変化しない状態のAtomcam2を復活させる(自己責任)

長文失礼いたします。

コミュニティへの書き込みでもチラホラ見かける、LEDライトがイエロー?オレンジ?点灯のままでうんともすんともいかず、リセットボタンからのリセットも効かない、MicroSDカードにdemo.bin入れてリセットボタン押しながらパワーオンしてファーム書き換えようとしてもダメ、というAtomcam2をなんとか復活させたいかたへのご提案?です。

保証期間内であれば、メーカーのサポートに相談すれば交換してもらえる可能性がありますが、期間外の場合は、一通りサポートから案内される方法を試して、ダメなら処分することになるかもしれません。ここで諦めずに、自己責任ですが処分する前に分解してシリアルコンソールからubootのプロンプトを出してファームウェアを書き込む方法で復活できる可能性があります。Wyzecamなど、情報がいろいろ公開されている世界では当たり前かもですが…

シリアルコンソール関係は、ネットで調べればいろいろ出てくると思います。
例:device-wyze-v3/README_RETIRED.md at master · themactep/device-wyze-v3 · GitHub
不器用な私は、フラッシュのピンをショートさせてubootのプロンプトを出すのに苦労しましたが、プロンプトが出せたらこっちのものです。
GND/RX/TXのピンはスルーホール状態です。ピンヘッダをハンダ付けするのを避けたい人は、テストワイヤといったバネ性のある端子になったものを利用すると便利です。
例:https://shop.sunhayato.co.jp/products/ttw-203

おそらくdemo.binをubootのコマンドで書き込めば復活するかと思います(試してないです。binwalkコマンドなどで.bin内の構成要確認)が、私の場合はせっかくなのでOpenIPC系の公開されているファームウェアを書き込んでみました。
私が使わせてもらったのは、https://thingino.com/のファームウェアです。
ラッキーなことにAtomcam2などIngenic T31X系がサポートされているのでそのまま流用できました。(気持ち悪いかたはソース等開発環境が公開されているので一からビルドするのがいいかと思います)

当初、Atomcam2向けに公開されているファームウェアをそのまま書き込んだところ、WiFiモジュールが認識されなかったのでおかしいなあと思っていたら、どうやら初期のAtomcam2の基板に実装されていたALTOBEAMのATBM6031に合わせたファームとなっていました。最近のはRealtekのRTL8189FTVのため、ソースもあるしビルドするかと考えていたら、SoCもセンサーもWiFiモジュールも同じであるWyzecam3向けのファームがあったので、とりあえずこれを書き込んでみたところ、プレビューは問題なくカメラの画像をWebブラウザから確認することができました。(他の機能は未確認)

というわけで、分解してしまえば、保証期間内なら保証なくなりますし、保証期間に関係なく、防水加工(ゴムパッキンなど)も弱くなるので、用途は限られるかもですが、廃棄するには忍びないカメラを延命できる可能性があるという提案でした。

「いいね!」 2

ちなみに、私のイエロー点灯のままのAtomcam2は、コンソールログを見てみると
/configs/.product_config
を読み込むところでエラーとなっていました。ログインプロンプトは出ていますが、
しばらくするとリブートして、同じ箇所でエラーを吐いて再びリーブート、という動作を
延々と繰り返していました。

...
===========welcome to iCamera_app===========
[Build date] Sep 16 2022 (10:27:51)
[msg:109]log: msg_queue_create() ok  MsgId:65538
[sdevice_can_work_set_callback]dbg: set ok! have 1 cb
init_log_module() ok
[sdevice_can_work_set_callback]dbg: set ok! have 2 cb
[exec-iCame:151]: msgSndId:0
[exec-iCame:166]: msgRcvId:32769
[exec-iCame,0495](no.300000) cmd:[/system/bin/sysMonitor.sh &]
[threadpool,0142](init_job_node) jobNodeNumMin:30 jobNodeNumMax:45
[timer,150]dbg: init complete.
[debug.c,0190]debug_init() dbgId:0
watchdog_init() ok  TimerId:1

<Reading> /configs/.product_config
[exec-assis,0302](no.300000) system ret:[0]
[product_config.c,0257][paracfg_product_config_init] item:PRODUCT_TYPE, len:0 err
[init.c,2337][init_param] paracfg_product_config_init error
[init.c,2667]@@@@@@@@@@@@@@@ init_param FAIL @@@@@@@@@@@@@@
[init.c,2668]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
################################[init/init.c,init_all,2715] init_all() END ret:-20
[init.c,2136]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[init.c,2137]             exit
[init.c,2138]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[/system/bin/sysMonitor.sh]completed\n
[log_upload.h,1154]rcv signal SIGUSR1, main process shutdown!
[log_upload.h,1157]main process shutdown handler...
[exec-assis,0428](no.200000) cmd:[rm -rf /tmp/log.txt]
[exec-assis:263]: (no.200000) popen  ret:[]
[exec-assis,0437](no.200000) msgque ret:[0]
[exec-assis,0428](no.200000) cmd:[echo "" >> /tmp/log.txt;echo "##### dmesg #####" >> /tmp/log.txt]
[exec-assis:263]: (no.200000) popen  ret:[]
[exec-assis,0437](no.200000) msgque ret:[0]
[exec-assis,0428](no.200000) cmd:[dmesg | tail -n 100  >> /tmp/log.txt]
[exec-assis:263]: (no.200000) popen  ret:[]
[exec-assis,0437](no.200000) msgque ret:[0]
[curl_post.c,0192]url:[https://device-api.atomtech.co.jp:443/device/v1/log_url/get]
[curl_post.c,0202]snd:[{"request_id":"mainabnormaluploadlog130","mac":"","enr":"","product_model":"","product_type":"","hardware_ver":"","firmware_ver":"","log_file_list":[{"file_suffix":"txt"}],"sc":"4183bb75195b479c9bbd1bb90fc63306","sv":"6b9b2adc34f344ea95d498632dac0e0c","ts":13000}]
[curl_post.c,0242]curl_easy_perform() failed:[6] Couldn't resolve host name
[curl_post.c,0263]others error code:6
[curl_post.c,0242]curl_easy_perform() failed:[6] Couldn't resolve host name
[curl_post.c,0263]others error code:6
[curl_post.c,0242]curl_easy_perform() failed:[6] Couldn't resolve host name
[curl_post.c,0263]others error code:6
[curl_post.c,0295]server_visit will sleep 5 second
json:{}
[log_upload.h,0118]err: NULL == rootJson
[log_upload.h,0266][log]err: cloud_recv_buffer fail
[log_upload.h,0287][log_uploadNotify]:  end !!!!!

Ingenic login:

正常な場合は、パラメータを読み込んで下記のような感じになっているみたいですね。

[product_config.c,0260][PRODUCT] [PRODUCT_TYPE ] [CardCamera]   
[product_config.c,0260][PRODUCT] [PRODUCT_MODEL] [ATOM_CamV3C]   
[product_config.c,0260][PRODUCT] [BOARD_TEST   ] [0FFF]   
[product_config.c,0260][PRODUCT] [FACTORY_TEST ] [0000]   
[product_config.c,0260][PRODUCT] [HARDWARE_VER ] [P00J0000]   
...
「いいね!」 1

LEDもつかない、コンソールログも出ないような、いわゆるbrickしているような場合もあるかと思います。
その場合は素直に?新しいAtomcam2を買えよって話ではありますが、往生際悪くまだ諦めきれない貴兄には、SPI Flashメモリに市販のROMライタ(CH341A系など)を使ってファームウェアを直接書き込んでみることで復活できる可能性があります。
ただ前提として、Flashメモリの中身だけ壊れているだけで、基板上の回路も問題なく、他のパーツは正常でないと使えない技なので万能ではありません。

私もやらかしてbrickしたAtomcam2を、アマゾンで購入したROMライタキットを使ってFlashメモリ(型番はeFeon QH128A-104HIPでした)の足にクリップ挟んで認識させてファームウェアを書き込むことで復活させたことがあります。復活できない可能性もゼロではないですし、かかるコストや手間を考えるとアレではあります…

ちなみに、SoCのIngenic T31系は、Flashメモリ上のubootが壊れていてブートできない場合は、microSDスロット上のカードの中に壊れてないubootがあればそっちからブートできるシーケンスになっているようです。
というのを、wiki/en/ingenic-t31-unbrick-with-sd-card.md at master · OpenIPC/wiki · GitHub で見かけたのですが、よく読むと、wyzeやatom系はmicroSDスロットへの通電をGPIOからやっているようで、その制御はFlash内のubootかlinuxカーネル内でやっているため、ubootを書き込んだmicroSDカードをスロットに刺しておいたところで、そもそも通電されてないのでブートできないみたいですね。

「いいね!」 2