\documentclass[a4paper,11pt]{report}
    
    \input{../includes/headers_global.tex}

	\def\sitename{Debian GNU/Linux :: Laptops }
	\def\shorttitre{Mac Book Pro}
	\def\titre{Debian Sid \& Mac Book Pro}
	\def\autheur{Matthieu Vogelweith}
	\def\subject{Installation de Debian GNU/Linux Sid sur Apple Mac Book Pro}
	\def\keywords{Debian, Linux, Matthieu, Vogelweith, Sid, Laptop, Apple, Mac Book Pro, radeonhd}

	\input{../includes/headers.tex}

\begin{document}

\renewcommand{\bibname}{R\'ef\'erences}

\begin{titlepage}
	\maketitle
\end{titlepage}

\chapter*{Résumé}

	L'objectif de ce document est donc de détailler l'installation de Debian GNU/Linux \cite{debian} sur un Mac Book Pro Core 2 Duo \cite{mbp}. Notons que la procédure expliquée ci-dessous est basée sur une Debian Sid.\\
    Globalement la Sid fonctionne très bien sur cette machine, avec juste un petit bémol pour la gestion de l'énergie puisqu'on ne peut espérer avoir plus de 2 heures d'autonomie pour l'instant ...\\

\input{../includes/licence.tex}

\chapter*{News}
    
    \begin{itemize}
        \item \textbf{14/08/2008} : Utilisation de uswsusp pour la mise veille.
        \item \textbf{08/08/2008} : Kernel 2.6.26-1.686, le module uvcvideo est maintenant intégré au kernel.
        \item \textbf{14/07/2008} : MAJ de la documentation après changement de disque, utilisation du kernel Debian.
        \item \textbf{22/11/2007} : Kernel 2.6.23.8 et utilisation du driver ATI libre radeonhd.
        \item \textbf{26/10/2007} : Nouveau driver ATI 8.42.3.
        \item \textbf{22/08/2007} : Kernel 2.6.23-rc3, la mise en veille fonctionne bien avec acpi-support.
        \item \textbf{02/06/2007} : Nouveau driver ATI 8.37.6 packagé dans Sid et nouveau driver synaptics.
        \item \textbf{03/05/2007} : La carte wlan fonctionne maintenant très bien avec le module madwifi (WEP/WPA).
        \item \textbf{28/04/2007} : Kernel 2.6.21.2, la mise en veille et la caméra Isight ne fonctionne plus.
    \end{itemize}

\tableofcontents
		
\chapter{Introduction}

	\section{Caractéristiques Techniques}

\begin{itemize}
\item Processeur : Intel Core 2 Duo à 2,33 GHz 
\item Mémoire : 2 Go 667 DDR2 - 2x1 Go SO-DIMMs
\item Disque dur : Serial ATA de 120 Go (5400 trs/min)
\item Carte Graphique : ATI Mobility Radeon X1600 256 Mo de SDRAM GDDR3 
\item Lecteur Optique : SuperDrive 6x (DVD+R DL/DVD RW/CD-RW)
\item Écran panoramique MacBook Pro 15 pouces
\end{itemize}

	\section{lspci}

Un petit tour d'horizon des périphériques installés avec \textbf{lspci} :

\vspace{1em}
\begin{lstlisting} 
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03)
00:07.0 Performance counters: Intel Corporation Device 27a3 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: ATI Technologies Inc M56P [Radeon Mobility X1600]
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22)
03:00.0 Network controller: Atheros Communications Inc. AR5418 802.11abgn Wireless PCI Express Adapter (rev 01)
0c:03.0 FireWire (IEEE 1394): Texas Instruments TSB82AA2 IEEE-1394b Link Layer Controller (rev 01)
\end{lstlisting}
\vspace{1em}

\chapter{Installation}

	\section{Présentation}

- Installation en 32 bits\\

	\section{Partitionnement du disque}

- Redimensionnement de la partition MacOSX ou réinstallation sur une plus petite partition\\

	\section{Installation de Refit}

Refit va permettre de booter Debian en utilisant un grub non modifié. Il va également fournir un menu de boot qui permettra de choisir en MacOS X et Linux au démarrage de la machine. L'installation se fait donc sous MacOS X : la procédure est très simple, il suffit de suivre les instructions données sur le site officiel : \cite{refit}\\

