Tuesday, March 31, 2009

Fedora 10, xrandr and InFocus projector

So, I'm doing this presentation at the Trenton Computer Festival next month and couldn't get the InFocus IN2102EP Projector to work on my dual boot MacBook Pro (2.33Ghz Core 2 Duo) that runs both Leopard and Fedora 10, x86-64 using ReFit as the boot loader. I tried to connect the InFocus to the DVI output of the Mac while running under Fedora.

The InFocus is connected this way:
MacBook external DVI output > DVI-VGA dongle > VGA - M1-DA Cable
> InFocus M1-DA connector

The problem is that though xrandr sees the DVI-0 port as connected, but the InFocus doesn't get the signal or spring to life through the setup listed above.

I've verified that the DVI-0 output works with a regular DVI cable connected to the DVI input on my Dell 1907FP 19-inch Flat Panel LCD. So this means a digital signal is being output from the port. Now, I've also verified that the DVI-0 output from Fedora does NOT work with the DVI-VGA dongle connected to the VGA input on the Dell. When connected with the DVI-VGA setup listed above, xrandr sees that the InFocus is connected (shown below). Also, Gnome sees the InFocus in the connected displays.

On the flipside, I've verified that the InFocus projector works using the DVI-VGA cable setup when booted from the Mac OS. So that's odd.

Since I can see the output while connected to the Dell's DVI input, I don't think this is a configuration issue. But maybe Fedora just doesn't like the DVI-VGA dongle. I'm sure I could buy an M1-DA direct to DVI adapter and be done with it, but I'd rather save the $55 and figure out why the Mac sees the Infocus, but why Fedora has troubles.

Here is the output of xrandr:
[cm@cm ~]$ xrandr
Screen 0: minimum 320 x 200, current 2464 x 900, maximum 2720 x 1924
LVDS connected 1440x900+0+0 (normal left inverted right x axis y axis)
331mm x 207mm
1440x900 60.0*+
2048x1536 60.0
1920x1440 60.0
1856x1392 60.0
1792x1344 75.0 60.0
1600x1200 85.0 75.0 70.0 65.0 60.0
1400x1050 74.8 60.0
1280x1024 85.0 75.0 60.0
DVI-0 connected 1024x768+1440+0 (normal left inverted right x axis y axis)
0mm x 0mm
1024x768 60.0*+ 85.0 75.1 75.0 70.1 60.0*
1400x1050 60.0
1280x1024 75.0 60.0
1024x768_60.00 60.0
1280x960 60.0
1152x864 75.0
832x624 74.6
800x600 85.1 72.2 75.0 60.3 56.2
640x480 85.0 72.8 75.0 72.8 75.0 60.0
720x400 85.0
640x400 85.1
640x350 85.1
0x0 0.0

Here is my xorg.conf:
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics Touchpad" "CorePointer"

Section "Module"
Load "synaptics"
Load "extmod"
Load "dbe"
Load "glx"

Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mice"
Option "Protocol" "auto-dev"
Option "SHMConfig" "true"
Option "LeftEdge" "10"
Option "RightEdge" "1200"
Option "TopEdge" "10"
Option "BottomEdge" "370"
Option "FingerLow" "10"
Option "FingerHigh" "20"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "SingleTapTimeout" "100"
Option "MaxDoubleTapTime" "180"
Option "LockedDrags" "off"
Option "MinSpeed" "1.10"
Option "MaxSpeed" "1.30"
Option "AccelFactor" "0.08"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "RTCornerButton" "0"
Option "RBCornerButton" "0"
Option "LTCornerButton" "0"
Option "LBCornerButton" "0"
Option "VertScrollDelta" "20"
Option "HorizScrollDelta" "50"
Option "HorizEdgeScroll" "0"
Option "VertEdgeScroll" "0"
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "1"

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"

Section "Device"
Identifier "ATI Technologies Inc M56P [Radeon Mobility X1600]"
Driver "radeon"
Option "backingstore" "true"
Option "RenderAccel" "true"
Option "AccelMethod" "EXA"
Option "Monitor-LVDS" "Internal Monitor"
Option "Monitor-DVI-0" "External DVI"
BusID "PCI:1:0:0"

