BMW Androidナビが正常に動作しないときに試すこと

BMW F10 で使っている Android 11 ナビが、工場設定変更後ぐらいから “「KswCarProject」が繰り返し停止しています” (英語版 “KswCarProject keeps stopping”) や “「CarService」が繰り返し停止しています” (同 “CarService keeps stopping”) とダイアログを出し、まともに動作しなくなりました。

※ 世界的にはこういった装置のことを “Android HU”(ヘッドユニット)と呼びますが、このページでは日本ローカルな名称“Androidナビ”で表記します

KswCarProject(KSW)はこの中華ナビの内部システム名です。これが動かないのでたぶん画面輝度は常時最大になるでしょう(うちでは自作装置制御なので未確認)。またiDriveダイヤル等での操作もできないと思います(タッチ操作しかしてなかったのでこれも未確認)。

Android 11/12ナビの詳細はこちら。

設定が全く反映されない

ほとんどのメニューで先のエラーとともにKSWが再起動または黒画面になり、たまにKSWで見られる設定にはなんもチェックが入ってません。チェックを入れてもその後見るとまた消えています。

ファームウェアの一部か設定ファイルの損傷が疑われますが、設定のバックアップはとって無いし、そもそもそれを導入するための工場設定モードに入れません。ちなみに設定ファイルの保存方法は別ページに記載しました

リカバリモードでファームウェアを入れ直す

このページに書かれている方法でダウンロードしたファームウェアをリカバリーモードで入れ直してみました。以下で解説します。Android OS自体が起動しなくなったような場合でもこれは動くはず。もちろん故障していないAndroidのファームウェア更新に使っても問題ありません。ただ結果的に今回の場合は、これは効果ありませんでした。

Android 11 / 12のリカバリには4〜32GBのmicroSDカードを1枚準備します。USBメモリは使えません。この容量で新品ならたぶん最初からフォーマットは FAT32 ですが、そうで無い場合はWindowsで初期化しなおしてください。今回はシリコンパワーの32GBリード85MB/sを購入しました(FAT32でした)

なおインストールは時間がかかるので、途中で電源が落ちないようエンジン始動中かIGN ONで運転席シートベルトをした状態で行います。

Android 11 / 12の場合

このページのリンク先からお好きな(通常は最新の)ファームウェアをダウンロードし、展開せずzipアーカイブのままmicroSDカードにコピーします。

分岐1 : 【推奨】adbコマンドを使わない場合

Android開発用ツール adb コマンドを使わず行う方法で、一般的ですが多少まんどくさいです。

① コピーしたファイルの名称を次のように変更します。コピペ推奨。実際にはこの名前のファイルがあればいいだけなので同名の空のファイルを置き、ファームウェアは名称変更せずそのまま使う手もあります。なお出荷時Android 11のユニットは導入するファームウェアに関係無くこれですが、出荷時Android 12のユニットではひょっとしたらファイル名中の”R”を”S”にする必要があるかもしれません(未確認)。

Ksw-R-M600_OS_v-ota-only-reset-data_factory.zip

② カード内に ① 以外のファイルがあれば全て削除します。特に”flag”と付いた、リカバリモードをスルーするためのフラグファイルは必ず消します

③ microSDカードのボリューム名を次のようにします

_KSWOTA_

起動後Androidがフラグファイル作成とボリューム名変更を勝手に行いリカバリモードのループにならないようにするので、何度も作業する場合は都度PCで ② 以降を行う必要があります。

分岐2 : adbコマンドを使う場合

話が前後するのでadbコマンドの説明は省きますが、Android起動時にPCから次のコマンドを実行することで自動的にリカバリモードに入るのでらくちん。分岐1記載の操作も不要です。

adb reboot recovery

ここから共通

PCから正規の手順で取り出したmicroSDカードをAndroidナビ左側の [TF Card] スロット奥まで入れてください。マイナスドライバーなどがあるといいでしょう。バネでカードがぶっ飛ぶことがあるのでマジ注意。まっすぐ無理なく入らなければ挿入角度が間違ってます。