Avant de redémarrer, il est possible de modifier un peu la configuration de Refit. Par exemple, l'option \textbf{hideui all} permet de cacher tous les éléments de Refit sauf les icônes des OS présents sur la machine. On peut également ajouter l'option \textbf{legacyfirst} qui permet de booter par défaut sous Linux.

Toute la configuration est modifiable dans le fichier /efi/refit/refit.conf :

\vspace{1em}
\begin{lstlisting} 
legacyfirst
hideui all
\end{lstlisting}
\vspace{1em}

Au redémarrage de la machine, un beau menu doit apparaitre pour choisir l'OS a démarrer.

	\section{Installation de Debian}

- Pour install Debian, téléchargement de la netinstall \cite{netinst}

	\section{Configuration de GRUB}

Avant d'écrire le bootloader, il faut synchroniser la table de partition et mettre le flag de boot sur la partition sda3 :\\

- Passage sur une console avec Alt+F2, activation en tapant sur "Enter" puis :

\vspace{1em}
\begin{lstlisting} 
# chroot /target aptitude install refit
# /target/sbin/gptsync /dev/sda
# sfdisk --force -c /dev/sda 3 83
\end{lstlisting}
\vspace{1em}

- Retour au programme d'installation avec Alt+F1
- Répondre non pour l'install dans le MBR
- choisir /dev/sda3

    \section{Configuration du clavier}

\vspace{1em}
\begin{lstlisting} 
# dpkg-reconfigure console-data
\end{lstlisting}
\vspace{1em}

% Choisir la keymap "mac / Unknown / French / Standard / Extended"
Choisir "Select keymap from arch list" -> "azerty" -> "French" -> "Apple USB"

    \section{Upgrade en Sid}

La mise à jour en Sid permet de bénéficier d'un kernel plus récent et de paquets plus à jour. Il sera par exemple possible d'utiliser directement le driver OpenSource RadeonHD pour gérer la carte ATI. Avant de faire la mise à jour, il faut modifier le fichier \textbf{/etc/apt/sources.list} comme indiqué ci-dessous :

\vspace{1em}
\begin{lstlisting} 
# Debian Sid
deb http://ftp.fr.debian.org/debian/ sid main non-free contrib

# Debian Experimental
deb http://ftp.fr.debian.org/debian/ experimental main non-free contrib
\end{lstlisting}
\vspace{1em}

Notons que le sources.list présenté ci-dessus utilise également le dépôt expérimental pour bénéficier de quelques paquets supplémentaire, mais il n'est pas du tout indispensable.
Pour réaliser la mise à jour, il suffit simplement d'exécuter la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# aptitude update && aptitude dist-upgrade
\end{lstlisting}
\vspace{1em}

Après la mise à jour, un petit reboot permet de redémarrer sur le nouveau kernel :

\vspace{1em}
\begin{lstlisting} 
# reboot
\end{lstlisting}
\vspace{1em}

En principe, le kernel de Sid démarre très bien sur le MacBook Pro. En cas de problème, il est toujours possible de démarrer en single ou sur le 2.6.18 de la Etch.

