Thursday, June 11, 2009

Fedora 11 64-bit Final on Macbook Pro 4,1

Installation Process



1. Touchpad



Touchpad doesn't work as usual during installation. Connect a USB mouse and things should be ok.

2. Install



Burn the DVD from http://fedoraproject.org and install OS as usual. If you need some help regarding the partitioning refer to this post

Post Install Process




1. BootDisk error



If you re-format all your partitions using Fedora-11 DVD during the installation, you might see this error "Invalid Boot Disk -- Insert boot disk and press any key to continue" error.

In order to fix this error, you need follow these steps


  1. Reboot your system
  2. Go to the 'refit' menu
  3. Choose the second icon from the left (Partitioning tool)
  4. If you see the 'refresh mbr', then do as requested
  5. Thats all! Now you should be able to boot correctly into Fedora


Shutdown your macbook and reboot. Now everything should work as usual




2. Wireless



You no longer need to install the ndiswrapper manually. Configure the 'livna' repository and install the ndiswrapper.


bash$ sudo yum install ndiswrapper


Download the drivers from here, and add them to the ndiswrapper


bash$ cd /tmp/drivers
bash$ sudo ndiswrapper -i *.inf
bash$ sudo ndiswrapper -m
bash$ sudo ndiswrapper -mi
bash$ sudo ndiswrapper -ml



3. Touchpad/Tapping



Fedora 11 Automatically configures the touchpad driver using the bcm5974 driver present in the 2.6.29 kernel.

But, not all the tapping/right-click,scrolling features are available. You need to create a new .fdi file with all the options to "synaptics" driver



nareshv@localhost $ cd /usr/share/hal/fdi/policy/20thirdparty
nareshv@localhost $ cp 10-synaptics.fdi 100-synaptics-custom.fdi



(Now edit 100-synaptics-custom.fdi, with the following contents)


nareshv@localhost $ cat 100-synaptics-custom.fdi
<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- DO NOT EDIT THIS FILE IN PLACE.
This file will be overwritten with the next update. If you need to add
custom options, copy the file into /etc/hal/fdi/policy/ first.

See https://fedoraproject.org/wiki/Input_device_configuration -->

<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<!-- To add custom options for the touchpad, modify the examples below
to suit your needs. The available options are listed in the
"synaptics" man page. After modifyfing this file, you must
restart HAL. Check the output of lshal whether your modifications
have been merged successfully.

Note: <merge key="input.x11_options.s must always be type "string".
The following examples enable left, right, middle clicks on
single, double, triple finger tapping, respectively.

<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>
-->
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.LeftEdge" type="string">10</merge>
<merge key="input.x11_options.RightEdge" type="string">1200</merge>
<merge key="input.x11_options.TopEdge" type="string">10</merge>
<merge key="input.x11_options.BottomEdge" type="string">370</merge>
<merge key="input.x11_options.FingerLow" type="string">10</merge>
<merge key="input.x11_options.FingerHigh" type="string">20</merge>
<merge key="input.x11_options.MaxTapTime" type="string">180</merge>
<merge key="input.x11_options.MaxTapMove" type="string">220</merge>
<merge key="input.x11_options.SingleTapTimeout" type="string">100</merge>
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge>
<merge key="input.x11_options.LockedDrags" type="string">off</merge>
<merge key="input.x11_options.MinSpeed" type="string">1.10</merge>
<merge key="input.x11_options.MaxSpeed" type="string">1.30</merge>
<merge key="input.x11_options.AccelFactor" type="string">0.08</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>
<merge key="input.x11_options.ClickFinger1" type="string">1</merge>
<merge key="input.x11_options.ClickFinger2" type="string">3</merge>
<merge key="input.x11_options.ClickFinger3" type="string">2</merge>
<merge key="input.x11_options.RTCornerButton" type="string">0</merge>
<merge key="input.x11_options.RBCornerButton" type="string">0</merge>
<merge key="input.x11_options.LTCornerButton" type="string">0</merge>
<merge key="input.x11_options.LBCornerButton" type="string">0</merge>
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge>
<merge key="input.x11_options.HorizScrollDelta" type="string">50</merge>
<merge key="input.x11_options.HorizEdgeScroll" type="string">0</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">0</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
</match>
</device>
</deviceinfo>


NOTE: If you want to adjust the tapping, speed of mouse scroll, do these things



nareshv@localhost $ sudo yum install gsynaptics



Make your changes. and run the following command to see the latest changes. Now use the below keywords and update the above .fdi file.



