BMW MINI R52 コーディングのメモ

はじめに

今日は備忘録がてら MINI R52 クーパーS コンバーチブルのコーディングについて書いてみようと思います.
コーディングというのは,簡単に言えば,車両ECU(つまり,コンピュータです)の設定を書き換えて,封印された機能を使えるようにしたりする作業のことです.R52 はご存じ幌車なのですが,海外や輸入車でも最初期のものはキーレスでリモートで幌オープンやクローズができたりしているんですが,ぼくが持っている車両はその機能が封印されているんですね.この機能を解放したくて,コーディングとやらに挑戦してみたわけです.
ところがですね,思いの外,国内外を含めてR50シリーズの情報が少ない!ぼくも調べていてすごく困ったので,メモがてら記事にしようと思った次第.
おちゃらけはともかく)必要最小限の情報で直感的に説明できるようにしたいと思います.詳細や出典はリンク先に任せるスタイル.いや,自分でスクショとるのが面倒とかそういうことじゃないですよ?
備忘録的な記事ですが,強いて言えば,読者は,BMW MINI R50シリーズ乗りで,PCや通信にそこそこ強い人を想定しています.もっというと組込系を扱ってる人には簡単な部類.詳細手順は記載しませんがぼくがハマりかけたところを中心に概要を説明していくというスタンスです.

あと,巨大な文鎮をつくってもぼくに文句言わないでね.

必要な機材とかソフトとか

BMW 車のコーディングは,OBD2コネクタ経由で専用の変換ケーブルを介して車両ECUにアクセスし,PCから設定を呼び出したり書き換えたりします.ここで,「OBD2…?」とか「ぼくWindowsでデバイスマネージャが何かわかりません」みたいな方は,残念ながらお帰りください.この記事を参照しても,1.3tの文鎮を作ってしまうだけです.

必要なデバイス

OBD2コネクタとPC(USB)とを接続するデバイスが必要です.
結論から言えば,ぼくは,Amazon で次の商品を買いました.

「INPA K + CAN+switch push BMW用FT232RLチップ付きINPA K + CAN K + DCAN車診断ツールBMW R56 E87 E70 E70 E90 E92 E93用ケーブルOBD USBインターフェイス」です.

BMW 車両をコーディングするのに必要な変換ケーブルは,車両の時代に合わせて選ばなければいけません.なぜかというと,1998年~2007年ごろとそれ以降で車両との通信プロトコルが異なるからです.前者はK-CAN/D-CAN(K-BUS/D-BUS),後者は CAN です.
MINI R50シリーズは 2003年~2006年頃(R52は~2008)なので,K-CAN/D-CAN 対応のアダプタを買えばよいことになります.
上の商品はだいたいどれにでも対応する変換ケーブルです.

他にも,古い車両は,OBD2のpin7-8を短絡させないとうまく動かないとか,いろいろあるのですが,細かいことはさておき,R50シリーズは短絡が必要です.上の商品は短絡するかしないかをスイッチで選択できるものです.

これが上の商品.

スイッチのポジションも説明がないような雑商品なので,テスターを7-8番につないで,どのスイッチが短絡にあたるのかもチェックしなくてはいけません….
写真左上左右の2ピンが 7-8pinです.

ソフトとか

ソフトはもう本当にいろんな説明がありますね!ぼくは次の環境で実現しました.

  • OS: Windows XP Service pack 2 on VMware on Windows 10
  • 変換ケーブルドライバ → 変換ケーブル付属CDに入ってた
  • INPA 5.01 → 変換ケーブル付属CDに入ってた
  • EDIABAS 6.4.3 → 変換ケーブル付属CDに入ってた
  • NCS Expert → 変換ケーブル付属CDに入ってた
  • BMW standard tool
  • NCS dummy
  • SP-Daten (R50)
  • .NET Framework 4 (for Windows XP) ← NCS dummy とかで必要