%\chapter{Compilation d'un nouveau kernel}
%
%	\section{Présentation}
%
%	Le kernel Linux \cite{kernel} présent dans l'installeur de Etch est un 2.6.18. Pour bénéficier du meilleur support matériel possible, il est nécessaire de compiler un noyau plus récent.\\
%	
%	Il existe une méthode standard et une méthode propre à la distribution Debian pour compiler et installer un nouveau noyau. Cette dernière offre, à mon avis, de nombreux avantages par rapport à la méthode standard :
%\begin{itemize}
%	\item La compilation et l'installation du noyau et des modules sont grandement simplifiées.
%	\item Le résultat de la compilation produit un paquet Debian contenant le noyau et les modules qui s'intégre parfaitement au gestionnaire de paquets de la distribution.
%	\item Le paquet généré peut être facilement deployé. Il est donc facile d'upgrader le noyau d'un parc de machines en ne compilant qu'une seule fois le nouveau noyau.\\
%\end{itemize}
%
%	Le paragraphe suivant présente donc la méthode pour compiler un nouveau noyau adapté à la machine en utilisant la méthode proposée par Debian.
%
%	\section{Préparation des sources}
%
%Il est possible d'utiliser les sources du noyau fournies par Debian ou les sources officielles. Personnellement je préfère toujours utiliser les sources officielles parce que les sources fournies par les distributions sont patchées et posent quelques fois des problèmes lors de l'application d'autres patchs.
%
%En premier lieu, il faut télécharger le dernier noyau stable sur kernel.org \cite{kernel} et l'extraire dans /usr/src/ :
%
%\vspace{1em}
%\begin{lstlisting} 
%# cd /usr/src/
%# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.8.tar.bz2
%# tar xvjf linux-2.6.23.8.tar.bz2
%\end{lstlisting}
%\vspace{1em}
%	
%	On créé ensuite un lien symbolique vers le nouveau répertoire. Ce lien permet de connaître le chemin du kernel quelque soit sa version. En effet, les applications qui doivent utiliser les sources du kernel utilisent souvent le chemin "/usr/src/linux", ce qui permet de faire abstraction de la version exacte du kernel. Lorsqu'on installe un nouveau kernel, il suffit alors de modifier le lien symbolique avant de recompiler :
%
%\vspace{1em}
%\begin{lstlisting} 
%# ln -s linux-2.6.23.8 linux
%\end{lstlisting}
%\vspace{1em}
%	
%	\section{Patchs Mactel-Linux}
%
%Les patchs mactel-linux \cite{mactel} permettent de corriger un certain nombre de modules du noyau pour que ce dernier fonctionne correctement que les MAC Intel. Ils sont disponibles via svn :
%
%\vspace{1em}
%\begin{lstlisting}
%# mkdir -p /root/svn
%# cd /root/svn
%# svn co http://mactel-linux.svn.sourceforge.net/svnroot/mactel-linux/trunk/ mactel-linux
%\end{lstlisting}
%\vspace{1em}
%
%Les patchs sont fournis avec un petit script qui permet d'appliquer les patchs sur les sources du noyau :
%
%\vspace{1em}
%\begin{lstlisting}
%# cd mactel-linux/kernel/mactel-patches-2.6.23
%# ./apply /usr/src/linux-2.6.23.8/
%\end{lstlisting}
%\vspace{1em}
%
%Note : l'application du patch va également modifier le Makefile pour ajouter le suffix \textbf{-mactel} au numéro de version du noyau.
%
%	
%	\section{Configuration}
%
%	Il existe ensuite différentes manières de configuer les options du kernel. Personnellement j'utilise la méthode utilisant la libncurses qui marche aussi bien en console que sous X. Pour afficher le menu de configuration, il suffit alors d'exécuter les commandes suivantes :
%
%\vspace{1em}
%\begin{lstlisting} 
%# aptitude install libncurses5-dev
%# cd /usr/src/linux
%# make menuconfig
%\end{lstlisting}
%\vspace{1em}
%
%    Pour ceux qui ne veulent pas s'amuser a refaire toute la config, mon fichier de configuration est disponible ici : \href{config-2.6.23.8}{config-2.6.23.8}.
%
%	\section{Compilation et installation}
%
%	La méthode de compilation retenue est donc la méthode proposée par Debian. Pour cela, il faut commencer par installer le paquet kernel-package qui fournira entre autre la commande \textbf{make-kpkg} :
%
%\vspace{1em}
%\begin{lstlisting}
%# aptitude install kernel-package
%\end{lstlisting}
%\vspace{1em}
%
%    La configuration de kernel-package se fait via le fichier /etc/kernel-pkg.conf. Les options \textbf{maintainer} et \textbf{email} sont purement informatives, elles seront utilisées pour la génération du paquets Debian. L'option \textbf{CONCURRENCY\_LEVEL} défini le nombre de processus lancés simultanéments lors de la compilation du noyau (c'est ce qui définira l'option -j de make). Le MacBook Pro étant munis d'un processeur multi-core, cette option est particulièrement intéressante puisqu'elle permet de diviser le temps de compilation par 2. (Voir le chapitre Benchmark.)
%
%\vspace{1em}
%\begin{lstlisting}
%maintainer := Matthieu Vogelweith
%email := matthieu@vogelweith.com
%CONCURRENCY_LEVEL := 4
%\end{lstlisting}
%\vspace{1em}
%
%	L'utilisation de cette commande est très simple, il suffit de passer l'argument clean pour nettoyer les sources et binary-arch pour compiler le kernel et générer un paquet pour les kernel-headers. Notons qu'il est interressant de spécifier un numéro version avec l'option --revision. Ce numéro de version sera suffixé au nom du paquet créé.
%    Les modules externes préparés précedemment sont compilés grâce à l'option modules\_image. Si aucune autre option n'est spécifiée, tous les modules présents dans /usr/src/modules seront compilé. Pour restreindre le choix des modules, il suffit d'ajouter l'option --added-modules suivi de la liste des modules séparés par un virgule.
%
%\vspace{1em}
%\begin{lstlisting}
%# cd /usr/src/linux/
%# make-kpkg --revision=mbp.mactel.3.8 binary-arch
%\end{lstlisting}
%\vspace{1em}
%	
%	L'installation se fait maintenant tout simplement avec la commande \textbf{dpkg -i} :
%
%\vspace{1em}
%\begin{lstlisting}
%# cd /usr/src
%# dpkg -i linux-headers-2.6.23.8_mbp.mactel.3.8_i386.deb \
%        linux-image-2.6.23.8_mbp.mactel.3.8_i386.deb
%\end{lstlisting}
%\vspace{1em}
%
%    La post-installation du paquet linux-image va se charger de la configuration du bootloader, il n'y a donc rien à faire de ce coté.
%	Notons que les paquets qui viennent d'être générés sont maintenant intégrés dans le gestionnaire de paquets et peuvent être retirés avec la commande bien connue \textbf{aptitude purge}.
%	
%    \section{Chargement des modules au démarrage}
%
%    Pour s'assurer que tous les modules necéssaires sont bien chargés au démarrage de la machine et dans le bon ordre, exécutez les commmandes suivantes : (Le plus important est de charger usbhid après appletouch)
%    
%\vspace{1em}
%\begin{lstlisting} 
%# echo "blacklist usbhid" >> /etc/modprobe.d/blacklist
%# echo "blacklist appletouch" >> /etc/modprobe.d/blacklist
%# echo "appletouch" >> /etc/modules
%# echo "usbhid" >> /etc/modules
%# echo "applesmc" >> /etc/modules
%# echo "appleir" >> /etc/modules
%# echo "coretemp" >> /etc/modules
%\end{lstlisting}
%\vspace{1em}
%
%	\section{Reboot}
%
%	La dernière étape, après l'installation du nouveau noyau et la configuration des modules, est le reboot de la machine qui va permettre de démarrer sur le nouveau noyau :
%
%\vspace{1em}
%\begin{lstlisting} 
%# reboot
%\end{lstlisting}
%\vspace{1em}
%	
%	Si le kernel est bien configuré, la machine doit redémarrer sans problèmes sur son nouveau noyau. En cas de problèmes, il faut redémarrer sur l'ancien noyau, corrigé les problèmes de configuration et recommencer la compilation et l'installation.
%	
\chapter{Gestion de l'énergie}

    \section{Chargement des modules}

Chargement des modules :

\vspace{1em}
\begin{lstlisting} 
# modprobe applesmc coretemp
\end{lstlisting}
\vspace{1em}

Chargement des modules au démarrage de la machine :

\vspace{1em}
\begin{lstlisting} 
# echo "applesmc" >> /etc/modules
# echo "coretemp" >> /etc/modules
\end{lstlisting}
\vspace{1em}

    \section{Vitesse des ventilateurs}

Un fois que le module applesmc est chargé, il est possible de contrôler la vitesse des ventilateurs. Pour passer en mode manuel, il suffit d'exécuter les commandes suivantes :

\vspace{1em}
\begin{lstlisting} 
# echo "1" > /sys/devices/platform/applesmc.768/fan1_manual 
# echo "1" > /sys/devices/platform/applesmc.768/fan2_manual 
\end{lstlisting}
\vspace{1em}

Une fois que le mode manuel est activé, on peut définir la vitesse des ventilateurs avec la commandes suivante :

\vspace{1em}
\begin{lstlisting} 
# echo "4000" > /sys/devices/platform/applesmc.768/fan1_output 
# echo "4000" > /sys/devices/platform/applesmc.768/fan2_output 
\end{lstlisting}
\vspace{1em}

Pour repasser les ventilateurs en mode automatique, il suffit de remettre la configuration initiale :

\vspace{1em}
\begin{lstlisting} 
# echo "0" > /sys/devices/platform/applesmc.768/fan1_manual 
# echo "0" > /sys/devices/platform/applesmc.768/fan2_manual 
\end{lstlisting}
\vspace{1em}

    \section{Mise en veille}

Installation de uswsusp :

\vspace{1em}
\begin{lstlisting} 
# aptitude install uswsusp
\end{lstlisting}
\vspace{1em}

Mise en veille (suspend to RAM) :

\vspace{1em}
\begin{lstlisting} 
# /sbin/modprobe -r appletouch && /usr/sbin/s2ram -f -p -m && /sbin/modprobe appletouch
\end{lstlisting}
\vspace{1em}

Hibernation (suspend to DISK) :

\vspace{1em}
\begin{lstlisting} 
# s2disk
\end{lstlisting}
\vspace{1em}

\chapter{Serveur Graphique}

	\section{Pilotes ATI}

Les pilotes propriétaires fournit par ATI sont les seuls a fournir un support 3D complet pour les cartes ATI sous linux. En plus d'être propriétaire, ce pilote n'est malheureusement pas de grande qualité. Depuis peu, une alternative libre existe pour les cartes récentes, il s'agit du projet \textbf{radeonhd} \cite{radeonhd}. Ce pilote OpenSource est développé par Novell à partir des spécifications fournies par AMD. Le support 3D n'est pas vraiment complet mais il de très bonne qualité est beaucoup moins instable que le pilote propriétaire.

Ce pilote est maintenant disponible dans sa version 1.0.0 dans Debian Sid. L'installation du pilote se fait donc tout simplement avec la commande suivante :

\vspace{1em}
\begin{lstlisting}
# aptitude update
# aptitude install xserver-xorg-video-radeonhd
\end{lstlisting}
\vspace{1em}

Reste enfin à configurer la section "Device" du fichier /etc/X11/xorg.conf comme indiqué ci-dessous :

\vspace{1em}
\begin{lstlisting}
Section "Device"
    Identifier  "ATI Mobility X1600"
    Driver      "radeonhd"
EndSection
\end{lstlisting}
\vspace{1em}


\vspace{1em}
\begin{lstlisting}
$ xrandr -q
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 1440 x 1440
PANEL connected 1440x900+0+0 0mm x 0mm
   1440x900       60.0*+
DVI-I_1/analog disconnected
DVI-I_1/digital disconnected
\end{lstlisting}
\vspace{1em}

	\section{TouchPAD}

\vspace{1em}
\begin{lstlisting} 
# aptitude install xserver-xorg-input-synaptics
\end{lstlisting}
\vspace{1em}

Sous Mac OS X, le bouton droit peut être emuler avec un "clic à deux doigts". De la même façon, le défilement vertical est obtenu en déplaçant 2 doigts simultanément sur le trackpad. Pour obtenir un comportement similaire à Mac OS X, il suffit d'editer la section "InputDevice" du fichier /etc/X11/xorg.conf :

\vspace{1em}
\begin{lstlisting} 
Section "InputDevice"
    Identifier  "Synaptics Touchpad"
    Driver      "synaptics"
    Option      "SendCoreEvents" "true"
    Option      "TapButton3" "2"
    Option      "TapButton2" "3"
    Option      "VertTwoFingerScroll" "1"
    Option      "SHMConfig" "true"
EndSection
\end{lstlisting}
\vspace{1em}

Le driver Synaptics permet de régler très finement le comportement du trackpad, toutes les options sont disponibles dans la page man. Une petite astuce pour ne pas redémarrer à chaque modification de la config : utiliser \textbf{synclient} qui applique les modifications à chaud.

	\section{Configuration du clavier}

\vspace{1em}
\begin{lstlisting} 
Section "InputDevice"
    Identifier  "MBP Keyboard"
    Driver      "kbd"
    Option      "CoreKeyboard"
    Option      "XkbRules" "xorg"
    Option      "XkbModel" "macintosh"
    Option      "XkbLayout" "fr"
    Option      "XkbOptions" "lv3:lwin_switch"
EndSection
\end{lstlisting}
\vspace{1em}

	\section{Touches spéciales}

Configuration des Hotkeys avec pommed \cite{pommed}

\vspace{1em}
\begin{lstlisting} 
# aptitude install pommed gpomme
\end{lstlisting}
\vspace{1em}

	\section{Fichier de configuration}

Mon fichier de configuration est disponible ici : \href{xorg-mbp.conf}{xorg.conf}

\chapter{Carte Wireless}

    \section{Installation}

La carte Wireless est basée sur un chipset Atheros AR5008 qui est maintenant complètement supporté par MadWifi \cite{madwifi} depuis le 02/05/2007. Le support de cette carte étant très récent, il faut simplement utiliser les sources du SVN pour que tout fonctionne :

\vspace{1em}
\begin{lstlisting} 
# aptitude install linux-uvc-source build-essential kernel-package module-assistant kernel-headers-2.6-686
# mkdir -p /root/svn/
# cd /root/svn
# svn co  http://svn.madwifi.org/madwifi/trunk madwifi
# cd madwifi
# make
# make install
\end{lstlisting}
\vspace{1em}
	
    \section{Configuration}

Pour que le module se charge automatiquement lorsque l'on monte l'interface, on peut ajouter les lignes suivantes dans /etc/network/interfaces :

\vspace{1em}
\begin{lstlisting} 
iface ath0 inet dhcp
    pre-up modprobe ath_pci
    post-down modprobe -r ath_pci wlan_scan_sta wlan_wep ath_rate_sample wlan
    wireless-essid Mon_ESSID
    wireless-key xxxxxxxxxxxxxxxxxxxxxxxxxx
    wireless-keymode open
\end{lstlisting}
\vspace{1em}

Pour monter l'interface, il suffit alors de saisir la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# ifup ath0
\end{lstlisting}
\vspace{1em}

On peut verifier que la carte a bien été reconnue en examinant le syslog :

\vspace{1em}
\begin{lstlisting} 
kernel: ath_hal: 0.9.30.13 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5413, RF2133)
kernel: wlan: 0.8.4.2 (svn r2351)
kernel: ath_pci: 0.9.4.5 (svn r2351)
kernel: ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 18
kernel: PCI: Setting latency timer of device 0000:03:00.0 to 64
kernel: ath_rate_sample: 1.2 (svn r2351)
kernel: wifi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
kernel: wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
kernel: wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
kernel: wifi0: turboG rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
kernel: wifi0: H/W encryption support: WEP AES AES_CCM TKIP
kernel: wifi0: mac 12.10 phy 8.1 radio 12.0
kernel: wifi0: Use hw queue 1 for WME_AC_BE traffic
kernel: wifi0: Use hw queue 0 for WME_AC_BK traffic
kernel: wifi0: Use hw queue 2 for WME_AC_VI traffic
kernel: wifi0: Use hw queue 3 for WME_AC_VO traffic
kernel: wifi0: Use hw queue 8 for CAB traffic
kernel: wifi0: Use hw queue 9 for beacons
kernel: wifi0: Atheros 5418: mem=0x98100000, irq=18
\end{lstlisting}
\vspace{1em}


\chapter{Webcam iSight}

    \section{Chargement du module}

Depuis la version 2.6.26 du noyau, le module \textbf{uvcvideo} est intégré dans le kernel officiel. Il n'est donc plus necéssaire de compiler le driver manuellement.

Si le module n'est pas chargé automatiquement au démarrage, il suffit de la charger avec la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# modprobe uvcvideo
\end{lstlisting}
\vspace{1em}

On peut verifier que la cwebcam a bien été reconnue en examinant le syslog :

\vspace{1em}
\begin{lstlisting} 
[31794.407462] Linux video capture interface: v2.00
[31794.416545] uvcvideo: Found UVC 1.00 device Built-in iSight (05ac:8501)
[31794.418572] uvcvideo: Failed to query (135) UVC control 1 (unit 0) : -32 (exp. 26).
[31794.421770] input: Built-in iSight as /class/input/input13
[31794.432694] usbcore: registered new interface driver uvcvideo
[31794.432704] USB Video Class driver (v0.1.0)
\end{lstlisting}
\vspace{1em}

    \section{Firmware}

Le firmware de la webcam peut être récupéré à partir de la partition de MacOSX. Attention, ce firmware doit être chargé avec le chargement du module uvcvideo :

\vspace{1em}
\begin{lstlisting}
# mkdir /mnt/osx/
# mount -t hfsplus /dev/sda2 /mnt/osx
# ls -al /mnt/macosx/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
\end{lstlisting}
\vspace{1em}
	
Le paquet \textbf{isight-firmware-tools} fournit un petit outil permettant d'extraire, de patcher et de charger le firmware de la webcam.

\vspace{1em}
\begin{lstlisting}
# aptitude install isight-firmware-tools
\end{lstlisting}
\vspace{1em}

Lors de la configuration du paquet, Debconf demande l'emplacement du firmware original. Il suffit d'indiquer le chemin du firmware trouvé ci-dessus. En cas de problèmes, il est toujours possible de rejouer la configuration du paquet avec la commande suivante :

\vspace{1em}
\begin{lstlisting}
# dpkg-reconfigure isight-firmware-tools
\end{lstlisting}
\vspace{1em}

Si tout c'est bien passé, le firmware doit être disponible dans /lib/firmware et un nouveau device doit être créé dans /dev :

\vspace{1em}
\begin{lstlisting}
# ls -al /lib/firmware/isight.fw
-rw-r--r--  1 root root 10871 2008-07-17 12:33 isight.fw
# ls -al /dev/video*
crw-rw---- 1 root video 81, 0 2008-07-17 12:39 /dev/video0
\end{lstlisting}
\vspace{1em}

    \section{Utilisation}

Pour que la webcam soit utilisable par un utilisateur du système, il suffit de l'ajouter au groupe \textbf{video} :

\vspace{1em}
\begin{lstlisting}
# adduser <utilisateur> video
\end{lstlisting}
\vspace{1em}

Ensuite, cet utilisateur pour utiliser toutes les applications qu'il désire, sous réserve qu'elles supportent V4L2. Voici quelques applications compatibles V4L2 qui fonctionnement bien avec l'Isight :

\begin{itemize}
    \item Mplayer : \textbf{mplayer tv\string://}
    \item VLC > 0.9.0 : \textbf{vlc v4l2\string://}
    \item Skype > 2.0.0
    \item Empathy
    \item Cheese
\end{itemize}

\chapter{Bluetooth}

	\section{Montage d'un téléphone}

\vspace{1em}
\begin{lstlisting}
# aptitude install obexfs
# mkdir -p /mnt/bluetooth
\end{lstlisting}
\vspace{1em}

\vspace{1em}
\begin{lstlisting}
# hcitool scan
\end{lstlisting}
\vspace{1em}

\vspace{1em}
\begin{lstlisting}
# obexfs -b <BT MAC ADDRESS> -B 7 ~/mnt/bluetooth/
\end{lstlisting}
\vspace{1em}

\chapter{Benchmarks}

	\section{Disque dur}

Hdparm permet de tester les performances du disque dur de la machine. L'installation se fait comme toujours avec aptitude :

\vspace{1em}
\begin{lstlisting} 
# aptitude install hdparm
\end{lstlisting}
\vspace{1em}

Pour lancer le test, il suffit d'exécuter la commande suivante :

\vspace{1em}
\begin{lstlisting} 
# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   5498 MB in  2.00 seconds = 2754.09 MB/sec
 Timing buffered disk reads:  120 MB in  3.03 seconds =  39.55 MB/sec
\end{lstlisting}
\vspace{1em}

Le résultat ci-dessus est obtenu avec le disque 120 Go 5400 tr/min d'origine. Ci-dessous, le résultat de hdparm après remplacement du disque par un Hitachi 160 Go 7200 tr/min :

\vspace{1em}
\begin{lstlisting} 
mbp:~# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   5214 MB in  2.00 seconds = 2611.56 MB/sec
 Timing buffered disk reads:  172 MB in  3.02 seconds =  57.02 MB/sec
\end{lstlisting}
\vspace{1em}


	\section{Processeur}

Afin d'évaluer les performances du processeur, on peut par exemple mesurer le temps de compilation du noyau. Pour apprécier les effets du multi-core, le test est réalisé plusieurs fois en modifiant l'option -j de make. Cette option défini le nombre de process lancés simultanément par make.

\vspace{1em}
\begin{lstlisting} 
time make
real    8m46.063s

time make -j2
real    4m17.045s

time make -j3
real    4m7.875s

time make -j4
real    4m6.633s
\end{lstlisting}
\vspace{1em}


	\section{Carte graphique}

Pout tester les performances de la carte graphique, on peut utiliser \textbf{glxgears} qui est fourni avec le paquet \textbf{mesa-utils} :

\vspace{1em}
\begin{lstlisting} 
$ glxgears 
6257 frames in 5.1 seconds = 1236.405 FPS
6204 frames in 5.0 seconds = 1237.433 FPS
6293 frames in 5.1 seconds = 1243.875 FPS
6237 frames in 5.0 seconds = 1239.986 FPS
6237 frames in 5.1 seconds = 1230.079 FPS
\end{lstlisting}
\vspace{1em}

\clearpage
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{\jobname}

%\ifpdf
%\else
%\chapter{Vos commentaires}
%\fi
\end{document}
