Upgrading Widevine on an old Chromebook
So back in early March 2016 I purchased my first Chromebook. This was an Intel Celeron HP 11" device, and after using it for only a few weeks I was smitten by ChromeOS. I was pretty happy with this little low powered device, it was super portable and light with good battery life, but it was also very cheap feeling and, frankly, a bit ugly. I mentioned back in 2016 what I really wanted was an original Gen 1 HP Chromebook 11, a really clean looking device with smooth rounded corners and no branding at all on the top. The four coloured lights (the Google colours) on the lid are the only thing on an otherwise unmarked chassis, with a subtle "chrome" label at the bottom of the screen. Other than than, there is only a small ring of colour around the keyboards and matching rubber feet.
Unfortunately for this little Chromebook Google only supported it with software updates for 6 years, meaning it got its last update in March 2019 and is now no longer supported. This wasn't a problem for a while - all web sites still work and even now as I write this in 2020 the battery life is excellent - about 5 ours of general browsing or more if I avoid videos. The biggest problem is that services like Netflix, Spotify and Amazon Prime rely on a DRM scheme called Widevine that is no longer up to date on the Chromebook, so refuse to play (thankfully Amazon Prime actually says what the problem is, saying you have to upgrade the Widevine plugin, otherwise it might have taken me a while to track down the issue).
For this upgrade you'll need to put the Chromebook into developer mode. Usually if you do this and mess with the filesystem is means ChromeOS won't update anymore, but as this device is no longer supported this is hardly an issue. You will of course get the annoying splash screen telling you the laptop is in developer mode every time you boot the Chromebook, but this is a small price to pay for being able to watch Netflix again.
Anyway - on to the actual meat of the upgrade!
First, get into developer mode by holding the Esc and Refresh (the circular arrow) keys while pressing the power button. It will say something about ChromeOS missing files, simply hit CTRL-D and follow the prompts. After about 10~15 minutes the laptop will reboot and you'll be in developer mode. You'll have to go through the usual onboarding process again, and once logged in everything will look as it always does except now you can bring up a developer shell.
Once you're logged in again (in developer mode), open a shell by hitting CTRL-ALT-T, and once the crosh shell has loaded type "shell" (follow the Google documentation for a good run down). Once at a shell prompt you need to put the filesystem into read/write mode:
crosh> shell chronos@localhost / $ sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2Once the command finishes running reboot the Chromebook.
When it's back up again and you're logged you need to get a new version of libwidevinecdm.so - you do this by downloading a later ARM ChromeOS img and extracting it out. I've uploaded a version here that I extracted April 2020 but if you need a later version use the script here to grab a fresh copy. Once you have it you need to copy it into place. Assuming it's sitting in the Downloads directory:
chronos@localhost / $ sudo cp ~/Downloads/libwidevinecdm.so /opt/google/chrome/
All done! Reboot the Chromebook to load the new version of the plugin and you can start watching Netflix to your hearts content, and get some more life out of this awesome little laptop.