Open3

Android 搭載DAP『FiiO JM21』で Nintendo Music が再生できない

happo31happo31

自分用メモ兼、同じ問題に遭遇してこれにたどり着いた人への情報置き場

間違っている情報への指摘、もしくは、なにかユーザー側でできる対処方法をご存知の方がもしいればスクラップにコメントして頂けると大変助かります

再生できない原因をまず結論から言うと、
Nintendo Musicでは音声のストリーミングにDRMを掛けており、そのAndroid版アプリで要求されているDRM方式である ClearKey CDM のバージョンが不足しているか正式なものではないのが原因で DRM セッションの生成に失敗するため。

adb を用いてログを取得すると、 Nintendo Music での音楽再生及びダウンロード時に以下のようなエラーログが出力される。

clearkey-DrmFactory: Clearkey Drm HAL: failed to create drm plugin, invalid crypto scheme
DrmHalAidl: uuid=[edef8ba979d64ace a3c827dcd51d21ed] Failed to make drm plugin: 6
DrmHalHidl: uuid=[edef8ba979d64ace a3c827dcd51d21ed] No supported hal instance found
DrmHalHidl: uuid=[edef8ba979d64ace a3c827dcd51d21ed] No supported hal instance found
FrameworkMediaDrm: Failed to instantiate a FrameworkMediaDrm for uuid: edef8ba9-79d6-4ace-a3c8-27dcd51d21ed.
DefaultDrmSession: DRM session error
DefaultDrmSession:   android.media.MediaDrmException: Attempting to open a session using a dummy ExoMediaDrm.
DefaultDrmSession:       at U1.r.n(Unknown Source:4)
DefaultDrmSession:       at U1.d.n(Unknown Source:12)
DefaultDrmSession:       at U1.d.e(Unknown Source:147)
DefaultDrmSession:       at U1.g.i(Unknown Source:61)
DefaultDrmSession:       at U1.g.j(Unknown Source:0)
DefaultDrmSession:       at U1.g.g(Unknown Source:189)
DefaultDrmSession:       at U1.g.d(Unknown Source:20)
DefaultDrmSession:       at U1.C.run(Unknown Source:235)
DefaultDrmSession:       at android.os.Handler.handleCallback(Handler.java:942)
DefaultDrmSession:       at android.os.Handler.dispatchMessage(Handler.java:99)
DefaultDrmSession:       at android.os.Looper.loopOnce(Looper.java:201)
DefaultDrmSession:       at android.os.Looper.loop(Looper.java:288)
DefaultDrmSession:       at android.os.HandlerThread.run(HandlerThread.java:67)

これはユーザー側でどうこうできるものではなく、解決にはおそらくハードウェアベンダー(つまりFiiO)がパッチを当てるかしないといけないと思われる。

DRM Info というアプリを用いて対応 DRM 方式を確認したところ、以下のような結果が得られた。

Version aidl-1 というのはよく分からないが、少なくとも正式バージョンではない雰囲気が漂っている。

aidl という略称自体は Android Interface Definition Language というAndroidでのプロセス間通信で用いられるインターフェイスが検索で引っ掛かるが、この件と関係があるかはよく分からない。
DRMをハードウェアではなくプロセス間通信を用いて擬似的に対応するみたいなのがあるんだろうか・・・?さすがにAndroidは詳しくないので分からない。

比較として、 Pixel8 の DRM info も貼り付けておく。

Android標準(らしい)Widevine にも ClearKey にも対応していて、ClearKey の部分にはきちんと 14 という stable っぽいバージョンが記されている。

以上を踏まえ、 FiiO のサポートにもログを一部添付して送ってみたが、サードパーティアプリは動作保証対象外であることと、「搭載されているAndroidはFiiOのカスタマイズしているAndroidでなのでご了承ください」的な内容の返事が帰ってきた。

要するに、「AndroidはAndroidだけど『FiiOがカスタマイズしたAndroid』であってちゃんとしたAndroidとしての動作を保証するものではないよ」という意味なのだろう、残念・・・。

一応、任天堂側がアプリ側になんらかの修正を施してくれる希望がないことはないが、そもそも JM21 が対応している唯一の ClearKey DRM がダメなら他のDRM方式が実装されたとしても(まさかわざわざ2種類のライセンスサーバーを用意する手間を取るとは思えないが)対応は絶望的だろう。

僕としてはNintendo Music をできる限り高音質が出せる環境で聞いてみたかったんだが、DAPに詳しい友人によれば、そもそも他社製ストリーミングアプリは再生できたらラッキーという界隈らしい。

うーん、残念・・・

liameisterliameister

I found your article through a Google search when I was trying to figure out why the Nintendo Music app wasn't working on my FiiO player. I have the exact same problem on my FiiO M21, and your explanation about the ClearKey DRM issue makes perfect sense. It was very helpful.

I know you wrote this a few months ago, but I was just wondering if you've heard anything new or received any further updates from FiiO since then?

happo31happo31

Thank you for your interest.

At present, there is no additional information from FiiO.
I can understand their position from a business perspective, as it likely isn't practical for them to provide individual support for specific apps.

However, I also believe that if they receive a large number of inquiries from users about the same issue, they might determine that it's worth addressing.

If you're willing, I would appreciate it if you could also try sending a similar inquiry to FiiO.
You will probably be turned down just as I was, but it might make a difference.

Thank you.