January 24, 2009
Visto il successo del post precedente sull’argomento ho pensato bene di integrarlo un po’ con altre informazioni utili, e di aggiornare lo stato corrente della cosa.
Prima di tutto l’audio. Al momento il chipset non è perfettamente supportato, ma funziona, con qualche scomodità, passando l’opzione model=mpb3 al modulo snd-hda-intel. Perché sia fatto automagicamente all’avvio è sufficiente aggiungere, in /etc/modprobe.conf, la riga:
options snd_hda_intel model=mbp3
Il mixer ci presenta diversi canali e switch. Uno con cui dobbiamo fare conoscenza subito è Channel, che può passare da due a sei canali: 2ch indica le cuffie, 6ch le casse integrate. Purtroppo ancora non viene rilevato automaticamente se abbiamo collegato delle cuffie, quindi per il momento va impostato a mano. I due slider associati al volume delle casse sono Master (ma dai?) e Line-out, mentre se siamo in modalità cuffia oltre a Master dobbiamo regolare Front, e lo switch Speaker ci dà la possibilità di mettere in muto completamente il suono. Inoltre lo switch IEC958 attiva l’uscita ottica (potrete notare che, togliendo il muto, si accende una luce rossa nell’uscita cuffie).
Purtroppo l’audio non è così semplice da far funzionare. Il kernel 2.6.28 è passato in [core] nel giro di pochi giorni, seguito a ruota dal 2.6.28.1. Mentre la 2.6.28 andava bene, quest’ultima dà qualche grattacapo. Evidentemente uno dei tre commit sul driver snd-hda-intel ha portato ad una regressione, segnalata anche da qualche altro utente su portatili diversi. La soluzione è stata scaricare la nuova versione di alsa-lib, la 1.0.19 e ricompilarla per il nuovo kernel. Le possibilità sono due: sovrascrivere ALSA direttamente nel kernel e ricreare il pacchetto oppure compilare ALSA a parte e mettere i moduli nella cartella /lib/modules/kernel-2.6.28-ARCH/updates, dove saranno letti prima di quelli originali. Una volta fatto questo l’audio dovrebbe ritornare come prima (caveat emptor: reboot necessario).
Ho lavorato un po’ anche sul fronte power saving, prima di tutto installando cpufrequtils, laptop-mode-tools, pm-utils, bc, nvclock e xscreensaver. A livello di risparmio energetico il governor migliore per il processore è ondemand (sì, è meglio anche di conservative), quindi l’ho impostato in /etc/conf.d/cpufreq e ho inserito il demone cpufreq in /etc/rc.conf. Ho poi modificato /etc/acpi/handler.sh in diversi punti; ne riporto le parti interessate.
Premere il pulsante di accensione fa fare al sistema uno shutdown ACPI:
button/power)
#echo "PowerButton pressed!">/dev/tty5
case "$2" in
PWRF)
logger "PowerButton pressed: $2"
halt
;;
Collegare e scollegare il portatile dalla rete elettrica modifica la luminosità dello schermo e avvia o ferma il laptop-mode:
ac_adapter)
case "$2" in
AC)
case "$4" in
00000000)
#echo -n $minspeed >$setspeed
/usr/bin/nvclock -S -15 >/dev/null 2>&1
/etc/rc.d/laptop-mode start
;;
00000001)
#echo -n $maxspeed >$setspeed
/usr/bin/nvclock -S +15 >/dev/null 2>&1
/etc/rc.d/laptop-mode stop
;;
esac
;;
La chiusura del lid, come su OS X, mette il sistema in sospensione e, alla riapertura, chiede la password tramite xscreensaver (questo solo se il demone è attivo):
button/lid)
#echo "LID switched!">/dev/tty5
case "$2" in
LID0)
_res=$( bc <<< "ibase=16; $( tr [:lower:] [:upper:] <<< $4 )%2" )
case "$_res" in
0)
nvclock -S $( cat /tmp/.bllev )
rm -f /tmp/.bllev
;;
1)
echo $( nvclock -i | grep '^Backlight' | cut -d' ' -f3 ) > /tmp/.bllev
xset dpms force off
pidof xscreensaver >/dev/null 2>&1
if [ "$?" -eq 0 ] ; then
xscreensaver-command -lock >/dev/null 2>&1
fi
pm-suspend
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
Anche per questa volta è tutto, ma aspettatevi nuovi post quando avrò altre informazioni utili sottomano
Posted by bardo under arch, g33k1ng around | Comments (7)
January 16, 2009
Voglio condividere con voi qualcosa che mi è capitato sottomano di recente.
Era il 1977, e Neil Young stava lavorando al suo nuovo disco, Chrome Dreams. Non l’avrebbe mai pubblicato. Molti dei pezzi presenti in questo disco, però, si sono ripresentati negli album seguenti, anche a distanza di decenni. Uno in particolare, che mi è capitato di sentire qualche tempo fa grazie al sempre ottimo Sergio Mancinelli e alla sua Area Protetta, mi ha davvero colpito. Si intitola Ordinary People. Cliccate su Play, e mentre ascoltate continuate a leggere, il post prosegue sotto il video
Quello che state vedendo è uno dei tanti bootleg di questo pezzo, che gli spettatori da parecchi anni registrano ai concerti di Young ed è piuttosto conosciuto tra i suoi fan. Una registrazione ufficiale, tuttavia, non si è vista per trent’anni, fino all’uscita di Chrome Dreams II nel 2007, ed è possibile ascoltarla dal sito di Rolling Stone. La registrazione risale al 1988. Le differenze tra le due versioni non sono poche, a cominciare dalla durata: i dodici minuti abbondanti del bootleg che vi ho proposto vengono ampiamente superati dai diciotto della registrazione in studio.
Personalmente preferisco di gran lunga la versione live: la presenza del pubblico basta a dare quella marcia in più ai musicisti e le dinamiche sono molto più accentuate, grazie soprattutto alla sezione di fiati, vera sorpresa del pezzo. I suoni, poi, sono grezzi e sporchi a sufficienza, e l’alchimia nel gruppo (i Bluenotes) si sente eccome, l’assolo incrociato blueseggiante tra tenore e chitarra che parte verso i 6:50 dice tutto.
Insomma, un pezzo dalle sonorità particolari e poco esplorate dallo stesso Young, eppure coinvolgente ed emozionante. E pensare che non mi è mai piaciuto Neil Young. Mai avere preconcetti, soprattutto nella musica.
Posted by bardo under music | Comments (0)
January 11, 2009
Ora che il portatile nuovo è configurato a fondo mi sento pronto per condividere qualche consiglio con chi si è appena ritrovato in mano uno di questi gioiellini e sta cercando di capire se valga la pena di installarci linux e a che punto sia il supporto hardware. Più che un howto, questo post è una serie di consigli, con qualche configurazione sparsa qua e là. Personalmente ho optato per la versione a 64 bit (come ho già detto nel post precedente) perché ormai tutti i plugin principali sono disponibili, e a parte wine, di cui fortunatamente non ho bisogno, c’è tutto quello che può servire. Ma andiamo avanti.
Prima di tutto è pressoché fondamentale il kernel 2.6.28, che al momento si trova in [testing], perché è il primo ad introdurre il supporto alla maggior parte dell’hardware per questo portatile. In particolare i moduli hid-apple, bcm5974 e applesmc hanno ricevuto in questa release importanti aggiornamenti. Al kernel ho poi applicato alcune patch recuperate dalla LKML, quattro specifiche per il modulo bcm5974, quello che si occupa del trackpad, una per la ethernet e una per l’undervolting. Le patch sono allegate a questo post, per chi fosse interessato ad applicarle, insieme alla configurazione del kernel che ho utilizzato, e nel corso del post spiegherò cosa fanno esattamente. Ci tengo a precisare che non ricompilo un kernel da un annetto, quindi potrei aver infilato dentro tonnellate di opzioni inutili, ma funziona bene, è molto rapido (12 secondi da grub al login prompt della shell) e c’è più o meno tutto quel che serve.
Dopo pochi giorni di test della home condivisa mi sento di sconsigliarla: mi sono capitate diverse corruzioni del filesystem nel giro di pochi giorni che mi hanno costretto ad un intervento da Mac OS X, dato che gli hfsprogs segfaultano su linux a 64 bit. Ho quindi lasciato OS X su una sola partizione (che mi risparmia alcuni mali di testa anche da quel lato) e formattato la nuova home in ext4. La root è rimasta in ext3.
La scheda wireless funziona abbastanza bene con il driver broadcom-wl, che sta in AUR, anche se alcuni (me compreso) segnalano qualche problema con alcune reti WPA.
Le ultime versioni di pommed e gpomme danno supporto pressoché completo ai tasti funzione della tastiera Apple, retroilluminazione compresa. Entrambi i pacchetti sono disponibili, non aggiornati, in AUR, quindi è necessario modificare $pkgver in 1.25 e l’url di download (quanto odio le url non uniformi…) sostituendo il numero 2689 con 2707. Due i bug riscontrati: la retroilluminazione della tastiera, quando azzerata del tutto, torna da sola a circa un terzo e la retroilluminazione dello schermo non funziona in X. Per quest’ultimo problema il workaround, che permette di risparmiare anche 3W, è spostarsi in shell pura e cambiare da lì la retroilluminazione, per poi tornare nella sessione grafica.
A livello di durata della batteria OS X è piuttosto impressionante… supera tranquillamente le cinque ore in caso di utilizzo “leggero” (navigazione su Internet, posta elettronica, editing di documenti). Molti, su Internet, facevano notare la grande differenza sotto linux, che difficilmente superava le tre ore, io ho deciso di vedere fin dove si può arrivare. Un pacman -S powertop mi ha dato un’idea del consumo effettivo, almeno sotto linux. 15W circa. Molto meno del mio vecchio Compal CL56 classe 2004, ma non certo un gran risultato. Oltretutto, scaldava parecchio più che sotto OS X, dove era praticamente freddo. Ho provveduto all’installazione del pacchetto cpufrequtils, e ho impostato conservative come default governor in /etc/conf.d/cpufreq.
Sempre tramite powertop, oltre ad applicare i consigli di default proposti dal programma, mi sono accorto che circa metà degli interrupt dell’intero sistema, 100 al secondo, veniva dal driver della ethernet, forcedeth. Ho così scoperto che, per un bug presente in molti chipset nforce, gli interrupt sui TX devono essere forzati via software. La nostra scheda fa parte della stessa famiglia di chip, e anche se non presenta il bug il kernel la forza ai 100 int/s perché non fa parte della lista di esclusione presente nel sorgente del modulo, forcedeth.c. La patch aggiunge la periferica a questa lista, riducendo non di poco il consumo del laptop.
Dato che comunque tutto questo aiutava a diminuire il calore fino ad un certo punto (compresa la modalità powersave di cpufreq) mi sono detto che OS X doveva fare qualcos’altro al processore. Undervolting? Ho deciso di provarci, e ho aggiunto phc.patch, inserendo in /etc/rc.local un paio di righe per impostare le tensioni al minimo. Pare che non serva a molto, funzionare sembra funzionare, a leggere i valori in /proc, ma non ho notato una grossa differenza di riscaldamento o consumo. Comunque ho tenuto la patch just in case.
Che cosa fa quindi OS X? Magari clock dinamici sulla scheda nVidia. Ho impostato l’opzione CoolBits in xorg.conf e ho cercato di modificare il clock della scheda, prima tramite nvclock, poi con nvidia-settings. Nessuno dei due programmi ha funzionato, nemmeno con i driver nvidia-beta, disponibili in AUR. Probabilmente questo modello non è ancora supportato.
Dal punto di vista riscaldamento/consumi non sono riuscito ad arrivare oltre, ma comunque in idle sono tra i 9 e i 10 Watt, che dovrebbero garantirmi almeno 4 ore e potrebbero superare le 5 in alcuni casi. Non male direi
L’ultima patch che ho applicato (quattro in realtà, bcm5974-[1-4].patch) serve a fornire un buon supporto al trackpad. Con questa patch diventa possibile sfruttare il multitouch fino a quattro dita, esattamente come sotto OS X. Io, da fan del tapping, ho impostato il driver synaptics per fare clic destro su tapping a due dita e clic centrale su tapping a tre dita. La configurazione, in /etc/hal/fdi/policy/11-x11-synaptics.fdi ho inserito le seguenti opzioni, che rendono il trackpad funzionale, anche se un po’ troppo sensibile:
<merge key=”input.x11_options.EmulateMidButtonTime” type=”string”>75</merge>
<merge key=”input.x11_options.HorizTwoFingerScroll” type=”string”>1</merge>
<merge key=”input.x11_options.MaxTapTime” type=”string”>180</merge>
<merge key=”input.x11_options.PalmDetect” type=”string”>True</merge>
<merge key=”input.x11_options.SHMConfig” type=”string”>True</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”>1</merge>
Bene. Questo dovrebbe essere più o meno tutto. Ovviamente se qualcuno ha altre proposte o idee sarò felice di testarle e condividerle, ogni commento è bene accetto!
UPDATE: ho pubblicato la seconda parte del post, la trovate qui.
File allegato: moduli e configurazione per il kernel
Posted by bardo under arch, g33k1ng around | Comments (5)