e-scooterのファームウェアをRustで書き直した男
Reverse engineering my e-scooter and rewriting the firmware in Rust

Egret GTのUSB-Cポートを調べたら、2本のピンがCANバスとして使われていた。ESP32-C6でCANスニファを自作し、スロットルや走行モードの通信を解読。さらに交換用のディスプレイとコントローラを入手してファームウェアを抽出し、Rustで独自ファームウェアを書き始めた。
驚いたことに、USB-Cの2本のピンがCANバスとして使われていた(これはひどく非準拠な香りがする)。
HNでの議論
104- arlattimore
Berm PeakというYouTubeチャンネルが、レトロなTron風のe-bikeで似たようなリバースエンジニアリングをやっていました。新しいファームウェアに書き換える必要はなかったのですが、どうやってそれを成し遂げたかについての良い動画でもあります。https://www.youtube.com/watch?v=hPrtVGimBYs。
- abound
これは信じられないほど印象的なプロジェクトで、素晴らしい記事です。とても満足感があります。作者はUIにSlint [1] を使うことを検討したのか気になります。buoyant(これもとてもクールに見えます)でコード生成の肥大化問題があったようですから。どちらも使ったことはありませんが、Embassyでいくつかプロジェクトをやったことがあり、組み込みGUIツールを試す口実をいつも探しています。
- trevithick
このようなリバースエンジニアリングは私にとって黒魔術です。記事は良いです。詳細で、私にはとても真似できないほど愚かですが、著者が何をしているのかを追うことができました。よくやった、著者。
Introductionの箇条書き2が気に入りました。
- zoobab
Boschのシステムを自由にする必要があります。彼らは多くのオープンソースライブラリを使っていますが、チェーン全体(スペアバッテリーなど)を閉鎖しているので、他のサプライヤーの外部バッテリーを接続することができません。
- asimovDev
投稿ありがとうございます!この春にe-scooterを手に入れ、公式アプリとBLEログをリバースエンジニアリングした後、自分用のアプリを書きました。ただし、ファームウェアに手を出す勇気はありません。少なくとも今はまだ。
- quietraster
スクーターのファームウェアをRustで書き直すなんて、ここに来る理由である不必要なほどの卓越性です。どうやってブリックせずにデバッグしたのですか、SWDプローブですか、それとも純粋な信仰ですか。
- blacklion
すべてのオリジナルファームウェアが全く保護されていなかったことに驚いています。
私はSTM32ベースの安価な(しかし良いDACとアナログ回路を持つ)中国製メディアプレーヤーのファームウェアを修正しようとしましたが、ファームウェアはno-readヒューズで保護されており、この場合に可能な唯一の操作はフラッシュを消去することであり、ファームウェアを読み出すことではありませんでした。
そして、このスクーターははるかにプロフェッショナルに作られ、高価な製品に見えます。
- yonatan8070
> 驚いたことに、USB-Cピンの2つがCANバスとして使われていました(これはひどく非準拠な匂いがします)。
ああ、それはひどい。なぜ正気の誰がこんなことをするのでしょうか?