Diff for "MacBook2-1/Hardy"


Differences between revisions 1 and 203 (spanning 202 versions)
Revision 1 as of 2006-11-25 19:34:27
Size: 18165
Editor: c-24-18-171-99
Comment: Copied from w.u.c
Revision 203 as of 2008-06-04 19:09:04
Size: 40551
Editor: yangmei
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= How to install Ubuntu 6.10 "Edgy Eft" on a MacBook =
Hello world!
Here's my guide '''how to install Ubuntu 6.10 "Edgy Eft" on a MacBook'''.
Discussion thread at: http://ubuntuforums.org/showthread.php?p=1699961

Why another HOWTO? There are others available already (see references below). But this one is different:
 * Using only GRUB instead of LILO bootloader
 * For the latest Ubuntu release
 * Made for the official wiki
 * Designed for Copy and Paste
 * '''Installation completes successfully without error, yes, on a MacBook!'''
This is the way to go it you don't care about Windows and want only Mac OS X and Linux with Boot Camp:
 1. First, update MacOS X to the latest version using [http://www.apple.com/macosx/upgrade/softwareupdates.html Software Update] and upgrade the [http://www.apple.com/support/downloads/ firmware] to the latest version.
 2. Once this is done install [http://refit.sourceforge.net/ rEFIt] following the [http://refit.sourceforge.net/doc/c1s1_install.html documentation]:
  * Download and mount the [http://prdownloads.sourceforge.net/refit/rEFIt-0.8.dmg?download rEFIt-0.8.dmg] disk image.
  * Double-click on the '''rEFIt.mpkg''' package.
  * Follow the instructions and select your Mac OS X installation volume as the destination volume for the install.
 3. Use the [http://www.apple.com/macosx/bootcamp/publicbeta.html Boot Camp] to partition the drive in two. When asked whether to create a driver disk, answer "no" and click on "reboot" at the end of the process. This way you have a shrinked Mac OS X partition and a windows partition which you will replace with some Linux partitions.
 4. Get the [http://releases.ubuntu.com/edgy/ubuntu-6.10-desktop-i386.iso Live CD] and boot on it. Choose your language and/or keymap. Select ''Start or install Ubuntu''.
 ||<tablestyle="background: red; width:100%"> (!) If your system doesn't boot because of a kernel panic, restart the computer, but before trying it again, press F6 and enter the following parameter at the ''`boot:`'' prompt: '''`lpj=8000000`'''[[BR]]'''N.B.: It will automatically be applied to the installed system so you won't have to enter it manually ever again!'''||
 1.#5 To install Ubuntu, double-click '''Install''' on your desktop, then click through the installer as usual. The defaults are fine most of the time. For the default partition scheme, follow these steps:

 At step 5 of 6, "Prepare disk space", choose ''Manually edit partition table'' and click ''Forward''. Delete /dev/sda3 (and /dev/sda4 if it exists) from /dev/sda. Click ''Forward'', then ''Apply'', finally ''Close''. Still at step 5 of 6, "Prepare mount points", click ''Back'' and ''Back'' again. Now choose ''Use the largest continuous free space'' and click ''Forward''.
 ||<tablestyle="background: red; width:100%"> /!\ At step 6 of 6, "Ready to install", '''DO NOT''' click on ''Install'' '''JUST YET'''!||
 1.#6 To make GRUB installation work, GPT and MBR must be in sync and the boot partition must be of type Linux. Thanks to Debian's [http://packages.debian.org/unstable/admin/refit refit] package, available in its unstable repository, GPT and MBR can be synced from within Ubuntu. After partitioning the Macintosh HD, but before installing GRUB, syncing must be done and the boot partition type must be set to Linux. (Since the installer always repartitions the disk automatically, breaking GPT/MBR sync, fixing the disk before starting the installation doesn't work!)

 Before clicking ''Install'', download and install the refit [http://ftp.debian.org/debian/pool/main/r/refit/refit_0.7-3_i386.deb .deb], then open a terminal and enter the following command ('''without hitting Enter!'''):
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Contents'''[[BR]][[TableOfContents(2)]]||

= How to install Ubuntu on a MacBook =
This guide will help you through all the steps necessary for installing Ubuntu on a MacBook. This guide is currently aimed at Ubuntu 8.04 (Hardy Heron) but still has some parts valid for Ubuntu 7.10 (Gutsy Gibbon).

If you own a MacBook Pro see this guide: MacBookPro, but note that almost everything is the same, and that this page is also relevant.

If you own a new MacBook (Santa Rosa v3.1) see [:MacBook_Santa_Rosa:this guide]. To determine which version / generation of MacBook you have, click in OS X on the Apple on the top left, then "About this Mac" -- "More Info...". You can see the generation in the "Model Identifier" row.

For further discussion of this topic, see: http://ubuntuforums.org/showthread.php?p=1699961

For a guide to Triple Booting, see: http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp_Ubuntu

'''The instructions below refer to Apple's BootCamp application which is no longer publicly available unless you use / upgrade to OSX 10.5 Leopard. Another option, however, is to resize Mac OS X partition using ''diskutil'' or re-install Mac OS X from scratch and use Disk Utility to make a smaller Mac OS X partition, leaving free space for Ubuntu.'''

== Basic instructions ==
 1. Update the [http://www.apple.com/support/downloads/ firmware] to the latest version. If you prefer, you may use the standard "Software Update" (accessible from your OS X partition, if you have one)
 1. Get your Ubuntu [http://www.ubuntu.com/getubuntu/download Live CD] ready. For older MacBooks you must select `i386`; for Core 2 Duo MacBooks (post 2006) you can select `amd64` if you're interested in running a 64-bit OS, otherwise `i386` may be selected.
 1. Install [http://refit.sourceforge.net/ rEFIt] if you want a boot menu (to select between OS X/Ubuntu) to appear on every boot. You can make Ubuntu boot by default and change the menu timeout by editing the "refit.conf" file (described on the above website).
 1. If necessary, use Boot Camp to resize your OSX partition and make space for Ubuntu. Don't waste a CD creating a Windows driver disk. Reboot.
 1. Hold down "C" to boot from the CD.
 1. Install Ubuntu as usual, except:
  * In the partitioner, select ''Manually edit partition table''
  * Delete /dev/sda3 and /dev/sda4 if they exist
  * Create a new ext3 partition for your root
  * Mount the newly created ext3 partition on '/'
  * On the last screen, click on the "Advanced" button and select instead /dev/sda in the drop-down list for installing GRUB
  * Note that Boot Camp will cause problems if you make more than two partitions in total.
 1. Finish the install and reboot.
 1. If you installed rEFIt, you should have a choice between booting OS X and Ubuntu. Use the arrow keys and Enter to select Ubuntu. In case you are stuck with a "No bootable device -- insert boot disk and press any key" message, reboot, go in rEFIt to the Partitioning Tool, and let it update the MBR.
 1. Alternatively, if you did not install rEFIt, hold down Alt/Option to choose whether to boot into OSX / Ubuntu. The Boot Camp-installed boot menu will recognize the Ubuntu installation as "Windows," but will boot Ubuntu normally regardless.
 1. Log in to your system.
 1. Follow the instructions below to set up the various hardware components that don't work out-of-the-box on Gutsy.

== Sound ==

Sound on MacBooks is provided by an Intel HDA-based integrated chipset, and should work out-of-the-box. However, in Ubuntu 8.04 alsa drivers 1.0.15 will not work with some chipsets, like SigmaTel STAC9221. In such cases everything seems to work fine but no sound is present (even unmuting all controls). Alsa drivers 1.0.16 should work fine, to install them:

{{{
sudo apt-get install build-essential linux-headers-$(uname -r) module-assistant alsa-source
sudo dpkg-reconfigure alsa-source
sudo module-assistant a-i alsa-source
}}}

This may disable Madwifi drivers for the wireless card, hence you want to compile alsa first.

The volume control will not work correctly out-of-the-box - in particular, reducing the default volume will result in sound distortion at lower volume levels, and volume control changes won't effect the headphone volume level.

To fix this, do the following

1. Add the following line to /etc/modprobe.d/alsa-base:
{{{
install snd-hda-intel position_fix=1 /sbin/modprobe --ignore-install snd-hda-intel $CMDLINE_OPTS && /lib/alsa/modprobe-post-install snd-hda-intel
}}}

2. Increase the volume (both using the key combination and the system tray applet) to its maximum possible value.

3. Right-click on the volume applet and choose Preferences. Select "PCM" as the device to control.

4. Open the Sound preferences (System-Preferences-Sound in GNOME). Select "PCM" as the device to control.

The above setting changes (step 3 and 4) can be done via the command line using these two gconftool-2 commands:
{{{
gconftool-2 --type list --list-type string --set /desktop/gnome/sound/default_mixer_tracks [PCM]
gconftool-2 --type string --set /apps/panel/applets/mixer_screen0/prefs/active-track PCM
}}}

Step 1. may be necessary in Hardy even if you don't appreciate this issue.

There may be no output from the headphone jack out of the box on a 2nd gen (C2D) MacBook in Hardy [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/201957 bug #201957]. For a workaround, right-click on the volume applet, choose "Open Volume Control", choose "Edit > Preferences", check "Surround" to make the channel visible, and close Preferences. Now, unmute "Surround", and you're done.

== Microphone ==

The built-in iSight microphone (above the LCD screen) will not record out of the box, but is really easy to get working. The steps that I took to get the microphone working were:

1. right-click on the volume applet and select "Open Volume Control".

2. within the volume control application select "Edit > Preferences".

3. select "Capture", "Mux", and "Input Source" at the bottom of the list, and close.

4. select the "Recording" tab and set "Capture" to full volume and "Mux" at about 1/3 full volume (higher results in static).

5. make sure Capture and Mux are unmuted!

6. select the "Options" tab and select "Mic" as the input source.

note: the only options I have checked in "Edit > Preferences" (step 2 above) are: PCM, Capture, Input source, and Mux.

The above settings, minus the 1/3 volume level setting, can be toggled using the below commands:

{{{
gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerMux --type bool 1
gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerPCM --type bool 1
gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerInputSource --type bool 1
}}}

== Wireless ==

If you have a first generation MacBook (Core Duo) then your wireless should just start working, though you may want to update to the latest version as illustrated below for better power efficiency and signal strength. Second generation Mac``Books (Core 2 Duo) have a newer version of the Atheros Wifi chipset which requires the installation of the latest Atheros Mad``Wifi drivers. [https://bugs.launchpad.net/madwifi/+bug/122703 bug #122703]

Please note that the current Mad``Wifi drivers depend on a proprietary binary, the Atheros HAL, and therefore are not open-source software. A free software implementation, [http://madwifi.org/wiki/About/OpenHAL OpenHAL], is currently being developed by the Madwifi devs, but unfortunately it does not support the Atheros chipset in the MacBooks yet.

The following commands compile and install the prerelease Mad``Wifi driver, insert it into the kernel, and disable background scanning for better stability. For installation, you can choose to use daily snapshots or Subversion.

Using daily snapshots:
{{{
sudo apt-get install build-essential autoconf automake
wget http://snapshots.madwifi.org/madwifi-trunk-current.tar.gz
tar -zxvf madwifi-trunk-current.tar.gz
cd madwifi-trunk-r*
make
sudo make install-modules
echo -e '#!/bin/sh\n/sbin/iwpriv ath0 bgscan 0' | sudo tee -a /etc/acpi/resume.d/99-madwifi-bgscan.sh
sudo chmod 755 /etc/acpi/resume.d/99-madwifi-bgscan.sh
}}}

Alternatively, using Subversion (be patient with the checkout, it may take a while):
{{{
sudo apt-get install build-essential subversion autoconf automake
svn co http://svn.madwifi.org/madwifi/trunk madwifi
cd madwifi
make
sudo make install-modules
echo -e '#!/bin/sh\n/sbin/iwpriv ath0 bgscan 0' | sudo tee -a /etc/acpi/resume.d/99-madwifi-bgscan.sh
sudo chmod 755 /etc/acpi/resume.d/99-madwifi-bgscan.sh
}}}

At this point the driver should be installed and will be enabled after a reboot. Alternatively, you can skip the reboot and use the following commands to insert the driver into the running kernel:
{{{
sudo modprobe ath_pci
sudo iwpriv ath0 bgscan 0
}}}

Additionally, the Mad``Wifi drivers are sometimes unstable under certain circumstances when using the standard NetworkManager tool for managing networks. Because of these reasons, you may want to disable the drivers if you aren't using wireless. To do this, edit the /etc/modprobe.d/blacklist file and add "blacklist ath_pci" at the bottom. Additionally, you can deselect the Atheros HAL in the Restricted Manager (System-Administration-Restricted Drivers Manager).

To disallow replacement of just installed modules by installing linux-restricted-modules package update you can edit /etc/default/linux-restricted-modules-common and insert ath_hal into DISABLED_MODULES list:
{{{
sudo sed -i~ -e 's/^\(DISABLED_MODULES="\)\(.*"\)/\1ath_hal \2/' -e 's/ "$/"/' /etc/default/linux-restricted-modules-common
}}}

More information can be obtained at
http://madwifi.org/wiki/UserDocs/FirstTimeHowTo

If you need to connect to a channel that's not allowed in the regulatory domain in which you bought your laptop, you'll need to follow these instructions: http://tumbleweed.org.za/2008/02/11/madwifi-regdomain-issues

=== Ndiswrapper ===
If you instead want to use ndiswrapper to use the Windows wireless drivers on Ubuntu (only for 32-bit) these are the instructions:

You have to have the XP drivers on your hard disk. If you don't have a Windows XP installation on an alternate partition, you can get the drivers from the Boot Camp driver disk. The drivers from the Boot Camp disk can be uncompressed using the non-free unrar in the multiverse repository:
 * Enable multiverse ( see [:Repositories/Ubuntu:Repositories] )
 * Install the packages {{{rar unrar}}} (actually only unrar is truly necessary)
 * Uncompress the Windows XP Atheros driver installer:

{{{
mkdir ~/atheros
unrar x atherosxpinstaller.exe ~/atheros/
}}}

 * Install the atheros drivers using ndiswrapper:
{{{
sudo apt-get install ndiswrapper-utils-1.8

#install the driver into ndiswrapper:
sudo ndiswrapper -i "~/atheros/net5416.inf"
#--or--
sudo mount /dev/sda4 /mnt
sudo ndiswrapper -i "/mnt/Program Files/Macintosh Drivers for Windows XP 1.1.2/net5416/net5416.inf"

sudo modprobe ndiswrapper
sudo echo >> /etc/modules "ndiswrapper"
sudo umount /mnt
}}}

Reference: http://paulglover.net/20061210/triple-booting-macbook-os-x-ubuntu-edgy-windows-xp/

=== Wicd ===

In order to fix the wireless for the most recent Linux kernels, you may want to install wicd (http://wicd.net) instead of using network-manager. Follow the instructions for installation on Ubuntu on their website, then use these preferences:

WPA Supplicant Driver: wext
Wireless Interface: ath0
Wired Interface: eth0

All of the rest should not matter, except for your specific network settings, you should just leave them alone.

== Brightness ==

Brightness controls should work out-of-the box using HAL and GNOME Power Manager in Ubuntu 7.10. However, there are a few issues with automatic dimming. In particular, the automatic dimming feature actually *brightens* the MacBook screen when on AC, and on battery it brightens the screen if the screen brightness has been adjusted to a value below the standard level for battery power. This is documented in bug [https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/137598 #137598] and [https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/63543 #63543].

Due to these issues, you may want to disable auto-dimming. This can be done by opening the Gconf Editor (gconf-editor in a Terminal will open it), and unchecking the key "enable" in "apps/gnome-power-manager/backlight". If at a later time you want to re-enable this feature (i.e. if the bug is fixed in a future update) simply return to this key and check it instead of unchecking it.

** Easy fix for Macbook Pro Gutsy

I simply went into System > Preferences > Power Management
 1) I unchecked "Dim Display when idle"
 2) In the "On Battery Power" tab, uncheck "Dim Display when idle"
 3) in the "General" tab, uncheck "use ambient light to adjust LCD brightness" <<-- This seems to be the main problem, but I kept the other two unchecked just to be sure ;-)

== Suspend ==

Suspend is broken in Ubuntu 7.10 on many first-generation MacBooks as well as some later-generation MacBooks and MacBook Pros [https://bugs.launchpad.net/bugs/151016 #151016]. In particular, these machines will go into suspend, but will not come out of suspend. This is because the 32bit kernel supplied with 7.10 has some issues which prevent this from working (the x86_64 kernel works correctly out of the box). To fix this you will have to download an older version of the Linux kernel that is known to work. The latest known version to work is 2.6.22-12, which you can download by installing the packages at the locations pointed to below. Be sure to install them in the order as they appear here.

https://launchpad.net/ubuntu/gutsy/i386/linux-image-2.6.22-12-generic/2.6.22-12.39
https://launchpad.net/ubuntu/gutsy/i386/linux-headers-2.6.22-12/2.6.22-12.39
https://launchpad.net/ubuntu/gutsy/i386/linux-headers-2.6.22-12-generic/2.6.22-12.39
https://launchpad.net/ubuntu/gutsy/i386/linux-ubuntu-modules-2.6.22-12-generic/2.6.22-12.32
https://launchpad.net/ubuntu/gutsy/i386/linux-restricted-modules-2.6.22-12-generic/2.6.22.4-12.3

After installing, edit /boot/grub/menu.lst and change the default=0 line to default=2 (if the newly-installed kernel is the third listed in the menu.lst file, which it should be when installed on a stock Gutsy install).

Restart your MacBook for the update to take effect. You will have to reinstall any wireless drivers you may have installed in the past.

Alternatively, users who prefer a newer kernel to an older one can install the 2.6.24 kernel packages from the upcoming Ubuntu 8.04 release by adding the hardy repositories to their software sources:
{{{
deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://security.ubuntu.com/ubuntu hardy-security main restricted
}}}
Note: These should not replace the existing gutsy sources, but should be in addition to them. See the Repositories Howto for more information.

Once the new repositories have been added, and the package list reloaded, installing the new linux-generic should get all the necessary kernel packages from hardy, including linux-image, linux-ubuntu-modules, and linux-restricted-modules. Once the new packages are installed, disable (but don't remove) the hardy repositories, so that upgrades using apt or synaptic don't result in a complete upgrade to hardy. The user can periodically re-enable these repositories in order to check for updated kernel packages.

Rebooting into the new kernel ''should'' result in a perfectly suspending MacBook.

On my Macbook (2007), I need to edit /etc/default/acpi-support in the following way:

- change POST_VIDEO=true into POST_VIDEO=false

- Add sky2 in the modules to be removed before suspend and reloaded after: MODULES="sky2"

Note: on my MacBook (2nd gen: Nov 2006), using the hardy kernel as explained above, no change to /etc/default/acpi-support was required.

== Fonts & Desktop Effects ==

When using desktop effects (which are enabled by default on most MacBooks), the fonts used for menu bar titles will sometimes be larger than normal. This issue is described in detail in bug [https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/141001 #141001].

To fix this, in /etc/gdm/gdm.conf change:

{{{
[server-Standard]
name=Standard server
-command=/usr/bin/X -br -audit 0
}}}

to

{{{
[server-Standard]
name=Standard server
-command=/usr/bin/X -br -audit 0 -dpi 96
}}}

Restart X for this to take effect.

== Whining noise ==

In order to fix the whining noise that some MacBooks make, you need to install the iSight firmware. To install the iSight firmware, follow the steps listed below under "iSight". After installing the firmware and restarting, your MacBook should be whine-free.

Note: The above does not always work. In that case, add the following to /etc/init.d/acpid before exit 0.
{{{
echo 2 > /sys/module/processor/parameters/max_cstate
}}}

== iSight ==

The iSight is currently broken in Ubuntu Hardy, please see
https://bugs.launchpad.net/ubuntu/+source/linux-ubuntu-modules-2.6.24/+bug/185634

iSight works on Gutsy as long as you either 1) boot OS X before booting Gutsy or 2) install the iSight firmware in Gutsy.
To install the iSight firmware, perform the following steps, substituting your Mac OS X partition for sdax (most probably sda2). Please note that you need a Mac OS X partition to extract the firmware.

{{{
sudo mount -t hfsplus /dev/sdax /mnt
sudo cp /mnt/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/* /lib/firmware/$(uname -r)
}}}

Also, in /etc/default/acpi-support, edit the line that begins with MODULES such that it reads:

{{{
MODULES="isight_usb"
}}}

Restart for this to take effect. Once the firmware is functional, the iSight may be used with the "ekiga" program.

To install prerequisites and launch Ekiga (Ekiga may also be launched through the menus), do the following:

{{{
sudo apt-get install ekiga libpt-plugins-v4l2
ekiga
}}}

 1. Configuration. You may have to select the iSight device. Edit > Preferences > Devices > Video Devices >
 1. Video plugin: V4L2
 1. Input device: Built-in iSight

If you want to use it in 640x480 mode, then:

{{{
gconftool-2 --type integer --set /apps/ekiga/devices/video/size 1
}}}

== Minimum Fan Speed ==

To set a minimum fan speed which may help your MacBook run cooler. Substitute your speed of choice (in RPM) for 3000 if you wish.

First you need to load the appropriate module:
{{{
sudo modprobe applesmc
echo applesmc | sudo tee -a /etc/modules
}}}
then add the following line to /etc/init.d/acpid just before the exit statement:
{{{
echo 3000 > /sys/devices/platform/applesmc.768/fan1_min
}}}

== Reducing Power Consumption ==

PowerTOP is a program that monitors a Linux system and gives suggestions on reducing power consumption. To install PowerTOP, enter this command in a terminal:

{{{
sudo apt-get install powertop
}}}

PowerTOP must always be run as root, so use the following command to run it:

{{{
sudo powertop
}}}

== Reducing Drive Load/Unload Cycles ==

My Second Generation (C2D) MacBook is susceptible to a high load/unload cycle count on the hard drive. This is a workaround to lower the drive cycles and extend the drive life. Generate the following three files using the commands below:

{{{
echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/start.d/99-macbook-fix.sh
echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/resume.d/99-macbook-fix.sh
echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/suspend.d/99-macbook-fix.sh
}}}

Add execute permissions to the files:

{{{
sudo chmod a+x /etc/acpi/start.d/99-macbook-fix.sh
sudo chmod a+x /etc/acpi/resume.d/99-macbook-fix.sh
sudo chmod a+x /etc/acpi/suspend.d/99-macbook-fix.sh
}}}

To have these changes take effect immediately (without requiring a reboot):

{{{
sudo hdparm -B 254 /dev/sda
}}}

See [https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695 this bug] for more details.

note: this is Ubuntu 8.04 "Hardy" on the Second Generation (C2D) MacBook. I have not tested on previous releases or other models.

== Right/Middle Clicking ==

There are two main approaches to right/middle clicking:
 * Two/three finger taps via the synaptics touchpad driver by editing xorg.conf
 * Remapping the functions of keys on the keyboard by editing system keyboard layouts or using xmodmap and a local configuration file

=== Multi-finger taps ===
See [#touchpadtweaks More touchpad tweaks].

=== Keyboard keys ===
Enable mouse emulation:
 * On Ubuntu: Go to '''System ▸ Preferences ▸ Keyboard ▸ Accessibility''' in the Main menu. Check '''Enable keyboard accessibility features'''. Click the ''Mouse Keys'' tab and check '''Enable Mouse Keys''' also.
 * On Kubuntu: bring up ''System Settings'', find ''Keyboard & Mouse'', choose ''Mouse'' on the left, than the ''Mouse Navigation'' tab, and check the checkbox beside ''Move pointer with keyboard (using the num pad)''. Please note that on Kubuntu you will lose your numpad.
 * On Xubuntu: Go to '''Applications ▸ Settings ▸ Mouse Settings''' and on the '''Accessibility''' tab, enable the '''Enable mouse emulation''' check box.
Then '''either''' edit the system files '''or''' use a local configuration file and xmodmap:
 * Editing system files (choose '''one''' of the following options):
  * '''option 1:''' lower Enter key = Right Mouse Button, Shift + lower Enter key = Middle Mouse Button
  {{{
sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button2/' /etc/X11/xkb/symbols/keypad
}}}
  * '''option 2:''' lower Enter key = Right Mouse Button, Alt Gr key + lower Enter key = Middle Mouse Button
  {{{
sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button3, Pointer_Button2, Pointer_Button2/' /etc/X11/xkb/symbols/keypad
}}}
 * Using xmodmap and a local configuration file to override the system-wide layouts:
  * The keycodes for relevant keys are:
   * right Apple - keycode 116
   * lower enter - keycode 108
  * The keysyms for relevant input events are:
   * Alt Gr - ISO_Level3_Shift
   * Middle-click - Pointer_Button2
   * Right-click - Pointer_Button3
  * Create a text file as ~/.xmodmap containing the following text:
  ('''Note''': for my set up I use left Apple as Alt Gr, right Apple as middle-click and lower enter as right-click. If you want to use right Apple as Alt Gr then you may need to rethink your keys for clicks assignments.)
  {{{
keycode 116 = Pointer_Button2
keycode 108 = Pointer_Button3
}}}
  * Add a call to xmodmap to your startup applications:
   * On Xubuntu: Go to '''Applications ▸ Settings ▸ Autostarted Applications''', click the '''Add''' button, fill in the '''Name''' and '''Description''' fields and put the following into the '''Command''' field:
   {{{
xmodmap ~/.xmodmap
}}}
   Then click '''OK''' and '''Close'''.

'''Restart X (Ctrl+Alt+Backspace) for the changes to take effect.'''


== Motion Sensor ==

The motion sensor doesn't support disk parking yet ([https://bugs.launchpad.net/bugs/139881 bug #139881]), but you can play physical neverball :-)

{{{
sudo modprobe applesmc
echo applesmc | sudo tee -a /etc/modules
}}}

Then fire up neverball... (or any other game that uses a joystick)


== Keyboard layouts ==

(Xubuntu 7.10 UK MacBook) There are some MacBook / MacBook Pro keyboard models defined in xkb, however, I have found that the Apple Laptop model with layout as ''gb'' (for my UK MacBook) and variant as ''mac'' with the xmodmap configuration as below. Maybe this approach will work well for others.

To make the keyboard usable, for an international keyboard layout:
## TODO cjwatson 2007-03-27: is this still required in Ubuntu 7.04? Changes like this won't be preserved on upgrade any more, so aren't recommended.

 * The GUI way:
 Bring up the ''Keyboard Preferences'' window with '''System ▸ Preferences ▸ Keyboard''' from the Main menu. Click on the '''Keyboard Layout Options''' tab, and find '''Third level choosers'''. Mark the ''right Win key'' as third level chooser. Now your right Apple key works as Alt Gr.
 * The console way, editing system files:
  * Alt Gr for right Apple key
  {{{
sudo sed -i~ '/xkb_symbols "ralt_switch" {/a\ include "level3(rwin_switch)"' /etc/X11/xkb/symbols/level3
}}}
  * Fix swapped keys
  {{{
sudo sed -i~ 's/ <LSGT> = 94;/ <LSGT> = 49;\n <TLDE> = 94;/' /etc/X11/xkb/keycodes/xfree86
}}}
 * The console way, using xmodmap and a local configuration file:
  * keycodes for relevant keys:
   * left Apple - keycode 115
   * right Apple - keycode 116
   * § or ± (UK MacBook key beneath escape) - keycode 49
   * ` or ~ (UK MacBook key left of z) - keycode 94
  * keysyms for relevant characters/functions:
   * Alt Gr - ISO_Level3_Shift
   * § or ± - section plusminus
   * ` or ~ - grave tilde
  * To fix the swapped keys and make left Apple equivalent to Alt Gr, edit a text file at ~/.xmodmap (create it if it doesn't exist) adding the following lines:
  {{{
keycode 115 = ISO_Level3_Shift
keycode 49 = section plusminus
keycode 94 = grave asciitilde
}}}
  Then add {{{xmodmap ~/.xmodmap}}} to your start up.

'''Restart X (Ctrl+Alt+Backspace) for the changes to take effect.'''

To swap the fn key behaviour:
{{{
#Add one of these commands to /etc/rc.local
echo -n 0x01 > /sys/module/hid/parameters/pb_fnmode #FN on (like OSX)
echo -n 0x02 > /sys/module/hid/parameters/pb_fnmode #FN off (press fn for volume/brightness/etc)
}}}


== Screen Colors (optional) ==
To calibrate the screen colors (in order to match OS X), you need to install ''xcalib''. This isn't available in the Ubuntu repositories, so you'll have to download it.

Go to http://www.etg.e-technik.uni-erlangen.de/web/doe/xcalib/ and (if you are running `i386`) download the newest Linux binary; save it to the Desktop. (If you are running `amd64`, you'll need to compile it from source; make sure to install `libxxf86vm-dev` and `libxext-dev` first, and then simply `make xcalib` in the extracted source directory. Take the resulting `xcalib` binary and continue with these instructions.)

To install and configure it, you will need to do a few things in the terminal and mount a Mac OS X partition (to copy your color profile) as follows (substitute your Mac OS partition's partition number for 2 in /dev/sda2, 2 being the first standard partition):
{{{
sudo mv ~/Desktop/xcalib /usr/local/bin/xcalib
sudo chmod 755 /usr/local/bin/xcalib
sudo mount -t hfsplus /dev/sda2 /mnt
sudo cp /mnt/Library/ColorSync/Profiles/Displays/* /usr/local/etc
}}}
Then, do an "ls /usr/local/etc" and note the name of the profile (for the next step).

Finally, add the following line to the end of either `/etc/gdm/Init/Default` (for standard Ubuntu/Gnome) or `/etc/kde3/kdm/Xsetup` (for Kubuntu/KDE), before the final "exit" statement:
{{{
/usr/local/bin/xcalib "/usr/local/etc/<insert name of profile here>"
}}}

Restart X (Ctrl-Alt-Backspace) and your Mac OS X color profile will load as X starts.

== Fonts like Mac OS X (optional) ==

By default, Ubuntu uses a style of font rendering different than that used on Mac OS X. You may prefer fonts similar to those on Mac OS X, and you can have these on Ubuntu by doing the following:

1. Open a terminal and do "sudo dpkg-reconfigure fontconfig-config". Set font hinting to "None" and leave the rest of the options as default.
2. Paste the following into a new file entitled "/etc/fonts/conf.d/lcd-legacy.conf":
{{{
<fontconfig>
  <edit name="lcdfilter" mode="assign"><const>legacy</const></edit>
</fontconfig>
}}}
3. Install any fonts you commonly use on Mac OS X. (Note: the Microsoft Core Fonts - which are commonly used in Office documents and online - can be installed using Add/Remove Programs).
4. Enjoy!


[[Anchor(touchpadtweaks)]]
== More touchpad tweaks ==

To enable touchpad scrolling/tapping/right-click:

You will need to edit the xorg.conf file (in /etc/X11/xorg.conf)

'''For more information than is available below, read {{{man synaptics}}}!'''

Replace the Synaptics Touchpad InputDevice section with the following:
 * Basic device definition layout:
Line 29: Line 513:
sudo gptsync /dev/sda && sudo sfdisk -c /dev/sda 3 83
}}}
 3 means Partition 3, the boot partition (where GRUB will be installed), adapt as necessary for a non-default partition scheme.
 1.#7 Click ''Install'' to start the installation process.

 During ''Installing system - Copying files...'', return to the terminal and execute the command you entered before by pressing Enter.

 Answer the question ''`May I update the MBR as printed above? [y/N]`'' with '''`y`'''.

 If you did not select any partitions for use as swap space, the window "Do you want to return to the partitioning menu?" pops up, pausing the installation until you click ''Continue''. Then you won't have to wait and fix the disk while the installer is copying files. '''No matter how you do it, the disk must be fixed before GRUB is installed, at 94 % installation progress!'''
 1.#8 The installation will be completed without an error. Choose ''Restart now'' to reboot.
 1.#9 The rEFIt menu offers a choice between ''Boot Mac OS X from Macintosh HD'' and ''Boot Linux from HD''. Select ''Boot Linux from HD'' to boot into the newly installed distribution.
 1.#10 Log in on your system. Now let's fix it up.
I'll show you the commands you'll have to copy and paste into a terminal (Applications -> Accessories -> Terminal). That's easier and faster than doing it with GUI applications, and thanks to verbatim copying, you won't make any mistakes.
 * Install ''Network Manager'':
Section "InputDevice"
        Identifier "Synaptics Touchpad"
        Driver "synaptics"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/psaux"
        Option "Protocol" "auto-dev"
        Option "SHMConfig" "true"
'''...insert other options from below here...'''
EndSection
}}}
 * General options affecting the touchpad edge areas, speed, touch sensitivity, etc. Note that if not using edge scrolling, the edge boundaries can probably be decreased but the edge offsets will need to be reasonable (as below?) if edge scrolling is being used.:
Line 45: Line 525:
sudo apt-get -y install network-manager-gnome
}}}
 * To fix the screen resolution, install ''915resolution'' (it's in the Universe repository):
        Option "LeftEdge" "150"
        Option "RightEdge" "1070"
        Option "TopEdge" "100"
        Option "BottomEdge" "310"
        Option "FingerLow" "25"
        Option "FingerHigh" "30"
        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"
}}}
 * Options affecting taps for button clicks:
  Buttons 1, 2 and 3 correspond to the left, middle and right mouse buttons respectively. If you set the values to 0, the method will be disabled. The ''TapButton'' options are for one, two or three finger taps. The ''CornerButton'' options are for one finger taps in the right-top (''RT''), right-bottom (''RB''), left-top (''LT'') and left-bottom (''LB'') corners of the touchpad. Generally you will want to use either corner taps or multi-finger taps, not both.
  * Multi-finger taps
   The following example uses a one-finger tap for left-click, a two-finger tap for right-click and a three-finger tap for middle-click (and the physical button can still used for left-click):
   {{{
        Option "TapButton1" "1"
        Option "TapButton2" "3"
        Option "TapButton3" "2"
}}}
  * One-finger corner taps
   The following example uses the right-bottom corner for middle-click and left-bottom corner for right-click (and the physical button is still used for left-click):
   {{{
        Option "RTCornerButton" "0"
        Option "RBCornerButton" "2"
        Option "LTCornerButton" "0"
        Option "LBCornerButton" "3"
}}}
 * Options affecting scrolling:
 You can either use edge scrolling or two-finger scrolling (as in Mac OS X) but you won't generally want to use both.
  * Scrolling speed
  The following options affect how far you have to move your finger across the touchpad to affect a scroll. Smaller values should make scrolling faster.
  {{{
        Option "VertScrollDelta" "20"
        Option "HorizScrollDelta" "50"
}}}
  * Edge scrolling
  The following options toggle whether moving a finger along an edge of the touchpad invokes scrolling. Set to 0 to disable.
  {{{
        Option "HorizEdgeScroll" "1"
        Option "VertEdgeScroll" "1"
}}}
  * Two-finger scrolling
  The following options toggle whether moving two fingers horizontally or vertically over the touchpad invokes scrolling. Set to 0 to disable.
  {{{
        Option "VertTwoFingerScroll" "1"
        Option "HorizTwoFingerScroll" "1"
}}}
 * Additional useful information
  * Firefox horizontal scrolling behavior
  With two finger scrolling enabled, you will probably want to change Firefox's horizontal scrolling behavior. To do so, open Firefox, go to the URL "about:config", and change the following settings:
  {{{
mousewheel.horizscroll.withnokey.action from 2 to 0
mousewheel.horizscroll.withnokey.numlines from -1 to 1
}}}
  * Disable the touchpad temporarily while typing
  It is useful to have the touchpad not use click or scroll events while you are typing. The information for this was found [http://ubuntu.wordpress.com/2006/09/20/disable-touchpad-temporarily-when-typing/ here]. Make syndaemon start up by default each time you login, add it to the list of Startup Programs in System->Preferences->Sessions. Add the following command:
  {{{
syndaemon -t -d
}}}

'''Restart X for changes to take effect with Ctrl-Alt-Backspace'''

=== Examples ===
 * Example 1
 With the following settings, two finger scrolling is enabled as in Mac OS X. Right-click is done by tapping the bottom-left corner of the touchpad, and middle-click is done by tapping the bottom-right corner of the touchpad.
Line 49: Line 596:
sudo software-properties -e universe
sudo apt-get update
sudo apt-get install 915resolution
}}}
 Restart X (Ctrl+Alt+Backspace) for the changes to take effect.
 * To control your backlight, install ''macbook-backlight-hal'' (it's in a third-party repository):
Section "InputDevice"
        Identifier "Synaptics Touchpad"
        Driver "synaptics"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/psaux"
        Option "Protocol" "auto-dev"
        Option "SHMConfig" "true"
        Option "LeftEdge" "150"
        Option "RightEdge" "1070"
        Option "TopEdge" "100"
        Option "BottomEdge" "310"
        Option "FingerLow" "25"
        Option "FingerHigh" "30"
        Option "MaxTapTime" "180"
        Option "MaxTapMove" "220"
        Option "MaxDoubleTapTime" "180"
        Option "LockedDrags" "off"
        Option "MinSpeed" "1.10"
        Option "MaxSpeed" "1.30"
        Option "AccelFactor" "0.08"
        Option "TapButton1" "0"
        Option "TapButton2" "0"
        Option "TapButton3" "0"
        Option "RTCornerButton" "0"
        Option "RBCornerButton" "2"
        Option "LTCornerButton" "0"
        Option "LBCornerButton" "3"
        Option "VertScrollDelta" "20"
        Option "HorizScrollDelta" "50"
        Option "HorizEdgeScroll" "0"
        Option "VertEdgeScroll" "0"
        Option "VertTwoFingerScroll" "1"
        Option "HorizTwoFingerScroll" "1"
EndSection
}}}
 * Example 2
 With the following settings the Synaptics Touchpad configuration should be closer to Mac OS X. Right-click using a two-finger tap and scroll by moving two fingers across the touchpad.
Line 56: Line 634:
sudo sed -i '$adeb http://ubuntu.desrt.ca/ ./' /etc/apt/sources.list
sudo apt-get update
sudo apt-get -y --allow-unauthenticated install macbook-backlight-hal
sudo chmod u+s /usr/bin/macbook-backlight
gconftool-2 --type string --set /apps/metacity/global_keybindings/run_command_1 "0x65"
gconftool-2 --type string --set /apps/metacity/global_keybindings/run_command_2 "0xd4"
gconftool-2 --type string --set /apps/metacity/keybinding_commands/command_1 "/usr/bin/macbook-backlight -10"
gconftool-2 --type string --set /apps/metacity/keybinding_commands/command_2 "/usr/bin/macbook-backlight +10"
}}}
 * To enable mousekeys emulation, turn the lower Enter key into Right and Middle Mouse Buttons:
  * '''either:''' lower Enter key = Right Mouse Button, Shift + lower Enter key = Middle Mouse Button
  {{{
sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button2/' /etc/X11/xkb/symbols/pc
gconftool-2 --type bool --set /desktop/gnome/accessibility/keyboard/enable true
gconftool-2 --type bool --set /desktop/gnome/accessibility/keyboard/mousekeys_enable true
}}}
  * '''or:''' lower Enter key = Right Mouse Button, right Alt key + lower Enter key = Middle Mouse Button
  {{{
sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button3, Pointer_Button2, Pointer_Button2/' /etc/X11/xkb/symbols/pc
gconftool-2 --type bool --set /desktop/gnome/accessibility/keyboard/enable true
gconftool-2 --type bool --set /desktop/gnome/accessibility/keyboard/mousekeys_enable true
}}}
 Restart X (Ctrl+Alt+Backspace) for the changes to take effect.
 * To make the keyboard usable, for a German keyboard layout ('''German MacBook only'''):
  * Fix swapped "><" and "°^" keys, and turn right Apple key into right Alt key
  {{{
sudo sed -i~ 's/ <LSGT> = 94;/ <LSGT> = 49;\n <TLDE> = 94;\n <RALT> = 116;/' /etc/X11/xkb/keycodes/xfree86
}}}
 Restart X (Ctrl+Alt+Backspace) for the changes to take effect.
 * '''OPTIONAL:''' To install ''Beryl'', instead of ''compiz'':
Section "InputDevice"
        Identifier "Synaptics Touchpad"
        Driver "synaptics"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/psaux"
        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"
EndSection
}}}

== DVI Output (gutsy) ==
 [http://www.thinkwiki.org/wiki/Installing_Ubuntu_6.06.1_on_a_ThinkPad_R60e#Ubuntu_7.10_with_Intel_Graphics_Media_Accelerator_950 These instructions] worked perfectly for setting DVI output on my MacBook.
 
 [http://ubuntu-tutorials.com/2007/11/25/extended-video-on-the-macbook-xrandr-ftw/ extended display] - These instructions worked for me. A little more to the point than the above link.

 Warning: Screen and Graphics Preferences is currently dangerous. It completely broke my /etc/X11/xorg.conf on my first reconfiguration attempt.

== Extended Monitor (hardy) ==

If your extended monitor [https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/193419 goes black], you can resolve the problem with:

Edit your xorg.conf to include the following Option in the Device Section of "Configured Video Device":

{{{
  Section "Device"
    Identifier "Configured Video Device"
    Option "FramebufferCompression" "off"
    ...
  EndSection
}}}


== Misc ==
This is useful if you already have too many partitions on your macbook and want to put the swap file directly on the main / partition.
Line 87: Line 696:
sudo sed -i '$adeb http://ubuntu.beryl-project.org/ edgy main-edgy' /etc/apt/sources.list
wget http://ubuntu.beryl-project.org/quinn.key.asc -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install beryl emerald-themes
beryl-manager
}}}
 * '''OPTIONAL:''' To make the built-in iSight camera work with ''Ekiga'' (even after restarting!):
dd if=/dev/zero of=/swapfile bs=1024 count=2048000
mkswap /swapfile
swapon /swapfile
edit fstab:
 /swapfile swap swap defaults 0 0
}}}

Note: You can use suspend on disk with a swapfile. To do that we have to add an option passed to the kernel. Add the resume=/dev/<partition> resume_offset=<offset to the swapfile in blocks> :
Line 95: Line 705:
wget http://people.freedesktop.org/~rbultje/linux-uvc-0.1.0-e.tar.gz
tar -xvvzf linux-uvc-0.1.0-e.tar.gz
cd linux-uvc-0.1.0-e
sudo apt-get install libc6-dev libgcrypt11-dev libglib2.0-dev libgpg-error-dev libusb-dev linux-libc-dev
make
sudo apt-get -y --purge autoremove libc6-dev libgcrypt11-dev libglib2.0-dev libgpg-error-dev libusb-dev linux-libc-dev
sudo mv extract /root
sudo mount -r -t hfsplus /dev/sda2 /mnt
sudo cp -p /mnt/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport /root
sudo umount /mnt
sudo /root/extract /root/AppleUSBVideoSupport
sudo make install
sudo modprobe uvcvideo
sudo sed -i~ '$i/root/extract /root/AppleUSBVideoSupport' /etc/rc.local
gconftool-2 --type string --set /apps/ekiga/devices/video/plugin "V4L2"
#gconftool-2 --type int --set /apps/ekiga/devices/video/size 1
ekiga
}}}
 * '''OPTIONAL:''' Extended desktop and video mirroring:

 DVI/VGA output is enabled in mirror mode by default, but if the external monitor isn't the same as the MacBook's, the mirrored display will have a wrong refresh rate and resolution, making it pretty much useless. To fix this, editing the Xorg configuration file is necessary, which can be quite complicated. To make it as easy as possible, I've created a configuration which can be copied and pasted into the xorg.conf, at the beginning or end of the original file. Then you can switch between single and dual head setups by commenting/uncommenting a few lines and restarting the X server.

 '''N.B.:''' Extended desktop and video mirroring do '''NOT''' work with ''Beryl'' just yet! You'll have to disable either dual head mode or the 3D desktop while using the other.
  1.#1 Create a backup of your Xorg configuration file:
  {{{
sudo cp -p /etc/X11/xorg.conf /etc/X11/xorg.conf~
}}}
  1.#2 Open your Xorg configuration file for editing with administrator privileges:
  {{{
sudoedit /etc/X11/xorg.conf
}}}
  1.#3 Copy and paste the following excerpt into your Xorg configuration file, add it at the top or bottom of the original, but do '''NOT''' overwrite the existing content:
  {{{
######################################################################
Section "ServerFlags"
        Option "DefaultServerLayout" "Default Layout"
# Option "DefaultServerLayout" "MonitorLayout Layout"
# Option "DefaultServerLayout" "Clone Layout"
# Option "DefaultServerLayout" "Xinerama Layout"
EndSection
######################################################################
Section "Device"
        Identifier "MonitorLayout Device"
        Driver "i810"
        BusID "PCI:0:2:0"
        Option "MonitorLayout" "NONE,CRT+LFP"
EndSection

Section "Screen"
        Identifier "MonitorLayout Screen"
        Device "MonitorLayout Device"
        Monitor "Color LCD"
        DefaultDepth 24
        SubSection "Display"
                Depth 24
                Modes "1280x800"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier "MonitorLayout Layout"
        Screen "MonitorLayout Screen"
        InputDevice "Generic Keyboard"
        InputDevice "Configured Mouse"
        InputDevice "stylus" "SendCoreEvents"
        InputDevice "cursor" "SendCoreEvents"
        InputDevice "eraser" "SendCoreEvents"
EndSection

Section "Device"
        Identifier "Clone Device"
        Driver "i810"
        BusID "PCI:0:2:0"
        Option "MonitorLayout" "CRT,LFP"
        Option "Clone"
EndSection

Section "Screen"
        Identifier "Clone Screen"
        Device "Clone Device"
        Monitor "Color LCD"
        DefaultDepth 24
        SubSection "Display"
                Depth 24
                Modes "1280x800"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier "Clone Layout"
        Screen "Clone Screen"
        InputDevice "Generic Keyboard"
        InputDevice "Configured Mouse"
        InputDevice "stylus" "SendCoreEvents"
        InputDevice "cursor" "SendCoreEvents"
        InputDevice "eraser" "SendCoreEvents"
EndSection

Section "Device"
        Identifier "Xinerama Device"
        Driver "i810"
        BusID "PCI:0:2:0"
        Screen 0
        Option "MonitorLayout" "CRT,LFP"
EndSection

Section "Device"
        Identifier "Xinerama Device (2)"
        Driver "i810"
        BusID "PCI:0:2:0"
        Screen 1
        Option "MonitorLayout" "CRT,LFP"
EndSection

Section "Screen"
        Identifier "Xinerama Screen"
        Device "Xinerama Device"
        Monitor "Color LCD"
        DefaultDepth 24
        SubSection "Display"
                Depth 24
                Modes "1280x800"
        EndSubSection
EndSection

Section "Screen"
        Identifier "Xinerama Screen (2)"
        Device "Xinerama Device (2)"
        Monitor "Color LCD"
        DefaultDepth 24
        SubSection "Display"
                Depth 24
                Modes "1280x1024"
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier "Xinerama Layout"
        Screen "Xinerama Screen"
        InputDevice "Generic Keyboard"
        InputDevice "Configured Mouse"
        InputDevice "stylus" "SendCoreEvents"
        InputDevice "cursor" "SendCoreEvents"
        InputDevice "eraser" "SendCoreEvents"
        # RightOf LeftOf Above Below
        Screen "Xinerama Screen (2)" LeftOf "Xinerama Screen"
        Option "Xinerama"
EndSection
######################################################################
}}}
  1.#4 To switch between different display modes, change server flags by modifying the comments like this:
   a. Original single-head display (Default) - same as with original configuration:
   {{{
Section "ServerFlags"
        Option "DefaultServerLayout" "Default Layout"
# Option "DefaultServerLayout" "MonitorLayout Layout"
# Option "DefaultServerLayout" "Clone Layout"
# Option "DefaultServerLayout" "Xinerama Layout"
EndSection
}}}
   b. Dual-head video mirroring 1 (Piped) - resolutions must be equal, but cannot be changed; overlays are supported:
   {{{
Section "ServerFlags"
# Option "DefaultServerLayout" "Default Layout"
        Option "DefaultServerLayout" "MonitorLayout Layout"
# Option "DefaultServerLayout" "Clone Layout"
# Option "DefaultServerLayout" "Xinerama Layout"
EndSection
}}}
   c. Dual-head video mirroring 2 (Cloning) - resolutions must be equal, but can be changed; overlays aren't supported:
   {{{
Section "ServerFlags"
# Option "DefaultServerLayout" "Default Layout"
# Option "DefaultServerLayout" "MonitorLayout Layout"
        Option "DefaultServerLayout" "Clone Layout"
# Option "DefaultServerLayout" "Xinerama Layout"
EndSection
}}}
   d. Dual-head extended desktop (Xinerama) - no direct rendering (no 3D acceleration!):
   {{{
Section "ServerFlags"
# Option "DefaultServerLayout" "Default Layout"
# Option "DefaultServerLayout" "MonitorLayout Layout"
# Option "DefaultServerLayout" "Clone Layout"
        Option "DefaultServerLayout" "Xinerama Layout"
EndSection
}}}
   (!) If you, like me, have an external monitor whose resolution differs from the MacBook's, I recommend you use either method C (Dual-head video mirroring 2 - Cloning) with both screens at the same resolution (e.g. 1024x768) or D (Dual-head extended desktop - Xinerama) with both screens at their native resolutions (e.g. 1280x800 MacBook, 1280x1024 external). No matter which mode you choose, 3D desktops (''Beryl'') should be disabled when using a dual-head setup, otherwise the X server might crash! If your external screen is of a different resolution than 1280x1024, search and replace that with the proper resolution in the xorg.conf! If you want to have two independent desktops, each with their own menus, you can comment out Option "Xinerama".
  1.#5 Save the configuration, exit the editor, then press Ctrl+Alt+Backspace to restart the X server. If it doesn't work, reboot. If it still doesn't work, restore the backup and try with some different settings.
Have fun with Ubuntu on the MacBook!

Discuss it here: http://ubuntuforums.org/showthread.php?p=1699961

See ya! B)
-- StefanDanielSchwarz
sudo filefrag -v /swapfile
#output : First block: 102300
}}}
Copy the first block number of the swapfile (ex:102300) and edit the defoptions line of /boot/grub/menu.lst :
  {{{
# defoptions=quiet splash resume=/dev/sda3 resume_offset=102300
}}}
The update your grub configuration :
  {{{
sudo update-grub
}}}
On this example, the swapfile is on partition /dev/sda3.
You are now able to use suspend on disk (hibernate).
Line 292: Line 721:
 * [http://www.apple.com/macbook/macbook.html Apple - MacBook]  * [http://www.apple.com/macbook/ Apple - MacBook]
 * [http://doc.gwos.org/index.php/UbuntuOnApple Ubuntu on Apple - Mac Mini]
Line 294: Line 724:
 * [http://desrt.mcmaster.ca/macbook.xhtml Ubuntu Dapper on the Apple Macbook]
Line 297: Line 726:
 * [https://wiki.ubuntu.com/MacBookProFeisty (k)ubuntu fiesty 7.04 on a MacBookPro]
Line 298: Line 728:
 * [http://wiki.beryl-project.org/index.php/Install/Ubuntu/Edgy/AiGLX Install/Ubuntu/Edgy/AiGLX - Beryl Wiki]
Line 300: Line 729:
 * [http://blogs.gnome.org/portal/rbultje Ronald S. Bultje][[BR]]
 * [https://launchpad.net/distros/ubuntu/+source/linux-source-2.6.17/+bug/54621 Bug #54621 in linux-source-2.6.17 (Ubuntu): “Kernel panic - not syncing: IO-APIC + timer doesn't work!”]

= Comments =

[LionelLeFolgoc]: '''`lpj=8000000`''' seems to be only for 2Ghz macbook. On my 1,83GHz macbook, the average loops_per_jiffy is about 7327778,313, so I use '''`lpj=7330000`''' instead, and it seems to work. ;)
 * [http://ubuntu-tutorials.com/2007/08/02/installing-ubuntu-on-a-macbook-tutorial-beta/ Nearly Complete Installation Tutorial]

 * [http://modular.math.washington.edu/macbook/suspend2/ suspend2]
CategoryCleanup CategoryAudio

How to install Ubuntu on a MacBook

This guide will help you through all the steps necessary for installing Ubuntu on a MacBook. This guide is currently aimed at Ubuntu 8.04 (Hardy Heron) but still has some parts valid for Ubuntu 7.10 (Gutsy Gibbon).

If you own a MacBook Pro see this guide: MacBookPro, but note that almost everything is the same, and that this page is also relevant.

If you own a new MacBook (Santa Rosa v3.1) see [:MacBook_Santa_Rosa:this guide]. To determine which version / generation of MacBook you have, click in OS X on the Apple on the top left, then "About this Mac" -- "More Info...". You can see the generation in the "Model Identifier" row.

For further discussion of this topic, see: http://ubuntuforums.org/showthread.php?p=1699961

For a guide to Triple Booting, see: http://wiki.onmac.net/index.php/Triple_Boot_via_BootCamp_Ubuntu

The instructions below refer to Apple's BootCamp application which is no longer publicly available unless you use / upgrade to OSX 10.5 Leopard. Another option, however, is to resize Mac OS X partition using diskutil or re-install Mac OS X from scratch and use Disk Utility to make a smaller Mac OS X partition, leaving free space for Ubuntu.

Basic instructions

  1. Update the [http://www.apple.com/support/downloads/ firmware] to the latest version. If you prefer, you may use the standard "Software Update" (accessible from your OS X partition, if you have one)

  2. Get your Ubuntu [http://www.ubuntu.com/getubuntu/download Live CD] ready. For older MacBooks you must select i386; for Core 2 Duo MacBooks (post 2006) you can select amd64 if you're interested in running a 64-bit OS, otherwise i386 may be selected.

  3. Install [http://refit.sourceforge.net/ rEFIt] if you want a boot menu (to select between OS X/Ubuntu) to appear on every boot. You can make Ubuntu boot by default and change the menu timeout by editing the "refit.conf" file (described on the above website).

  4. If necessary, use Boot Camp to resize your OSX partition and make space for Ubuntu. Don't waste a CD creating a Windows driver disk. Reboot.
  5. Hold down "C" to boot from the CD.
  6. Install Ubuntu as usual, except:
    • In the partitioner, select Manually edit partition table

    • Delete /dev/sda3 and /dev/sda4 if they exist
    • Create a new ext3 partition for your root
    • Mount the newly created ext3 partition on '/'
    • On the last screen, click on the "Advanced" button and select instead /dev/sda in the drop-down list for installing GRUB
    • Note that Boot Camp will cause problems if you make more than two partitions in total.
  7. Finish the install and reboot.
  8. If you installed rEFIt, you should have a choice between booting OS X and Ubuntu. Use the arrow keys and Enter to select Ubuntu. In case you are stuck with a "No bootable device -- insert boot disk and press any key" message, reboot, go in rEFIt to the Partitioning Tool, and let it update the MBR.
  9. Alternatively, if you did not install rEFIt, hold down Alt/Option to choose whether to boot into OSX / Ubuntu. The Boot Camp-installed boot menu will recognize the Ubuntu installation as "Windows," but will boot Ubuntu normally regardless.
  10. Log in to your system.
  11. Follow the instructions below to set up the various hardware components that don't work out-of-the-box on Gutsy.

Sound

Sound on MacBooks is provided by an Intel HDA-based integrated chipset, and should work out-of-the-box. However, in Ubuntu 8.04 alsa drivers 1.0.15 will not work with some chipsets, like SigmaTel STAC9221. In such cases everything seems to work fine but no sound is present (even unmuting all controls). Alsa drivers 1.0.16 should work fine, to install them:

sudo apt-get install build-essential linux-headers-$(uname -r) module-assistant alsa-source
sudo dpkg-reconfigure alsa-source
sudo module-assistant a-i alsa-source

This may disable Madwifi drivers for the wireless card, hence you want to compile alsa first.

The volume control will not work correctly out-of-the-box - in particular, reducing the default volume will result in sound distortion at lower volume levels, and volume control changes won't effect the headphone volume level.

To fix this, do the following

1. Add the following line to /etc/modprobe.d/alsa-base:

install snd-hda-intel position_fix=1 /sbin/modprobe --ignore-install snd-hda-intel $CMDLINE_OPTS && /lib/alsa/modprobe-post-install snd-hda-intel

2. Increase the volume (both using the key combination and the system tray applet) to its maximum possible value.

3. Right-click on the volume applet and choose Preferences. Select "PCM" as the device to control.

4. Open the Sound preferences (System-Preferences-Sound in GNOME). Select "PCM" as the device to control.

The above setting changes (step 3 and 4) can be done via the command line using these two gconftool-2 commands:

gconftool-2 --type list --list-type string --set /desktop/gnome/sound/default_mixer_tracks [PCM]
gconftool-2 --type string  --set /apps/panel/applets/mixer_screen0/prefs/active-track PCM

Step 1. may be necessary in Hardy even if you don't appreciate this issue.

There may be no output from the headphone jack out of the box on a 2nd gen (C2D) MacBook in Hardy [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/201957 bug #201957]. For a workaround, right-click on the volume applet, choose "Open Volume Control", choose "Edit > Preferences", check "Surround" to make the channel visible, and close Preferences. Now, unmute "Surround", and you're done.

Microphone

The built-in iSight microphone (above the LCD screen) will not record out of the box, but is really easy to get working. The steps that I took to get the microphone working were:

1. right-click on the volume applet and select "Open Volume Control".

2. within the volume control application select "Edit > Preferences".

3. select "Capture", "Mux", and "Input Source" at the bottom of the list, and close.

4. select the "Recording" tab and set "Capture" to full volume and "Mux" at about 1/3 full volume (higher results in static).

5. make sure Capture and Mux are unmuted!

6. select the "Options" tab and select "Mic" as the input source.

note: the only options I have checked in "Edit > Preferences" (step 2 above) are: PCM, Capture, Input source, and Mux.

The above settings, minus the 1/3 volume level setting, can be toggled using the below commands:

gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerMux --type bool 1
gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerPCM --type bool 1
gconftool-2 --set /apps/gnome-volume-control/HDAIntelAlsamixerInputSource --type bool 1

Wireless

If you have a first generation MacBook (Core Duo) then your wireless should just start working, though you may want to update to the latest version as illustrated below for better power efficiency and signal strength. Second generation MacBooks (Core 2 Duo) have a newer version of the Atheros Wifi chipset which requires the installation of the latest Atheros MadWifi drivers. [https://bugs.launchpad.net/madwifi/+bug/122703 bug #122703]

Please note that the current MadWifi drivers depend on a proprietary binary, the Atheros HAL, and therefore are not open-source software. A free software implementation, [http://madwifi.org/wiki/About/OpenHAL OpenHAL], is currently being developed by the Madwifi devs, but unfortunately it does not support the Atheros chipset in the MacBooks yet.

The following commands compile and install the prerelease MadWifi driver, insert it into the kernel, and disable background scanning for better stability. For installation, you can choose to use daily snapshots or Subversion.

Using daily snapshots:

sudo apt-get install build-essential autoconf automake
wget http://snapshots.madwifi.org/madwifi-trunk-current.tar.gz
tar -zxvf madwifi-trunk-current.tar.gz
cd madwifi-trunk-r*
make
sudo make install-modules
echo -e '#!/bin/sh\n/sbin/iwpriv ath0 bgscan 0' | sudo tee -a /etc/acpi/resume.d/99-madwifi-bgscan.sh
sudo chmod 755 /etc/acpi/resume.d/99-madwifi-bgscan.sh

Alternatively, using Subversion (be patient with the checkout, it may take a while):

sudo apt-get install build-essential subversion autoconf automake
svn co http://svn.madwifi.org/madwifi/trunk madwifi
cd madwifi
make
sudo make install-modules
echo -e '#!/bin/sh\n/sbin/iwpriv ath0 bgscan 0' | sudo tee -a /etc/acpi/resume.d/99-madwifi-bgscan.sh
sudo chmod 755 /etc/acpi/resume.d/99-madwifi-bgscan.sh

At this point the driver should be installed and will be enabled after a reboot. Alternatively, you can skip the reboot and use the following commands to insert the driver into the running kernel:

sudo modprobe ath_pci
sudo iwpriv ath0 bgscan 0

Additionally, the MadWifi drivers are sometimes unstable under certain circumstances when using the standard NetworkManager tool for managing networks. Because of these reasons, you may want to disable the drivers if you aren't using wireless. To do this, edit the /etc/modprobe.d/blacklist file and add "blacklist ath_pci" at the bottom. Additionally, you can deselect the Atheros HAL in the Restricted Manager (System-Administration-Restricted Drivers Manager).

To disallow replacement of just installed modules by installing linux-restricted-modules package update you can edit /etc/default/linux-restricted-modules-common and insert ath_hal into DISABLED_MODULES list:

sudo sed -i~ -e 's/^\(DISABLED_MODULES="\)\(.*"\)/\1ath_hal \2/' -e 's/ "$/"/' /etc/default/linux-restricted-modules-common

More information can be obtained at http://madwifi.org/wiki/UserDocs/FirstTimeHowTo

If you need to connect to a channel that's not allowed in the regulatory domain in which you bought your laptop, you'll need to follow these instructions: http://tumbleweed.org.za/2008/02/11/madwifi-regdomain-issues

Ndiswrapper

If you instead want to use ndiswrapper to use the Windows wireless drivers on Ubuntu (only for 32-bit) these are the instructions:

You have to have the XP drivers on your hard disk. If you don't have a Windows XP installation on an alternate partition, you can get the drivers from the Boot Camp driver disk. The drivers from the Boot Camp disk can be uncompressed using the non-free unrar in the multiverse repository:

  • Enable multiverse ( see [:Repositories/Repositories] )

  • Install the packages rar unrar (actually only unrar is truly necessary)

  • Uncompress the Windows XP Atheros driver installer:

mkdir ~/atheros
unrar x atherosxpinstaller.exe ~/atheros/
  • Install the atheros drivers using ndiswrapper:

sudo apt-get install ndiswrapper-utils-1.8

#install the driver into ndiswrapper:
sudo ndiswrapper -i "~/atheros/net5416.inf"
#--or--
sudo mount /dev/sda4 /mnt
sudo ndiswrapper -i "/mnt/Program Files/Macintosh Drivers for Windows XP 1.1.2/net5416/net5416.inf"

sudo modprobe ndiswrapper
sudo echo >> /etc/modules "ndiswrapper"
sudo umount /mnt

Reference: http://paulglover.net/20061210/triple-booting-macbook-os-x-ubuntu-edgy-windows-xp/

Wicd

In order to fix the wireless for the most recent Linux kernels, you may want to install wicd (http://wicd.net) instead of using network-manager. Follow the instructions for installation on Ubuntu on their website, then use these preferences:

WPA Supplicant Driver: wext Wireless Interface: ath0 Wired Interface: eth0

All of the rest should not matter, except for your specific network settings, you should just leave them alone.

Brightness

Brightness controls should work out-of-the box using HAL and GNOME Power Manager in Ubuntu 7.10. However, there are a few issues with automatic dimming. In particular, the automatic dimming feature actually *brightens* the MacBook screen when on AC, and on battery it brightens the screen if the screen brightness has been adjusted to a value below the standard level for battery power. This is documented in bug [https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/137598 #137598] and [https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/63543 #63543].

Due to these issues, you may want to disable auto-dimming. This can be done by opening the Gconf Editor (gconf-editor in a Terminal will open it), and unchecking the key "enable" in "apps/gnome-power-manager/backlight". If at a later time you want to re-enable this feature (i.e. if the bug is fixed in a future update) simply return to this key and check it instead of unchecking it.

** Easy fix for Macbook Pro Gutsy

I simply went into System > Preferences > Power Management

  • 1) I unchecked "Dim Display when idle" 2) In the "On Battery Power" tab, uncheck "Dim Display when idle"

    3) in the "General" tab, uncheck "use ambient light to adjust LCD brightness" <<-- This seems to be the main problem, but I kept the other two unchecked just to be sure Wink ;-)

Suspend

Suspend is broken in Ubuntu 7.10 on many first-generation MacBooks as well as some later-generation MacBooks and MacBook Pros [https://bugs.launchpad.net/bugs/151016 #151016]. In particular, these machines will go into suspend, but will not come out of suspend. This is because the 32bit kernel supplied with 7.10 has some issues which prevent this from working (the x86_64 kernel works correctly out of the box). To fix this you will have to download an older version of the Linux kernel that is known to work. The latest known version to work is 2.6.22-12, which you can download by installing the packages at the locations pointed to below. Be sure to install them in the order as they appear here.

https://launchpad.net/ubuntu/gutsy/i386/linux-image-2.6.22-12-generic/2.6.22-12.39 https://launchpad.net/ubuntu/gutsy/i386/linux-headers-2.6.22-12/2.6.22-12.39 https://launchpad.net/ubuntu/gutsy/i386/linux-headers-2.6.22-12-generic/2.6.22-12.39 https://launchpad.net/ubuntu/gutsy/i386/linux-ubuntu-modules-2.6.22-12-generic/2.6.22-12.32 https://launchpad.net/ubuntu/gutsy/i386/linux-restricted-modules-2.6.22-12-generic/2.6.22.4-12.3

After installing, edit /boot/grub/menu.lst and change the default=0 line to default=2 (if the newly-installed kernel is the third listed in the menu.lst file, which it should be when installed on a stock Gutsy install).

Restart your MacBook for the update to take effect. You will have to reinstall any wireless drivers you may have installed in the past.

Alternatively, users who prefer a newer kernel to an older one can install the 2.6.24 kernel packages from the upcoming Ubuntu 8.04 release by adding the hardy repositories to their software sources:

deb http://archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://security.ubuntu.com/ubuntu hardy-security main restricted

Note: These should not replace the existing gutsy sources, but should be in addition to them. See the Repositories Howto for more information.

Once the new repositories have been added, and the package list reloaded, installing the new linux-generic should get all the necessary kernel packages from hardy, including linux-image, linux-ubuntu-modules, and linux-restricted-modules. Once the new packages are installed, disable (but don't remove) the hardy repositories, so that upgrades using apt or synaptic don't result in a complete upgrade to hardy. The user can periodically re-enable these repositories in order to check for updated kernel packages.

Rebooting into the new kernel should result in a perfectly suspending MacBook.

On my Macbook (2007), I need to edit /etc/default/acpi-support in the following way:

- change POST_VIDEO=true into POST_VIDEO=false

- Add sky2 in the modules to be removed before suspend and reloaded after: MODULES="sky2"

Note: on my MacBook (2nd gen: Nov 2006), using the hardy kernel as explained above, no change to /etc/default/acpi-support was required.

Fonts & Desktop Effects

When using desktop effects (which are enabled by default on most MacBooks), the fonts used for menu bar titles will sometimes be larger than normal. This issue is described in detail in bug [https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/141001 #141001].

To fix this, in /etc/gdm/gdm.conf change:

[server-Standard]
name=Standard server
-command=/usr/bin/X -br -audit 0

to

[server-Standard]
name=Standard server
-command=/usr/bin/X -br -audit 0 -dpi 96

Restart X for this to take effect.

Whining noise

In order to fix the whining noise that some MacBooks make, you need to install the iSight firmware. To install the iSight firmware, follow the steps listed below under "iSight". After installing the firmware and restarting, your MacBook should be whine-free.

Note: The above does not always work. In that case, add the following to /etc/init.d/acpid before exit 0.

echo 2 > /sys/module/processor/parameters/max_cstate

iSight

The iSight is currently broken in Ubuntu Hardy, please see https://bugs.launchpad.net/ubuntu/+source/linux-ubuntu-modules-2.6.24/+bug/185634

iSight works on Gutsy as long as you either 1) boot OS X before booting Gutsy or 2) install the iSight firmware in Gutsy. To install the iSight firmware, perform the following steps, substituting your Mac OS X partition for sdax (most probably sda2). Please note that you need a Mac OS X partition to extract the firmware.

sudo mount -t hfsplus /dev/sdax /mnt
sudo cp /mnt/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/* /lib/firmware/$(uname -r)

Also, in /etc/default/acpi-support, edit the line that begins with MODULES such that it reads:

MODULES="isight_usb"

Restart for this to take effect. Once the firmware is functional, the iSight may be used with the "ekiga" program.

To install prerequisites and launch Ekiga (Ekiga may also be launched through the menus), do the following:

sudo apt-get install ekiga libpt-plugins-v4l2
ekiga
  1. Configuration. You may have to select the iSight device. Edit > Preferences > Devices > Video Devices >

  2. Video plugin: V4L2

  3. Input device: Built-in iSight

If you want to use it in 640x480 mode, then:

gconftool-2 --type integer --set /apps/ekiga/devices/video/size 1

Minimum Fan Speed

To set a minimum fan speed which may help your MacBook run cooler. Substitute your speed of choice (in RPM) for 3000 if you wish.

First you need to load the appropriate module:

sudo modprobe applesmc
echo applesmc | sudo tee -a /etc/modules

then add the following line to /etc/init.d/acpid just before the exit statement:

echo 3000 > /sys/devices/platform/applesmc.768/fan1_min

Reducing Power Consumption

PowerTOP is a program that monitors a Linux system and gives suggestions on reducing power consumption. To install PowerTOP, enter this command in a terminal:

sudo apt-get install powertop

PowerTOP must always be run as root, so use the following command to run it:

sudo powertop

Reducing Drive Load/Unload Cycles

My Second Generation (C2D) MacBook is susceptible to a high load/unload cycle count on the hard drive. This is a workaround to lower the drive cycles and extend the drive life. Generate the following three files using the commands below:

echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/start.d/99-macbook-fix.sh
echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/resume.d/99-macbook-fix.sh
echo -e '#!/bin/sh\nhdparm -B 254 /dev/sda' | sudo tee -a /etc/acpi/suspend.d/99-macbook-fix.sh

Add execute permissions to the files:

sudo chmod a+x /etc/acpi/start.d/99-macbook-fix.sh
sudo chmod a+x /etc/acpi/resume.d/99-macbook-fix.sh
sudo chmod a+x /etc/acpi/suspend.d/99-macbook-fix.sh

To have these changes take effect immediately (without requiring a reboot):

sudo hdparm -B 254 /dev/sda

See [https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695 this bug] for more details.

note: this is Ubuntu 8.04 "Hardy" on the Second Generation (C2D) MacBook. I have not tested on previous releases or other models.

Right/Middle Clicking

There are two main approaches to right/middle clicking:

  • Two/three finger taps via the synaptics touchpad driver by editing xorg.conf
  • Remapping the functions of keys on the keyboard by editing system keyboard layouts or using xmodmap and a local configuration file

Multi-finger taps

See [#touchpadtweaks More touchpad tweaks].

Keyboard keys

Enable mouse emulation:

  • On Ubuntu: Go to System ▸ Preferences ▸ Keyboard ▸ Accessibility in the Main menu. Check Enable keyboard accessibility features. Click the Mouse Keys tab and check Enable Mouse Keys also.

  • On Kubuntu: bring up System Settings, find Keyboard & Mouse, choose Mouse on the left, than the Mouse Navigation tab, and check the checkbox beside Move pointer with keyboard (using the num pad). Please note that on Kubuntu you will lose your numpad.

  • On Xubuntu: Go to Applications ▸ Settings ▸ Mouse Settings and on the Accessibility tab, enable the Enable mouse emulation check box.

Then either edit the system files or use a local configuration file and xmodmap:

  • Editing system files (choose one of the following options):

    • option 1: lower Enter key = Right Mouse Button, Shift + lower Enter key = Middle Mouse Button

      sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button2/' /etc/X11/xkb/symbols/keypad
    • option 2: lower Enter key = Right Mouse Button, Alt Gr key + lower Enter key = Middle Mouse Button

      sudo sed -i~ 's/KP_Enter/Pointer_Button3, Pointer_Button3, Pointer_Button2, Pointer_Button2/' /etc/X11/xkb/symbols/keypad
  • Using xmodmap and a local configuration file to override the system-wide layouts:
    • The keycodes for relevant keys are:
      • right Apple - keycode 116
      • lower enter - keycode 108
    • The keysyms for relevant input events are:
      • Alt Gr - ISO_Level3_Shift
      • Middle-click - Pointer_Button2
      • Right-click - Pointer_Button3
    • Create a text file as ~/.xmodmap containing the following text:

      (Note: for my set up I use left Apple as Alt Gr, right Apple as middle-click and lower enter as right-click. If you want to use right Apple as Alt Gr then you may need to rethink your keys for clicks assignments.)

      keycode 116 = Pointer_Button2
      keycode 108 = Pointer_Button3
    • Add a call to xmodmap to your startup applications:
      • On Xubuntu: Go to Applications ▸ Settings ▸ Autostarted Applications, click the Add button, fill in the Name and Description fields and put the following into the Command field:

        xmodmap ~/.xmodmap

        Then click OK and Close.

Restart X (Ctrl+Alt+Backspace) for the changes to take effect.

Motion Sensor

The motion sensor doesn't support disk parking yet ([https://bugs.launchpad.net/bugs/139881 bug #139881]), but you can play physical neverball Smile :-)

sudo modprobe applesmc
echo applesmc | sudo tee -a /etc/modules

Then fire up neverball... (or any other game that uses a joystick)

Keyboard layouts

(Xubuntu 7.10 UK MacBook) There are some MacBook / MacBook Pro keyboard models defined in xkb, however, I have found that the Apple Laptop model with layout as gb (for my UK MacBook) and variant as mac with the xmodmap configuration as below. Maybe this approach will work well for others.

To make the keyboard usable, for an international keyboard layout:

  • The GUI way:

    Bring up the Keyboard Preferences window with System ▸ Preferences ▸ Keyboard from the Main menu. Click on the Keyboard Layout Options tab, and find Third level choosers. Mark the right Win key as third level chooser. Now your right Apple key works as Alt Gr.

  • The console way, editing system files:
    • Alt Gr for right Apple key
      sudo sed -i~ '/xkb_symbols "ralt_switch" {/a\  include "level3(rwin_switch)"' /etc/X11/xkb/symbols/level3
    • Fix swapped keys
      sudo sed -i~ 's/    <LSGT> =  94;/    <LSGT> =  49;\n    <TLDE> =  94;/' /etc/X11/xkb/keycodes/xfree86
  • The console way, using xmodmap and a local configuration file:
    • keycodes for relevant keys:
      • left Apple - keycode 115
      • right Apple - keycode 116
      • § or ± (UK MacBook key beneath escape) - keycode 49

      • ` or ~ (UK MacBook key left of z) - keycode 94

    • keysyms for relevant characters/functions:
      • Alt Gr - ISO_Level3_Shift
      • § or ± - section plusminus
      • ` or ~ - grave tilde
    • To fix the swapped keys and make left Apple equivalent to Alt Gr, edit a text file at ~/.xmodmap (create it if it doesn't exist) adding the following lines:
      keycode 115 = ISO_Level3_Shift
      keycode 49 = section plusminus
      keycode 94 = grave asciitilde

      Then add xmodmap ~/.xmodmap to your start up.

Restart X (Ctrl+Alt+Backspace) for the changes to take effect.

To swap the fn key behaviour:

#Add one of these commands to /etc/rc.local
echo -n 0x01 > /sys/module/hid/parameters/pb_fnmode #FN on (like OSX)
echo -n 0x02 > /sys/module/hid/parameters/pb_fnmode #FN off (press fn for volume/brightness/etc)

Screen Colors (optional)

To calibrate the screen colors (in order to match OS X), you need to install xcalib. This isn't available in the Ubuntu repositories, so you'll have to download it.

Go to http://www.etg.e-technik.uni-erlangen.de/web/doe/xcalib/ and (if you are running i386) download the newest Linux binary; save it to the Desktop. (If you are running amd64, you'll need to compile it from source; make sure to install libxxf86vm-dev and libxext-dev first, and then simply make xcalib in the extracted source directory. Take the resulting xcalib binary and continue with these instructions.)

To install and configure it, you will need to do a few things in the terminal and mount a Mac OS X partition (to copy your color profile) as follows (substitute your Mac OS partition's partition number for 2 in /dev/sda2, 2 being the first standard partition):

sudo mv ~/Desktop/xcalib /usr/local/bin/xcalib
sudo chmod 755 /usr/local/bin/xcalib
sudo mount -t hfsplus /dev/sda2 /mnt
sudo cp /mnt/Library/ColorSync/Profiles/Displays/* /usr/local/etc

Then, do an "ls /usr/local/etc" and note the name of the profile (for the next step).

Finally, add the following line to the end of either /etc/gdm/Init/Default (for standard Ubuntu/Gnome) or /etc/kde3/kdm/Xsetup (for Kubuntu/KDE), before the final "exit" statement:

/usr/local/bin/xcalib "/usr/local/etc/<insert name of profile here>"

Restart X (Ctrl-Alt-Backspace) and your Mac OS X color profile will load as X starts.

Fonts like Mac OS X (optional)

By default, Ubuntu uses a style of font rendering different than that used on Mac OS X. You may prefer fonts similar to those on Mac OS X, and you can have these on Ubuntu by doing the following:

1. Open a terminal and do "sudo dpkg-reconfigure fontconfig-config". Set font hinting to "None" and leave the rest of the options as default. 2. Paste the following into a new file entitled "/etc/fonts/conf.d/lcd-legacy.conf":

<fontconfig>
  <edit name="lcdfilter" mode="assign"><const>legacy</const></edit>
</fontconfig>

3. Install any fonts you commonly use on Mac OS X. (Note: the Microsoft Core Fonts - which are commonly used in Office documents and online - can be installed using Add/Remove Programs). 4. Enjoy!

Anchor(touchpadtweaks)

More touchpad tweaks

To enable touchpad scrolling/tapping/right-click:

You will need to edit the xorg.conf file (in /etc/X11/xorg.conf)

For more information than is available below, read man synaptics!

Replace the Synaptics Touchpad InputDevice section with the following:

  • Basic device definition layout:
    Section "InputDevice"
            Identifier      "Synaptics Touchpad"
            Driver          "synaptics"
            Option          "SendCoreEvents"        "true"
            Option          "Device"                "/dev/psaux"
            Option          "Protocol"              "auto-dev"
            Option          "SHMConfig"             "true"
    '''...insert other options from below here...'''
    EndSection
  • General options affecting the touchpad edge areas, speed, touch sensitivity, etc. Note that if not using edge scrolling, the edge boundaries can probably be decreased but the edge offsets will need to be reasonable (as below?) if edge scrolling is being used.:
            Option          "LeftEdge"              "150"
            Option          "RightEdge"             "1070"
            Option          "TopEdge"               "100"
            Option          "BottomEdge"            "310"
            Option          "FingerLow"             "25"
            Option          "FingerHigh"            "30"
            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"
  • Options affecting taps for button clicks:
    • Buttons 1, 2 and 3 correspond to the left, middle and right mouse buttons respectively. If you set the values to 0, the method will be disabled. The TapButton options are for one, two or three finger taps. The CornerButton options are for one finger taps in the right-top (RT), right-bottom (RB), left-top (LT) and left-bottom (LB) corners of the touchpad. Generally you will want to use either corner taps or multi-finger taps, not both.

    • Multi-finger taps
      • The following example uses a one-finger tap for left-click, a two-finger tap for right-click and a three-finger tap for middle-click (and the physical button can still used for left-click):
                Option          "TapButton1"            "1"
                Option          "TapButton2"            "3"
                Option          "TapButton3"            "2"
    • One-finger corner taps
      • The following example uses the right-bottom corner for middle-click and left-bottom corner for right-click (and the physical button is still used for left-click):
                Option          "RTCornerButton"        "0"
                Option          "RBCornerButton"        "2"
                Option          "LTCornerButton"        "0"
                Option          "LBCornerButton"        "3"
  • Options affecting scrolling: You can either use edge scrolling or two-finger scrolling (as in Mac OS X) but you won't generally want to use both.
    • Scrolling speed The following options affect how far you have to move your finger across the touchpad to affect a scroll. Smaller values should make scrolling faster.
              Option          "VertScrollDelta"       "20"
              Option          "HorizScrollDelta"      "50"
    • Edge scrolling The following options toggle whether moving a finger along an edge of the touchpad invokes scrolling. Set to 0 to disable.
              Option          "HorizEdgeScroll"       "1"
              Option          "VertEdgeScroll"        "1"
    • Two-finger scrolling The following options toggle whether moving two fingers horizontally or vertically over the touchpad invokes scrolling. Set to 0 to disable.
              Option          "VertTwoFingerScroll"   "1"
              Option          "HorizTwoFingerScroll"  "1"
  • Additional useful information
    • Firefox horizontal scrolling behavior With two finger scrolling enabled, you will probably want to change Firefox's horizontal scrolling behavior. To do so, open Firefox, go to the URL "about:config", and change the following settings:
      mousewheel.horizscroll.withnokey.action from 2 to 0
      mousewheel.horizscroll.withnokey.numlines from -1 to 1
    • Disable the touchpad temporarily while typing

      It is useful to have the touchpad not use click or scroll events while you are typing. The information for this was found [http://ubuntu.wordpress.com/2006/09/20/disable-touchpad-temporarily-when-typing/ here]. Make syndaemon start up by default each time you login, add it to the list of Startup Programs in System->Preferences->Sessions. Add the following command:

      syndaemon -t -d

Restart X for changes to take effect with Ctrl-Alt-Backspace

Examples

  • Example 1 With the following settings, two finger scrolling is enabled as in Mac OS X. Right-click is done by tapping the bottom-left corner of the touchpad, and middle-click is done by tapping the bottom-right corner of the touchpad.
    Section "InputDevice"
            Identifier      "Synaptics Touchpad"
            Driver          "synaptics"
            Option          "SendCoreEvents"        "true"
            Option          "Device"                "/dev/psaux"
            Option          "Protocol"              "auto-dev"
            Option          "SHMConfig"             "true"
            Option          "LeftEdge"              "150"
            Option          "RightEdge"             "1070"
            Option          "TopEdge"               "100"
            Option          "BottomEdge"            "310"
            Option          "FingerLow"             "25"
            Option          "FingerHigh"            "30"
            Option          "MaxTapTime"            "180"
            Option          "MaxTapMove"            "220"
            Option          "MaxDoubleTapTime"      "180"
            Option          "LockedDrags"           "off"
            Option          "MinSpeed"              "1.10"
            Option          "MaxSpeed"              "1.30"
            Option          "AccelFactor"           "0.08"
            Option          "TapButton1"            "0"
            Option          "TapButton2"            "0"
            Option          "TapButton3"            "0"
            Option          "RTCornerButton"        "0"
            Option          "RBCornerButton"        "2"
            Option          "LTCornerButton"        "0"
            Option          "LBCornerButton"        "3"
            Option          "VertScrollDelta"       "20"
            Option          "HorizScrollDelta"      "50"
            Option          "HorizEdgeScroll"       "0"
            Option          "VertEdgeScroll"        "0"
            Option          "VertTwoFingerScroll"   "1"
            Option          "HorizTwoFingerScroll"  "1"
    EndSection
  • Example 2 With the following settings the Synaptics Touchpad configuration should be closer to Mac OS X. Right-click using a two-finger tap and scroll by moving two fingers across the touchpad.
    Section "InputDevice"
            Identifier      "Synaptics Touchpad"
            Driver          "synaptics"
            Option          "SendCoreEvents"        "true"
            Option          "Device"                "/dev/psaux"
            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"
    EndSection

DVI Output (gutsy)

Extended Monitor (hardy)

If your extended monitor [https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/193419 goes black], you can resolve the problem with:

Edit your xorg.conf to include the following Option in the Device Section of "Configured Video Device":

  Section "Device"
    Identifier "Configured Video Device"
    Option "FramebufferCompression" "off"
    ...
  EndSection

Misc

This is useful if you already have too many partitions on your macbook and want to put the swap file directly on the main / partition.

  • dd if=/dev/zero of=/swapfile bs=1024 count=2048000
    mkswap /swapfile
    swapon /swapfile
    edit fstab:
     /swapfile               swap                    swap    defaults        0 0

Note: You can use suspend on disk with a swapfile. To do that we have to add an option passed to the kernel. Add the resume=/dev/<partition> resume_offset=<offset to the swapfile in blocks> :

  • sudo filefrag -v /swapfile
    #output : First block: 102300

Copy the first block number of the swapfile (ex:102300) and edit the defoptions line of /boot/grub/menu.lst :

  • # defoptions=quiet splash resume=/dev/sda3 resume_offset=102300

The update your grub configuration :

  • sudo update-grub

On this example, the swapfile is on partition /dev/sda3. You are now able to use suspend on disk (hibernate).


References:

CategoryCleanup CategoryAudio

MacBook2-1/Hardy (last edited 2013-12-14 01:13:51 by knome)