Got HD Netflix working on my Tab S2! Proof first, explanation second:
From what I can tell, this tablet completely supports Widevine L1 (w/hardware backed DRM). However, the Netflix servers are sending a device configuration file that blocks Widevine L1 (and thus HD) when requested from the Tab S2. In particular, when the Tab S2 (SM-T810) requests the device configuration, the HTTP response contains:
When my Galaxy S6 Edge+ (SM-G928T), which natively supports Netflix HD, requests the device configuration, the HTTP response contains:
The differences between the complete requests and responses can be found here: https://www.diffchecker.com/w3etqdvq
So what can be done about that? Well, the app can be modified to report the device model as one of the officially supported HD devices, but it is far easier to simply ignore "enableWidevineL1" from the JSON response and always set it to true. Note that this does NOT disable DRM nor does it let you view HD content without an HD subscription.
In fact, it enables the strongest Widevine DRM method.
I will not be providing a patched apk for various reasons (country I live in, employment, etc.), but it's an easy one-liner change for those who are familiar with editing smali. Just make the method return true instead of querying the deserialized JSON data.
EDIT: Here are instructions for patching the apk. Note that this whole procedure must be done for each Netflix app update and the app will no longer automatically update from the Play Store. This same trick can also be done with Xposed, but my device isn't rooted, so I won't be writing a module to do that.
Again, I want to stress that:
- This does not bypass DRM. This simply tells Netflix to use Widevine L1 DRM on devices where they didn't officially enable its usage. Videos are still fully encrypted and protected.
- This does not let you watch HD content if you didn't pay for an HD subscription.
These instructions are for Linux, but it should be similar for other OS's.
- Install adb and apktool on your computer
- Install Netflix from Google Play and copy the apk to your computer
adb pull /data/app/com.netflix.mediaclient-1/base.apk
# ^ Might be "-2", "-3", etc. if the app was updated
- Decompile the apk using apktool:
- Edit base/smali/com/netflix/mediaclient/service/webclient/model/leafs/DeviceConfigData.smali and look for the following line:
Just a few lines below that, change the following line:
.method public isWidevineL1Enabled()Z
iget-boolean v0, p0, Lcom/netflix/mediaclient/service/webclient/model/leafs/DeviceConfigData;->enableWidevineL1:Z
This causes Netflix to always enable Widevine L1 DRM. Note that the modified apk will not work on any other device that doesn't support Widevine L1.
- Rebuild the apk
- Sign the apk
jarsigner -keystore ~/.android/debug.keystore -storepass android -keypass android -sigalg MD5withRSA -digestalg SHA1 -sigfile CERT -signedjar base/dist/base.apk base/dist/base-signed.apk androiddebugkey
- Zipalign the apk
zipalign -f 4 base/dist/base-signed.apk base/dist/base-signed-zipaligned.apk
- Uninstall the official Netflix app and install base/dist/base-signed-zipaligned.apk
adb shell pm uninstall com.netflix.mediaclient
adb install -r base/dist/base-signed-zipaligned.apk