kbc-developers / kernel_samsung_exynos4412

kernel for exynos4412
Other
6 stars 5 forks source link

Felica利用について #1

Closed ma34s closed 11 years ago

ma34s commented 11 years ago

カスタムカーネルを入れることでStatusが"custom”になっている場合、 DeviceLockがかかり、外部アクセスもできない状態になります。

わかっている事 ・Countに依存しない(Official Kernel/Recoveryに戻すことで使用可能になる) ・SC02Eでは、起動時にBOOT領域、RECOVERY領域をチェックして  Statusを変更するため、ddで書き込んでもNG

ma34s commented 11 years ago

正常な動作をしている時/dev/には以下のdeviceが存在する /dev/felica /dev/felica_ant /dev/felica_cen /dev/felica_int_poll /dev/felica_pon /dev/felica_rfs /dev/felica_rws

CustomKernelでは、 /dev/felica_int_pollのみとなる。 これは、 https://github.com/kbc-developers/kernel_samsung_exynos4412/blob/android-3.0-v1.0-test/drivers/felica/felica.c#L591 この辺の処理に入っていないからと思われる。

カスタム判定は、以下と思われる https://github.com/kbc-developers/kernel_samsung_exynos4412/blob/android-3.0-v1.0-test/drivers/felica/felica.c#L676

同様にカスタム判定しているコードは https://github.com/kbc-developers/kernel_samsung_exynos4412/blob/android-3.0-v1.0-test/drivers/misc/tzic.c#L115 ここにも存在しており、/system/bin/mfscや/system/bin/mfdpからアクセスしていると予想される

ma34s commented 11 years ago

やった事

1.init.carrier.rcのFelica関連サービス(system/bin/mfscや/system/bin/mfdp)を実行しないKernelを焼き起動する。  →FelicaDeviceLockはかからない(外部アクセス可) => SBLでロックするのではない事が判明

2.Felica関連サービスを有効にして、falica.cのカスタム判定で2(!=1)を返すKernelを焼き実行   →FelicaDeviceLockはかからない(その後小変更にしているうちにLockがかかった)   この状態でOficialに戻したところ、Lock解除されず、Recoveryを一旦起動し通常起動でLock解除を確認

  ※この件については、APP起動がトリガになったのかもしれないし手順ミスがあったのかかもしれない未確定情報です    

sakuramilk commented 11 years ago

参考にまでにSC-06Dの調査結果を書いておきます。 挙動がかなり違うため参考にはならないかもしれませんがw


【参考情報】SC-06D custom binary状態でのFelica動作について

SC-06Dでは電源投入直後から外部からのアクセスが不可能となる、 これはbootloaderでlockされていると仮定する(offical binaryでも同様の動作) したがってfelica deviceは初期状態がLockedとなっており、起動の過程でUnlockされている。 補足: mfdp,mfscを起動しない場合、正常時でもLockされたままになる

起動時に/dev/felica_を作成するのはmfdpデーモンからのmessage(netlink)、CONNECTによって作成されるものである 但しcustom状態ではこのCONNECTメッセージが来ないため、/dev/felica_が作成されない

Lockを解除するのはmfscデーモンであるが、上記/dev/felica*が存在しないためLockが解除されない

起動時にダミーとしてCONNECTを送ったところ/dev/felicaが作成され、Lockも解除された(外部アクセス可) Felicaアプリも起動可能になったが、mfdpからのCONNECTが行われていないため、 kernelからのsendmsgが行えないので正常には動作しない

※SC-06Dでの調査はここまでとし紛らわしいので本issueでは議論しない

ma34s commented 11 years ago

Felica関連サービス(system/bin/mfscや/system/bin/mfdp)無効Kernelにてadb経由で

 system/bin/mfsc&

 /system/bin/mfdp&

としてs-ビス開始した時、以下関数がコールされたのを確認。 https://github.com/kbc-developers/kernel_samsung_exynos4412/blob/android-3.0-v1.0-test/drivers/felica/felica.c#L883

その時のログは

<6>[MFDD] felica_int_poll_open START
<6>[MFDD] felica_int_poll_open END
<6>felica_int_poll_poll START
<6>felica_int_poll_poll END
<6>[MFDD] felica_int_poll_read START
<6>INT-PIN value is [1][HIGH]
<6>[MFDD] felica_int_poll_read END
<6>felica_int_poll_poll START
<6>felica_int_poll_poll END
ma34s commented 11 years ago

felica_smc_read_oemflag() などを詐称しても、時間経過(Sleepかな?)でLockがかかる模様。 少なくとも起動時からLockされない事から方向性は間違ってないと思われ oemフラグ判定コードはまだ存在する可能性が高い。

sakuramilk commented 11 years ago

時間経過(Sleepかな?)でLockがかかる模様。

Lockのログは出ますか?

ma34s commented 11 years ago

戻してやってみます! BTA出番だ(笑)

ma34s commented 11 years ago

取り急ぎ、もう一回で確定できると思いますが

ただのrebootだけではLockかかってなかったようでしたが、 app起動後rebootのタイミングでLockかかってますね。 (app起動後にsleepして復帰を繰り返すだけだとLockかからず)

ma34s commented 11 years ago

確定事項。

Kernelを焼いた時、初回はOK ただし/dev/felica*はできてない。

この状態で再起動(app起動に依存なく)時にLockされて使えなくなる

sakuramilk commented 11 years ago

初回OKなのがよくわかんないですけど、二回目以降はSC-06Dと似た挙動ですね。

ma34s commented 11 years ago

https://github.com/kbc-developers/kernel_samsung_exynos4412/issues/2 こちらで進めてしまったけど、 Felica動作について、 sakuramilkさんがSC06Dで解明した方法が SC02Eでも使えることがわかりましたのでクローズします