※OS とかは色々説があるようですが,Windows XP が実績が多いということなので,昔のインストールCDを引っ張り出してきて,VMwareでインストールしました.VirtualBoxとかはうまく動かないそうなので,VMwareがよいでしょう.
で,このソフトがあると何なのよ?という直感的な説明がないことが,コーディングを難しくしていると思うので,絵を描いてみました.

各ソフトの直感的なイメージ

f:id:Hie:20190407232722p:plain
INPA/EDIABAS は同時配布されていることが多いのですが,EDIABASは,車両と通信をするためのチャネルを作るためにあり,INPA はそのチャネルを使って車両ECUのステータスを読み取ってエラー表示をしたり,ECUに命令して故障診断プログラムを走らせたりする上位アプリケーションです.
ここでやりたいことは,車両ECUの設定を書き換えたいということなのですが,この場合はNCS Expert を使います.つまり,EDIABAS + NCS Expert という使い方ですね.
言い換えれば EDIABAS さえ起動していれば,INPA はいらなかったりするのですが,INPA を起動したタイミングで EDIABAS (厳密には EDIABAS Server)が起動するので,実際には INPA を起動して車両とお話できていることがわかったら,INPA だけ終了→NCS Expert を起動するという流れになります.

車両ECU設定の書き換えのイメージ

f:id:Hie:20190407234135p:plain

EDIABAS + NCS Expert で設定を書き換えるといいましたが,それをイメージしてみました.

NCS Expert はECUと直接お話し,設定ファイルを読み込み(抽出),編集後の設定ファイルを再びECUに書き込む役割です.
BMWといっても色々あるので車両ごとにどうECUとお話(解釈)すべきかの config が必要で,それが SP-Daten とか Daten と呼ばれるファイル群です.
図中では NCS Expert にだけ線が引かれていますが,実際にはいろいろなソフトに SP-Daten を組み込んでいく必要がありまして,大変面倒です.そこらへんを一括管理してくれるのが,BMW standard tool です.
BMW standard tool はソフトのインストールやSP-Datenの各ソフトへの反映をやってくれるお助けツールなのです.
で,抽出した ECU の設定ファイルですが,ぶっちゃけワケワカメなデータなので,これの可読性を上げてくれるのが NCS dummy です.こいつは車両ECUと接続してなくても動作します.
つまり,INPA を起動(するとEDIABAS起動)→INPAを閉じる(EDIABASは残る)→NCS Expert を起動してECU 設定を抽出 → NCS dummy で設定を改変 → NCS Expert でECUに書き戻し ってかんじ.

ソフトのありかとかインストールとか

で,結論から言えば,ぼくは,

  1. INPA/EDIABAS・NCS Expert は変換ケーブル付属CDからインストールし,
  2. SP-Daten(R5o用)はここから,
  3. BMW standard tool はインストールはせず,実行ファイルだけ拾ってきて,SP-Datenインストール,
  4. NCS dummy もネットから拾ってきました.

1, 3 はたぶんこれと同じものだと思います.
4 はたぶんこれです.プロファイルは不要.

インストール手順ですが,1 は変換ケーブル付属CDのインストール手順通りです.ここのE_codingに含まれるインストールマニュアル(InpaCANinstall.pdf)とほぼ同じ内容です.このとおりでOK.
2 の SP-Daten(R50)は「E90 D.I.Y.コーディング その3 : ソフト(入手)篇」ズー太郎のブログ | 趣味の車弄りが家族の笑顔の中心にありますように - みんカラを参照に見つけました.3 の BMW standard tool による SP-Daten の組込もこのページのとおりでOKです.

どのECUを書き換える?

さて,やりたいことをおさらいすると,車両ECUの設定を読み出し封印されしオプションを呼び出すことです.
ぼくがやりたいことが何かというと:

  1. キーレスで幌のオープン・クローズをやりたい
  2. 運転席ドアに鍵を差し込んで幌のオープン・クローズをやりたい
  3. クロノパッケージだと手元ディスプレイに速度が出ないので速度を表示できるようにしたい

です.
参考までに,1, 2 の結果動画を.

MINI R52 キーレスで幌オープンとか

MINI R52 キーで幌クローズ

問題はですね,この,やりたいことが一体どのECUでカバーされているのか,です.

