3

I'm trying to watch Amazon Prime Video on my Arch Linux, but it forces the video quality to SD.

With Amazon support I was informed that this happens in cases where there's no HDCP supported.

I'm pretty sure this is not a hardware problem, because Prime Video works just fine in Windows 10.

Where can I find what kind of HDCP is supported on Linux, and with which hardware/drivers?

Are there any browser plugins that could help?

2
  • 1
    It would be helpful if you told us which hardware, drivers, and distro you're using. It may be that there isn't a standard way to query this information and whatever information someone gave you would depend on those factors.
    – bk2204
    Jan 11, 2021 at 3:25
  • 1
    Do you have a mei_hdcp driver? See kernel.org/doc/html/latest/driver-api/mei/hdcp.html
    – fpmurphy
    Jan 11, 2021 at 6:11

2 Answers 2

1

It looks like HDCP is currently not supported in Chromium on Linux: https://bugs.chromium.org/p/chromium/issues/detail?id=1064949

It appears to be the same for Firefox on Linux (because of Widevine CDM): https://bugzilla.mozilla.org/show_bug.cgi?id=1625155

In the Firefox issue, there is a comment explaining how to make the HDCP test tool https://googlechrome.github.io/samples/hdcp-detection/ work with Firefox. We need to set media.eme.hdcp-policy-check.enabled to true in about:config.

3

Please note it doesn't work for me yet, but below my steps so far hoping it helps someone. I tried it with X11 instead of Wayland. Also: You haven't specified your hardware, my answer might only help if you have intel graphics.

Check if HDCP is working: https://googlechrome.github.io/samples/hdcp-detection/

The kernel module mei_hdcp supports intel graphics and i915, see: https://www.kernel.org/doc/html/latest/driver-api/mei/hdcp.html)

The mei_hdcp driver acts as a translation layer between HDCP 2.2 protocol implementer (I915) and ME FW by translating HDCP2.2 negotiation messages to ME FW command payloads and vice versa.

You can get the info about your graphics card with lspci. In my case:

lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Iris Plus Graphics 640 (rev 06)
lspci -s 00:02.0 -vv | grep -i module
    Kernel modules: i915

Ensure you have mei_hdcp module loaded:

lsmod | grep hdcp
mei_hdcp               24576  0
mei                   135168  3 mei_hdcp,mei_me

Verify we use X11 and not wayland:

echo $XDG_SESSION_TYPE
x11

Set property for hdcp with xrandr for the connected screen(s) and verify:

xrandr --verbose | grep -wi connected
DP-1 connected primary 2560x1440+0+0 (0x45) normal (normal left inverted right x axis y axis) 697mm x 392mm

xrandr --output "DP-1" --set "Content Protection" "Enabled"
xrandr --output "DP-1" --set "HDCP Content Type" "HDCP Type1"

xrandr --verbose | grep -iE "hdcp|content protection|(DP|HDMI)-|desire"
DP-1 connected primary 2560x1440+0+0 (0x45) normal (normal left inverted right x axis y axis) 697mm x 392mm
    HDCP Content Type: HDCP Type1 
        supported: HDCP Type0, HDCP Type1
    Content Protection: Enabled 
        supported: Undesired, Desired, Enabled

To have those properties set persistently, one way is to create a file with this content:

cat /etc/X11/Xsession.d/96_enable_hdcp 
xrandr --output "DP-1" --set "Content Protection" "Enabled"
xrandr --output "DP-1" --set "HDCP Content Type" "HDCP Type1"

You probably also need the intel hdcp service: https://github.com/intel/hdcp

The Intel(R) unified HDCP (High-bandwidth Digital Content Protection) is a user space implementation to prevent copying of digital audio & video content across digital display interfaces. It provides Linux user space implementation to enable the HDCP1.4 and HDCP2.2 protection for external digital display interfaces (HDMI/DP).

For ubuntu intel-hdcp is available as a package, I don't know if you need to build it manually for Arch Linux.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .