Enabling 1080p video on the Shuttle X27D HTPC

I recently bought a Shuttle X27D to use as a Home Theater PC (HTPC). The reviews of this hardware run from disappointing to average, but I’m reasonably happy with it. It’s quiet (just one small fan for the GPU, and none for CPU, case, or power supply), uses little power (I measured it at 32 W in full operation), and the analog audio jack on the motherboard has no discernable noise in the audio stream (unlike my Dell Vostro 1500 laptop).

Unfortunately, the Intel 945G graphics processor can’t reliably handle 720p @24 frames video. I tested with a downloaded copy of Sita Sings the Blues, and it dropped frames as the animated fireworks exploded during the title sequence. It was fine with most of the rest of the film. Still, it means I’m likely to stick to upscaled 480p video. Which is far better for my bandwidth usage.

Naturally, I ran into some problems setting it up.

First, I discovered that Ubuntu 8.10 Intrepid amd64 won’t run on this hardware. The kernel panics as soon as you boot the Live CD. Ubuntu 9.04 beta works, and of course i386 is fine. Benchmarks of the Atom 330 suggest that the 32-bit kernel is actually faster on this CPU for integer operations, so I just went with 32-bit. Since I wanted to use this as the family Skype device, that was probably the better choice anyway.

The biggest reason I bought a Shuttle X27D was because it has a DVI port that I could connect to my TV. I have a Panasonic TX-37LZD70 37″ LCD HDTV which is capable of up to 1080p video (1920×1080) when using an HDMI input. I connected them via a DVI-to-HDMI adaptor (it’s just a difference in pinout, and lack of an audio signal). Unfortunately Ubuntu booted in 720p mode (1280×720 50 Hz). xrandr reported a variety of other modes available, but none of them worked with my TV except for 640×480.

I started playing with xrandr, and eventually discovered that the TV isn’t giving complete resolution information in the EDID it offers digitally.

Decoding this by hand revealed that the TV is only announcing 1280×720 graphics modes. Some DVD players are willing to try to force graphics modes they don’t know will work, but a PC wisely does not do this without manual intervention.

By this point I’d learned a lot about setting display modes in X and tried creating modes myself, using gtf and cvt.

xrandr --newmode "1920x1080_50.00" 141.50 1920 2032 2232 2544 1080 1083 1088 1114 -hsync +vsync
xrandr --addmode TMDS-1 1920x1080_50.00
xrandr --output TMDS-1 --mode "1920x1080_50.00"

This didn’t work because the mode I was trying to create was too large for the maximum listed by xrandr. It turns out that this isn’t a hard setting, but is calculated when X starts based on the maximum resolution of the available displays. It is the size of the frame buffer X uses for the total display area of all displays. Anyone having to set up dual monitors usually has to increase this in order to have two displays side by side. So I modified /etc/X11/xorg.conf and restarted X.

Now the new mode worked, but was shifted to the right on my TV. This happened for all the modeline calculations I was able to produce with both gtf and cvt. So I gave up and installed DTDCalculator in my Windows virtual machine. It calculated a different set of modelines which worked perfectly on the first try. I set up modes for 24 Hz, 50 Hz, and 60 Hz.

xrandr --newmode "1920x1080_24.00" 74.25 1920 2558 2602 2750 1080 1084 1089 1125 -HSync +Vsync
xrandr --newmode "1920x1080_50.00" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 -HSync +Vsync
xrandr --newmode "1920x1080_60.00" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 -HSync +Vsync
xrandr --addmode TMDS-1 1920x1080_24.00
xrandr --addmode TMDS-1 1920x1080_50.00
xrandr --addmode TMDS-1 1920x1080_60.00

Now I can switch to any of the new modes, and I have full 1080p video! The last thing I want to do is make this change permanent. There are several ways to do this. The best way is to edit xorg.conf:

This sets up the larger virtual frame buffer, creates the new resolutions, and tells X that the display TMDS-1 (the DVI port on this graphics card) should use the settings for “Configured Monitor” (normally only the first detected device will use these).

Another way to do this is to edit either /etc/xprofile or ~/.profile for your user. This is a shell script that is executed as X starts. If you want just your user to have these changes, use the latter. If you want all users including the login greeter to have them, use the former.

If you’ll excuse me, I’m going to get back to watching all my favourite shows without commercials.

Tags: , , ,

  1. bob’s avatar

    I appreciate the info here. I purchased a X27D for a media pc. Running Mythbuntu JJ from live cd won’t display smooth HD on a VGA CRT. A bit of spelunking reveals “Intel XvMC decoder disabled” in Xorg.0.conf. A bit of surfing led me to
    http://www.x.org/wiki/IntelGraphicsDriver
    & to
    http://xorg.freedesktop.org/archive/individual/driver/
    where I downloaded xf86-video-intel-2.7.1.tar.bz2 dated 12-May-2009; don’t know if this will fix XvMC or not. I was hoping to run the X27D from cd…oh well. Now I’ll have to see if I can get it to boot from usb hard drive; if not, will have to find a 2.5 old laptop pata to either pata or sata converter to use existing laptop hard drives I have. If I have to buy a new hard drive, I’ll be up to the price of a Dell Studio Hybrid. This is yet another case of “so close, yet so far”.

    Reply

    1. tyler’s avatar

      Bob, I think you’ll find this hardware is simply incapable of smooth 1080p HD. Even 720p can be choppy depending on the video. This GPU is very underpowered, and offloads a lot of work to the CPU. That would be fine with a Core 2 Duo, but with an Atom the CPU is also too underpowered. I really only use this PC for 480p video, but upscaled to 1080p.

      Reply

    2. TTM’s avatar

      Okay, I admit it, it was the virtual thing that I needed to make my new HDTV work. I owe you a beer.

      Reply

    3. Jose Miguel’s avatar

      Thanks.

      After updating my debian testing macbook, I stopped having full hd resolution on my external display. Due to your post I was able to fix it. I’m working on a spanish translation to post it soon in m blog (jm2dev.com).

      Reply

    4. Fernando’s avatar

      I have this PC connected to my samsung 37″ TV working perfectly decoding FullHD Videos on WinXp with CoreAVC.
      But connected with VGA + Analog Audio

      Reply

      1. tyler’s avatar

        You’re very lucky, then. All of the reviews, even those that tested with Windows, were unable to get 1080p to play without dropping frames. Are you sure this is the same Shuttle X27D?

        Reply

      2. Pete’s avatar

        Thank you very much!
        Time to sit back and relax now ^_^

        Reply

Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">