2024年5月22日水曜日

YAMAHA電動車椅子NiMHバッテリー 不揮発メモリ解析(2)

前回の続きです.

YAMAHAの電動車椅子ユニットのNiMHバッテリー.新品で5万円ぐらいする.300回で劣化.日常使いするモノにしてはコスパ悪いもんです.
これのNiMHを交換しても解決にはなりませんで、EEPROMを初期化しないと新品同様になりません.

そこでEEPROMの解析をします.
(読者が真似して失敗してもわたしは責任取りませんので)

↓ハッキング風景.ぐちゃっ
↓右上のがM24C04というEEPROM.
↓こんな配線になってる.SCL/SDAをハッキング用STM32へつなぐ.
↓信号取り出し場所はこちら.
↓接続構造はこうです.
・STM32のGPIOのpollingでSCL/SDAを監視します(割り込みよりも高速だった)
・プリント基板上のロジックは5V系のようです
・STM32は3.3Vだけど、5V torerantの端子があるので直結(便利なもんだ)
↓STM32がI2Cのeventを検出した様子をオシロに表示させる.ちゃんと検出できてる.
SCLは原信号(5V).
STARTはSTM32の出力(3.3V).SCL=1の時にSDAが立ち下がるとSTART eventになる.受信開始の意味である.
positive edge SCLはSTM32の出力(3.3V).このtimingでSDAを取り込むと1bitのdata受信になる.35uSecぐらいのbit rateである.

最もtiming的に厳しいところがSCL posedge~STARTの間隔が10uSecしかないところですが、そこも上手く検出できているので合格とします.

START~STARTの間に、9bitが2度送信されています.前半がcommandで後半がbyte dataになっている.9bitである理由は、8bit+ACK bitだから.

ーーーー
疑問: EEPROMへのアクセスはいつ生じるのか?

充電器にバッテリを挿したり、バッテリ基板の電源をon/offして調べました.
わかったこと.
 ・バッテリ基板に通電した最初にバースト的にEEPROMアクセスが発生
 ・充電器に挿した時はEEPROMアクセスが生じない
 ・走行時にappendするかもだけどそれは目撃してない
こんな観測結果を得ました.

これは何を意味するのかというと、YAMAHA chip内部RAMにEEPROMのdata copyを作っておいて、同copyで諸動作を実行するのでしょう.EEPROMの書き込み回数上限に触れないようにするためよくやられる作法です.

なのでバッテリ基板に通電したときのバーストアクセスを解析すれば何か判るんじゃないかと期待します.

ーーーー
今後の取り組み.

EEPROMアクセスをPCに飛ばします.

やること:
・EEPROMは512 bytesなので、STM32のRAMにとりあえず積む
・積み終わったらCOM portへ送信する

ーーーー
基板1枚のEEPROMアクセスを採取できました.アクセス時系列順です.
横に連なるのは先頭アドレス+Nをシーケンシャルに読んだ結果です.
アドレス100h以降は全部ゼロでした.
ASCII変換したら何か文字が出てくるかな? →出ませんでした
ADRS BYTE DATA
--------------
BD  1D
FE  1D1D
8C  4B082900
90  04B98EF4216ESA0BDSA11D
FE  1D1D
8C  4B082900
90  04B98EF4216E0F3A0800FE02AE006403
A0  800FFE001644000B8E8E818100000017
B0  0000005FFFFFFF5C9000E700A31D
00  8C15A00A251C1C1B0F032851A007000C
10  03007AA0000009032850A00A030C6432
20  02909101210287880642027C7D0E6F02
30  7C7D23F403CADEF20A060003CADEF20A
40  070003CADEF20D0800C0C0ACBABAA6B6
50  B6A2EAE2D4E5DCC9E2D7C2798C44FED0
60  53D004194B7D960D0000080A5A037E90
70  101462440A28284A741E08010A190000
80  00143B6E3814000000000497

理屈ではこう言えるでしょう.
 ・比較的フレッシュなバッテリーを入手する.(新品ならなお良し)
 ・そのEEPROMを全部読む.①
 ・古いバッテリーのEEPROMを①の情報で焼き変える.
 ・古いバッテリーが蘇る.

↑やりたいのはこれです.

1へ    3へ

かしこ

10 件のコメント:

  1. EEPROMのデータは読み取れないですか
    充電前と充電後のデータの差分をみるとか?
    5chでだれか解析してないかな

    返信削除
    返信
    1. バスの衝突が起きなければ直接読みに行きたいです.
      がっ、いまのところ未確認.

      ICを基板から外せばなんでもできますがね.

      >充電前と充電後のデータの差分

      その通りです.

      削除
  2. 74ls244な バッファをつけて データ線を繋いで読み出すとか?
    バイオス読み出しにシリアルのsd rd gnd を繋いで読み出していたような

    返信削除
  3. Biosはマザーボードのです

    返信削除
  4. >古いバッテリーのEEPROMを①の情報で焼き変える
    最近は、そういうことされると困るので、
    ・バッテリー固有のシグネチャー(秘密キーを知らないと、作れない)
    が、使われてたりして。CPU と EEPROM が、「ペア」になってるとか、ないのかな?
    ※余談ですが、「Playstation 5」が、似たような仕組みになっていて、一旦ユーザ登録してしまうと
    ・メインボードとサブボードを、他のものと「ニコイチ」
    しようとすると、「動かなくなる」そうです。
    ※勿論、「正規のサービスステーション」には、「再ペアリング」の装置がある(らしい)ので、ちゃんと修理出来ますが、「ユーザーが勝手に修理出来ない」ようになってるらしいです。

    返信削除
    返信
    1. CPUらしきチップには、
      ・YAMAHA
      の、ロゴが印刷されてますね・・・どういう素性のチップなんだろ?
      「YAMAHA」なら、↑のようなトラップは、仕掛けてそうだし。
      「マイコン内蔵型」って、これ見よがしに書いてあるし。

      果たして、驚きの結末は・・・?

      削除
    2. さぁて、どうなりますか?
      障碍者のQOLはどこへ行く?

      削除
    3. 中古のバッテリーの基板をつけたら充電復活のねたを発見、当たり前か

      削除
    4. そうゆうことなんです
      QOL QOL

      削除