OnePlus One(A0001)をDIAGモードでPCに接続する方法です。
DIAGモードへの変更方法、ドライバのインストール方法などを書いています。
※root化済みであることが必要です
2014/11/12,10/28,3…「再起動すると書き換えたNV領域の値が戻ってしまい変更が維持されない」を更新
2014/9/30…以前より簡単に切り替える方法があったため更新
今回の方法は、端末内の「init.qcom.usb.rc」ファイルに記載されているDIAGモードへの切り替えコマンドを、スクリプトを使って端末上で実行することで、diagモードへ切り替えます。
「oneplusone_diag_enable.sh」の内容は下の通りです。
これは、端末内のファイル(/init.qcom.usb.rc)の、「on property:sys.usb.config=diag,adb」の部分に書かれているコマンド(下の画像の部分) に基づいています。
同じように「init.qcom.usb.rc」が存在する端末なら、今回の方法が使用できるかもしれません。
以上で、端末側の操作は終わりです。
次に、PCにDIAGモード用のドライバをインストールします。
DIAGモードへの変更方法、ドライバのインストール方法などを書いています。
※root化済みであることが必要です
2014/11/12,10/28,3…「再起動すると書き換えたNV領域の値が戻ってしまい変更が維持されない」を更新
2014/9/30…以前より簡単に切り替える方法があったため更新
今回の接続方法について
Nexus 4やNexus 7(2013)では、端末をroot化しておけばどのようなROMでもコマンドプロンプトから簡単にDIAGモードで接続することができます。OnePlus Oneでも同様に簡単に接続することができます。
しかし、OnePlus Oneでは同様に行っても、接続することができません。
再起動すると書き換えたNV領域の値が戻ってしまい変更が維持されない
特定のKernelを使用していると、NV領域の値を書き換えても端末初期値に戻ってしまい変更が維持されません。
少なくとも、「CyanogenMod 11S XNPH38R」以降、「mahdi-2.8」以降に含まれているKernelと「franco.Kernel r27」以降でそのような現象が発生しています。
また、NV領域変更後にそれらのROMやKernelを一度でも導入した場合、端末初期値に戻ってしまいます。
どうやら、2014年10月初旬~中旬以降のソースコードを使用しているKernelでは、NV領域への書き込みが制限されてしまっているようです。
ちなみに、franco.kernelのchangelogにはr27でCAFコードの更新を統合しているそうなので、もしかしたらそれが原因なのかもしれません。(QualcommがNVの書き込み制限をその更新に統合した可能性)
~2014/11/12追記~
「/system/bin」にある「rmt_storage」というファイルを差し替えることで、値を維持することが出来ます。
こちらのページから「replaceRMT_STORAGE.zip」をダウンロードし、値を変更する前にカスタムリカバリなどから書き込んで下さい。(もしくは、zipを解凍して手動で差し替えて下さい)
値の変更は、差し替え後に行って下さい。
少なくとも、「CyanogenMod 11S XNPH38R」以降、「mahdi-2.8」以降に含まれているKernelと「franco.Kernel r27」以降でそのような現象が発生しています。
また、NV領域変更後にそれらのROMやKernelを一度でも導入した場合、端末初期値に戻ってしまいます。
どうやら、2014年10月初旬~中旬以降のソースコードを使用しているKernelでは、NV領域への書き込みが制限されてしまっているようです。
ちなみに、franco.kernelのchangelogにはr27でCAFコードの更新を統合しているそうなので、もしかしたらそれが原因なのかもしれません。(QualcommがNVの書き込み制限をその更新に統合した可能性)
~2014/11/12追記~
「/system/bin」にある「rmt_storage」というファイルを差し替えることで、値を維持することが出来ます。
こちらのページから「replaceRMT_STORAGE.zip」をダウンロードし、値を変更する前にカスタムリカバリなどから書き込んで下さい。(もしくは、zipを解凍して手動で差し替えて下さい)
値の変更は、差し替え後に行って下さい。
DIAGモードに接続できる環境
- AOSPベースのROM(mahdi ROM 2.7で確認済み)
※Color OSでは確認していません。 - root化がされている
手順
必要なファイルの準備
今回必要なファイルは以下になります。
#!/system/bin/sh
stop adbd
echo 0 > /sys/class/android_usb/android0/enable
echo 0123456789ABCDEF > /sys/class/android_usb/android0/iSerial
echo 05C6 > /sys/class/android_usb/android0/idVendor
echo 676C > /sys/class/android_usb/android0/idProduct
echo diag > /sys/class/android_usb/android0/f_diag/clients
echo tty > /sys/class/android_usb/android0/f_serial/transports
echo diag,adb > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
start adbd
DIAGモード切り替え用スクリプトの実行(以前の内容なので実行不要)
PCとUSB接続する。Script Managerを起動する。下の画像のようなメッセージが表示されるので、「OK」をタップする。下にスクロールして移動し、「oneplusone_diag_enable.sh」を表示させ、タップする。上にあるSuアイコンをタップする。上にある「Run」をタップする。
※root権限が要求された場合は許可して下さい。
DIAGモードへの切り替え
- 端末が起動してUSBデバッグをONにし、「MTP」モードに変更する。
- コマンドプロンプトで「adb shell」と入力し、「Enter」キーを押す。
- 続いて、「su」と入力し、「Enter」キーを押す。
- 続いて、「setprop sys.usb.config diag,adb」と入力し、「Enter」キーを押す。
※端末上では何も起こっていないように見えますが、DIAGモードへ切り替わっているはずです。
DIAGモード用ドライバのインストール
OnePlus One用のドライバが無いため、HTC向けの物を書き換えて利用します。
- デバイスマネージャを開く。
- 「ほかのデバイス」の項に、「One A0001」が2つ表示されていることを確認する。
※導入しているROMによって表記が異なる可能性があります。
- 2つのうち、上の「One A0001」をダブルクリックし、開く。
- プロパティが表示されるので、「詳細」タブをクリックする。
- 「プロパティ(P)」の項目から「ハードウェアID」を選択する。
- 「値(V)」の「USB\VID_05C6&PID_676C&MI_00」をクリックして選択し、右クリックして「コピー」をクリックする。
※ここの値が異なる場合は、もう1つの方の「One A0001」で手順3~6を行って下さい。
- 「OK」をクリックして、プロパティを閉じる。
- ダウンロードして解凍した「HTCDiagDrivers」にある「Win x64」(又は、Win x86)フォルダを開く。
※使用しているWindowsに合わせて選択して下さい。 - フォルダ内にある「HtcUsbMdmV64.ini」(又は、「htcdiag.ini」)をダブルクリックし、開く。
- 「[Models.NTamd64]」の項にある「USB\VID_0BB4&PID_0B03&MI_00」を「USB\VID_05C6&PID_676C&MI_00」に書き換える。
※「htcdiag.ini」の場合は、「[Models]」の項にある適当なもの(例えば、一番上の「USB\VID_0BB4&PID_0C07&MI_02」)を書き換えて下さい。
- 保存して、閉じる。
- デバイスマネージャを開き、手順2と同じ「One A0001」をダブルクリックし、開く。
- 「ドライバーの更新(U)...」をクリックする。
- 下の「コンピュータを参照してドライバー ソフトウェアを検索します(R)」をクリックする。
- 下の「コンピューター上のデバイス ドライバーの一覧から選択します(L)」をクリックする。
- 「すべてのデバイスを表示」が選択されていることを確認し、「次へ(N)」をクリックする。
- 「ディスク使用(H)」をクリックする。
- 「フロッピー ディスクからインストール」が表示されるので、「参照(B)」をクリックし、手順10で編集したiniファイルを選択し、「開く(O)」をクリックする。
- 「OK」をクリックする。
- 上の「HTC USB Modem」を選択し、「次へ(N)」をクリックする。
- 「はい」をクリックする。
- 下の「このドライバー ソフトウェアをインストールします(I)」をクリックする。
- インストールが終わるまで、待つ。
- 「閉じる(C)」をクリックする。
- 「閉じる」をクリックする。
- 「モデム」の項に、「HTC USB Modem」が表示されていることを確認する。
以上が、OnePlus OneをDIAGモードでPCに接続する方法です。