f:id:Hie:20190408002001p:plain
MINI R50 シリーズの ECU
f:id:Hie:20190408002534p:plain
MINI R50シリーズのECU群(2)
これは,MINI R50 シリーズの ECU 群を図示したものです.いろんなECUがありますね….(参考程度の情報なので読み流してOK)
結論からいえば,キーでの幌操作は BC1 (General Module)という ボディや一般電装系をカバーするECUが担当していて,スピード情報のメータ表示は,コンビネーションメータを担当する KMB(Kombi; ドイツ語)が担当します.
すなわち, 幌のキー操作をいじるなら,NCS Expert の BC1 を読み出して,その設定ファイルを書き換えて,書き戻せばよいことになります.

えっ,やりたいことがどのモジュールにあるかわからない??…そりゃあググれカスとしか言いようがありませんなぁ….
まあ,全ECUを舐め舐めして探すって手もありますが.

NCS Expert によるECU設定の抽出

NCS Expertの使い方 : bmwcodingのblog
ここを読めば,そのまんまでOK(笑)
強いて言えば,車両ECUデータの扱いは NETTODAT と FSW/PSW との2種類がありますが,R50 系は,FSW/PSW でOKです.少なくともNETTODATはエラーで書き込めませんでした.
「Choose ECU」で EWS と KMB しか出なかったりしますが,エンジン系統→EWS,その他→KMBって感じですね.BC1もKMBでOK.

NCS dummy によるECU設定の書き換え

NCS Dummyの使い方 : bmwcodingのblog
このとおり(笑) すばらしい(笑笑)
ざっとイメージを書いておくと,抽出した ECU 設定ファイルFSW/PSW(TRCファイル)を NCS dummy で編集してFSW/PSW(MANファイル)を生成し,これをNCS Expert で車両ECUに放り込むわけですね.
NCS dummy では取り込んだ設定ファイルがどのモジュールのものかを類推し,ON/OFF(ドイツ語なので aktiv とかですが)の選択式みたいに変換してくれます.

やってみよう

NCS Expert でECU設定ファイルを抽出して,編集,再書き込みの例を写真で示します.
題材は,コンビネーションメータの速度計表示です.
速度計への表示は,ここで調査済み.KOMBI モジュールの BC_GESCHW_ANZEIGE_DIGITAL を aktiv にすればよいことがわかっています.

少なくとも,INPA/EDIABAS でデータが読めたりするのは確認済みって前提で話を進めます.

以下,かなり適当な写真なので,ちゃんとした手順はこちらを参照してください.こちらはあくまで参考に.

NCS Expert 起動


エンジンをかけずに,キーをONまで回しておきます.

Expertmode を選択


車両を選択


VIN/ZCS/FA (F1)を選び,ZCS/FA f.ECU(F3)をクリック

ECUの大別を入力


先に述べたとおり,EWSとKMBしかない(笑) コンビネーションメータは KMB 側なので,KMB選択.

ECU = KMB を選択


ちなみに,幌のキーレス操作とかはBC1を選ぶんですよ.

ECU 設定が読めました


NCS Expert の WORK フォルダが更新されてることを確認


FSW_PSW.TRC とか NETTODAT.TRC が抽出されたECU設定ファイルです.

NCS Expert の WORK フォルダをバックアップ


万一 ECU に変な編集を加えた設定を放り込んでしまったときのリカバリ用に,オリジナルのFSW/PSW(TRC)をバックアップしておきます.めんどくさいのでフォルダごと….

NCS dummy を起動


シャシをR5oにしておきます.

抽出したFSW/PSW TRC ファイルを選択


NCS dummy にどのECUモジュールの設定ファイルっぽいか判定してもらう



NCS dummy は設定ファイルの可読性を上げてくれるツールですが,どのECUモジュールの設定ファイルなのかを一致度で判定してくれます.ようするに,抽出した設定ファイルと NCS dummy が知っている一般的な各モジュールの設定ファイルを比較し,「どのモジュールの編集をしようとしているんだな」というのを認識するための機能と言えます.一番一致度が高いものを選びます.一致度は89%なので,海外(NCS dummy が知っていた設定内容)とは結構乖離しているとわかりますね.

