As of 3-30-2020, if you want the “paste-one-line-it-just-works” go to:
^^^ PLEASE USE POST USING ABOVE LINK FOR MY “ONE-LINE IT JUST WORKS” ^^^
(IGNORE EVERYTHING BELLOW THIS AS IT’S THE ORIGINAL DEVELOPMENT WORK)
===================================================================
Everything from this point down is out of date as of: 3-30-2020
This was my initial “netflix on the raspberry pi 4 development” blog post. Leaving it on here due to the comments, initial work, info for those interested, but I highly recommend using the easy method above (linked).
Last libwidevine extract: 3-29-2020 – v.4.10.1610.6 of libwidevine – EVERYTHING CONFIRMED WORKING
Chromium has made substantial changes the way libwidevine (and a few major things around DRM) are loaded/used/etc. They have also made changes to the setting and reading of the user-agent propagation. For some time (~2 months or so) — the combination of this badly broke Netflix. It seems they have undone the lib loading in the last couple of versions, and user @Spartacuss discovered the user-agent fix.
The instructions here (as of 3-29-2020) work for: Netflix, Hulu, HBO, Disney+, Amazon Prime, Spotify, Pandora, and many others.
The Raspberry Pi 4 model with 4GB of RAM is the first cheap hardware that can provide a real “desktop-like” experience when browsing the web/watching Netflix/etc. However, if you have tried to run Netflix on the Pi, you have quickly entered the disgusting mess that exists around DRM, WideVine (Netflix being one example of something that needs it), and Chromium.
After hours and hours of effort, I finally discovered a quick and elegant solution that lets you use the latest default provided Chromium browser, without having to recompile anything in order to watch any WideVine/DRM (Netflix, Spotify, etc) content.
Background and the DRM Problem
If you are not familiar with this, the short version is that Netflix (and many others, ex: Spotify) use the WideVine “Content Protection System” – aka DRM, and if you want to watch Netflix or something else that uses it, you need to have a WideVine plugin+browse supported integration. Chrome, Firefox, and Safari make it available for x86/amd64 systems, but not for ARM since technically they don’t have ARM builds.
Chromium, the project Chrome is based on, does have an ARM build, but it does not include any DRM support, and technically it does not include widevine support by default (*caveat here, which helps us later)
So long story short, the question becomes “how do you enable DRM/WideVine support in Chromium?”.
It seems there are two main solutions out there: use an old (v51, 55, 56, 60) version of Chromium which has been “patched” with widevine support (kusti8’s version seems to be the most popular one – except since the new Netflix changes, that also does not work), which requires uninstalling the latest Chromium available, installing the old/patched one, and dropping in older widevine plugins; the second option is to use Vivaldi – a proprietary fork of Opera which also has been “sort of patched”, but it still needs a valid libwidevinecdm plugin (see bellow) and it has it’s own issues (and also…it’s Opera…in 2019…who uses Opera?)
After a lot of research and trial and error, I discovered a much more elegant solution – use the extracted ChromeOS (armv7l – yay) binaries and insert them into Chromium + make everything think it’s ChromeOS (user agent)
Netflix/Hulu/Spotify with the Default Raspberry Pi Chromium Browser
Enough theory – let’s do this in 2 quick steps!
0.) If you have tried Netflix/etc already, open Chromium and clear your browser history + cookies. Otherwise it will cache the “failed” DRM components.
1.) Download the latest extracted ChromeOS libwidevine binary and extract it:
1 2 3 4 5 6 7 8 |
$ sudo su # cd /usr/lib/chromium-browser # wget http://blog.vpetkov.net/wp-content/uploads/2020/03/libwidevinecdm.so_.zip # unzip libwidevinecdm.so_.zip && chmod 755 libwidevinecdm.so # wget http://blog.vpetkov.net/wp-content/uploads/2020/03/chromium-media-browser.desktop.zip # unzip chromium-media-browser.desktop.zip && mv chromium-media-browser.desktop /usr/share/applications |
NOTE: Credit and thanks to @Spartacuss for discovering user-agent method with .desktop file!
NOTE: You can verify that these are the *official* versions from ChromeOS:
https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12739.105.0_elm_recovery_stable-channel_mp-v2.bin.zip
NOTE: UPDATED (Last re-extracted from ChromeOS on: 3-23-20)
version: 4.10.1610.6 (see optional script below how to check version)
filename: libwidevinecdm.so
md5sum: 6857e5f102651bfa977eb739b86bf75e
sha256sum: 678c21b5ebf459919f9dcde100af8f59e580b6bed56b1cae1ae5eb43a7029e17
2.) Completely QUIT all Chromium windows.
Start Chromium with the new Application Menu under “Internet”: Chromium (Media Edition)
Open a new tab, and go to: https://bitmovin.com/demos/drm You should be able to see the movie on the left. (While this still works, it will show “No DRM” unless you set the Chromium user-agent from within the app – which breaks Netflix. BitMoving unfortunately looks for that first. Just go to Netflix/Your media source directly.)
You can now play Netflix, Hulu, HBO, Spotify, Pandora, Disney+, Amazon Prime, and many others!
Please note that If you can see the video on the left, this means the DRM plugin has worked! From this point on, anything that does not work (ex: Netflix sometimes breaks after a browser update) is due to the site specifically filtering User Agents/doing other “tricks”. So for example, if Netflix does not work, Spotify, Pandora, Hulu, Amazon Prime, HBO, etc will still work. The BitMovin website is the “real” test on wether the DRM plugin has worked.(While still technically true, if your Chromium user-agent is not set from within the app itself, which breaks Netflix, BitMovin will show “No DRM” even though the DRM decryption works)
Solution for the occasional “screen tearing”
Updated: 4-7-2020
1 2 3 4 |
$ sudo rm /etc/xdg/autostart/xcompmgr.desktop $ sudo reboot |
It seems the Pi’s raw CPU frequency is still not powerful enough for decoding 100% of the time. While 97-98% of the time is good enough, you will get the occasional “screen tearing” (https://en.wikipedia.org/wiki/Screen_tearing), especially in scenes with fast motion.
Users Otaku, DM (and thanks to Luca for testing/extra info!) have found a solution which was mentioned on https://lb.raspberrypi.org/forums/viewtopic.php?t=246179 by user Greysvandir.
I had to add a few more things and I created a compressed and slightly automated 😉 version:
# sudo apt install -f compton
$ mkdir -p ~/.config/lxsession/LXDE-pi
$ cd ~/.config && wget https://raw.githubusercontent.com/dastorm/Compton-xfce-config/master/compton.conf
$ cp -f /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/autostart
$ echo “@usr/bin/compton –backend glx” >> ~/.config/lxsession/LXDE-pi/autostart
$ echo “xrandr –output HDMI-1 –mode 1280×720” >> ~/.config/lxsession/LXDE-pi/autostart
The result is no tearing with 1080p@60fps video.
(OPTIONAL) Get libwidevinecdm version
If you want to check your *actual* libwidevinecdm version, the easiest and quickest way is using user VMX’s elegant python solution:
1 2 3 4 5 6 7 |
# cd /usr/lib/chromium-browser # python -c 'import ctypes; > lib = ctypes.cdll.LoadLibrary("./libwidevinecdm.so"); > lib.GetCdmVersion.restype = ctypes.c_char_p; > print(lib.GetCdmVersion())' |
This will give you the version:
4.10.1610.6
Alternatively, if for some reason you want to, you can compile a binary (C) checker by:
a.) Create a file called “get_cdm_version.c with:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <stdio.h> #include <stdlib.h> #include <dlfcn.h> int main(int argc, char *argv[]) { void *handle; const char *(*get_cdm_version)(); handle = dlopen("./libwidevinecdm.so", RTLD_LAZY); if (!handle) { fprintf(stderr, "%s\n", dlerror()); exit(EXIT_FAILURE); } get_cdm_version = dlsym(handle, "GetCdmVersion"); if (!get_cdm_version) { fprintf(stderr, "%s\n", dlerror()); exit(EXIT_FAILURE); } printf("%s\n", get_cdm_version()); dlclose(handle); exit(EXIT_SUCCESS); } |
b.) Compile the binary with: gcc get_cdm_version.c -o get_cdm_version -ldl
If you want a binary version for some reason (I don’t know why you would given python method), and you can’t compile it yourself, and you trust me (why?!), feel free to grab my already compiled version:
1 2 3 4 5 |
$ wget http://blog.vpetkov.net/wp-content/uploads/2020/03/get_cdm_version.zip $ unzip -f get_cdm_version.zip $ chmod 755 get_cdm_version |
c.) Place a copy of the libwidevinecdm.so in the same directory as your binary
d.) Run it
1 2 3 4 |
./get_cdm_version 4.10.1610.6 |
^^ Here the Version is: 4.10.1610.6
(OPTIONAL: Older Versions)
Here are the last few OLDER versions in case you need them (note the unique date in the url):
http://blog.vpetkov.net/wp-content/uploads/2019/08/libwidevinecdm.so_.zip
http://blog.vpetkov.net/wp-content/uploads/2019/07/libwidevinecdm.so_.zip
Perfect solution. Even intalling the fix remotely through Putty and Teamviewer worked like a charm. Thanks a bunch from Hamburg Germany
Thanks…
Well documented !
It’s working now.
A +
JOEL
Can you explain how to set the resolution and 59.94 HZ?
I dont get it…
Thanks!
Its just adding the settings to the config and rebooting. See here:
https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
Did not find a setting for 59.94Hz, only full numbers.
Try this:
You can set that on boot in /etc/rc.local
Thanks a lot, it works.
My only complaint: Still get a lot of screen tearing. Tried to follow Tim’s tipp but I’m not offered 59.94Hz. Only 60Hz or 50Hz… (Living in Germany, not sure if that might be the reason?)
Alex – see this, specifically custom mode: https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
Never thanked you, sorry. Your reply did indeed work…
Awesome work here, both the well-written guide and your effort in answering and helping everyone!
Worked like a charm. Netflix is running now although on raspi 4 with 4gb ram (512 on vid) it is a bit laggy but still working so i don’t complain;)
Aedrish – see the “screen tearing” tip from Tim. Apparently it fixes the lag completely.
(Bottom of blog post)
I also have no problem watching Netflix with the new setup. Very nice indeed.
I just started subscribing to HBONOW. Do you have a user agent string that will work for HBO? Getting unsupported browser comment when attempting to play.
Regards,
Benn – Great to hear!
For HBO NOW, for whatever reason, they specifically filter ChromeOS user agent strings. You can switch to any other string “windows” (FireFox, IE, etc) and it should work.
Re: HBONow
I tried all the different string / browser choices and get browser not supported on all of them. I wonder if the string should be updated but I am really on thin ice here 🙂 any help would surely be appreciated.
Regards
Ben, try this for HBO emulation:
https://youtu.be/UE8XKUeaqZc
I followed this BS Vivaldi how-to which didn’t work. This had Netflix running in 3 minutes after following yours. My sanity thanks you.
Rick – Thanks!
It’s funny, the whole reason I put this blog post together was because I also came from the Vivaldi stupidity. I figured if it pissed me off, it probably pissed off a whole bunch of other people.
works great. Temp while playing movies is stable at 38C. I use a small heatsink and fan.
Spotify as well works and also shows mini player popup now! Great find and tanks for the work.
On the Raspberry, download the libwidevinecdm.so_.zip file at /home/pi/Downloads:
http://blog.vpetkov.net/wp-content/uploads/2019/08/libwidevinecdm.so_.zip
Open a terminal and type the following commands:
cd Downloads
unzip libwidevinecdm.so_.zip
cd /usr/lib/chromium-browser
sudo rm libwidevinecdm.so
sudo cp /home/pi/Downloads/libwidevinecdm.so .
cascabel – your way definitely works, but I would suggest saving a fee steps. In the terminal directly doing a “sudo su”, then “# cd /usr/lib/chromium-browser” and then just wget and unzip there and chmod.
It should save you a few steps.
Thanks. I’ll give it a try to extract it myself. I am a retired IT guy that was playing with AT&T Unix back around 1986. Not a full on Linux wizard but I can usually muddle through. When I can’t my oldest runs a super computer in Cheyenne from Boulder. He is my tech support.
Dave
Spotify
Today I got spotify does not support your browser, All I did was updated to the august libwidevinecdm.so and now its all OK. Thank you!!!
Great to hear – thanks for the feedback. Now that I know that Google is constantly pushing a new version, I’ll stay on top of it and keep re-extracting it. Ping me here if it ever changes, this feed back is really helpful.
Rights are working again on Channel4.com. You might want to add a warning that if the old .zip is in the directory the new file will download as .zip.1. Now to figure out why the full screen button doesn’t work on itv.com. I suspect something to do with the new version and the string.
What is your process for getting the new file? I would like to be able to do it myself if needed.
Dave
Dave – it’s funny, I assumed permissions (chmod) is just second nature to linux users, but the problem is every pi user is not always a linux user 🙂
That said – you can pull it from the official Google source tree. The process is a bit “involved” – not so much that it’s hard, but you do need to have deep understanding of linux.
I can do a 30K foot overview, but not sure how helpful that will be.
Start here: https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf — pull the latest version, and from there extract the source tree.
Pull the latest version number, grab the recovery source from that, and pull the bootable recovery image out of that, extract it, decompress it, and create a chromeos disk image.
From there, you have to scan the partition table and mount just the libraries partition in the image via a loopback device driver. I think this is the 3rd partition currently.
Once you have this, create a temporary file system and extract “opt/google/chrome/libwidevinecdm.so” out of that.
For the people that downloaded the plugin in the past 24 hours (8-16-19) — it looks like I forgot to chmod it before zipping to distribute it.
Please just run as root:
# chmod 755 /usr/lib/chromium-browser/libwidevinecdm.so
Still get an error DRM_FAILED_LICENSE_REQUEST on the stream test and error C7121-1331 in Netflix. I am sure I copied the UA string correctly. Is it still working fine for you?
So in 2019 we still use the nice parts of Opera?
Alex – Please check the plugin permissions. It seems they did not “save” into the zip file (already updated and re-uploaded).
But you can manually just:
When you:
it needs to look like:
-rwxr-xr-x 1 root root 6.6M Aug 15 23:48 libwidevinecdm.so
ps: There are no nice parts of Opera 😉
Hi Ventz,
thanks for the reply and this great guide. It works fine now.
I found one thing missing in the otherwise excellent guide: after unzipping libwidevinecdm.so, it needs to be made readable with the following command (still as superuser):
“chmod +r libwidevinecdm.so”
Just saw this post – great catch – thanks! (see previous about chmod 755). I’ll update the blog post too in case it doesn’t save in the zip.
Hey, i tried getting netflix to run on my pi 4b 4GB using your guide, however the test video page shows “Detected ?, using widevine” above the player, and “Unable to instantiate a key system supporting the required combinations (DRM_NO_KEY_SYSTEM)” in the player.
Netflix, when trying to play a movie, tells me:
“Whoops, something went wrong…
Missing Component
We cannot find all the required components to play Netflix on this device.
Please visit chrome://plugins, ensure that both the “Netflix” and the “Widevine Content Decryption Module” plug-ins are enabled and their “Always allowed” setting is checked.
For additional assistance in resolving this issue, please visit our Help Center.
Error Code: C7702-1003″
“chrome://plugins” does apparently not exist in Chromium, however “chrome://components”, which seems to have replaced it, does neither show the “Netflix”, nor the “Widevine Content Decryption Module”.
I tried restarting chromium, restarting raspbian and clearing the netflix cookie as suggested on Netflix’s help page for the error code C7702-1003, this didn’t change anything.
It is a fresh raspbian install and i updated all software to the newest versions just now.
I have also updated the usb controller firmware to the newest version.
The only extensions i added to chromium in addition to the pre-installed ones are LastPass and PawHash (and Chrome UA Spoofer from your guide).
Disabling the preinstalled UBlock Origin on the test page makes no difference.
I followed the instructions verbatim, the libwidevine version is the one from 15.08.2019 and the user agent was copied exactly.
Chromium is “Version 74.0.3729.157 (Official Build) Built on Raspbian , running on Raspbian 10 (32-bit)”
I additionally tried to make libwidevine executable using chmod +x to no avail.
Do you have any idea what could be the cause/solution or do you need/want any more debugging/ information?
Thanks for your help in advance and thanks for making the guide in the first place,
Ansgar
Ansgar – Please check the plugin permissions. It seems they did not “save” into the zip file (already updated and re-uploaded).
But you can manually just:
When you:
it needs to look like:
-rwxr-xr-x 1 root root 6.6M Aug 15 23:48 libwidevinecdm.so
The most recent steps didn’t work for me until I changed the permissions for the libwidevinecdm.so file. For some reason, chromium was not able to read the file. I went with 777 as I didn’t want to care much about it so I am sure there might be a better way of doing it.
Right after unziping, the perms were
-rwxr-x--- 1 root root 6829784 Aug 16 04:56 libwidevinecdm.so
maara – Please check the plugin permissions. It seems they did not “save” into the zip file (already updated and re-uploaded).
But you can manually just:
When you:
it needs to look like:
-rwxr-xr-x 1 root root 6.6M Aug 15 23:48 libwidevinecdm.so
While this was working fine, I can’t get it working on chromium 74.0.3729.157 and the most recent version of the library. the test drm movie is saying DRM_NO_KEY_SYSTEM
For everyone that has subscribed to comments/updates (thank you by the way!) – an update you may enjoy: I just re-extracted the *LATEST* version of the library (as of 8-15-19).
Updated main download link: http://blog.vpetkov.net/wp-content/uploads/2019/08/libwidevinecdm.so_.zip
Please note the new MD5 and SHA256 checksums:
md5sum: 41c94b9ffa735fe4f412b7e9283dd2ff
sha256sum: 2245a2f5ba8452692e79f478d64adbeedaef5307cc73e81ffe64de69a7a53640
Also, created a section in the post with the old versions in case someone needs them.
In this case, the older version is:
http://blog.vpetkov.net/wp-content/uploads/2019/07/libwidevinecdm.so_.zip
md5sum: 4946f3c49c7ce5cd129e66c61aab28a4
sha256sum: 2bba50467ff582e30994114acd5a417016161fc81bfa127c2a15e807f700bf1b
It has been at least a couple of days. I just rechecked an episode that worked on Saturday and is not working tonight.
Dave – seems like they released a new version of Chromium and packaged a new version of the plugin. Just finished extracting it 🙂 — see my updated link the blog post (note the new date/url)
I tried redownloading both Wildvine and replacing the user agent. The UA string is a copy/paste of the instructions. I don’t use it for Hulu. I am streaming UK BBC/ITV/Channel4 off a proxy server in London. All were working really well until Channel4 started complaining about rights and ITV lost the ability to go full screen. When I run the test video it has a header of Detected ?, using wildvine above where the video would play. I don’t remember what it had before, it worked so I jumped into using it. I am not sure what version of Chromium was in the original install. I may end up loading another SD card to go back.
Ill check the test video to see if there is a header. Ill also re-extract the latest official build from ChromeOS to make sure something has not updated in the last 24ish hours.
I had everything working until a few days ago. Then one of my streaming sources started compliaing about rights. At the same time another stopped swithcing to full screen mode. Not sure if it was related. I had done an apt-get update but didn’t notice the problem right away. I may not have used the soruces right after the update. I just did an update that didn’t do anything and an apt-get upgade that downloaded a lot of stuff. I am still broken. Any hints as to where to start looking would be great. Data below.
Demo video error message
License request failed
(DRM_FAILED_LICENSE_REQUEST)
Chromium version – Version 74.0.3729.157 (Official Build) Built on Raspbian , running on Raspbian 10 (32-bit)c
Spoofer string – Mozilla/5.0 (X11; CrOS x86_64 11895.95.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.125 Safari/537.36
Dave
Dave – try to re-add the plugin in case it got removed with an update.
Check your spoofed string – you can update to match Chromium version, but mine is your version and I have your version of Chromium and it works.
I will say first, thank you for this. It was worked out great! Until today really. Netflix loads up just fine. Hulu is another story. Error: DRMCDM78
Can’t help but think it’s related to the set up I have going.
Anyway, I’m on RP4 with latest Chromium and even double-checked the widevine file. No luck.
Did Hulu work before? (I had not tested it)
Did the browser upgrade/something change?
My suggestion is to re drop the plugin, check user agent string, etc.
ventz i have chromium 72
also was able to ply that drm video
but netflix showing error—-
error code M7121-1331
plz help i’m a total noob
Check agent string carefully and make sure its then selected. Quit Chromium and restart.
If the test video works, the plugin is all set and its just your agent string which Netflix needs to match.
No longer working for me. Says the browser is out of date, any fix?
Bob – check your user agent/switcher.
Double check that you have the correct plugin, and chmod.
I am om Chromium 74.0.3729.157 (Official Build), which seems to be the latest, and its running here.
Test video wouldn’t play; however, got both Netflix and Amazon Prime to play…finally. This makes it so much easier than carrying a laptop when I travel weekly for work, easily running on the hotel TV. Thanks for the great instructions!
Fan noise is tiny. Can’t hear it at all.
The fan shim is crap, I tried it. It kept stopping randomly. That heatsink and fan arrangement is much better. Temps only get to 55 celcius after playing a full film at 1080p on Kodi.
Great! Thank you both for your feedback. You are right, the price difference is not that much for the 4GB, especially if it is likely I will need it.
Kabadisha – Thanks for link to the heatsink/fan case. I had been looking at the fan shim from Pimoroni but then I would still need a case. It looks like the fans are always powered on with the case you linked. How do you find the fan noise? Is it noticeable?
Thanks for the guide! I was about to give up on a proper RPi AVOD media player until I found this. I tested it on an RPi 3B+ but performance was not great as mentioned above. The picture was not smooth enough to be watchable.
It has given me confidence to upgrade to an RPi 4 though. The only question is how much RAM do you recommend? Is the 1Gb sufficient? There is mention of 4Gb above but just wondering if that is needed… 2Gb may be a good compromise?
motthomas – I would definitely get the 4GB model (and I did). The ram helps a lot in just about everything, and in certain situations it can help speed up the cpu quite a bit. 1GB is too little and a joke if you want to do anything more than the console, and 2GB is “barely enough” to open a browser. 4GB really solves the ram issues completely so you never have to worry about this. And the price between 2GB and 4GB is not that much more.
I agree. I have the 4GB one and the only thing it can’t handle is 4K. 1080p is fine.
I would also get a good heatsink and fan though. I got this one, and it’s great:
https://www.ebay.co.uk/itm/For-Raspberry-Pi-4B-Aluminum-Alloy-Case-Cover-Enclosure-Protective-Box-CNC-UK/401828654481
Hello friends,
I have tried this method in my Raspberry pi 3 model B. with slight overclocking. My overclocking section in the /boot/config.txt file; A small & cheap aluminium heatsink and fan attached for cooling. he temperature remains well under 50 Degree Celsius all the time.
### !!!! Overclocking section 10-08-2019 !!!!
arm_freq=1200
core_freq=500
sdram_freq=500
over_voltage=600
No overclocking in arm_freq section.
the prime video plays more or less good.
Hence this seems a great work around for arm boards.
My next attempt is to try this with an Odroid c2 board. thanks once again Mr. Steffen
Working well for me. Thanks.
Thanks <333
After a fresh install of my RP4 your guidance works well!:)
tried several older guidance's before testing this one, so my chromium were probably messed up;)
Steffen – awesome 👍
Working
raspberry pi 3b
chromium 72
“Raspbian GNU/Linux 9 (stretch)”
The test video wont start. receiving this DRM error:
Unable to instantiate a key system supporting the required combinations
(DRM_NO_KEY_SYSTEM)
However my netflix now gives me an different error; “missing components” C7702-1003
any clue?
Steffen – a few things:
* update your raspbian system and go through the steps again
* something was not done correctly (file/location/permissions/etc) or you have a typo somewhere in the user agent string/etc.
* try also closing/quitting the browser completely and re-opening
Ok think i have a fix. Netflix in Chrome will only play 1280 x 720 max (its a known thing) and can be checked by pressing CTRL SHIFT ALT and D when the video is playing in Netflix (for Vid stats).
So as a test i changed my pi screen configuration from 1920 x 1080 to 1280 x 720 (at 59.94 HZ) and netflix plays fine with no tearing. (the tearing was mostly present when the camera pans left to right etc). For some reason my monitor has a 1280 x 720 at 60HZ option but this also gave a little tearing, the 59.94Hz option cures it completly, this works for me and i am happy watching Netflix at 720p
plus i can change my pi resolution back once i have finished watching Netflix.
PS There is a chrome app called Super Netflix which used to allow the user to change the Netflix resolution to 1080 but it no longer seems to work
That is really good to know! Thanks.
I am going to update the post with this info on the bottom.
For anyone on a Mac by the way, it’s “ctrl + shift + option + d”
Ive tried netflix again with a 1750 cpu overclock and a 600 gpu overclock, and the horizontal screen tearing is still there. CPU temp is around 50 so its not getting too hot. the same problem can also be seen in youtube videos
Tim – thanks, this is really good to know. It seems like the Pi really needs to boost the raw CPU freq at least to 2(ish)…maybe even 2.3.
I wonder if the 4K comes into play also. For example, I haven’t seen this happen with YouTube on my side yet, but I did see it with Netflix.
Just to inform you that it works on the RPI 3B+ too. It’s just too slow to be actually watchable. But it works. Thanks for the guide! (Maybe I now have a reason to upgrade to a RPI 4 😀 )
Dennis – 👍 thanks for the info.
Thanks man! It works after reinstalling Raspian. Now im waiting for my case to cool down the PI.
Damodaran M V form India
Great, I am using RPi4 4GB and Version 74.0.3729.157 (Official Build) Built on Raspbian , running on Raspbian 10 (32-bit)
The steps mentioned above worked well. The video looks OK but not perfect. But your Information and the work is heartly appreciated. Thanks.
Damodaran – it seems the CPU is just not fast enough. Try overclocking it from the raspi-comfig and attaching a heatsink (potentially one with a fan). I keep hearing that that makes it perfect.
Not working. Error “C7702-1003” 🙁
Tobi – that means you still have the old session cookies from before the plugin. Quit and reopen the browser.
If that doesn’t work, try the steps again carefully. At last flush cookies/cache and quit+reopen the browser (fully).
God bless you! I was this close to throw my Raspberry out of the window and delete this project of mine i’m working on! This solution was quick, clear and easy to implement, also works like a charm for running the sdk spotify webplayer, you saved the whole project, thanks!!
Sebby – great to hear! I am glad it worked easily for you.
Hi.
Nice to read this post.
Have you had a try on ARD, ZDF, Arte (Germany) Mediatheken or Raiplay (Italy)?
Can you select on ARD, ZDF, Arte the available subtitles?
That’s really important for me.
If it works on full screen, I’ll buy soon a RPI 4B 4GB.
Thanks!
Thanks for the guide – works great!
Any update on the tearing?
Seems like “cooling” the cpu (dispersing heat) via a heatsink and potentially even overclocking the cpu too.
Haven’t tried it myself yet, but a couple of people mentioned that this solved the problem. It seems the Pi 4 is still sadly slightly underpowered on the raw cpu frequency side.
But for anything that takes advantage of the gpu offload, it should be perfect even at 4K.
Ahh… spoke too soon. Netflix works, but other stuff is broken! Youtube, BBC IPlayer both fail as soon as I start to play something, freezing Chromium completely. Removing the libwidevinecdm.so file and setting the user agent back to Chrome->default seems to fix the issues. Pity you can’t have all working simultaneously!
Strange – youtube should be completely independent of all of this.
Try switching your agent profile for youtube. This is only an add-on so it really should not break anything else since by default the ability is essentially not there.
Just to confirm instructions work on RPI 4 with Raspbian 10 and Chromium Version 74.0.3729.157 (Official Build). Thanks, nice work!
FooBarBaz – Awesome! Glad it’s working and you found it helpful!
(thanks for confirming Chromium version too!)
Superb job. Works like a charm 🙂
FYI, I added a fan to my Raspberry Pi v4 and I don’t get any artifacts when running Netflix or Amazon Prime at 1080p
Kabadisha – awesome, thanks.
That is *really* good to know! I wonder if overclocking it a bit with a heatsink would help even more. Thanks for providing this info.
Dude such a life saver. Thank you for putting this together. Was able to create a spotify endpoint running on chromium on pi3.
Nish – awesome! Glad you found it helpful!
thanks this works on the pi4 and the most recent rasbian buster image has hardware accelertion enabled in Chromium. BUT there is a lot of horizontal video tearing in Netflxi any idea how to fix this?
Tim – I noticed the same and I wonder if the hardware acceleration is actually the problem. Its almost like the hardware cant keep up with high def content when there is motion. If you try watching something without much motion, it seems ok. I am trying to figure this out too.
Well the demo video worked but netflix is still not working. I did the steps exactly as I was told. I think. Thoughts?
Try flushing the browser – if the test video worked, Netflix should work (uses the same drm.)
Double check that you restarted the browser too. Double check the User Agent string. Check the permissions on the files.
I’ve gotten emails from a few thousand people that it worked for them, so it has to be something small (typo, etc)
Thanks !
It perfectly works !
Awesome – glad it’s working! Personally, love how quick and easy (and secure!) this is compared to the alternatives.