nareshv@localhost $ synclient -l
Parameter settings:
LeftEdge = 10
RightEdge = 1200
TopEdge = 10
BottomEdge = 370
FingerLow = 10
FingerHigh = 20
FingerPress = 256
MaxTapTime = 180
MaxTapMove = 220
MaxDoubleTapTime = 180
SingleTapTimeout = 100
ClickTime = 100
FastTaps = 0
EmulateMidButtonTime = 75
EmulateTwoFingerMinZ = 282
EmulateTwoFingerMinW = 7
VertScrollDelta = 20
HorizScrollDelta = 50
VertEdgeScroll = 0
HorizEdgeScroll = 0
CornerCoasting = 0
VertTwoFingerScroll = 1
HorizTwoFingerScroll = 0
MinSpeed = 1.1
MaxSpeed = 0
AccelFactor = 1.3
TrackstickSpeed = 0
EdgeMotionMinZ = 30
EdgeMotionMaxZ = 160
EdgeMotionMinSpeed = 1
EdgeMotionMaxSpeed = 120
EdgeMotionUseAlways = 0
UpDownScrolling = 1
LeftRightScrolling = 1
UpDownScrollRepeat = 1
LeftRightScrollRepeat = 1
ScrollButtonRepeat = 100
TouchpadOff = 0
GuestMouseOff = 0
LockedDrags = 0
LockedDragTimeout = 5000
RTCornerButton = 0
RBCornerButton = 0
LTCornerButton = 0
LBCornerButton = 0
TapButton1 = 0
TapButton2 = 0
TapButton3 = 0
ClickFinger1 = 1
ClickFinger2 = 3
ClickFinger3 = 2
CircularScrolling = 0
CircScrollDelta = 0.1
CircScrollTrigger = 0
CircularPad = 0
PalmDetect = 0
PalmMinWidth = 10
PalmMinZ = 200
CoastingSpeed = 0
PressureMotionMinZ = 30
PressureMotionMaxZ = 160
PressureMotionMinFactor = 1
PressureMotionMaxFactor = 0
GrabEventDevice = 1




4. Audio



Somehow the audio doesn't work out of the box, you need to set the model option


bash$ echo "options snd_hda_intel model=mbp3" >> /etc/modprobe.d/sound


5. Bluetooth



Works out of the box

6. Firewire



Haven't tested (Don't have a device to check)

7. Microphone



Haven't tested

8. Network Card



Works out of the box

9. Nvidia Graphics card



Works out of the box, using "nouveau" driver.

10. Keyboard special keys / Backlight



works out of the box.


11. isight (webcam)



Works out of the box.

12. Sensors



Works out of the box.


nareshv@localhost $ sensors
applesmc-isa-0300
Adapter: ISA adapter
Left side :1996 RPM (min = 2000 RPM)
Right side :1999 RPM (min = 2000 RPM)
temp1: +32.2°C
temp2: +43.2°C
temp3: +42.0°C
temp4: +52.5°C
temp5: +43.0°C
temp6: +70.0°C
temp7: +51.5°C
temp8: +42.8°C
temp9: +36.8°C
temp10: +37.0°C
temp11: +37.8°C
temp12: +34.0°C


14. Suspend , Resume



Fedora 11 still has this suspend resume bug. Upon resume we will get this error from dmesg and the mouse will be stuck


nareshv@ localhost $ | dmesg | tail -1
bcm5974: bad trackpad package, length: 8


Fix is as described in my earlier post.



(If you are running 32-bit Fedora 11 use /usr/lib instead of /usr/lib64)


nareshv@nareshv «sr/lib64/pm-utils/sleep.d $ ls -l
total 64
-rwxr-xr-x. 1 root root 2490 2009-04-24 15:21 00auto-quirk*
-rwxr-xr-x. 1 root root 274 2009-04-24 15:21 00logging*
-rwxr-xr-x. 1 root root 203 2009-04-24 15:21 00powersave*
-rwxr-xr-x. 1 root root 809 2009-04-24 15:21 01grub*
-rwxr-xr-x. 1 root root 664 2009-04-24 15:21 49bluetooth*
-rwxr-xr-x. 1 root root 991 2009-04-24 15:21 55NetworkManager*
-rwxr-xr-x. 1 root root 141 2009-02-26 19:25 56atd*
-rwxr-xr-x. 1 root root 335 2009-04-24 15:21 75modules*
-rwxr-xr-x. 1 root root 455 2009-04-24 15:21 90clock*
-rwxr-xr-x. 1 root root 1098 2009-04-24 15:21 94cpufreq*
-rwxr-xr-x. 1 root root 297 2009-04-24 15:21 95led*
-rwxr-xr-x. 1 root root 707 2009-04-24 14:57 95packagekit*
-rwxr-xr-x. 1 root root 2269 2009-04-24 15:21 98smart-kernel-video*
-rwxr-xr-x. 1 root root 2068 2009-04-24 15:21 99hd-apm-restore.hook*
-rwxr-xr-x. 1 root root 5685 2009-04-24 15:21 99video*

[nareshv@nareshv ~]$ cat /usr/lib64/pm-utils/sleep.d/02touchpad
#!/bin/bash

if [ -e '/usr/lib64/pm-utils/functions' ];then
. /usr/lib64/pm-utils/functions
fi

suspend_bcm5974() { /sbin/rmmod bcm5974; }
resume_bcm5974() { /sbin/modprobe bcm5974; }

case "$1" in
suspend|hibernate)
suspend_bcm5974;
;;
thaw|resume)
resume_bcm5974;
;;
*)
;;
esac

exit $?