Install Widevine for Arm64 (#660)

* chromium arm64 widevine

* brave arm64 widevine

* firefox arm64 widevine

* vivaldi arm64 widevine

* Update browser.md for arm64 drm

* add link to instruction

* add widevine-installer

* widevine base image, tools in utils, move files for chromiums

* include installer in runtime

* add runtime/widevine-installer in repo-structure
This commit is contained in:
cdxii
2026-08-03 19:55:42 +08:00
committed by GitHub
parent 4764dcbb05
commit d2ec13a236
10 changed files with 676 additions and 2 deletions
+47
View File
@@ -234,3 +234,50 @@ The ID of the extension can be found in the URL of the extension in the Chrome W
]
}
```
## DRM for ARM64 {#arm64-drm}
To stream protected contents, Google’s content protection system, Widevine, is required. However, its support for AArch64 systems is limited and it does not come natively during browser installation. To workaround, a copy of Widevine for ARM64 is obtained and installed from ChromeOS. However, further configuration is needed to function properly.
### Firefox {#firefox-arm64-drm}
Add the following command in your `docker-compose.yml`:
```yaml title="docker-compose.yaml"
services:
neko:
...
command: sh -c "MOZ_GMP_PATH=/var/lib/widevine/gmp-widevinecdm/system-installed exec /usr/bin/supervisord -c /etc/neko/supervisord.conf"
```
In your [policies.json](#policy-files), add the following:
```json title="policies.json"
{
"policies": {
...
"Preferences": {
...
"media.gmp-widevinecdm.enabled": true,
"media.gmp-widevinecdm.visible": true,
"media.gmp-widevinecdm.version": "system-installed",
"media.gmp-widevinecdm.abi": "aarch64-gcc3",
"media.gmp-widevinecdm.autoupdate": false,
"media.eme.enabled": true,
"media.eme.encrypted-media-encryption-scheme.enabled": true
},
...
}
}
```
For some streaming sites, you also need to use [a user agent switcher extension](https://addons.mozilla.org/firefox/addon/user-agent-string-switcher/) and set it to: `Mozilla/5.0 (X11; CrOS aarch64 15662.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6098.0 Safari/537.36`
### Chromium-based Browsers {#chromium-arm64-drm}
:::note
- For Brave, you have to go to `brave://settings/extensions` and enable Widevine.
- For Vivaldi, exit the browser and let it restart.
:::
For some streaming sites, you also need to use [a user agent switcher extension](https://chromewebstore.google.com/detail/bhchdcejhohfmigjafbampogmaanbfkg) and set it to: `Mozilla/5.0 (X11; CrOS aarch64 15662.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6098.0 Safari/537.36`
@@ -24,6 +24,7 @@ This project uses a monorepo structure with the following directories:
- `runtime/fonts/`: Empty directory placeholder to include custom fonts in the neko runtime.
- `runtime/icon-theme/`: Empty directory placeholder to include a custom icon theme in the neko runtime.
- `runtime/intel/` or `runtime/nvidia/`: Directories with files for flavor-specific releases of the neko runtime.
- `runtime/widevine-installer/`: Directories with installer scripts from [AsahiLinux/widevine-installer](https://github.com/AsahiLinux/widevine-installer)
- `apps/`: Contains the applications that run in the neko, such as Firefox, Chrome, etc.
- `apps/<app-name>/Dockerfile`: Dockerfile extending `BASE_IMAGE` for the application used by the build script.
+1 -1
View File
@@ -282,7 +282,7 @@ The availability of applications for ARM architecture is limited due to the lack
| [Remmina](#remmina) | ✅ | ✅ | - |
| [VLC](#vlc) | ✅ | ✅ | - |
\* No DRM support.
\* requires extra steps to enable DRM, see instructions [here](/docs/v3/customization/browsers#arm64-drm).
:::tip
[Oracle Cloud ARM free tier](https://www.oracle.com/cloud/free/) is a great way to test Neko on ARM architecture for free. You can use the `ghcr.io/m1k1o/neko/xfce` image to run a full desktop environment with Xfce and test the applications.