Widevine DRM issue on Pixel 7 Pro Android 14

Product

Player

Question

Hi, We need help solving this error please when playing some movies in a React Native app on Android 14 Pixel 7 pro.
{“code”: 1001, “message”: “A general error occurred: ERROR_DRM_UNKNOWN: ERROR_DRM_UNKNOWN
cdm err: 1, oem err: 29, ctx: 23
============================== Beginning of DRM Plugin Log ==============================
05-22 18:23:55.785 I No hidl drm factories found
05-22 18:23:55.809 E Failed to find passthrough drm factories
05-22 18:25:14.816 I No hidl drm factories found
05-22 18:25:14.823 E Failed to find passthrough drm factories
05-22 18:25:35.728 I No hidl drm factories found
05-22 18:25:35.730 E Failed to find passthrough drm factories
05-22 18:37:03.641 I No hidl drm factories found
05-22 18:37:03.656 E Failed to find passthrough drm factories
05-22 18:37:05.606 I [cdm_engine.cpp(382):AddKey] session_id = sid6, key_set_id =
05-22 18:37:05.736 E [crypto_session.cpp(1804):Decrypt] OEMCrypto_DecryptCENC failed: oec_session_id = 3, security_level = Default, status = 29
05-22 18:37:05.736 E [cdm_session.cpp(734):Decrypt] Decryption failed: sid = sid6, status = 1
05-22 18:37:05.860 I [cdm_engine.cpp(261):CloseSession] session_id = sid6
05-22 18:37:21.830 I No hidl drm factories found
05-22 18:37:21.834 E Failed to find passthrough drm factories
05-22 18:37:22.127 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.129 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.129 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.130 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.130 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid7
05-22 18:37:22.130 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid7
05-22 18:37:22.134 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid7
05-22 18:37:22.135 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid7, playback_id = k8Tz9yNhan_OsT-C
05-22 18:37:22.139 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.139 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:22.139 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid7, key_set_id = , license_type = Streaming
05-22 18:37:22.214 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:22.491 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:22.492 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid7
05-22 18:37:22.634 I [cdm_engine.cpp(382):AddKey] session_id = sid7, key_set_id =
05-22 18:37:32.871 I [cdm_engine.cpp(261):CloseSession] session_id = sid7
05-22 18:37:39.040 I No hidl drm factories found
05-22 18:37:39.042 E Failed to find passthrough drm factories
05-22 18:37:39.220 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.221 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid8
05-22 18:37:39.221 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.221 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.221 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.221 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid8
05-22 18:37:39.225 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid8
05-22 18:37:39.226 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid8, playback_id = k3ikybzdFZ8wVzpd
05-22 18:37:39.228 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid8, key_set_id = , license_type = Streaming
05-22 18:37:39.228 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.228 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:39.310 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:39.414 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:39.419 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid8
05-22 18:37:39.574 I [cdm_engine.cpp(382):AddKey] session_id = sid8, key_set_id =
05-22 18:37:39.699 E [crypto_session.cpp(1804):Decrypt] OEMCrypto_DecryptCENC failed: oec_session_id = 3, security_level = L3, status = 29
05-22 18:37:39.699 E [cdm_session.cpp(734):Decrypt] Decryption failed: sid = sid8, status = 1
05-22 18:37:39.938 I [cdm_engine.cpp(261):CloseSession] session_id = sid8
05-22 18:37:53.996 I No hidl drm factories found
05-22 18:37:54.004 E Failed to find passthrough drm factories
05-22 18:37:54.185 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.185 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.186 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.186 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid9
05-22 18:37:54.186 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.186 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid9
05-22 18:37:54.190 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid9
05-22 18:37:54.191 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid9, playback_id = Ch12asMh-Tb6MfLa
05-22 18:37:54.196 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid9, key_set_id = , license_type = Streaming
05-22 18:37:54.196 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.196 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:37:54.262 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:54.263 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid9
05-22 18:37:54.356 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:37:54.472 I [cdm_engine.cpp(382):AddKey] session_id = sid9, key_set_id =
05-22 18:37:54.547 E [cdm_session.cpp(734):Decrypt] Decryption failed: sid = sid9, status = 1
05-22 18:37:54.547 E [crypto_session.cpp(1804):Decrypt] OEMCrypto_DecryptCENC failed: oec_session_id = 3, security_level = L3, status = 29
05-22 18:37:54.682 I [cdm_engine.cpp(261):CloseSession] session_id = sid9
05-22 18:38:18.788 I No hidl drm factories found
05-22 18:38:18.798 E Failed to find passthrough drm factories
05-22 18:38:19.068 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:19.069 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:19.069 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid10
05-22 18:38:19.069 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:19.069 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid10
05-22 18:38:19.074 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid10
05-22 18:38:19.075 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid10, playback_id = ayC1ui8WKPCxQSam
05-22 18:38:19.078 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:19.078 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:19.078 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid10, key_set_id = , license_type = Streaming
05-22 18:38:19.148 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:38:19.149 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid10
05-22 18:38:19.255 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:38:19.503 I [cdm_engine.cpp(382):AddKey] session_id = sid10, key_set_id =
05-22 18:38:37.707 I No hidl drm factories found
05-22 18:38:37.709 E Failed to find passthrough drm factories
05-22 18:38:37.948 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:37.950 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:37.950 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid11
05-22 18:38:37.950 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid11
05-22 18:38:37.950 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:37.955 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid11
05-22 18:38:37.956 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid11, playback_id = UB8gMrvn33MERKcS
05-22 18:38:37.957 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:37.957 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid11, key_set_id = , license_type = Streaming
05-22 18:38:37.957 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:38:38.026 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:38:38.027 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid11
05-22 18:38:38.136 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:38:38.237 I [cdm_engine.cpp(382):AddKey] session_id = sid11, key_set_id =
05-22 18:42:37.657 I No hidl drm factories found
05-22 18:42:37.681 E Failed to find passthrough drm factories
05-22 18:42:37.940 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:42:37.943 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:42:37.943 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:42:37.943 I [cdm_engine.cpp(216):OpenSession] New session: session_id = sid12
05-22 18:42:37.945 I [cdm_engine.cpp(1032):QueryOemCryptoSessionId] session_id = sid12
05-22 18:42:37.958 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid12
05-22 18:42:37.962 I [cdm_engine.cpp(2218):SetPlaybackId] session_id = sid12, playback_id = E3OSvuOaFJdnxmeH
05-22 18:42:37.967 I [cdm_engine.cpp(303):GenerateKeyRequest] session_id = sid12, key_set_id = , license_type = Streaming
05-22 18:42:37.967 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:42:37.967 I [file_utils.cpp(38):Exists] stat failed: ENOENT
05-22 18:42:38.059 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:42:38.061 I [cdm_engine.cpp(937):QuerySessionStatus] session_id = sid12
05-22 18:42:38.253 I [cdm_engine.cpp(1043):IsSecurityLevelSupported] level = L1
05-22 18:42:39.061 I [cdm_engine.cpp(382):AddKey] session_id = sid12, key_set_id =
05-22 18:42:39.142 E [crypto_session.cpp(1804):Decrypt] OEMCrypto_DecryptCENC failed: oec_session_id = 5, security_level = Default, status = 29
05-22 18:42:39.142 E [cdm_session.cpp(734):Decrypt] Decryption failed: sid = sid12, status = 1
============================== End of DRM Plugin Log ==============================”, “name”: “onPlayerError”, “timestamp”: 1716399759483}

