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.
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
Leave a Reply