caratteristiche hardware del mio macbook:
- processore Intel Core 2 Duo T7200, freq: 2000 MHz, L2 cache: 4096 KiB
- scheda wireless: atheros ar5418, della famiglia ar5008
vedere anche:
http://ste.lilik.it/?idart=82&title=macbook+core+2+duo+u...
http://ste.lilik.it/?idart=84&title=compiling+kernel+mac...
http://ste.lilik.it/?idart=85&title=macbook+mactel+confi...
ecco cosa funziona con il kernel originale ubuntu:
- airport (scheda atheros, AR5008E oppure AR 5418), con driver madwifi compilati dall'svn.
- NB: nel caso che si voglia compilare un proprio kernel, è indispensabile disattivare il versioning dei moduli (opzione CONFIG_MODVERSIONS=n)
- webcam integrata isight, usando il firmware originale ed i driver uvcvideo
- bluetooth
- ricevitore infrarossi, utile per comandare rhythmbox!!
- tastiera con tutte le funzionalità avanzate abilitate (luminosità schermo, volume audio, bloc num, espulsione disco)
- lo sleep
- il touchpad con i driver synaptics, basta compilare entrambi i driver (appletouch e usbhid) come moduli, e poi impostare in xorg.conf una roba tipo:
Section "Module"
...
Load "synaptics"
EndSection
...
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "LeftEdge" "100"
Option "RightEdge" "1120"
Option "TopEdge" "50"
Option "BottomEdge" "310"
Option "FingerLow" "5"
Option "FingerHigh" "20"
Option "MaxTapTime" "100"
Option "MaxTapMove" "150"
Option "MaxDoubleTapTime" "180"
Option "VertScrollDelta" "20"
Option "HorizScrollDelta" "50"
Option "MinSpeed" "0.49"
Option "MaxSpeed" "0.78"
Option "AccelFactor" "0.0010"
Option "LockedDrags" "false"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "VertTwoFingerScroll" "true"
Option "HorizTwoFingerScroll" "false"
Option "FastTaps" "true"
Option "VertEdgeScroll" "false"
Option "HorizEdgeScroll" "false"
Option "SHMConfig" "true"
EndSection
...
Section "ServerLayout"
...
InputDevice "Synaptics Touchpad"
EndSection
aggiustando le opzioni con man synaptics sotto mano. con quelle qui sopra, bene o male si ottiene un touchpad funzionante non troppo diversamente da quello di default di osx, più i tocchi con uno, due e tre dita.
con l'aggiornamento ad ubuntu intrepid (8.10) Xorg non si occupa + di configurare il touchpad synaptics, ma il compito è demandato ad HAL. per ottenere la stessa configurazione di cui sopra, basta creare il file seguente:
/etc/hal/fdi/policy/11-x11-synaptics.fdi
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<match key="info.product" contains="appletouch">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.Device" type="string">/dev/psaux</merge>
<merge key="input.x11_options.Protocol" type="string">auto-dev</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">true</merge>
<merge key="input.x11_options.LeftEdge" type="string">100</merge>
<merge key="input.x11_options.RightEdge" type="string">1120</merge>
<merge key="input.x11_options.TopEdge" type="string">50</merge>
<merge key="input.x11_options.BottomEdge" type="string">310</merge>
<merge key="input.x11_options.FingerLow" type="string">5</merge>
<merge key="input.x11_options.FingerHigh" type="string">20</merge>
<merge key="input.x11_options.MaxTapTime" type="string">100</merge>
<merge key="input.x11_options.MaxTapMove" type="string">150</merge>
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge>
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge>
<merge key="input.x11_options.HorizScrollDelta" type="string">50</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.49</merge>
<merge key="input.x11_options.MaxSpeed" type="string">0.78</merge>
<merge key="input.x11_options.AccelFactor" type="string">0.0010</merge>
<merge key="input.x11_options.LockedDrags" type="string">false</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">false</merge>
<merge key="input.x11_options.FastTaps" type="string">true</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">false</merge>
<merge key="input.x11_options.HorizEdgeScroll" type="string">false</merge>
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
</match>
</match>
</device>
</deviceinfo>
che non è altro che la medesima configurazione tradotta nella giusta sintassi.
aggiornando da ubuntu 8.04 si nota infatti che le righe corrispondenti alla configurazione del touchpad synaptics in Xorg.conf sono state commentate automaticamente.
forse sarebbe il caso che il team di ubuntu prevedesse uno script per convertire automaticamente la configurazioni..
- la tastiera
ecco qua il file
.xmodmap
da tenere nella home per modificare leggermente la tastiera. in questo modo, si ottiene una tastiera quasi completamente funzionale, con il tasto CANC mappato sul tasto F12, ALTGR (ISO_Level3_Shift) mappato su mela-destro e il tasto meta mappato sul tasto enter (a fianco di mela-destro). la modifica ai tasti si ottiene invocando da shell, una volta posizionati nella home,
xmodmap .xmodmap
ecco il contenuto del file:
keycode 104 = Super_R
keycode 96 = Delete
keycode 134 = ISO_Level3_Shift
- il telecomando infrarossi.
a volte funziona da sé, altre volte no. senza bisogno di modificare il kernel default fornito con ubuntu, è necessario intervenire sulla configurazione per far si che il modulo appleir, che gestisce il dispositivo infrarossi, sia caricato prima dei moduli applesmc ed usbhid.
per fare questo, aggiungiamo in /etc/modules la riga
appleir
applesmc
ed in /etc/modprobe.d/ creiamo il file appleir, contenente la riga
install appleir /sbin/modprobe -r usbhid; /sbin/modprobe --ignore-install appleir; /sbin/modprobe usbhid
questo dice a modprobe che, al momento in cui viene dato il comando "modprobe appleir" (e viene dato quando in fase di boot viene processata la riga "appleir" aggiunta in /etc/modules), viene rimosso il modulo usbhid, caricato appleir e poi di nuovo caricato usbhid. questo perché appleir, per funzionare, deve essere caricato prima del modulo usbhid.
Poi disinstallo gnome-lirc-propterties, che tanto non serve per il mio macbook.
Per verificare che il driver appleir sia stato caricato correttamente, basta verificare che esista nell'output del comando "lshal" una riga contenente "appleir" in corrispondenza del dispositivo ad infrarossi. Nel mio caso ho questo output (0x8240 è il product id del mio dispositivo IR):
udi = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial_if0'
info.linux.driver = 'appleir' (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial' (string)
info.product = 'USB HID Interface' (string)
info.subsystem = 'usb' (string)
info.udi = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial_if0' (string)
Se il driver è stato caricato correttamente, tutto dovrebbe funzionare.
Nella mia installazione ovviamente non tutto funzionava. In particolare, funzionava solo l'aumento del volume (non la diminuzione).
Questo vale anche per la tastiera: il tasto F4 non abbassava il volume, mentre F3 ed F5 facevano correttamente il muto e l'aumento del volume.
Il problema risiede nella configurazione.
Aprire gconf-editor e posizionarsi in /apps/gnome_settings_daemon/keybindings.
Per far funzionare tutto, è necessario assicurarsi che le seguenti chiavi abbiano il valore riportato qui sotto:
volume_down: XF86AudioLowerVolume
volume_up: XF86AudioRaiseVolume
posizioniamoci ora in /apps/metacity/global_keybindings per definire cosa fare alla pressione del tasto menu, avanti ed indietro. per fare l'associazione, scegliamo 3 chiavi run_command_* (io ho scelto run_command_12, run_command_11, run_command_10) ed assegnamogli rispettivamente XF86MenuKB, XF86Forward, XF86Back, quindi:
run_command_12: XF86MenuKB
run_command_11: XF86Forward
run_command_10: XF86Back
posizionarsi poi in /apps/metacity/keybindings_command
e in corrispondenza delle 3 chiavi scelte prima (quindi io ho preso command_12, command_11, command_10) assegnargli i comandi da eseguire in risposta rispettivamente alla pressione del tasto menu, del tasto avanti, del tasto indietro sul telecomando. Io uso rhythmbox, quindi ho impostato:
command_12: rhythmbox-client
command_11: rhythmbox-client --next
command_10: rhythmbox-client --previous
a questo punto se tutto funziona, alla pressione del tasto menu si dovrebbe aprire rhythmbox, ed i tasti avanti, indietro, play, vol+, vol- dovrebbero funzionare tutti.
- stato della batteria: dopo qualche tempo di funzionamento, aveva smesso di funzionarmi correttamente l'icona dell'indicazione della carica della batteria: non mi diceva + se la batteria era carica e quanto mancava alla carica completa. ho trovato questa utile guida della apple per sistemare le cose http://support.apple.com/kb/HT1411
in pratica, c'era da resettare l'SMC (system management controller) che ogni tanto ci sta che si inchioppi. per farlo, basta spengere il macbook, staccare l'alimentatore, togliere la batteria, tenere premuto il tasto di accensione del macbook per almeno 5 secondi, poi rimettere la matteria, riattaccare l'alimentatore e riaccendere... et voilà, funziona!
- il microfono
- tutto il resto
- processore Intel Core 2 Duo T7200, freq: 2000 MHz, L2 cache: 4096 KiB
- scheda wireless: atheros ar5418, della famiglia ar5008
vedere anche:
http://ste.lilik.it/?idart=82&title=macbook+core+2+duo+u...
http://ste.lilik.it/?idart=84&title=compiling+kernel+mac...
http://ste.lilik.it/?idart=85&title=macbook+mactel+confi...
ecco cosa funziona con il kernel originale ubuntu:
- airport (scheda atheros, AR5008E oppure AR 5418), con driver madwifi compilati dall'svn.
svn co http://svn.madwifi.org/madwifi/trunk madwifi
- NB: nel caso che si voglia compilare un proprio kernel, è indispensabile disattivare il versioning dei moduli (opzione CONFIG_MODVERSIONS=n)
- webcam integrata isight, usando il firmware originale ed i driver uvcvideo
- bluetooth
- ricevitore infrarossi, utile per comandare rhythmbox!!
- tastiera con tutte le funzionalità avanzate abilitate (luminosità schermo, volume audio, bloc num, espulsione disco)
- lo sleep
- il touchpad con i driver synaptics, basta compilare entrambi i driver (appletouch e usbhid) come moduli, e poi impostare in xorg.conf una roba tipo:
Section "Module"
...
Load "synaptics"
EndSection
...
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "LeftEdge" "100"
Option "RightEdge" "1120"
Option "TopEdge" "50"
Option "BottomEdge" "310"
Option "FingerLow" "5"
Option "FingerHigh" "20"
Option "MaxTapTime" "100"
Option "MaxTapMove" "150"
Option "MaxDoubleTapTime" "180"
Option "VertScrollDelta" "20"
Option "HorizScrollDelta" "50"
Option "MinSpeed" "0.49"
Option "MaxSpeed" "0.78"
Option "AccelFactor" "0.0010"
Option "LockedDrags" "false"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
Option "VertTwoFingerScroll" "true"
Option "HorizTwoFingerScroll" "false"
Option "FastTaps" "true"
Option "VertEdgeScroll" "false"
Option "HorizEdgeScroll" "false"
Option "SHMConfig" "true"
EndSection
...
Section "ServerLayout"
...
InputDevice "Synaptics Touchpad"
EndSection
aggiustando le opzioni con man synaptics sotto mano. con quelle qui sopra, bene o male si ottiene un touchpad funzionante non troppo diversamente da quello di default di osx, più i tocchi con uno, due e tre dita.
con l'aggiornamento ad ubuntu intrepid (8.10) Xorg non si occupa + di configurare il touchpad synaptics, ma il compito è demandato ad HAL. per ottenere la stessa configurazione di cui sopra, basta creare il file seguente:
/etc/hal/fdi/policy/11-x11-synaptics.fdi
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.touchpad">
<match key="info.product" contains="appletouch">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.Device" type="string">/dev/psaux</merge>
<merge key="input.x11_options.Protocol" type="string">auto-dev</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">true</merge>
<merge key="input.x11_options.LeftEdge" type="string">100</merge>
<merge key="input.x11_options.RightEdge" type="string">1120</merge>
<merge key="input.x11_options.TopEdge" type="string">50</merge>
<merge key="input.x11_options.BottomEdge" type="string">310</merge>
<merge key="input.x11_options.FingerLow" type="string">5</merge>
<merge key="input.x11_options.FingerHigh" type="string">20</merge>
<merge key="input.x11_options.MaxTapTime" type="string">100</merge>
<merge key="input.x11_options.MaxTapMove" type="string">150</merge>
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge>
<merge key="input.x11_options.VertScrollDelta" type="string">20</merge>
<merge key="input.x11_options.HorizScrollDelta" type="string">50</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.49</merge>
<merge key="input.x11_options.MaxSpeed" type="string">0.78</merge>
<merge key="input.x11_options.AccelFactor" type="string">0.0010</merge>
<merge key="input.x11_options.LockedDrags" type="string">false</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">3</merge>
<merge key="input.x11_options.TapButton3" type="string">2</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">true</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">false</merge>
<merge key="input.x11_options.FastTaps" type="string">true</merge>
<merge key="input.x11_options.VertEdgeScroll" type="string">false</merge>
<merge key="input.x11_options.HorizEdgeScroll" type="string">false</merge>
<merge key="input.x11_options.SHMConfig" type="string">true</merge>
</match>
</match>
</device>
</deviceinfo>
che non è altro che la medesima configurazione tradotta nella giusta sintassi.
aggiornando da ubuntu 8.04 si nota infatti che le righe corrispondenti alla configurazione del touchpad synaptics in Xorg.conf sono state commentate automaticamente.
forse sarebbe il caso che il team di ubuntu prevedesse uno script per convertire automaticamente la configurazioni..
- la tastiera
ecco qua il file
.xmodmap
da tenere nella home per modificare leggermente la tastiera. in questo modo, si ottiene una tastiera quasi completamente funzionale, con il tasto CANC mappato sul tasto F12, ALTGR (ISO_Level3_Shift) mappato su mela-destro e il tasto meta mappato sul tasto enter (a fianco di mela-destro). la modifica ai tasti si ottiene invocando da shell, una volta posizionati nella home,
xmodmap .xmodmap
ecco il contenuto del file:
keycode 104 = Super_R
keycode 96 = Delete
keycode 134 = ISO_Level3_Shift
- il telecomando infrarossi.
a volte funziona da sé, altre volte no. senza bisogno di modificare il kernel default fornito con ubuntu, è necessario intervenire sulla configurazione per far si che il modulo appleir, che gestisce il dispositivo infrarossi, sia caricato prima dei moduli applesmc ed usbhid.
per fare questo, aggiungiamo in /etc/modules la riga
appleir
applesmc
ed in /etc/modprobe.d/ creiamo il file appleir, contenente la riga
install appleir /sbin/modprobe -r usbhid; /sbin/modprobe --ignore-install appleir; /sbin/modprobe usbhid
questo dice a modprobe che, al momento in cui viene dato il comando "modprobe appleir" (e viene dato quando in fase di boot viene processata la riga "appleir" aggiunta in /etc/modules), viene rimosso il modulo usbhid, caricato appleir e poi di nuovo caricato usbhid. questo perché appleir, per funzionare, deve essere caricato prima del modulo usbhid.
Poi disinstallo gnome-lirc-propterties, che tanto non serve per il mio macbook.
Per verificare che il driver appleir sia stato caricato correttamente, basta verificare che esista nell'output del comando "lshal" una riga contenente "appleir" in corrispondenza del dispositivo ad infrarossi. Nel mio caso ho questo output (0x8240 è il product id del mio dispositivo IR):
udi = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial_if0'
info.linux.driver = 'appleir' (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial' (string)
info.product = 'USB HID Interface' (string)
info.subsystem = 'usb' (string)
info.udi = '/org/freedesktop/Hal/devices/usb_device_5ac_8240_noserial_if0' (string)
Se il driver è stato caricato correttamente, tutto dovrebbe funzionare.
Nella mia installazione ovviamente non tutto funzionava. In particolare, funzionava solo l'aumento del volume (non la diminuzione).
Questo vale anche per la tastiera: il tasto F4 non abbassava il volume, mentre F3 ed F5 facevano correttamente il muto e l'aumento del volume.
Il problema risiede nella configurazione.
Aprire gconf-editor e posizionarsi in /apps/gnome_settings_daemon/keybindings.
Per far funzionare tutto, è necessario assicurarsi che le seguenti chiavi abbiano il valore riportato qui sotto:
volume_down: XF86AudioLowerVolume
volume_up: XF86AudioRaiseVolume
posizioniamoci ora in /apps/metacity/global_keybindings per definire cosa fare alla pressione del tasto menu, avanti ed indietro. per fare l'associazione, scegliamo 3 chiavi run_command_* (io ho scelto run_command_12, run_command_11, run_command_10) ed assegnamogli rispettivamente XF86MenuKB, XF86Forward, XF86Back, quindi:
run_command_12: XF86MenuKB
run_command_11: XF86Forward
run_command_10: XF86Back
posizionarsi poi in /apps/metacity/keybindings_command
e in corrispondenza delle 3 chiavi scelte prima (quindi io ho preso command_12, command_11, command_10) assegnargli i comandi da eseguire in risposta rispettivamente alla pressione del tasto menu, del tasto avanti, del tasto indietro sul telecomando. Io uso rhythmbox, quindi ho impostato:
command_12: rhythmbox-client
command_11: rhythmbox-client --next
command_10: rhythmbox-client --previous
a questo punto se tutto funziona, alla pressione del tasto menu si dovrebbe aprire rhythmbox, ed i tasti avanti, indietro, play, vol+, vol- dovrebbero funzionare tutti.
- stato della batteria: dopo qualche tempo di funzionamento, aveva smesso di funzionarmi correttamente l'icona dell'indicazione della carica della batteria: non mi diceva + se la batteria era carica e quanto mancava alla carica completa. ho trovato questa utile guida della apple per sistemare le cose http://support.apple.com/kb/HT1411
in pratica, c'era da resettare l'SMC (system management controller) che ogni tanto ci sta che si inchioppi. per farlo, basta spengere il macbook, staccare l'alimentatore, togliere la batteria, tenere premuto il tasto di accensione del macbook per almeno 5 secondi, poi rimettere la matteria, riattaccare l'alimentatore e riaccendere... et voilà, funziona!
- il microfono
- tutto il resto

