I bought a spiffy new 4K TV the other week, and I wanted to set up a complete 4K pipeline. Not that there’s that much 4K stuff available: For instance, Netflix has a pitiful 101 list of shows, most of them made by Netflix themselves.
Anyhoo! I was thinking a bit about how to set this all up so that I’d have a 4K pipeline from my computer, while there’s a 2K pipeline from the Ipod (which I use to watch Amazon stuff) and a 4K pipeline from the Chomecast (which I planned on using to watch Netflix stuff). All the while being able to record shows so that I can screenshot them for the “The World” blog series. It’ll be simpler if I just draw a diagram:
See? Easy peasy. I have to insert an “HDMI splitter” (which is a euphemism for “HDCP stripper”) in between the Ipod and the HDMI recorder because DRM. But! Then I realised that I could just watch non-4K Netflix on the Ipod, so that simplified things hugely:
So simple! So I have the Ipod as a DRM device, and then all the rest is FREEDOM!
This is what it looks like in reality:
So neat and orderly.
So everything is A-OK, then? No. The thing is that I’m not able to get my PC to do 4K at 60Hz. This is what xrandr says:
See the 3840×2160 entry? That’s the one I want, and it has a max refresh rate of 30Hz. TV is 50Hz or 60Hz, so having only 30Hz sucks.
As you’ve probably also noticed, xrandr says that DP1 is connected, not HDMI. That’s because I plugged in an external DisplayPort to HDMI adapter, which is supposed to support 4K @ 60Hz. But that apparently doesn’t work.
I also tried the native “HDMI” plug on this motherboard (which is an ASRock Fatal1ty Z270 Gaming-ITX/ac LGA1151 HDMI 2.0 ITX motherboard *phew*), but that turns out to also be DisplayPort, really, but with a built-in DP->HDMI adapter (to allow 4K@60Hz).
This stuff is apparently called LSPCON, and support for it landed in Linux somewhat recently.
I’ve tried very up-to-date kernels (I’m now running on 4.12.0-994-generic), and my Debian is stretch, so it’s also quite recent. I’ve tried plugging the computer directly into the TV via an HDMI 2.0 cable, bypassing all switches and everything, and the result is the same.
My TV is a Sony A1E, which claims to support 4K@60Hz, but I’m unable to make either the Chromecast or the TV say what frame rate it has when it’s doing 4K.
So… is this supposed to work or not? Has anybody gotten 4K @ 60Hz HDMI to work in Linux?
[Edit a day later]:
Googling around shows a lot of people with similar problems that they apparently are able to resolve by adding the proper ModeLines. In 2017.
So I tried this:
xrandr --newmode "3840x2160_60.00" 712.34 3840 4152 4576 5312 2160 2161 2164 2235 -HSync +Vsync xrandr --addmode DP1 "3840x2160_60.00" sleep 15 xrandr --verbose --output DP1 --mode "3840x2160_60.00"
But the Xorg log says:
[ 2222.946] (II) intel(0): switch to mode firstname.lastname@example.org on DP1 using pipe 0, position (0, 0), rotation normal, reflection none [ 2222.967] (EE) intel(0): failed to set mode: Invalid argument  [ 2223.014] (--) intel(0): HDMI max TMDS frequency 300000KHz [ 2223.031] (II) intel(0): resizing framebuffer to 1920x1080 [ 2223.031] (II) intel(0): switch to mode email@example.com on DP1 using pipe 0, position (0, 0), rotation normal, reflection none [ 2223.084] (--) intel(0): HDMI max TMDS frequency 300000KHz
So that’s a no go..