BC_GESCHW_ANZEIGE_DIGITAL を探す


Ctrl-FでOK

aktiv にする


FSW/PSW Expert でFSW/PSW MANファイルを出力


FSW/PSW MANファイルを出力 の確認


MANファイルが最新時刻で更新されているのがわかりますね.

NCS Expert に戻り書き込みモードに変更


NCS Expert は Expertmode であっても,デフォルトでは,ECUに設定ファイルを書き込むことはできません.ここ,しばらくはまりました.
Edit Profile でモード変更します.パスワードを聞かれますが,「repxet」です.

え,写真が急にクロップされている??そりゃ,車台番号が見えていたからだよ….

FSW/PSW の書き込み権限を設定する


書き込み設定をする


F2 の Change Job を選びます.

蛇足ですが,BMW車両はキーON状態でしばらく経過すると,スタンバイモードに切り替わりECUとの通信を切ってしまいます.書き込みの真っ最中にOFFされたら文鎮のできあがりです.
キーONにして時間がたっていたら(10分程度を目安にするとよいでしょう.20分でOFFみたいな情報が多いですね),いったんキーをOFFにして,NCS Expert の起動しなおし,ECU選択,書き込み権限ONまでやってから,F2を押します.

SG_CODIEREN ジョブを選ぶ

書き込む


どきどきの書き込み.F3 Execute job を選びます.
書き込む前に,画面に表示されている ECUが本当にあっているかとか,確認してね!!

書き込み中

coding active になってますね.これが end になれば完了です.
BC1 をコーディングしているときはだまって ended になるのですが,KMB は賑やかにコンビメータが騒ぎ始めます.

MINI R52 ECU:KMB コーディング直後の挙動

結果



その他

調査していくうちに目にした気になる情報など:

R53 NCS Expert Guide Additional Info

www.northamericanmotoring.com
BC1 を中心に設定項目がまとまっている情報源.
きになるのは,joylove 氏の

Note to r52 owners. Do not try to code your CVM. I did and have possibly damaged my central coding key. Currently attempting to get help and to remember if it's just my KMB that throws a fault at the ZCS/FA from ECU stage. It's been a while.

CVM (Convertible Top Module) のコーディングは危ないと書いています.後部座席左のスピーカ後ろあたりに収まっているモジュールで,文字通り幌を制御しているもの.幸い,キーレスでの幌制御はGeneral Module (BC1)側にあったので触らずにすみました.

幌のキーレス操作とか

http://bmwcoders.com/forum/bmw-coding-programming-29/mini-r52-comfort-opening-fob-8749/bmwcoders.com
ここに,キーレス(Key Fob)での幌オープン・クローズや,鍵穴操作でのオープン・クローズの情報があります.
コンフォートオープニングというらしいです.

Okay, have sorted it out now after a whole day of looking around. To save others time who are also looking for the same thing, the module to code is BC1 and the following options needs to be changed:

For opening and closing using the remote fob:

HALTEN_FB_OEFFNEN_TASTE = komfort_oeffnung (from ohne_funktion)
KOMFORTSCHLIESSUNG_FB = aktiv (from nicht_aktiv)

For opening and closing with the key in lock

KOMFORTOEFFNUNG_SCHLOSS = aktiv (from nicht_aktiv)
KOMFORTSCHLIESUNG_SCHLOSS = aktiv (from nicht_aktiv)

Hope this helps!

INPA でエラー出るんだけど大丈夫か??

バージョンミスマッチみたいなエラーは,INPA でしょっちゅうでてます.
Error Memory Read でIFH-0003 とかで転びまくるのは日常茶飯事.
でも,バージョンミスマッチくらいならガン無視でもなんとかなるし,大事なのは,コーディングしたい装置と少しでもお話できているか?ですね.
なんでかというと,この手のエラーの大半は,通信路(EDIABAS)の問題ではなく,INPA 側の問題だからです.