IO Data LCD-TV241XBR LCD monitor with linux

Ever since I came to Japan a year ago, I’ve wanted to get some sort of display device that was HD-capable and larger-format than the 15″ display on my ThinkPad A31p. Generally, I only watch a little bit of TV, some NHK news in the morning and evening, but I watch a lot of TV shows from the US downloaded off of the internet, and a fair number of DVDs from the local Tsutaya rental shop. So for me, an ideal solution would be something that can work as both a monitor and a TV, and the TV part isn’t all that important.

I’ve been thinking about this for quite a while, and I finally decided on the IO Data LCD-TV241XBR monitor. There are a few other monitors that are the same size that are a bit cheaper, but what really sold me on this monitor is that it has an internal analog TV tuner (and speakers) as well as a remote control. It is a drop-in replacement for a TV, and also has an analog computer input (DB-15 D-sub thing that can drive the monitor at 1920×1200) as well as a DVI digital input, a D4 digital input (whatever that is, some form of HDTV pre-HDMI connector) and a regular SVHS connection.

Details about setting up a dual-head display on Fedora Core 6 linux  

The biggest problem was trying to get the monitor to work with the A31p ThinkPad, which runs Fedora Core 6 linux. In this day and age, you really should just be able to plug things in and have them work. To some extent that is what happened: I plugged the monitor in, and got a 1600×1200 mirror of the internal LCD, which was nice, but looked funny because it was stretched to the native panel resolution of 1920×1200.

Well, I thought, this shouldn’t be too hard to fix. First, I’ll just turn on dual head, and then use the graphical tools to set that up and things will be fine. Fedora Core comes with a nice system utility to set up dual-head displays, so I gave that a go. Unfortunately, that didn’t work: when I tried to hit “OK” nothing happened at all. When run in a terminal, I saw that there was an error in a python support script (/usr/share/system-config-display/xConfigDialog.py) on the line lower_vrefresh, upper_vrefresh = self.second_monitor_vrefresh. The problem is that my monitor was apparently only reporting one refresh value, not multiple values, so splitting the reporting value into multiple values doesn’t make sense and causes an error. I just simply changed the file to set the refresh rate upper and lower value to the reported value, and the program was able to generate a skeleton xorg.conf file for me. Based on that file, I spent about two hours trying to boot and get the display working, but there was another big problem: the modelines that Xorg was computing based on the DDC information reported by the monitor (it is supposed to report the values and parameters needed to drive it) was incorrect. I thought this was really odd because by reading the Xorg.0.log I could see that the values the monitor was reporting looked good, but Xorg never tried any modes that fit those parameters. Strange. So I had to manually set the proper vertical and horizontal refresh rates, and then tell Xorg to ignore the EIDE values (something else!?) to get the display to work. After about four hours, I finally got the internal LCD running at 1600×1200, and on another screen the LCD running at 1920×1200.

The problem with this though is that the A31p is a P4 1.8 GHz CPU with a Mobility FireGL 7800. When the machine was new back in 2001 that was a pretty hot card, but it seems like the machine is having a tough time just driving those two displays. While some shows worked fine (Battlestar Galactica, Daily Show, etc.) some other shows with presumably more complicated codecs really skipped and were unwatchable. I’m thinking of trying to get only the external display running so it will be hardware accelerated, or running it at half resolution (960×600), or something like that. I also haven’t tried to get Xinerama running, so I can’t move windows between the two screens.

If you are interested, here are the relevant sections from my Xorg.conf that do the actual heavy lifting for the full resolution, two screen, dual headed display:


Section "ServerLayout"
	Identifier     "Multihead layout"
	Screen      0  "Screen0" Below "Screen1"
	Screen      1  "Screen1" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"
	Option	    "Xinerama" "off"
	Option	    "Clone" "off"
EndSection

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "LCD Panel 1600x1200"
 ### Comment all HorizSync and VertSync values to use DDC:
	HorizSync    31.5 - 90.0
	VertRefresh  60.0 - 60.0
	Option	    "dpms"
EndSection

Section "Monitor"
	Identifier   "Monitor1"
	VendorName   "Monitor Vendor"
	ModelName    "LCD Panel 1920x1200"
 ### Comment all HorizSync and VertSync values to use DDC:
 # Ignore incorrect refresh rates
	Option 	     "IgnoreEDID" "true"
 # Set up correct refresh rates based on /var/log/Xorg.0.log
	HorizSync    24.0 - 83.0
	VertRefresh  55.0 - 75.0
	Option	    "dpms"
EndSection

Section "Device"
	Identifier  "Videocard0"
	Driver      "radeon"
	VendorName  "Videocard vendor"
	BoardName   "ATI Technologies Inc Radeon RV200 LX [Mobility FireGL 7800 M7]"
EndSection

Section "Device"
	Identifier  "Videocard1"
	Driver      "radeon"
	VendorName  "Videocard Vendor"
	BoardName   "ATI Technologies Inc Radeon RV200 LX [Mobility FireGL 7800 M7]"
	BusID       "PCI:1:0:0"
	Screen      1
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Videocard0"
	Monitor    "Monitor0"
	DefaultDepth     16
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes    "1600x1200" "1400x1050" "1280x960" "1152x864" "1024x768" "800x600" "640x480"
	EndSubSection
EndSection

Section "Screen"
	Identifier "Screen1"
	Device     "Videocard1"
	Monitor    "Monitor1"
	DefaultDepth     16
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes    "1920x1200"
	EndSubSection
EndSection


Posted

in

by

Tags:

Comments

Leave a Reply

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