そのうち改善されていくのでしょうが、実はXperiaのカスタムROMにおけるカメラ問題は根が深く、これをまとめている記事も見かけないので一度整理しておこうと思います。
自社技術保護に熱心なSoMC
SonyがXperiaのカメラ性能に自信を持っていることはプロモーションを見てもよく分かりますが、Sonyは技術保護のためにカメラ機能に端末固有のDRMキーを要求するようにしています。スマートフォンメーカーの中では一眼レフやミラーレス機も真面目に作っているだけあって、(実際に現像された写真の見栄えが良いかは別として、)暗所性能や色のりは評価できると思いますが、そういう画像処理(BIONZ for mobile)を担当するバイナリやライブラリを他端末に移植して外部から呼び出されないようにするための処置ですね。
この動きはZ1世代のRhineプラットフォームから起こっていて、当時はカスタムROMを焼くためにブートローダーをアンロックしたらカメラが使えなくなったと散々ユーザーからSoMCの公式フォーラムに文句が出ました。
具体的な症状は、プレビューまではできるがフォーカスしようとするとカメラが落ちるというもので、Z1のグローバルモデルの4.2.2でこの問題が起こっていました。さすがに不評だったためかZ1が4.3にアップグレードされたときに、カメラにDRMキーを要求しないようにSoMCが仕様を変更したのですが、4.4以降ではこの仕様が元に戻されています。
この部分の処理はエラーログを追うとよく分かります。
E/CredMgrDinLib(1676): SendAndReceive socket failed E/CredMgrDinLib(1676): SendAndReceive() ended. result 1 - CREDMGR_RESULT_GENERIC_ERROR
E/cacao(1676): 1137370710 cacao_chokoball.cpp (3704) 12370 E [CKB] ckb preCompile fail. keymgr credmgr generic error. W/cacao(1676): 1137370745 cacao_chokoball.cpp (3713) 12370 W [CKB] Post process preLoad(0xffffff91) E/cacao(1676): 1134871177 cacao_chokoball.cpp (852) 12373 E [CKB] ckb create fail. E/cacao(1676): 1134871243 cacao_chokoball.cpp (893) 12373 E [CKB] ckb is not ready.
E/caladbolg(1676): 1134871299 excal_focus_detector.cpp (177) 12372 E [EXC] [FocusDetector ] Cacao start Fail <ffffff90> E/caladbolg(1676): 1134953273 excal_idt_ctrl.cpp (688) 12371 E [EXC] [IdtCtrl ] Received error event from FocusDetector E/caladbolg(1676): 1134953307 excal_idt_ctrl.cpp (692) 12371 E [EXC] [IdtCtrl ] Call returnBuffer for HwFocusStats 0xb7b54c98
カカオやらチョコボールやらカラドボルグやらSoMCの開発者はプロセスのネーミングがかわいいですね。
オープンソース開発における問題
SoMCが技術保護に熱心なのは分かりましたが、こうなると困るのはカスタムROMを作成する一般開発者です。
カスタムROMを焼くためにブートローダーをアンロックする以上、DRMキーは失われて使い物にならないカメラが残ります。この仕様はZ2、Z3のShinanoプラットフォームにも引き継がれたので、長らくCMのメンテナの間で問題になっていました。
CM12.1までは、その場しのぎの処置として、DRMキーが要求されないZ1のプロプライエタリバイナリとそれに合うようにカーネルを変更してカメラが使えるように工夫されていましたが、CM13でカメラ起動に求められる関数が大きく変更されると、4.3のバイナリでは対応できなくなり、問題が表面化したというわけです。
今のところ、CMのメンテナとしては、どのみちカーネルバージョンを3.10に上げれば、3.4カーネル向けのバイナリとカーネルの変更は使えなくなるので、いっそのこと小手先のハックはやめて、SoMCが開発中の3.10向けのAOSP用カメラバイナリが提供されるのを待とうという結論に達したようです。
CMのメンテナが3.10カーネルありきの方向で納得してしまうと困るのは、カーネルを変更できないLB用ROMを作っている私やZ以前のROMを作っている開発者です。私が1年半前にZ1f用のCMをビルドしたときはTAパーティションからDRMキーを読み出すDRMサービスの修正で躓いたのですが、今ならこちらは解決できるとして、カメラ起動に足りない関数を自前で用意してエラーを追い切るほどの技量はないのでどうしたものかと考えています。
XperiaはSony Ericsson時代からのオープンソース開発への積極性とSonyによる買収後の自社技術保護のクローズ性が両立しているので、なんとも煮え切らずに歯がゆい思いです。もっとも、FreeXperiaのJerpeleaが入社して以降は、先述のSonyの技術を除いたAOSP向けカメラフレームワークの開発や3.10カーネルの作成などオープンソース開発へのやる気も見せています。惜しむらくはそういった活動の恩恵を受けられるのがブートローダーをアンロックしたモデルだけということです。なかなか思うようにはいかないものです。
<参考>
Xperia Z1、現時点ではブートローダーをアンロックするカメラが機能しなくなる、Sony Mobileが公式サイトで注意を呼びかけ | juggly.cn
BUG!Camera broken after bootloader unlock! - Support forum
[dev][cam][improvements & auto-focus dev… | Sony Xperia Z1
Change I8a63f407: msm: camera: Use Sony Rhine camera stack from 4.3 | review.cyanogenmod Code Review
Change Ic1b2696d: Use rhine 4.3 camera stack | review.cyanogenmod Code Review
Change Ie15c02cc: Remove stock camera stuff | review.cyanogenmod Code Review
Experimental AOSP camera available for experienced developers – Developer World
GitHub - sonyxperiadev/camera at aosp/LA.BF64.1.2.2_rb4.7
Official CM11/CM12 builds now possible thanks to Open Bump : LGG3
Sony credentials restore after unlocking the… | Sony Xperia Z5
白黒付けがたいスマートフォンのオープンソース開発
余談ですが、XDAでは上記の技術保護の仕組みを破るmodが公開されています。しかし、Cyanogenmodの公式配信に真っ黒なクラックを載せるわけにはいかないので、アンオフィシャルビルドで使えれば良い程度の認識です。もっとも、LGの署名脆弱性を突いてカーネルに任意の有効な署名をできるようにしたOpen BumpがCM公式で採用されているところを見ると、線引きなど曖昧なものです。メーカーとしてはこういったユーザーの趣味的な開発を不正な改造行為と切って捨てることは容易いですが、コアなファンのいないビジネスは面白みに欠けるのではないかとも思いますし、白黒付けがたい問題ではあります。<参考>
Xperia Z1、現時点ではブートローダーをアンロックするカメラが機能しなくなる、Sony Mobileが公式サイトで注意を呼びかけ | juggly.cn
BUG!Camera broken after bootloader unlock! - Support forum
[dev][cam][improvements & auto-focus dev… | Sony Xperia Z1
Change I8a63f407: msm: camera: Use Sony Rhine camera stack from 4.3 | review.cyanogenmod Code Review
Change Ic1b2696d: Use rhine 4.3 camera stack | review.cyanogenmod Code Review
Change Ie15c02cc: Remove stock camera stuff | review.cyanogenmod Code Review
Experimental AOSP camera available for experienced developers – Developer World
GitHub - sonyxperiadev/camera at aosp/LA.BF64.1.2.2_rb4.7
Official CM11/CM12 builds now possible thanks to Open Bump : LGG3
Sony credentials restore after unlocking the… | Sony Xperia Z5
6 コメント
Write コメントそうなんですか。 どうりでCyanogenmod のオープンソースから UB XperiaZ2 をビルドしたのですがカメラが終わっています。
Reply待つしかないですかね。やっぱり
Can you build CM11 locked bootloader for xperia Z?
ReplyGot update experimental Build! Can you build this now ?
Reply参考になるかは分かりませんがこのromのカメラの仕組みが使えるかもです。
Replyhttp://forum.xda-developers.com/xperia-arc/development/dev-2011-unofficial-cyanogenmod-13-0-t3323975
Camera FiXed cm13. PLS build it :)
Reply初めまして。いつもお世話になっております。
ReplyカスタムROMでカメラが有効なものが少ない理由がよく分かりました。
SoMCは最低限カメラを起動できるぐらいのソースを準備してほしいですね。
Emoticon Emoticon