分岐1を実行した場合、電源を入れ(または再起動し)しばらくするとリカバリモードになります。普通にAndroid OSが起動しちゃったときはmicroSDカードの状態を見直してください。分岐2の場合はすでにこうなっているはず。

ボリュームボタンなどで操作と書かれてますが本体にそういった物理ボタンはありません。代わりにタッチパネルの上下スワイプでカーソル移動、右スワイプで決定、左スワイプでキャンセル(バック)が行えるようになっています。USBキーボードも使えます。もしメインメニューに戻れなくなった場合、分岐1の場合カードスロットの上にある穴のリセットボタンを押してください。またたぶん②以降が再度必要です。分岐2のadbコマンドはこのとき通りません。

[Apply update from SD card] を選択、決定します。

microSDカードに入れたファームウェアファイル(この場合 Ksw-R-M600_OS_v-ota-only-reset-data_factory.zip)を選択、決定します。

インストールが始まり、しばらーくして下に “Install from SD card completed (略)” が出れば成功。[Reboot system now] で再起動して終わりです。

ちなみに先に紹介したmicroSDカードでファームウェア2.4.2を入れたとき、“Update package verify(忘れた)” に1分弱、“Step 1/2”に3分、“Step 2/2”に10秒かかりました。メディアの速度やファームウェアのサイズでも大きくかわるでしょう。初回再起動もいつよりちょっと長め。

このリカバリ方法を載せた先ページには、画面が映らないなどの場合でも”thumbstick”(USBメモリ?)を挿して電源ONで10分待てばOKとありますが、Android 11/12ではUSBメモリでもmicroSDカードでも効果無いようです。それぞれ20分待ちました。残念。

Android 10の場合

A10で難しいのは、KSWという正規システム以外に、フェイク(?)ユニットが存在することです。KSW以外では使えません。また実際にうちで試したわけでもありません。

リカバリを紹介したページにあるリンクからお好きな(?)ファームウェアをダウンロードします。4〜32GBのUSBメモリにコピーしファイル名を次のようにします。

Ksw-Q-Userdebug_OS_v-ota-reset-data_factory.zip

ボリューム名は次のようにします。

_KSWOTA_

このUSBメモリをAndroidナビに挿して起動まはた再起動すると自動的にリカバリが始まるようです。文鎮化したAndroid 10を復旧(unbrick)する方法も先のページに紹介されています。

壊れた設定ファイルを修復する

リカバリではKSW設定を更新しないようで、ファイルが壊れていても変化ありませんでした。先のリカバリメニューの [Wipe data/factory reset] でも戻りません。Android OSの初期化も同様です。

いろいろ試していると “FACTORY_SETTINGS” ファイルを消して再起動すると(過去に起動成功したデータを元に??)これが作り直されることがわかりました。

ちなみに FACTORY_SETTINGS は毎回上書きされるようで、直接書き換えてもAndroidナビの設定を変更することはできませんでした。

FACTORY_SETTINGS を削除

Androidナビ詳細記事を参考にadbコマンドを使えるようにして下さい。ただKSWがクラッシュするのでなかなかAndroid設定に辿り着けませんがそこは気合いで。設定状態によってはそのままいける場合もあるので、とにかくUSBケーブルをつなげ adb devices コマンドでナビが認識されているかを確認するのも手です。Android起動後に(重要)、WindowsならUSBケーブルを挿したときよく聞く認識音があればたぶんOK。Android 12ではWiFiでの接続方式しかたぶん無理でしょう。

次のコマンドを順に実行していきます。

adb root

adb shell

cd /mnt/vendor/persist/OEM

mv FACTORY_SETTINGS FACTORY_SETTINGS.old

reboot

FACTORY_SETTINGS の問題であればこれで直るはずです。

お問い合わせ、作業依頼等は承りません