Hi @youcef.ben , thanks for sharing this issue in community forum. From the logs, it seems like decryption of content failed in the DRM firmware of the device.

05-22 18:37:05.736 E [crypto_session.cpp(1804):Decrypt] OEMCrypto_DecryptCENC failed: oec_session_id = 3, security_level = Default, status = 29
05-22 18:37:05.736 E [cdm_session.cpp(734):Decrypt] Decryption failed: sid = sid6, status = 1

Can you please check/verify following information to help us narrow down the issue.

  • Is the issue only observed with ReactNative SDK or does this happen also with the native SDK? You can test with BasicDrmPlayback sample app.
  • Does issue happen with all DRM contents or does it happen for specific contents only. You can test Bitmovin Widevine test content available in BasicDrmPlayback sample application.
  • To be double sure, are you testing on a real Pixel 7 Pro device or a simulator?
  • Does the issue impact any other Android device in your knowledge or only this specific device?

Hi @lucky.goyal thank you for replying,

  1. We have just tested our content on the BasicDrmPlayback sample app and got a DRM error when playing some of the movies on a Pixel 7 Pro simulator running on Android 14.
    The same movie played just fine on a Pixel 7 Pro simulator running on Android 13.
  2. This DRM issue happens with only some content. Some content plays just fine.
  3. We have tested on both a real Pixel 7 Pro device and a simulator.
  4. So far we have experienced this issue only on the Pixel 7 Pro but it’s the only device with Android 14. We cannot confirm whether the content will play fine on other real devices running on Android 14.

This is what we get when trying to play the default urls that come with the example.

Thanks for the additional information @youcef.ben . It seems the DRM license server used in test content is not reachable at your end. I tried it today and it works for me. Can you please try following DRM asset instead?

DASH URL : https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd
LA_URL : https://proxy.uat.widevine.com/proxy?video_id=2015_tears&provider=widevine_test

Hi @lucky.goyal,
So I am in Algeria and I tested with the new urls and got the same error; however, after using a VPN to change my location to USA both the URLs in the example and the ones you sent now played just fine on the simulator with Android 13 and 14.
How can I share with you privately one of our URLs and widevine licence so you can test ?

Hi @youcef.ben , thanks for the update. So the issue is likely to be combination of stream and Android 14 DRM firmware.

Can you please open a support ticket through your Bitmovin account and share stream details in the ticket. Please make sure to open it from the paid account if you are already a customer. Other wise just open from your trial account. Please refer to this community thread in the ticket and also share the ticket ID here once it is created.

We can continue discussion in the ticket afterwards.

Thank you @lucky.goyal I have sent a support request with the details.

Thanks @youcef.ben .