Section "Monitor"
Identifier "Internal Monitor"
HorizSync 30.0 - 110.0
VertRefresh 50.0 - 150.0
Option "DPMS"

Section "Monitor"
Identifier "External DVI"
Modeline "1024x768_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028
1060 -HSync +Vsync
Option "Enable" "true"

Section "Screen"
Identifier "Screen0"
Device "ATI Technologies Inc M56P [Radeon Mobility X1600]"
DefaultDepth 24
SubSection "Display"
Depth 24
Virtual 2720 1924 # <--- This is the newly added entry

Section "DRI"
Mode 0666

Alex Deucher on the Xorg mailing list was able to help me:
> > > If you are using F10 with kernel modesetting (KMS) it doesn't have the
> > > proper quirks do deal with the broken connector table on the macbooks.
> > > I think the non-KMS code shipped with F10 should have the proper
> > > quirk handling, if not, you may need to upgrade your ddx.

Kernel modesetting on Fedora systems allows the different graphics modes that are specified in the xorg.conf file to be set by the kernel, rather than the Device Dependent X (DDX) driver in the X server. More info here:

So, as per Alex's comment, I did a workaround and used the "nomodeset" kernel parameter option on kernel command line in grub.conf to disable KMS. So now, the display wakes up when Gnome starts.


Xorg/Xrandr References
Xorg Info Page
XRandr Wiki
Open Solaris on MacBook Pro
XRandr on Debian

Saturday, March 07, 2009

upgrading my macbook pro system drive

Lately, I've been preparing a talk on Linux video production in linux that I will be giving at the end of April. More or less, it will be a technology demo that shows how to accomplish various video related tasks in Linux:
-capturing a video (acquisition)
-importing the output from the camera via firewire
-basics of file formats
-saving to a final destination (iPod/DVD/Vimeo)

So there will be a lot of ground to cover in the hour or so I will be speaking. I considered the mechanics of my presentation and first thought it would be cool to use my JVC HD10U to capture video of the conference which I'd then edit in Cinelerra. I had Fedora 10 already running in a virtual machine via VMware Fusion on my MacBook Pro 2.33Ghz Intel Core 2 Duo.

This method posed one big hurdle: VMware does not support firewire. VMware supports USB, but my camera only transmits high def video over firewire. Thus, I would not be able to capture live video from the camera during the talk. Conceivably, I could use a USB camera, but the quality would be so piss poor as to be embarrassing. So the VMware solution was nixed. The best solution was to dual boot my MacBook. I had my marching orders: I had to figure out how to dual boot my MacBook.

As expected, I hit a few speed bumps along the way, as the TechAnswerGuy always does. And as usual, you get to learn from my mistakes. Here we go..

Here was the high level plan:
1) upgrade my system drive to a 320GB 7200RPM Seagate Momentus
I was running out of space on the original 120GB drive, so this would be fun.
2) partition that fat new system drive to have a 240GB partition for Mac OSX and leave the 60GB unused space for Fedora
3) use SuperDuper to backup all important files to the Mac partition
4) use either Boot Camp or rEFIt to present a nice dual boot menu when the MacBook boots
5) configure the Fedora 10, x86-64 instance with a working copy of Cinelerra, dvgrab and all the media goodies necessary to make a slam-bang presentation come alive

Devil in the Details
In order to upgrade my system drive, I needed to migrate the data from the old drive to the new drive. Lucky for Mac users, David Nanian has written a wonderfully simple app called SuperDuper that creates bootable backups of Mac system drives. I prefer the word clone, as it refers to the fact that the backup also makes the drive bootable. Semantics aside, the result is the same.

Since my system drive is the drive that came installed in the MacBook, I needed to hook up the new 320GB Seagate I had bought. This was done using a very neat little device, a non enclosed disk enclosure called the Thermaltake BlacX eSATA Hard Drive Docking Station that I had bought at the same time for this express purpose.

