Last Update: 3-13-21 | Official Raspberry Pi Package now available – see bellow
Last Update: 11-9-20 | Updated ventz-media-pi for new Chromium version (v.84+) and new WideVine setup: v.4.10.1679.0+ NOTE: You MUST re-download and re-run it from this date to fix – lots of changes!
Last Update: 11-2-20 | Updated libwidevinecdm.so_.zip to v.4.10.1679.0 within ventz-media-pi
Last Update: 7-22-20 | Updated .desktop with Chrome User Agent string for CrOS Chrome/77.0.3865.120
Last Update: 7-20-20 | ~redacted~ company reached out about creating an official package, also there are conversations happening with ~redacted~ company about official support of the Pi
Last Update: 5-6-20 | Specify that “Raspbian with desktop” is assumed and tested
Last Update: 4-7-20 | Fixed screen tearing
Great News – This can finally be announced:) – There is now an official Raspberry Package with this work!!
Setup everything here with:
1 2 3 4 5 |
sudo apt update sudo apt full-upgrade sudo apt install libwidevinecdm0 |
Everything from here down is the “pre-official-raspberry-package” info:
If you just want to take a Raspberry Pi 4 (as of today!) and turn it into a fully functional “Media” center by just pasting one line, here it is:
SSH to your Pi (don’t run from the Pi console if you want pretty graphics :)) and run:
1 2 3 4 |
curl -fsSL https://pi.vpetkov.net -o ventz-media-pi sh ventz-media-pi |
This will produce the following (click to see larger image):
Reboot, and then from the Application Menu (top left) -> go to “Internet” -> open “Chromium (Media Edition)”
You are now ready to use your Raspberry Pi on Netflix, Hulu, Amazon Prime, Disney Plus, HBO, Spotify, Pandora, and many others.
If you need to change any browser Settings, do so via the “Chromium” browser and not the “Chromium (Media Edition) – both are the same browser, so the settings are the same. The “Media Edition” (just a custom launcher with the user-agent) cannot load the settings since Chromium thinks you are launching it on “Chrome OS”, and when it checks for the Chrome OS language settings it crashes since they don’t exist.
At last, all this assumes the latest version of Raspbian with desktop (not Debian/Ubuntu! –
https://downloads.raspberrypi.org/raspbian_latest), and you can re-run the curl and sh as many times as you want without any harm.
If you are curious about some of the background and details on why you can’t easily run Netflix (and others) on your Pi and how to solve it, you are welcome to go look at my “development” blog post article: http://blog.vpetkov.net/2019/07/12/netflix-and-spotify-on-a-raspberry-pi-4-with-latest-default-chromium/
Enjoy!
Ventz Hi.
Bill here N.Z again.
Sorry to bother you with a stupid question, but I’m getting an error when I run your…
curl -fsSL https://pi.vpetkov.net -o ventz-media-pi
sh ventz-media-pi
I reboot, then double-click the icon, but get this message…
Invalid desktop entry file. ‘/usr/share/applications/chromium-media-browser.desktop’
I’ve tried several times… but it won’t install. ?
I’ve recently done the 64bit, o.s. booting from ssd thing, but I don’t think that’s the problem. ?
Any advice please… Thanks. Bill.
Feel like such a stupid newbie !
Sorry Folks.
I burned another copy of Raspbian, only this time… 32 BIT ! and.. Yup. everything’s fine… Apart from maybe my slightly bruised ego. ! ;^)
Ventz… Thank you man… You’re doin’ a fantastic job here… for what ?
Something to do in your spare time. ?! Far out m8. !
Keep up the good work…
Cheers from Aotearoa…
“The Land Of The Wrong White Crowd”… oops.. sorry…
“The Land Of The Long White Cloud” ;^)
Edit shortcut in any text editor, and change line Exec=chromium-browser to Exec=chromium, leaving all parameters as they were.
Buut to be honest it doesn’t make Spotify work for me anyway.
This is amazing! I was wondering how you fixed the screen tearing problem in YouTube. Your prior post seems to have that crossed out. After installing this, YouTube finally works well at full screen on my Pi 4.
Avram – for YouTube (and screen tearing in general), the problem is a combination of the underpowered CPU freq combined with the outdated “graphic managers” that are setup/configured. The Pi firmware/software/configs are slowly moving away — ironically, they have provided everything needed in the firmware/OS, but have not enabled it (yet?). It’s just a matter of turning off the older graphic manager/rendering.
By the way, thank you again. I wrote an article about your method here: https://www.tomshardware.com/how-to/play-netflix-raspberry-pi. I did notice that Amazon Prime video did not work with this method. So how is it you turn off the old graphic manager and rendering if one just wanted to do that manually?
Hello,
I get the error “Invalid desktop-entry file” after trying to use the “Chromium (Media Edition)” entry from the start menu. I’m running raspbian version 10 buster with the pre-installed “chrome” package (Chrome Version 80.0.3987.162 (Developer Build) built on Debian 10.2, running on Debian 10.4 (32-bit)); replacing all “chromium-browser” strings within the chromium-media-browser.desktop file (in /usr/share/applications/) with “chromium” does eliminate the error, but Netflix is not working (it says no widevine, pls. check plugins etc.).
I installed “chromium-browser” via apt install (Version 78.0.3904.108 (Official Build) Built on Raspbian , running on Raspbian 10 (32-bit)), and after I did it, I was able to run Netflix (with the unmodified “Chromium (Media Edition)”); but I had problems with other websites after that, and now even not Netflix is working anymore (loads and loads and loads without showing something).
Strangely, with the “chromium-browser” 78-version, I have a better video performance with streaming sites, no horizontal lags/displacements/stripes (when the streaming sites like tv stations are working) than with chromium Version 80.
But anyway, thank you for your work and sharing this with us!
Thank you anyway
You, are a saint!
Thank you so much for this!
In addition to the other streaming service you can add britbox.com to the list.
I successfully configured a Pi3B+ using this resource, to stream content from britbox.com, a British content streaming service.
Audio played through Bluetooth speakers does lag the picture by approx second. HDMI output doesn’t suffer the same issue.
Will this work in Firefox? If not, is there a way to make it work?
John – it will not until someone ports libwidevine for arm for something other than ChromeOS (CrOS). Google ported an arm version of libwidevine specifically for ChromeOS. This is essentially the only reason this works on the Pi (and only starting with 3/3b/4+)
To make matters worse, Google has completely customized the port of the lib only to work with Chrome/CrOS, with compiled hooks in Chrome. This is actually why Chromium completely broke for some time and it looked hopeless (without custom compiling Chromium with the hooks).
Thank you SO MUCH for this. I’ve been looking for a good solution to run 2x video on TV without for about a decade. In the past, it’s always been half baked by using long HDMI cables, etc.
With this I can finally have netflix on pi4b and not have to worry about running cables.
I do have one problem though. If I put netflix on full screen, it becomes a blurry mess. Any suggestions on why?
Steve – haven’t seen or heard from anyone about this. Latest version of Raspbian?
Hi Ventz, I’d like to thank you for your hard work in first place. I have the same problem that Steve has, this only occurs when I put a streaming service in fullscreen. I have the latest Raspbian with all the software, firmware, kernel and bootloader updated (via rpi-update and rpi-eeprom with beta updates). I hope this information could help you replicate the problem.
Sebastián – thanks. I can only assume it’s the size of the output device. I haven’t had a chance to try with a TV/TV-size display yet. I’ve gone up to 30” and have not noticed this. One suggestion – and this will sound “silly” at first – try the same recommendation from the RetroPi project about removing the “HDMI intelligence/buffering” (usually called “Game Mode” on modern TVs). Essentially, modern TVs are a bit too smart for their own good. They do all kinds of processing/tricks with the HDMI signal. When you have something that needs to buffer quickly, without that thing having proper support (aka, Pi), it becomes a problem. See: https://github.com/RetroPie/RetroPie-Setup/wiki/Input-Lag
Steve – just replied to Sebastian about this too — see post for additional details, but essentially see if you can “by pass” the TV’s “HDMI intelligence/buffering”. Take a look at this: https://github.com/RetroPie/RetroPie-Setup/wiki/Input-Lag. I am assuming this is the issue because on a 30” computer monitor there are no issues. Assuming the TV (either size, or HDMI buffering) is causing your problems.
Great work!!!!!
Elegant solution to a sticky issue.
Just to let you know that your solution also work for streaming Showmax
Thinus – Thanks. Will add it to the list.
Don’t waste your time if you use a Raspberry Pi 3b.
It works but the framerate is just terrible even though I use the basic plan ~480p-ish.
I completely agree. With the option of the Pi 4 (which essentially completely eliminates the memory issues with the 4GB option – anything less than 2GB of ram is just a joke, with ~2.5GB really being the “minimum”), it’s a no brainer to use that. While this solution technically works on the Pi 3b, the cpu is too slow. In my opinion, the cpu is too slow even on the Pi 4, although if you get a case with a fan and overclock it it gets “better”.
The real solution in the futre for the Pi will be:
1.) A Pi with either 6-8 cores (or at least ~2.5 Ghz per core if left at 4)
2.) Better video/drm offloading to the hardware, specifically GPU
3.) Official libwidevine support for Raspberry Pi. Let’s face it – if Canonical decided the Pi is good enough to support and *certify* officially with Ubuntu 20.04 LTS, it’s time for Google to accept the same.
Pingback: Chromium Media Edition – z09.net
Is there any possibility of an aarch64 version? I am running Manjaro which is 64 bit and this does not work.
I can look to extract libwidevine if it’s available for aarch64, but the desktop shortcut/useragent will need to be customized as I can’t imagine that will work on Manjaro. Let me get back to you, i’ll take a look tonight.
squidink7 – It looks like the version being extracted is already from an aarch64 system (kernel), but the ABI is “arm”
(see here: https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices — specifically “ELM”)
I don’t believe they have the lib itself compiled for aarch64, but I could be wrong.
Ok, thanks for trying.
Hey so i’m running this on an overclocked pi zero.. (not trying to stream anything other than spotify) for some reason after all is said and done; when I go to open chromium media browser it gives me an hourglass for a second or two, and then nothing. Is this unnable to work on the raspi zero? i dont understand what would be stopping the browser from even opening (i did this on my 3b+ and it worked fine)
Bobobo – I have to say, some days I am shocked the Pi Zero can even run a desktop. But then, I still remember an university mail server running on a system no different in specs than the Pi Zero.
My guess is that it’s running out of memory and it’s trying to swap, but that said it should eventually open. I am extremely intrigued by this. Enough that I am going to go pick up a raspberry pi zero and get back to you.
It is a zero-W sorry I didn’t specify. But yes intrigued myself! Gonna keep sniffing and see if I can pop the browser.
Picked one up (zero-w) – it’s arriving by Friday. I’ll let you know what I find.
Bobobo – short version: the “arm-ness” is not the same on the Pi Zero (v6) as on the Pi 3/4 (v7/v8).
That said, even if it worked (I am going to take a look into it, again, purely out of curiosity), you are essentially throwing ~3-4 “cpu units” of requirements — just for Raspbian Buster alone, forget Netflix, at a “1 cpu unit” system (and a low CPU at that).
The UI boot up after a clean install on the Pi Zero took quite some time, although to be fair a large portion of the wait I am assuming was due to resizing a 64GB card. After that, by the time it updated the APT lists, the CPU load was at 1.8ish (load average: 1.27, 1.80, 1.44, which on a multi-core|cpu system is perfectly fine…but the Pi Zero has 1 core) I think it took over 40 minutes to install the initial APT updates.
During the initialization of the desktop, you essentially run into 44% to CPU piwiz and ~41% to the frontend
As you start installing packages, the system load increases 2-3x:
A clean reboot of the system causes CPU load averages into the 3x range:
The Pi Zero is just not powerful enough. Even the memory is “ok”, but the 1-core (and only @1Ghz at that) is killing it. More so, Raspbian Buster is actually quite heavy UI wise. I know you used to be able to strip down Debian and run it with X11 on a 256-384MB system with only ~500-600Mhz of CPU. It looks like currently you need 500MB of ram (which the Pi has, but again absolutely bare minimum) with at least a 1Ghz P4 CPU. Even at the absolutely bare minimum, which is “bootup” (vs usability) specs, I just can’t imagine how anyone could possibly run anything UI related on this. It’s essentially ~5x slower than the 3b+, with half the ram. For something music related, I can see a console based player, but for Netflix, my suggestion is to move onto a 3b+ or ideally a 4.
what do you mean by console based player? I’m just trying to somehow stream spotify from the raspi 0
Take a look at this project:
https://github.com/hrkfdn/ncspot
Essentially, you want an ncurses solution, and ideally with the non-Ui (“server”) Raspbian version.
thankyou so much. I will add – mine stopped working today on Netflix today (and I don’t know why). I will try to re-use the command and reboot… any ideas what would trigger it to stop working?
Thanks again – my Pi 4 has replaced my Dekstop
Sam – good to hear. I am not sure what would cause it – do you mean as a one time or permanently/it doesn’t work currently? It could be an older OS, older browser, something cache from Netflix pre-this being setup. Did it work after a reboot/re-apply?
Amazing job, this has helped so many people.
Quick question what happens when chromium browser is updated?
– Will this solution break, and will running the script again fix it for the new version?
– Will the Media Edition automatically keep the the same version as Chromium Browser since it shares resources?
– Will it continue to work but remain at the Version 78.0.3904.108, while the main browser updates independently?
Similarly will libwidevinecdm.so also need to occasionally get updated?
Finally as a suggestion, would it be possible change Chromium to Chromium (ME) in the title bar.
This is so that we can identify which version of chromium we are running, the default version or edited one for netflix.
Alternatively is there another way of identifying which version of chromium is open.
Clint – thank you.
* Yes, as Chromium is updated – this will continue to work. The one exception obviously is if they changed the way libraries load all together, which was done at one point and they seem to have backed out of it.
* The entire goal originally was to have something that works with the latest/patched Chromium as there are many serious security vulnerabilities that Google and the Chromium project patch, and I didn’t want an old “pinned” version that worked perfectly with Netflix but was out of date and insecure. You may have to re-run the script if Chromium blows away the whole “libs” directory (it would be strange, but I have seen it happen in the past). This is the one nice thing about the “1-line” approach — you can re-run the script as many times as you want and it should just fix tings.
* The “Media Edition” is just a shortcut to your default Chromiium install. It’s truly the same version with just a command line fed user agent that’s “static” to all launches. As you update Chromium, it will *always* work against your system installed Chromium. Hopefully this answers your question about v78 too — it will always be against the latest Raspbian installed Chromium version.
* Short answer: Yes, libwidevinecdm will most likely need to get occasionally updated. There are two answers here technically – the current version should continue to work with new Chromium updates. This was the case previous too, until Chromium changed their API/hook framework substantially enough, and specifically changed one component around how they hook in external libraries. In the past 3 years, they have done this twice. Once it was very “minor”, and once it was substantially enough that it broke things completely (for one of the changes actually, if they had not backed out of it due to users complaining — it wouldn’t have been possible to do this and continue just to load libwidevine as a drop-in library)
* Changing the title/bar – I am not sure to be honest. You can take a look at all of the available command line arguments here: https://peter.sh/experiments/chromium-command-line-switches/ (On first pass skimming it, I want to say no – it’s not possible)
The easiest way to differentiate them while having them open is by changing the Icon. You can drop another one over the shortcut/edit it in properties (or if you have the name of a “system deployed” icon, edit it in the chromium-media-browser.desktop” file under “Icon=”).
In reality however, it should not matter since it’s the same Chromium version (different user agent) as your system one.
Hello Ventz, Hello to the rest of Pi4 enthusiasts.
Thanks to Ventz I finally got disney+ and therefore prime running on the Pi4. Unfortunately the stream is running jerkily on both platforms. Even overclocking does not fix the issue. My internet speed is sufficient. Using a laptop, tablet or anything else it is running smooth. I connect the pi to a 48″ LG TV (it is HD, not even 4k). It is o.k. in a smaller window but on full screen it is bad. For checking sound by playing a youtube video i also noticed choppy sound. Any Idea what the issue is here? Powersupply delivers up to 3A.
I am connected directly via Gbit/Lan to my rooter.
fmb – It’s interesting – some users here have reported that with Disney+ and others report no issues.
I am really starting to wonder if they have different versions of their online platform depending on country, and/or if they transcode their content differently.
That said, I have not tested this with anything outside of a computer monitor — the larger display could absolutely be adding to the issue.
Have you tried a different TV/turning off the HDMI pre-processing (most TV’s call this “Game Mode” — see the RetroPi wiki for a lot of information about this)
The other guess I would have is trying to match up the output resolution to your TV resolution (again, really interesting article on this from the RetroPi people). Essentially, when content has to be “real time” converted, it ends up taking up a lot of resources and it causes lag/tearing/etc. My guess is that this is actually the problem.
Thanks for your thoughts,
i will try this . 😉
Hi Ventz, Hi fmb,
i have nearly the some trouble with jerking independly of the platform (Disney+ or streaming Live TV), With a Sony Playstation it works pretty well at the TV Monitor…
Matthias
Disabling compositor for me breaks full screen videos on 78.0.3904.108-rpt1. See photo: https://photos.google.com/share/AF1QipMOFJl-A_bTl39DpP55gg_WxVhYI3qQVKbqgsqVU2APUjINjooZy26qREETEMY9vA?key=dGZHTXd2YTZtTjdCRVBhRlBTNkZtYnpvVjR3akZB
If I try to install chromium instead of default chromium-browser:
Must add that v80.0.3987.162 works fullscreen, but wildwine doesn’t.
On v78.0.3904.108-rpt1 wildwine works but full screen breaks.
Pavel – I haven’t tested it with versions other than the latest default of chromium-browser that comes with Raspbian Desktop.
I know that on the latest Raspbian Desktop it works in full screen with livwidevine.
Out of curiosity, any reason that you are not using it/installing a different Chromium version manually post term?
I figured out the problem, I was running experimental v5.4.35-v7l+ kernel that has major bugs with disabled compositor. Downgrading to stable fixed my problems and everything works near perfect with an occasional missed frame in Netflix! Thanks for the scripts and guides!:
There are 2 different official chromium version for raspbian, chromium and chromium-browser. Check yourself:
chromium seems to be compiled for Debian armhf and has much better performance for me personally. No 1080p screen tearing whatsoever without any hacks and based on my experiences, does not use compositor. Also does not work with your libwidevine
chromium-browser seems to be the real official chromium by Raspbian team and suffers from the screen tearing and other performance issues. Does work with your libwidevine
Any way to unsubscribe from all emails?
The unsubscribe link in the email brings error 404
eg:
https://blog.vpetkov.net/comment-subscriptions?srek=3f00621aca06c4f49105994286280638&srk=9e51026acb83cf7a125c223c5792c00a
Pavel – Very sorry that you are running into that. Removing manually (wanted to reply here first)
Ill look into the comment/email plugin and see what is causing this.
Pavel – unsubscribed. If you still see this, were you trying on mobile? I was able to use the link you posted on a desktop.
I searching a solution to view netflix offline….with the netflix app on android and windows it is possible.
Is there any idea on a raspberry?
Andy – to my knowledge, no there isn’t on the Pi. This is essentially what libwidevine (DRM) prevents 🙂
Hello Ventz, looks exactly for what i am searching for 🙂
Sorry that I need to bother you with such newbie stuff but since you refer to rasbian buster-lite which comes without a desktop I do not get how to enter any kind of application menu.
fmb – No problem at all, and sorry for the confusion. This is the image:
“Raspbian Buster with desktop” (https://downloads.raspberrypi.org/raspbian_latest)
vs
“Raspbian Buster with desktop and recommended software” (which is 2x larger, and not needed — and you can get any of the software that you need anyway via APT)
I can see how this was confusing since the “server” (no UI) edition is actually now called “Lite”. Sorry about that.
If you already have lite, I think someone else here just installed:
xserver-xorg raspberrypi-ui-mods cromium-browser
And that was everything you needed for UI.
Hey Ventz, thanks for the quick reply! You are great!! I am installing the pixel desktop onto the Buster lite right now and after that the chromium-browser. Let‘s see how this will work out…
It works!!!! I had to rerun the curl command but than it worked….thanks a lot. I was looking so long for a solution 🙂
Fantastic! And thanks for confirming this worked!
I would suggest a tip jar to support your current work and future developments. Please do set one up if you have time.
Daniel – much appreciate the offer. I am really just doing this for fun/as a hobby. This is also one of the main reasons I have not monetized the blog/added ads/etc.
If you don’t mind however, I would very much appreciate a link on forums/other places that are asking about how to do this or running into problems, and mentioning that it worked for you (if it did in fact).
Thanks!
I’ve mentioned this in a couple of sites. I think I posted a link in comp.sys.raspberry-pi, but no one showed interest. I get the sense that there isn’t much overlap between Pi-ers — who are typically trying to set up a system to remote-control a drone over Antarctica that collects snow reflectivity data, or spending their Sundays rebuilding the Linux kernel — and the people who want to stream movies. The latter are mostly using Hulu, Chromestick, Firestick, or some such and would never grasp how to set up a Pi. The beauty of your solution is that it cuts out all those middleman services and is cheap/easy to repeat for multiple TVs. But few understand that. Maybe you need to advertise it on late-night, broadcast TV, and offer to provide a free Ronco vegetable dicer with each order.
Ha! 🙂
Thanks for sharing your work. Unfortunately it’s not working on a RPi4 Kali.
It fails when launching chromium media edition with the error:
Failed to execute child process “chromium-browser” ( No such file or directory). I changed the shortcut but even though the chromium media edition can enter netflix, it fails to play movies due to widevine plugin not activated…
I can’t enter chromium settings cause chromium crashes. Can you tell me what packages to uinstall?
I mean, to uninstall
Pepe – For any installs that are not on Raspbian (currently Buster), in order to “port” this, you need to figure out two things:
1.) What/where is the Chromium launcher, so that you can clone it (or modify it) with the CrOS static user agent.
2.) What graphic “layer” is being used and how it hooks into the system – this is the slightly complicated one – and it directly impacts performance, GPU rendering, screen tearing, etc.
Fantastic! You are great!!
Have you ever though about getting chromecast functionality into Pi? There is raspotify for spotify, There are solutions for youtube but i haven’t seen anything for netflix / hbo.
Best regards,
Grzesiek
Grzesiek – thanks. I haven’t even though about it to be honest, but my thought is that for those that have a Chromecast stick/TV that supports it, they will probably just cast from their phones? Most TVs at this point also have some sort of “smart app” alternative for Netflix, Spotify, etc.
It’s funny, this originally started with the idea of just 1.) getting Netflix to work on the Pi, and 2.) making it easy/open/transparent. I didn’t even think there would be so much demand for it 🙂
Sure! Casting frome phone is imho the best user experience… But chromecast is not ideal. You can’t play sound through stereo for example.
Media players are popular topics. RPi would be perfect if not for DRM issue. And your solution is easy and is WORKING 🙂
Yes you can! I have my chromecast plugged into my AV-AMP (that forwards image to TV) so I have great cast on TV and AMP sound. What I could achieve with this kind of solution is (was, because I can’t) having image on TV, via RPi4 , and sound on BT headphones paired with RPI4.
I already done that via Raspbian and a Kodi with Neflix support, I was trying this solution with a much lighter approach with an RPi4 Kali image…. Not yet achieved.
Thanks Pepe!
It’s not an option for me, because:
a) I own an old fashion stereo amp (no hdmi in/out)
b) I have usb DAC attached to RPi which sounds great and it would be waste not to use it :/
and bt headphones is nice idea too!
btw netflix on kodi didn’t work for me… at first video quality was very bad (low resolution, colors washed etc) and after some time it stopped working at all…
Grzesiek – Ahh, that makes sense. So just to summarize your use case, you want to watch Netflix on a screen somewhere while using the old amp for the audio? (splitting the sound). If that’s the case, the goal being specifically only to cast the audio channel and not video?
Have you tried something like this (https://www.joshbialkowski.com/posts/2017/streaming-sound-between-devices.html) btw?
I know there are a few other projects about “streaming” and “catching” audio on linux/pi/etc, ex: https://www.balena.io/blog/turn-your-old-speakers-or-hi-fi-into-bluetooth-receivers-using-only-a-raspberry-pi/
Ventz,
Thanks for the links and sorry for my English, its not my native language. I’ll try to explain it better.
Thanks to your solution 🙂 main goal is achieved, which is I can choose which device is playing sound (hi-fi or tv or BT headphones) when I’m watching netflix/hbo go. In case of TV I just cast from phone to chromecast because its easier. In case of hi-fi I can’t use chromecast, here comes RPi connected to TV by hdmi and to hi-fi by usb (and DAC between).
Now, another level is to use RPi as chromecast just to make things more user friendly
as running chromium is not as easy as casting from phone.
My guess is it should be possible with video streams because I can cast Spotify to RPi. Balena.io is one way to do it.
Josh Bialkowski’s method is very interesting. I didn’t tried it yet and I’m not sure if I understand it correctly but I think it’s audio only.
Hi, I just tried with a fresh install of Raspbian buster (full) in Rpi 4, after
sudo apt update && sudo upgrade
I tried your script (as indicated), rebooted and it doesn’t work. Should I try with buster light? I’m also surprised that the libwidevine is only 5 MB, wasn’t it supposed to be very heavy? The reason why we download it from your server being? What is the original file?
Thanks
I got it to work with Raspbian lite. Thanks!
drupa – Great, and thanks for sharing. What was different the first time you tried it when it didn’t work?
Yes, libwidevine is tiny for all purposes. You definitely don’t have to download it from me — I just extracted it from the CrOS recovery image to make it easier for most people since they won’t be able to do this themselves. You can see my dev work here: https://blog.vpetkov.net/2019/07/12/netflix-and-spotify-on-a-raspberry-pi-4-with-latest-default-chromium/
Here is the latest version+checksums so you can verify it yourself if you extract it:
version: 4.10.1610.6 (see optional script below how to check version)
filename: libwidevinecdm.so
md5sum: 6857e5f102651bfa977eb739b86bf75e
sha256sum: 678c21b5ebf459919f9dcde100af8f59e580b6bed56b1cae1ae5eb43a7029e17
You can pull the Chromium CrOS image here from Google (here is the one I am using, but really any Chrome OS variant that gets updated often will work): https://dl.google.com/dl/edgedl/chromeos/recovery/chromeos_12739.105.0_elm_recovery_stable-channel_mp-v2.bin.zip
If are familiar with the linux tools/a bit about forensics (ex: things like kpartx, partition tables, etc), I actually encourage people to verify that the one I have is the same one as I want full transparency.
Its not working for me and ive done everything you said
ttango – I need more info than that 🙂 What version of the raspberry pi hardware? Check your OS/revision/etc.
If you can setup a brand new Raspbian Buster (latest) install and run the script (over ssh) – as of 5 days ago I personally confirmed it worked. Per the Apache logs, it looks like over 30K downloads have occurred within the last 24 hours so I can only assume it’s still working.
After a lot of struggling trying to play movies on mubi.com from the rpi4, I finally found this great article and it solved the problem. You can add MUBI to the list 😉
Lionel – great to hear! (and done – added MUBI to the check-ed list)
Thanks for making this so simple. I can watch Disney+ and Netflix without issue but Hulu Plus is looking for my location and can’t find it, so it’s not working. Do you know how I can correct this issue? I’ve tried multiple times to format card, used different cards, different OS’s, wireless and wired connection. Latest update, upgrade, and rpi-upgrade.
Pi 4B 4GB, latest release of Rasperian Full OS, 128GB SD, OC’ed CPU to 2Ghz and GPU 625Mhz
Try using the default Chromium shortcut to go into settings, and disable location. (Settings -> Advanced -> Site Settings -> Location -> Disable it for Hulu).
I wonder if this is something new/country dependent because I haven’t seen this it yet.
I have tried doing that and I am still getting the same message. I do have a subscription to Hulu Live and I am not sure if that can be causing it, as it looks for my location to be able to determine my local channels.
“Share your location with Hulu”
“To make the service available to you, Hulu needs to know your location while you are using the website”
Ah, if it’s Hulu Live that makes perfect sense (that you need location), since the content is different based on geo areas. Unfortunately, I don’t have the service and I don’t have a good way to test it.
You can try some VPN service like Nord VPN..set up another location and it should be fine
you need to install it like Chromium browser extention..and use your username/e-mail and your password..
I’ve tried your script and wanted to use the “chromium-browser” along with a very minimum setup with xorg and openbox (requirement for my project). I just used the first two tasks of the script, the other things for the tearing issue I left out. But I had no luck to start that chromium-browser whatsoever ( and yes, I’ve changed the path to absolute “usr/lib/chromium-browser” in the desktop file). Chromium itself starts very well.
My fresh setup:
Raspi Pi 4 Rev. 1.2
OS: Raspbian ‘Buster’ Lite (!) upgraded to latest
Installed: Xorg-Server, xinit, chromium, some extra codecs for gstreamer, network-manager, pulseaudio and your script.
My desktop file:
Deleted Lines:
“X-AppInstall-Package” (thought that might be an issue for the package manager)
My thougths:
· Is it possible that the “chromium-browser” from ChromeOS needs a Path to a folder named “chromium-browser” in /usr/lib?
Maybe you have an idea.
Regards
Max – given your custom use case, you really just need to re-create this manually essentially 🙂
So breaking this down into manual steps, the first is to make sure libwidevinecmd is in the path needed (the lib path sadly is hard coded into the Chromium project itself, so that you cannot change).
No matter what desktop/display manager you are using (so ignore that for a bit, and potentially tearing/etc), it really comes down to having Chromium launch with the user-agent provided as a startup param. The way you can test this is manually from a terminal feeding the –user-agent=”…”
If it works for 1.) picking up the new user agent and 2.) picking the decoded content (try something like Spotify which seems to not cache as badly as Netflix) — you are good. If this works, then focus on the desktop shortcut, and I would suggest cloning your existing one/looking into what’s needed for openbox.
After few days I finally have some time and can try your steps, thankfully.
Maybe I’m not able understand this correctly what you mean by » make sure libwidevinecmd is in the path needed«.
Didn’t I understand this correctly that your script downloads an extracted “chromium” browser from ChromeOS with (!) the plugin already and should replace the original binary of chromium? I can’t download the plugin (libwidevine) alone and put it in the path needed, right?
In your script the line
moves “libwidevinecdm.so” to a directory or should it be an executable file within the “/usr/lib” Path named “chromium-browser”? Because my standard chromium installation root directory is “/usr/lib/chromium” not “/usr/lib/chromium-browser”. Could that be an issue?
Okay, I made a stupid mistake: I installed the “chromium” package (development version) not the “chromium-browser” package, hence the issue.
I did a fresh install from scratch of everything and it worked now. It is terrible slow maybe more RAM for the gpu will do the trick.
Thank you very much, Ventz!
Max – I was about to reply to the earlier comment and saw the next couple. Good to know it’s working. Depending on the site/etc, it may need more ram (ex: I noticed Netflix vs Hulu use very different amounts of ram). I don’t have a good answer for you — I use it for Netflix and the default seems to be very good. That said, Netflix also goes out of their way to transcode everything into the most optimized/efficient manner, and their player is tuned as much as possible. Hulu is on the other extreme 🙂
Play around with the GPU ram allocation – if you find something that works better, let me know and we can test it and potentially auto updated/set that.
I just got a raspbery pi4-b 4gb, and I was going nuts finding how to install the right stuff to be able to play netflix, and other “chrome” based streaming, thanks to you, it just works!
Thanks!!!!
S
By using your one line command i was able to run Disney+ on the Pi4, thank’ a lot. But i still have a kind of jerking (sometimes)- any idea how to get rid of?
Matthias
Thanks a lot for your great work.
I’m using a raspberry 4B, 4GB RAM with Disney Plus and still have some light performance problems, kind of jerking with1920x1080 😩
Best wishes
Matthias
Matthias – can you try changing your resolution to 1920×1200? I haven’t tried Disney Plus for screen tearing, but in Netflix it seems to be fixed after getting rid of the default Raspberry pi desktop composer (already in the script).
I tried to enforce 1920×1200 in the config.txt but the HDMI or the monitor set it to 1920×1080
Matthias
This may sound stupid, but which show/movie are you seeing the tearing problems with? I just tried Avengers without any tearing issue, and that one has a lot of fast action scenes. Do you mind trying Avengers too? Are you seeing the tearing problems with Netflix/other services?
Hi Ventz, I watched the Mandalorian on DisneyPlus. There is no heavy tearing only light jerking
But playing the testing test on YouTube with full screen there were heavy tearing, in window mode no tearing.
Sorry, tearing test…
Hi Ventz,
do you have any further ideas to solve the issue (settings in config.txt?)
Matthias
Matthias – I can’t seem to replicate this. Stupid questions/comments to follow, but:
1.) what did you use for a base? (raspbian buster lite vs desktop with no additional installs vs full loaded 2.5+GB one?)
2.) what size screen are you outputting to
3.) can you try raspbian “lite” with manually installing the X component?
4.) can you try on a smaller screen?
5.) verify/swap out HDMI cable – I know…but I have seen this in the past believe it or not
6.) Just for kicks – adjust GPU ram + (if you are ok with it) overlock the CPU
It’s something small that’s different somewhere for you, and it won’t be easy to figure out what.
Hi Ventz,
sorry for my disability, i used the wrong Raspbian version – now it works perfect.
Thanks again for your help.
Matthias
I am still getting the following error.
“Your web browser is missing a digital rights component. Go to chrome://components and under WidevineCdm, click Check for update”
there is no components by the name WidevineCmd either in chromium default or chromium media edition.
Are you on a clean install of the latest Raspbian with no custom modifications?
I am running VERSION=”8 (jessie)” with no custom modifications. Will it not work on this?
Amaren – I’ve only created + tested this on Raspbian. There are quite a few differences between Debian and Raspbian (even though Raspbian is based on Debian), especially around app launchers, graphics, etc. I decided to go with Raspbian due to the better raspberry pi firmware/kernel/support overall. In this case, you can try to clone the Chromium shortcut, wherever it is, and then modify the clone to include the user-agent strings.
Thanks Ventz.
The upgrade did not work.
I did the fresh install of raspbian_lite version 10, (buster).
Next installed
xserver-xorg r
aspberrypi-ui-mods
cromium-browser
Now i can stream amazon prime videos on my raspberry pi. Thank you once again.
Amaren – great to hear! I am glad it’s working!
You need to install latest version of Raspbian, it’s called version 10 Buster..version 8 Jessie is old…you can download it from official site and do a clean install and after that install Ventz’s script and i promise to you it will work flawlessly!
Tommy – thanks. Amaren, here’s the direct download: https://downloads.raspberrypi.org/raspbian_lite_latest
Thanks alot. Iwill try fresh install if upgrade doesn’t work.
If you can, I highly recommend a clean install. It’s so quick/easy on the Pi, and a lot of “broken” things will go away. If you were Pre-buster, it’s one thing, but Jessie is *really* old.
Thanks I just upgraded to stretch tonight. Next upgrade to buster is planed next.
I’ve been waiting to ditch the old 2012 Mac mini I was using as an HTPC, but could never get a Desktop, web browsing, Netflix, and Plex all working on a pi4. With this I was FINALLY able to check all the boxes and now have the pi4 at the core of the home theater and it only pulls about 5 watts while streaming. A huge thank you!
C – Awesome!
My kodi on libreelec will still have a DRM Update based on the current Chromium “12739.111.0”. The auto-updated in input-stream plugin didn’t work properly and stop at around 80%.
Therefore I have run your mentioned script to update the libwidevinecdm.so to version “4.10.1610.6” over ssh. But still the same problem!
Can’t not find the point where i can change the “user-agent” to “Chromium (Media Edition”: Application Menu (top left) -> go to “Internet” -> open “Chromium (Media Edition).
Used plugin: JOYN and TVNOW
Tobias – you don’t have to setup the user-agent/ or anything really. Everything is auto setup on a new install. Just run the one-line curl+execute on a new Buster install and it will simply work.
Amazon video works great but Amazon Music still faults out with the browser not supported message. Is DRM settings different for Amazon Music vs Amazon Video??
Ralph – I haven’t tried Amazon Music, but it looks like this is not related to the RaspberryPi? Take a look at: https://support.google.com/chromebook/thread/7951660?hl=en
Man you are THE god we were all waiting for. Congrats. Ve been looking all around the web and only uou got this simple working solution.
greets from france, where we have the exact problem with a subscription streaming platform called “mycanal”
Best
Burt – I am glad you are enjoying it 🙂
it’s work thanks !
Wonderful stuff, man. Just got me a clean install Debian Buster Minimal Desktop and ran your script.
Logged in to NF, wow!
Out of curiosity I put back the compton stuff from /root/. This does nothing to my system.
Maybe in the end is not necessary any more?
Anyway. I ran the “Test Patterns” episodes off NF and the result is 1280×720@30fps atm.
I wonder if it is possible to change video resolution to 1920×1080 (account is full-blown) like in Edge browser.
Just in case you need a challenge…
Thanks again for your work. I’ll spread the news to my mates.
Frank – great!
Yea, compton achieves nothing. In fact, it ends up breaking a few desktop things.
Let me take a look to see if the higher resolution is possible. I suspect it could be done via the pi’s config.txt, specifically looking at the sdtv_aspect and hdmi_mode flags. Or maybe even just customizing it all via hdmi_cvt.
Just to say it more clearly: My screen is already full-hd and the NF video is kind of upsampled in full-screen mode. Aspect ratio is fine and fallback to windowed mode works flawlessly.
Pressing the magic code CTRL – ALT – SHIFT – D while running a NF video unveils the picture resolution is 1280 x 720.
Whereas the Edge browser on the Win10 system reports 1920 x 1080 when watching the same stream.
Maybe it is not so much about config.txt but more about the agent string.
As written here: https://www.digitaltrends.com/home-theater/getting-hd-netflix/
Chrome is going to have 720p which is what we observe, while Edge and Internet Explorer are going one step beyond.
Me wonders if it is possible to Chromium pretend it was IE or Edge. And maybe the widevine thingie is a limiting factor as well.
Ok, i do not want to be too much stressing. Have fun, though 🙂
Tried to change the user agent… cant work at all. video not even playing…
Daniel – you don’t need to change the user-agent/anything really. Just run the one-line curl+execute on a new Buster install and everything will work.
Hi, im totally new on linux and such things.
I was using the user agent change to bypass the drm problems with netflix, i already disabled the user agent extension (i guess is the one i installed) but when i use netflix the audio and video seems laggy.
Im using 1280*70 60hz and 132mb video.
Any advice? thanks !
Dmn – I am not sure what else you have setup/configured/etc, but if you have a clean Buster Raspbian install, the one line automation above 100% works without any video/audio lag. I would recommend just doing that.
I am testing the automation every few weeks just to make sure it still all works, and as of tonight it’s still working perfectly.
and the video memory its ok? i will try a clean install later too
Yea, the default is fine. You could adjust more into the video card if you want, but I haven’t seen a need for it unless you run 2 displays.
@Vent
Is it possible this line in the original script is causing the screen resolution problems?
echo “xrandr –output HDMI-1 –mode 1280×720” >> ~/.config/lxsession/LXDE-pi/autostart
I’d like to know more about the new screen tearing fix, are you disabling the default compositor and deleting it’s config file or just deleting the config file?
Otaku – correct. The whole config (~/.config/lxsession/LXDE-pi/autostart) is not needed. Feel free to remove it.
Same for compton.
I dug into the source code for the Pi and later into the raspi-config — it turns out the Pi3 and Pi4, which for our purposes are the devices people would use for “Media”, already have the “FAKEKMS” (vs Legacy — and the “Full” is not implemented yet funny enough). The Fake KMS is for all purposes a Hardware offload currently on the Pi 4. The problem is the legacy Compositor. If you look at the Pi config source here: https://github.com/RPi-Distro/raspi-config/blob/master/raspi-config#L1497 — you will see how they turn it off if you choose the advanced option for it. So short version, get rid of the compton package and the configs for that and xrandr, rely on the Fake KMS (as of Buster enabled) and remove the legacy Compositor — and let linux do the right thing 🙂
YOU NAILED IT MAN! its was something thats bugging me for soooo long. Thanks a gazillion bro!
Daniel – thanks! 🙂
After 5 hours of searches and attempts at a solution…
THANKS a MILLION!!!!!
Glad you found this easy! 🙂
Ventz Hi.
Yea, Compton, that’s a screen-tearing fix… no doubt, but it’s doing something strange to my dual-monitor setup. It’s moved everything out of picture. i’m sorry, i’m quite ignorant of this stuff m8. It’s moved the whole screen my left, as I face my screen. ? So in order to close a window, for example, I have to do it blind, as in, move my mouse a couple of inches to my right, then hover on the same horizontal plane, to min/max/close a window. ? Apologies. I’m actually a bit of an egg with this stuff. i’m sure there’s a simple fix. Thanks for your attention.
Bill – No worries at all. Compton as it turns out is not the right solution for the Pi. Exactly as you discovered, it messed with a lot of other things, while fighting with some of the “borked” Pi defaults.
Check out the new update from the last 24-ish hours. This will fix the screen tearing 100% (I’ve received 50+ emails so far from people that it has worked for them, including a few people here have replied).
Make sure you run the following after you re-run the script:
And then reboot.
This will fix all of your issues.
Ventz… Wow ! Once again m8… I just tried that “Compton” thing… Shit m8.. That’s the first time I’ve seen that. !?
No “Screen-Tearing”, on a Pi !? Is anyone out there in Pi-Land watching this. ? I’ve just gotten used to the screen ripping apart when I move windows around. ? I just tried the “Compton” thing… and for ME, yeah baby. ! :^) No tearing… ! But… not sure what happened, because my screen resolution somehow got mucked up in the process, also I couldn’t close the CLI window I was in ? So, I had to reboot back to screen tearing again… You’re really onto something here m8. The big-boys are gonna poach you soon man, and we’ll never hear from you again. Thanks m8. Great Stuff.
Top man, worked first time 👍 the pii is getting put to good use finally 😝
Thumbs up! +1. Works perfect.
Matt – great to hear! 👍
Everything works fine and i want you to thank you very much for great job you done..:-)
Just want to ask , is there any way to get rid of screen tearing?
Thanks! 🙂 — if the tearing is still happening, I need to double check the compton config/launch, because it’s supposed to be fixed. Is the tearing happening after a reboot? Also, if yes (after reboot), can you type “compton” manually in a terminal, and then try again and see if that fixes it? (If it does – I have some more work to do)
I did everything you advised and tearing is gone only when browser is in windowed mode..in full screen tearing is still present
and one more thing..when i reboot system, screen resolution goes from Full HD 1080p to 720P every time..is that how’s suposed to be?
Let me look into this — I want to fix the screen tearing once and for all for all resolutions, full and window-ed. It’s turning out to be a lot harder, but I think I am getting close to figuring out the PI/GPU offload/window management options and how each one influences everything else. I’ll get back to you.
Tommy – ok, so I think I actually fixed the screen tearing problem.
I’ve been making changes, and watching the same action scene in Netflix over 20+ times now :).
I think all of this was related to Compositor and the way the Pi offloaded the graphics. I don’t even think Compton is needed.
Try re-running the curl + sh with the latest version (and reboot please), and let me know if you still see tearing.
Man! You’re the man! Thank you very much !
I just updated the script and rubbed it again and this screen tearing seems to be gone…in full screen Netflix and also in mpv despite it being used in software rendering…
The thing is that in mpv for example or Netflix even with no dropped frames I had this tearing getting me crazy…
Netflix not in full screen still does it…but I only use it full screen so it if ok..
Would you mind sharing a little bit more details about what is causing the tearing? I looked at the script and got what is different…but I would like to understand how you got there and why…
Thank you very much!
Aaron
Aaron – basically the Pi is using a really *really* old X-display system, and it’s not powerful enough to offload graphics onto the CPU. Alternatively, GPU offload would be great (and that is powerful enough), but it seems it doesn’t exist yet.
Thank you!
Anyway really thanks again..because you made things a lot better…
Let’s hope that full hardware acceleration through GPU comes soon…
Cheers Ventz! :-)..everything works perfect now!Screen tearing is gone both window-ed and in full screen mode..Big Big Thanks! 🙂
Just one small problem..still after reboot resolution need to be fixed..natively my screen is 1080p, but when i reboot it’s drop back to 720p..other then that it’s Flawless..
Tommy – run this from the terminal as the Pi user.
And reboot.
Can’t thank you enough mate..this is a game changer..:-)
Btw, you’ve fixed screen tearing in Youtube as well..:-)
I wonder if anyone knows about Hoopla. I did the install above. Worked fine. (Except I can’t open the Chromium settings without it erroring.) But Hoopla says I don’t have a supported browser. I tried a userAgent switcher and tried several UAs, checking online to make sure the UA was being broadcast as expected. Nothing worked. Maybe Hoopla’s checking other things? It’s discouraging. I bought a Pi mostly to use Hoopla without having a computer having to sit next to the TV. I had no idea the media landscape was such a mess.
JP – Yea, media on the PI (due to Chromium sucking for “3rd party DRM stuff” combined with “not existing for ARM architecture). I started this literally as a challenge to see if it could be done. Let me look into Hoopla. I need to create an account, but if a local library has access, I’ll see what it takes and try to add it.
JP – Hoopla definitely works. Just created an account and linked against my library card. Here is a screenshot: https://ibb.co/4TDYMvW
Thanks. It’s very generous of you to spend time on this. I’ll keep trying and maybe just remove the whole business, then try your script again.
I got it working. Thank you for your efforts. If you hadn’t tested it yourself I would have just assumed it wouldn’t work. The problem was something I should have thought of: I’d tried logging in before installing your package. Hoopla told me I didn’t have a compatible browser. A couple of re-installs of Chromium and your package didn’t help. Different UAs didn’t help. Then I deleted the user profile folder before re-installing Chromium again. (Under /home/[username]/.config/) That did it. It works fine.
Awesome – we can add Hoopla to the list now 🙂
Hi, thanks for the great job, was able to get much further than without any of other tutorials out there! Nevertheless if I start playing some Netflix content I get Netflix Error code C7701-1003. The option “Allow sites to play protected content” is enabled in the “stock” Chromium. I can’t check it in the modified version since the Settings page always crash after 1-2 seconds but I assume these options are mirrored. Could you please suggest what I can do? I feel like I am so close… 🙂
JZ – sounds like your sessions/cookies/etc are still present from when you have tried before. Try clearing everything, quitting, and re-opening the Media version. I’ll look into the settings/crashing bit.
JZ – for the settings – just go to the regular Chromium and open the settings there. They are the *same* settings. The reason it’s failing to load the Chromium “Media Edition” settings is because it cannot parse the set Language for Chrome OS … given that there is no Chrome OS 🙂
I’ll update the blog post with this information.
It was my bad, I was trying to run this under Ubuntu. Your screenshot in the post above pointed me into the Raspbian direction. Thanks again!
Just thought I would add that, I’m a complete egg, when it comes to this stuff, but this time, I followed the author’s instructions … absolutely to the letter… and it works… for ME, that is. I’m on a RPI 4, 4Gig. I have encountered a problem when I’m running the modified version, namely, accessing my “Settings” in Chromium, but, if I run the other verion I can, so it’s a minor “niggle”. So yea, great stuff. I have Spotify, Youtube, and Netflix accounts, and previously had a nightmare trying to “Authorize” doing the”Google OAuth” nonsense, especially through Kodi on a Raspberry Pi. ! Forget it. ! Great stuff m8. Keep up the good work. Give me your address, and I’ll send you a Pavlova, and a case of Corona. They’re giving them away free here, at the mo’. :^(
Bill – HA! Awesome to hear. And appreciate the offer 🙂
Hi
I’m new at this, I ran your commands successfully and rebooted my pi. What’s next? I start chromium (media edition) and search for Netflix?
Yep. Under the Application menu -> Internet -> there will be a “Chromium (Media Edition)” — simply use that shortcut (sets user-agent) for Netflix and other media.
Thanks
Still can’t get netflix working. Says it needs HTML5, silverlight 4 or 5 to run (I just got my first pi today so I’m really a novice)
B – it sounds like you are using the stock browser rather than the setup profile with the modified user agent.
That is, your user agent is not correctly modified, which means the profile is probably not setup.
Did you get any errors during/after running the script? I need a little bit more information on what the state of things are.
These are marvelous lines of code and magic all around. May God bless you for this.
Hi! Thanks for doing this, but it’s not working for me unfortunately. I get the same error message that I did before. Get in touch if you want to troubleshoot!
MD – what doesn’t work/what error are you getting?
“Unsupported Browser”: “This web browser isn’t compatible with Prime Video. Please use one of the following web browsers: – Chrome (latest version)”
I have Chromium V 74.0.3729.157
Mike – that’s an extremely old Chrome version and you are running into Amazon’s minimum requirements here 🙂
Please install the latest Raspbian (v10 – buster). It comes with Chromium v78.0.3904.108, which is fully supported by Amazon Prime.
dammit….
Thanks!! Works now!
Bloody brilliant stuff m8. ! If I could get out of the country, I’d come and buy you a beer, or a cup of tea. :+)
Stuck in New Zealand here m8. Nobody’s goin’ anywhere, quick. !
Cheers. Thank you very much. Regards… Bill.