Last Update: 5-6-20 | Specify that “Raspbian with desktop” is assumed and tested
Last Update: 4-7-20 | Fixed screen tearing

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:

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!

164 Thoughts on “Raspberry Pi Netflix One Line Easy Install – along with Hulu, Amazon Prime, Disney Plus, HBO, Spotify, Pandora, and many others

  1. John on May 24, 2020 at 12:12 am said:

    Will this work in Firefox? If not, is there a way to make it work?

    • Ventz on May 24, 2020 at 10:15 pm said:

      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).

  2. Steve on May 22, 2020 at 4:41 pm said:

    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?

  3. Thinus on May 22, 2020 at 4:06 pm said:

    Great work!!!!!
    Elegant solution to a sticky issue.
    Just to let you know that your solution also work for streaming Showmax

  4. Cryonic on May 22, 2020 at 3:13 am said:

    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.

    • Ventz on May 22, 2020 at 10:30 am said:

      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.

  5. Pingback: Chromium Media Edition – z09.net

  6. squidink7 on May 19, 2020 at 4:14 am said:

    Is there any possibility of an aarch64 version? I am running Manjaro which is 64 bit and this does not work.

  7. Bobobo on May 16, 2020 at 8:25 pm said:

    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)

    • Ventz on May 17, 2020 at 1:39 am said:

      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.

      • Bobobo on May 19, 2020 at 6:50 am said:

        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.

        • Ventz on May 19, 2020 at 1:27 pm said:

          Picked one up (zero-w) – it’s arriving by Friday. I’ll let you know what I find.

        • Ventz on May 20, 2020 at 2:02 am said:

          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

          PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
          650 root 20 0 87876 21768 15456 R 44.1 4.9 0:35.56 piwiz
          3281 root 20 0 12428 7464 3812 R 40.9 1.7 0:01.28 frontend

          As you start installing packages, the system load increases 2-3x:

          load average: 2.50, 3.02, 2.51

          A clean reboot of the system causes CPU load averages into the 3x range:

          load average: 3.45, 1.23, 0.45

          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.

  8. 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

    • Ventz on May 17, 2020 at 1:45 am said:

      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?

  9. Clint on May 9, 2020 at 6:48 pm said:

    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.

    • Ventz on May 10, 2020 at 2:30 am said:

      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.

  10. fmb on May 9, 2020 at 3:48 pm said:

    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.

    • fmb on May 9, 2020 at 3:52 pm said:

      I am connected directly via Gbit/Lan to my rooter.

    • Ventz on May 10, 2020 at 2:13 am said:

      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 . 😉

        • Matthias on May 10, 2020 at 6:09 am said:

          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

  11. Pavel on May 8, 2020 at 11:31 am said:

    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:

    • Pavel on May 8, 2020 at 11:33 am said:

      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.

      • Ventz on May 9, 2020 at 4:13 am said:

        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?

        • Pavel Diptan on May 11, 2020 at 8:12 am said:

          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

        • Pavel DIptan on May 19, 2020 at 2:09 pm said:

          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

          • Ventz on May 19, 2020 at 7:36 pm said:

            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.

          • Ventz on May 19, 2020 at 7:41 pm said:

            Pavel – unsubscribed. If you still see this, were you trying on mobile? I was able to use the link you posted on a desktop.

  12. Andy on May 8, 2020 at 4:55 am said:

    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?

    • Ventz on May 9, 2020 at 4:09 am said:

      Andy – to my knowledge, no there isn’t on the Pi. This is essentially what libwidevine (DRM) prevents 🙂

  13. 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.

    • Ventz on May 6, 2020 at 11:52 am said:

      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.

      • Fmb on May 6, 2020 at 3:57 pm said:

        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…

  14. Daniel on May 4, 2020 at 10:06 pm said:

    I would suggest a tip jar to support your current work and future developments. Please do set one up if you have time.

    • Ventz on May 5, 2020 at 2:02 am said:

      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.

  15. Pepe on May 4, 2020 at 4:09 pm said:

    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?

    • pepe on May 4, 2020 at 4:10 pm said:

      I mean, to uninstall

    • Ventz on May 4, 2020 at 4:42 pm said:

      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.

  16. Grzesiek on May 3, 2020 at 11:16 am said:

    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

    • Ventz on May 3, 2020 at 3:27 pm said:

      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 🙂

      • Grzesiek on May 4, 2020 at 1:48 pm said:

        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 🙂

        • Pepe on May 5, 2020 at 4:07 pm said:

          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.

          • Grzesiek on May 6, 2020 at 4:28 pm said:

            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…

          • Ventz on May 6, 2020 at 4:48 pm said:

            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?

          • Ventz on May 6, 2020 at 4:53 pm said:

            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/

          • Grzesiek on May 12, 2020 at 5:07 pm said:

            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.

  17. drupa on May 3, 2020 at 7:29 am said:

    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

    • drupa on May 3, 2020 at 9:15 am said:

      I got it to work with Raspbian lite. Thanks!

      • Ventz on May 3, 2020 at 3:24 pm said:

        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.

  18. ttango on May 1, 2020 at 10:35 am said:

    Its not working for me and ive done everything you said

    • Ventz on May 2, 2020 at 5:53 pm 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.

  19. Lionel Van Bemten on May 1, 2020 at 6:23 am said:

    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 😉

  20. Bryant Hebert Jr. on April 26, 2020 at 11:47 pm said:

    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

    • Ventz on April 27, 2020 at 1:01 pm said:

      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.

      • Bryant Hebert Jr. on April 27, 2020 at 3:22 pm said:

        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..

  21. 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

    • Ventz on April 27, 2020 at 1:09 pm said:

      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.

      • Max on May 2, 2020 at 2:07 am said:

        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?

        • Max on May 2, 2020 at 4:39 am said:

          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!

          • Ventz on May 2, 2020 at 5:50 pm said:

            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.

  22. steve on April 23, 2020 at 4:03 pm said:

    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

  23. Matthias on April 21, 2020 at 2:17 am said:

    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

  24. Matthias on April 20, 2020 at 7:12 am said:

    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

    • Ventz on April 21, 2020 at 9:10 am said:

      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).

      • Matthias on April 21, 2020 at 10:27 am said:

        I tried to enforce 1920×1200 in the config.txt but the HDMI or the monitor set it to 1920×1080
        Matthias

        • Ventz on April 21, 2020 at 4:09 pm said:

          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?

          • Matthias on April 22, 2020 at 2:53 am said:

            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.

          • Matthias on April 22, 2020 at 2:54 am said:

            Sorry, tearing test…

          • Matthias on May 7, 2020 at 11:42 am said:

            Hi Ventz,

            do you have any further ideas to solve the issue (settings in config.txt?)

            Matthias

          • Ventz on May 7, 2020 at 9:28 pm said:

            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.

          • Matthias on May 14, 2020 at 5:19 am said:

            Hi Ventz,

            sorry for my disability, i used the wrong Raspbian version – now it works perfect.
            Thanks again for your help.

            Matthias

  25. amaren on April 20, 2020 at 3:47 am said:

    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.

    • Ventz on April 21, 2020 at 8:59 am said:

      Are you on a clean install of the latest Raspbian with no custom modifications?

      • amaren on April 21, 2020 at 12:17 pm said:

        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.

          • amaren on May 2, 2020 at 3:18 pm said:

            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.

          • Ventz on May 2, 2020 at 5:47 pm said:

            Amaren – great to hear! I am glad it’s working!

        • Tommy on April 21, 2020 at 2:36 pm said:

          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!

  26. 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!

  27. Tobias on April 14, 2020 at 6:11 am said:

    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

  28. it’s work thanks !

  29. Frank on April 13, 2020 at 9:48 am said:

    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 🙂

        • Daniel on April 14, 2020 at 3:31 am said:

          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.

  30. 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.

  31. Otaku on April 9, 2020 at 10:50 am said:

    @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 🙂

  32. Daniel on April 8, 2020 at 1:11 pm said:

    YOU NAILED IT MAN! its was something thats bugging me for soooo long. Thanks a gazillion bro!

  33. Bill on April 7, 2020 at 8:27 pm said:

    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.

    • Ventz on April 8, 2020 at 12:00 am said:

      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.

  34. Bill on April 7, 2020 at 7:29 pm said:

    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.

  35. Matthew on April 7, 2020 at 12:38 pm said:

    Top man, worked first time 👍 the pii is getting put to good use finally 😝

  36. mattijn on April 6, 2020 at 5:01 am said:

    Thumbs up! +1. Works perfect.

  37. Tommy on April 4, 2020 at 9:21 pm said:

    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?

    • Ventz on April 4, 2020 at 9:33 pm said:

      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)

      • Tommy on April 5, 2020 at 5:45 am said:

        I did everything you advised and tearing is gone only when browser is in windowed mode..in full screen tearing is still present

      • Tommy on April 5, 2020 at 7:26 am said:

        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?

        • Ventz on April 6, 2020 at 9:14 pm said:

          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.

        • Ventz on April 6, 2020 at 11:49 pm said:

          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.

          • Aaron on April 7, 2020 at 5:30 am said:

            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

          • Ventz on April 7, 2020 at 9:22 pm said:

            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.

          • Aaron on April 7, 2020 at 9:34 pm said:

            Thank you!
            Anyway really thanks again..because you made things a lot better…
            Let’s hope that full hardware acceleration through GPU comes soon…

          • Tommy on April 7, 2020 at 11:45 am said:

            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..

          • Ventz on April 7, 2020 at 9:24 pm said:

            Tommy – run this from the terminal as the Pi user.

            And reboot.

          • Tommy on April 7, 2020 at 9:52 pm said:

            Can’t thank you enough mate..this is a game changer..:-)
            Btw, you’ve fixed screen tearing in Youtube as well..:-)

  38. 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.

    • Ventz on April 4, 2020 at 9:37 pm said:

      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.

      • Ventz on April 4, 2020 at 11:41 pm said:

        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.

  39. 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… 🙂

    • Ventz on April 4, 2020 at 9:35 pm said:

      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.

      • Ventz on April 5, 2020 at 12:20 am said:

        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!

  40. Bill Hill on April 2, 2020 at 5:38 pm said:

    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’. :^(

  41. Thabzzz on April 2, 2020 at 12:44 pm said:

    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?

  42. 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)

    • Ventz on April 1, 2020 at 9:44 pm said:

      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.

  43. Himanshu Bhardwaj on April 1, 2020 at 7:55 am said:

    These are marvelous lines of code and magic all around. May God bless you for this.

  44. 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!

    • Ventz on April 1, 2020 at 12:41 pm said:

      MD – what doesn’t work/what error are you getting?

      • Mike Dohan on April 6, 2020 at 10:36 pm said:

        “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

        • Ventz on April 6, 2020 at 10:40 pm said:

          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.

  45. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

>> NOTE: Please use <code>...</code> to post code/configs in your comment.

Post Navigation