13 February, 2011

HiSense HLS106T69PZ Modeline Nightmare


Note: This blog post contains technical information but it's also a bit of a rant.  If you are looking for just the technical info concerning my troubles with this TV and how to get it working for you, look towards the bottom of the article for the heading "Technical Information" where I will summarise the useful info.

Unfortunately, I own a HiSense HLS106T69PZ TV.  It's a 42" LCD TV, and to be honest, my advice would be not the buy one or any TV made by HiSense.

My TV was a problem from the moment it was first used.  Sometimes you'd turn on the TV and it'd work fine, but it had this great feature where it would boot up, show the HiSense logo, show a couple of seconds of digital TV and then the picture would freeze and the TV wouldn't respond to any commands from the remote control.  You had to turn off the power to the TV and then turn the TV back on again.  Usually you'd do this 2-3 times or until you got more than 2 seconds of live TV, after which it would usually work fine.

A free firmware update from HiSense solved the freezing/reboot problem, but there are more problems.

I wanted to connect my home theater PC to this TV, so that I could use MythTV with it.  So, I bought all the bits and turned my current desktop PC into a HTPC.

The next problem with this particular TV was that when I plugged it into the HTPC, Xorg would detect the video resolutions that the TV was capable of, using the EDID information stored inside the TV.

Well, guess what?  HiSense screwed it up.  The EDID information in the TV is incorrect or incomplete.  As such, as far as the HTPC was concerned, the maximum resolution of the TV was 1366x768.

The TV claims to be 1080p capable.  1366x768 is not 1080p.  1920x1080p is 1080p.  So, this was a new problem that had to be solved.  Of course, I called HiSense support and spoke to a senior technician, who as useless as he was also informed me that HiSense doesn't support connecting computers to their TVs.  Yet another reason to avoid their TVs.

This technician did give me some generic advice.  Some of it was actually wrong as well.  He told me that the TV would only support 1080p with no overscan (almost certainly correct) and a 50Hz signal.

Well... 50Hz signals at 1080p don't seem to happen.  They tend to be 60Hz or higher, as far as I can tell.

Ok, so the tech wasn't much help.  No problem.  I'll force the X server to do the resolution I want and if the TV can support it, it'll work... right?

My initial attempt failed, so I temporarily gave up on it.  This was mostly because, no matter what I did, I could not get Xorg to ignore the incorrect EDID information.  Then, one day, I found out about a great tool for X11/Xorg called "xrandr".  This tool enabled me to work around Xorg's own stupidity and solve the problem.  Using xrandr, I could start Xorg, let it detect the resolution of the TV, and then I could add a new mode line to the running Xorg and get the X server to switch to it.

I did this, and after a little messing around, it worked.

Technical Information:

Here are the commands you need to run, once the X server has started.   I have put these commands into my /etc/gdm/Init/Default file:

# Register 1080p as a mode and switch to it.
# 1920x1080p @ 60Hz (EIA/CEA-861B)
xrandr --newmode "1920x1080p" 148.500 1920 2008 2056 2200 1080 1084 1089 1125 +hsync +vsync
xrandr --addmode HDMI1 "1920x1080p"
xrandr --output HDMI1 --mode "1920x1080p"

There are also other 1080p modelines on the Net, and also ones that are generated by the "cvt" tool that don't work with this LCD TV.  It seems to be a case of too many standards.

There's another tool for generating mode lines which will generate VESA GTF modelines as opposed to VESA CVT modelines.  Your TV or monitor may not be compatible with one or the other, so I suggest you try modelines made with both tools.

In case you skipped past the rantish guts of this blog post, I will reiterate that I recommend that you use the "xrandr" tool to set your mode lines.  When experimenting, this means letting the X server autodetect the supported resolutions of your TV or monitor.  Once you're logged in you then open up an xterm and use "xrandr" to set new modelines, until you get it right.

I'd also suggest you have a way of restarting or killing X, just in case you find yourself in a position where you don't have any display.  It could be as simple as making sure that Ctrl-Alt-Backspace works, or that the SSH daemon is running and accepting logins.

Let the ranting begin, again....

Xorg sucks just as much as HiSense TVs do:

Why?

Well, if I configure Xorg to and tell it that my display device supports "ReducedBlanking" and I also configure various ModeLine entries, it should not ignore it all and insist on using the incorrect EDID information.  I KNOW BEST, the EDID information in my TV is WRONG.  Stop honouring it, you pack of idiot developers.

The Xorg developers seem to be following the "protect everyone from themselves" mentality, as if everyone is an idiot and they know best.  Well, they don't know best.  There are plenty of idiots out there and TV manufacturers aren't exempt (neither are monitor manufacturers).  If an end-user provides a ModeLine in the Xorg config, it should be honored.  No question.  Most people won't provide a modeline, ever, unless they absolutely have to.  If an incorrect mode line kills someone's old CRT monitor, then too bad.  How about an option "DoWhatISay" under the montitor section in the Xorg config if you're so damn paranoid?

5 comments:

  1. Hi man,

    Just found your post. I thought to search somewhere along of Hisense EDID resolutions (I was already suspicious), and got you. I tried the lines that got you working, but still couldnt get mine to work. Where did you get the modelines for the xrandr? I know I tried with cvt, and gives different ones to the ones you posted. Could you let me know how did you got the right ones?

    Thanks a million!

    ReplyDelete
    Replies
    1. Hi timonoj,

      You could try generating some modelines with the "gtf" tool which generates VESA GTF modelines. The "cvt" tool generates VESA CVT modelines and they're different, which might mean your TV won't recognise one or the other.

      Try here for some modelines if you haven't already found them:

      http://www.mythtv.org/wiki/Modeline_Database

      Delete
  2. Thanks a lot! That helped me translate a working resolution from Windows to a Linux modeline. After some additional fiddling, I think I got it working!

    A bit more detail (for some other poor desperate soul):
    http://www.kubuntuforums.net/showthread.php?63018-Nvidia-dual-monitor-wrong-resolution&p=330652#post330652

    Again, thank you!

    ReplyDelete
  3. I bought this tv second hand and it works for 5 or 10 mins then the screen goes pink I suspect it maybe resolved with some firmware would it be possible if you could email the firmware as I don't think hisense will support customers without proof of purchase

    ReplyDelete
    Replies
    1. Sorry oobe, I don't have the original firmware that HiSense sent me anymore. Sorry about that.

      Delete

When commenting, please make sure you tick the "Notify me" checkbox, otherwise you will not be notified when I reply to you!