XBMC/Kodi fullscreen on TV (as second screen) with overscan

I own an old, no-name LCD TV (bought ~10 years ago) that I use to watch movies, TV series and sometimes YouTube from my couch using Kodi (previously called XBMC), a nice media center software. I connected the TV via DVI as the third screen to my Linux computer. Everything works good except one thing: I cannot see the whole screen.

This issue is called overscan and it’s mostly seen on old CRT screens. However some cheap LCD TV manufacturers seem to have adopted this to keep traditions. 😉 Maybe it’s just some kind of production error that causes the plastic border and the actual panel to overlap. I don’t really know. Some newer LCDs do have this problem too, but somewhere in the settings dialogue is a checkbox to (de)activate it. Unfortunately, mine lacks this.

So there’s a whole area near the borders hidden and I see cropped menu items. Furthermore I prefer to see the whole picture of a movie.

Kodi offers a calibration option, but only in fullscreen mode. I cannot use the other screens in fullscreen mode which comes handy sometimes.

My solutions is to run Kodi fullscreen inside Xephyr which is a nested X server, so I can use the Kodi calibration option.

If you’re using Debian, install it like this:

apt-get install xserver-xephyr

Here’s the snippet that starts Xephyr:

#!/bin/bash

# launch nested X server
Xephyr -ac -br -noreset -screen 1280x720 :1 &

# wait for Xephyr
sleep 3

# move to TV
wmctrl -r "Xephyr" -e 1,0,0,-1,-1

# make it go fullscreen
wmctrl -r "Xephyr" -b toggle,fullscreen

It basically starts Xephyr with the resolution of the TV, moves the window to the correct screen and enables fullscreen mode. I run this script on startup.

All there’s left to do is to run Kodi inside the nested X server:

#!/bin/bash

# use nested xserver as output
export DISPLAY=:1.0

kodi

After calibrating everything works as expected: I can finally use all screens while watching uncropped videos.

Leave a Reply

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