Thermaltake BlacX..Sweet!
What a simple, easy little device to use! It is like a little USB disk drive bucket for both 2.5" and 3.5" disks. You just insert a disk connector side down into this bad boy, plug it in via USB into your PC or MAC, turn it on and voila, instant access to your storage! No fussing with screws or metal sleeves. It's cheap too, low $40s. After using enclosures for years, it is nice to not have to pick up a screwdriver to get access to my storage.

Once I plugged in the new drive into the BlacX and turned it on, it was time to 1) partition the empty drive and 2) do the SuperDuper backup. Partitioning the drive with the OSX Disk Utility was fairly easy. I accepted the defaults for the partition:
* Mac OS Extended partition (Journaled)
* install Mac OS 9 drivers

Partition Hell
Of the 300GB usable out of the drive, I allocated 240GB in the Mac partition and 60GB Free Space to land my Fedora 10 system. One very important thing that I needed to select is under Options:
select GUID Partition Table. Initially, I had taken the defaults settings and the defaults create a drive that uses the older Apple Partition Map drive partitioning scheme:

Do NOT use APM because you will get errors in both Boot Camp and rEFIt. The Boot Camp error went something like this:
Startup disk cannot be partitioned or restored to a single partition.
Backup the disk and use Disk Utility to format it as a single Mac OS Extended (Journaled) Volume.

The above error is very misleading, because when you look at the format of your partition, the partition is formatted in the correct way. But at the bottom of Disk Utility's Partition screen for the drive, the information about the drive will be listed and the key piece is "Partition Map Scheme". If Apple Partition Map is there, you won't be able to use Boot Camp or rEFIt. In my case, I had to repartition the new drive again to create a partition that had a Partition Map Scheme of GUID Partition Table. Here's a short guide that explains how to convert a drive from APM to GUID.

Long story short, you'll have to blow away whatever is on the disk to do the conversion. So be advised.

SooperDooper Indeed!
Once I had resolved the Partition Map problem, I moved onto backing up my sensitive data to the new drive with SuperDuper. There are a number of guides out there and SuperDuper is really easy to use. It took about three hours to copy 100GB of data from my currently internal old system drive to the new 320GB, 7200RPM hard drive that was plugged into the Thermaltake.

Quid Pro Quo
The next step was to take apart the MacBook and switch out the old drive for the new. This was non-trivial, required a delicate touch and took about an hour.

As I am all for open source solutions, I decided to use rEFIt as my boot manager. rEFIt also provides a clean way to install another OS. In point of fact, you don't need rEFIt to boot into a second operating system on your MacBook. Simply hold down the Option button as your MacBook is booting, and you will see OSX's built in system volume chooser.

Once I installed rEFIt, I rebooted the system and I saw the rEFIt boot manager appear. I booted a second time and inserted my Fedora 10, x86-64 install DVD and when the rEFIt boot manager appeared, I now had a second choice appear in the menu. That of Tux!

Familiar Territory
After that, the Fedora install process was the usual. One note: make sure to look at the disk properties in the disk configuration section of the install. Even though Fedora deselects any Mac partitions, it is good to double check this. The Fedora installer make good choices for the partitioning, given that my newly installed system disk in the Mac was found as /dev/sda:
* Fedora automatically deselected the first two partitions in /dev/sda as they were Mac partitions
* Fedora correctly assigned /dev/sda3 as the boot partition

Nice. After confirming Fedora's correct selected defaults for the partitioning layout, I then selected the base installation plus Developer Tools. This selection, plus the dependencies for Cinelerra build resulted in about 5.1GB used on the disk. Not too porky. I went to breakfast and the install finished in about 30 minutes.

After the system restarted, I found some troubles with the Mac's touchpad. I resolved them with the synaptics driver and some xorg.conf config, but I will detail that in a second post.

I will try to fill in some of the details of this long winded post with pictures to break up the monotony of the text.


Other References
Feel free to drop me a line or ask me a question.