Facing DRM error on older Android devices like Pixel C, what's the issue and how to solve it?

Dear fellow members, have you been facing DRM playback errors with Pixcel C or specific old Android devices?

Issue

One of the possible reasons for this behaviour could be L1 Widevine device certificate revocation by Google/Widevine for such devices. Every DRM system(including Widevine) configures each device(/model) with a unique set of keys/certificates. There is also a mechanism to revoke these keys/certificates to allow DRM system prevent misuse in case of security breach.

It seems that Widevine L1 certificates are revoked for Pixel C devices. So, if playback of Widevine protected content in tried on such device, it tries to fetch L1 Widevine certificate by making a request to https://www.googleapis.com/certificateprovisioning/v1/devicecertificates/create and this request is rejected by Google Widevine server leading to playback failure.

Solution

The solution is to force player to use L3 Widevine level on such devices. With Bitmovin Android player SDK, this can be done by setting WidevineConfig.preferredSecurityLevel = “L3”

Example JAVA code snippet.

WidevineConfig drmConfig = new WidevineConfig(".....");
drmConfig.setPreferredSecurityLevel("L3");

Caveats

Since using L3 Widevine security level is less secure than L1 Widevine level, video applications should not force L3 Widevine usage en masse. The solution should be applied only for devices impacted by L1 Widevine revocation.

Additionally, depending on your content usage policy, the playback may needed to be restricted to 720p only when L3 Widevine is forced.

Please let us know if you have encountered such issue recently. We would love to hear about which devices, what solutions you found and any feedback/inputs about the solution proposed here.

References

Great discussion @lucky.goyal !

Additionally because a single Manifest can contain both Lvl 1 & Lvl 3 keys when limiting device to WidevineConfig.preferredSecurityLevel = “L3”

Would be interesting to know

  1. if the License proxy returns the Lvl 1 keys or ONLY the Lvl 3 keys

Interesting. We recently had issues with an old Google Nexus 6. As other apps (e.g. Disney+) encountered the same issues we assumed it was a device issue and didn’t spend much more time on it. But this is an interesting feature to try out.

thanks @seven , that’s an interesting question. I believe the behaviour on WV proxy side should be configurable depending on the device Widevine level sent out in Widevine request.

But not sure how would player/system behave for different possible WV key combinations in license response.

  • WV proxy returns on SD/HD keys
  • WV proxy returns all keys

thanks @kaspar.de.geus for your inputs. I am really curious if the Nexus 6 issue is same as Pixel C and if same solution can help there. Looking forward to hear more on this.