View Single Post
Old 23-12-2004, 13:26   #2
cerbert
Senior Member
 
L'Avatar di cerbert
 
Iscritto dal: Feb 2001
Città: Torino
Messaggi: 11737
LINK UTILI
mailing list Debian sui laptop

http://tuxmobil.org/debian_linux_mobile.html

http://www.tuxmobil.org/Mobile-Guide...ile-Guide.html

http://tldp.org/HOWTO/ACPI-HOWTO/index.html

Link molto utile per il SUSPEND (ibernazione) dei Laptop (grazie a Carcass )

FREQUENZA CPU
Generale
Dalla versione 2.6.8 del Kernel, viene compilato un modulo convenzionalmente chiamato cpufreq. Per Kernel anteriori, fino alla 2.4.5 se non erro, è disponibile una patch.
Il modulo permette lo scaling della frequenza cpu sui sistemi che la supportano e secondo le modalità previste dal sistema.
La documentazione, dopo aver scaricato e decompresso i sorgenti kernel della propria versione, si trova normalmente in /<sorgenti kernel>/Documentation/cpu-freq/ .
Una volta appurato quale sia il modulo da caricare, tramite modconf è possibile attivarlo (di default non ne viene attivato nessuno) sotto la sezione /kernel/arch/i386/kernel/cpu/cpufreq. Ci sono diversi moduli, i più utilizzati sono:
- powernow-k6-7-8 (per gli AMD)
- P4clockmod (P4Mobile)
- speedstep-centrino (facile da indovinare)

Centrino
Una volta attivato il modulo (può essere anche richiamato on-the-run con modprobe <modulo>) viene creata una directory /sys/devices/system/cpu/cpu<n>/cpufreq con dei files.
Il più interessante è certamente ./scaling_governor, che permette di impostare il tipo di gestione frequenza.
Le gestioni sono caricate come moduli all'avvio e sono, normalmente "cpufreq_userspace" e "cpufreq_performance". La prima consente di variare il range di scaling per tutti i valori consentiti (listati in "scaling_available_frequencies"), la seconda tiene tre valori tra le frequenze più alte. Questi moduli sono normalmente listati in /etc/modules, alternativamente può essere attivato il modulo "cpufreq_powersave" che è simile a "userspace" ma si presta a chiamate automatizzate (mi dicono...).

Comunque scaling_governor imposta il gestore di frequenza e NON può essere modificato direttamente. Per modificarlo ci sono due modi, se vogliamo impostare il gestore powersave, ad esempio, faremo:
# echo powersave > /sys/devices/system/cpu/cpu<n>/cpufreq/scaling_governor
oppure tramite il comando
cpufreq-selector -g powersave

Per cambiare la frequenza, invece si può usare:
cpufreq-selector -f <frequenza>

NOTA: per entrambe le cose occorrono i privilegi di root, conviene quindi sudoare il comando (cosa che devo imparare a fare )
NOTA 2: quasi tutti i client X mettono a disposizione un'applet per gestire via visuale cpu-freq. Sotto Gnome si chiama "Cpu freq scaling monitor". Purtroppo non funziona perfettamente se utilizzata sotto un utente comune. Forse sudo risolverà la cosa.
NOTA 3: esiste un bel demone chiamato "powernowd" rilasciato per praticamente tutte le distribuzioni che permette di regolare automaticamente la frequenza in base alle richieste del sistema. Praticamente a seconda della politica interna impostata, tramite campionamenti periodici verifica quanto la CPU e carica e la "aggiusta" di conseguenza.
Sotto debian basta un "apt-get install powernowd" per averlo installato. Dopo di che assicurarsi che in /etc/modules sia impostato "cpufreq_userspace" e lanciare con "powernowd" (o inserirlo negli script di avvio). finora l'ho trovato piuttosto soddisfacente.

SCHERMO 15.4" (MISURE NON STANDARD)
Attualmente XFree non comprende di standard il supporto alla modalità 1280x800 per ottenerla (chiaramente posto che lo schermo la supporti ) bisogna fornire a mano i parametri.
I parametri possono essere ottenuti, con una certa sicurezza utilizzando il comando:
# gtf <orizzontale> <verticale> <frequenza> -x

Questo è l'output del mio portatile ammesso che mi servano i parametri per 1280x800 a 60Mhz:
Quote:
# 1280x800 @ 60.00 Hz (GTF) hsync: 49.68 kHz; pclk: 83.46 MHz
Modeline "1280x800_60.00" 83.46 1280 1344 1480 1680 800 801 804 828 -HSync +Vsync
Dopo aver immesso i parametri desiderati (DEVONO essere corretti, non vi lamentate poi con me se volete 1280x900 a 80Mhz e non vi funziona) potete copiare la linea di output e copiarla in:
/etc/X11/XF86Config-4
nella sezione Monitor alla voce "Modeline". Infine, nelle sotto sezioni "Display" aggiungete "1280x800" alla voce "Modes".

NOTA: testato su Toshiba M30 con GeForceGo 5200 e DRIVER PROPRIETARIO NVIDIA. Sono benvenuti test su altri portatili SOPRATTUTTO con altre schede video.

MONITORAGGIO BATTERIA
Piuttosto facile, esistono ormai da parecchie release del kernel due moduli "AC" e "battery" su cui si appoggiano un sacco di applet e comandi.
Per verificare che siano attivi:
#lsmod | grep battery
#lsmod | grep ac
(tradotto per i niubboni come me: lsmod è il comando che ti lista tutti i moduli attivi, tramite il carattere "pipe", ovvero "|", passiamo il risultato a "grep", grep è il comando che cerca una serie di caratteri, ad esempio "battery" in una destinazione, in questo caso il risultato di lsmod)

Questo è il risultato sul mio portatile:
Quote:
Porter:~# lsmod | grep battery
battery 9388 0

Porter:~# lsmod | grep ac
af_packet 22600 2
snd_ac97_codec 70020 2 snd_intel8x0m,snd_intel8x0
snd 57156 8 snd_intel8x0m,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer,snd_mpu401_uart,snd_rawmidi,snd_seq_device
ac97_codec 18956 1 i810_audio
toshiba_acpi 6012 0
ac 4812 0
mbcache 9348 2 ext2,ext3
Se questi moduli non sono attivi, possono essere attivati inserendoli in
/etc/modules
(occorrono i privilegi di root)

GESTIONE ACPI
La gestione ACPI è piuttosto incasinata. Infatti molti portatili non hanno BIOS "standard" ma, in qualche modo, "custom" per la marca.
I Kernel più recenti, comunque, incorporano già sia dei moduli per la gestione ACPI standard che moduli per alcune marche (Toshiba e Acer), per sapere se sono attivi basta il solito lsmod:
Quote:
Porter:~# lsmod | grep acpi
toshiba_acpi 6012 0
Nel caso specifico del mio portatile, se toshiba_acpi è attivo, il modulo "acpi" semplice non si carica in quanto è incluso in quello custom per toshiba... d'altro canto la gestione custom non è molto trasparente nè molto documentata e ci sono ancora seri sospetti di "interferenza" tra le due gestioni (ad esempio le politiche di dissipazione termica acpi non sembrano funzionare automaticamente e devono essere attivate manualmente, ma ora vedremo cosa significa).

Comunque, con il modulo acpi attivo, viene creata una cartella:
/proc/acpi
con questo contenuto:
Quote:
Porter:~# ls -la /proc/acpi/
totale 0
dr-xr-xr-x 11 root root 0 2005-01-10 10:14 .
dr-xr-xr-x 100 root root 0 2005-01-10 11:13 ..
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 ac_adapter
-rw-r--r-- 1 root root 0 2005-01-10 11:04 alarm
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 battery
dr-xr-xr-x 4 root root 0 2005-01-10 11:04 button
-r-------- 1 root root 0 2005-01-10 11:04 dsdt
dr-xr-xr-x 2 root root 0 2005-01-10 11:04 embedded_controller
-r-------- 1 root root 0 2005-01-10 10:14 event
-r-------- 1 root root 0 2005-01-10 11:04 fadt
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 fan
-r--r--r-- 1 root root 0 2005-01-10 11:04 info
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 power_resource
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 processor
-rw-r--r-- 1 root root 0 2005-01-10 11:04 sleep
dr-xr-xr-x 3 root root 0 2005-01-10 11:04 thermal_zone
dr-xr-xr-x 2 root root 0 2005-01-10 11:04 toshiba
Vediamo brevemente di cosa si tratta:
- ac_adapter: cartella di informazioni sugli adattatori di alimentazione, contiene una sottocartella per ogni alimentatore (tipicamente 1) con files di informazione sulla presenza e lo stato dell'adattatore. Viene presumibilmente interrogato dal demone "ac" di cui abbiamo già parlato
- alarm: non documentato
- battery: stesso che per ac_adapter, viene interrogato dal modulo battery di cui abbiamo già detto
- button: cartella di informazioni sui pulsanti hardware legati all'ACPI quindi, nel caso di un portatile, il pulsante ON/OFF e il pulsante di apertura coperchio. Utile per gestire funzioni come "spegni se chiuso"... esistono comunque dei demoni che si occupano della loro gestione.
- dsdt: file binario MOLTO importante, prima di metterci le mani, leggere la documentazione sul link che darò fra poco
- embedded_controller: boh... non supportato sul mio portatile.
- event: file di gestione eventi, perennemente in uso dal demone acpid
- fadt: altro file da non toccare a meno di non essere sicuri di cosa si sta facendo
- fan: cartella di informazioni sui ventilatori di sistema. Contiene una sottocartella per ogni ventilatore gestito dal bios. Nel caso del mio portatile, però, il ventilatore è gestito dal toshiba-acpi, per cui le informazioni qui contenute non sono reali.
- info: file di versione
- power_resource: cartella di informazioni sull'alimentatore interno. Molte cose sono gestite da vari demoni.
- processor: cartella di informazioni sul/sui processori con una sottocartella per processore. Se il processore può essere gestito da cpufreq molti files riporteranno la scritta <not supported>.
- sleep: livelli definiti di suspend... anche qui occorre far riferimento al sito di acpi

Le ultime due cartelle sono MOLTO importanti e quindi le tratto più approfonditamente:
THERMAL_ZONE:
Il contenuto:
Quote:
Porter:/proc/acpi# ls -la thermal_zone/THRM/
totale 0
dr-xr-xr-x 2 root root 0 2005-01-10 11:29 .
dr-xr-xr-x 3 root root 0 2005-01-10 11:29 ..
-rw-r--r-- 1 root root 0 2005-01-10 11:29 cooling_mode
-rw-r--r-- 1 root root 0 2005-01-10 11:29 polling_frequency
-r--r--r-- 1 root root 0 2005-01-10 11:29 state
-r--r--r-- 1 root root 0 2005-01-10 11:29 temperature
-rw-r--r-- 1 root root 0 2005-01-10 11:29 trip_points
Si noti che facciamo riferimento ad una sottocartella THRM, non so se si prevede che esistano più gestori della temperatura .
I files che troviamo sono MOOOOLTO utili:
- cooling_mode: descrive il sistema di raffreddamento in uso. "active" è il sistema di raffreddamento ad alto consumo (ventola in funzione), "passive" è il sistema di raffreddamento "power saving" che agisce sulla frequenza ed uso processore. Sul mio sistema è inibito dal toshiba_acpi
- polling_frequency: frequenza di campionamento della temperatura per attivare le politiche di raffreddamento.
- state: stato di funzionamento
- temperature: file in cui viene scritta la temperatura campionata. Viene aggiornato ad ogni interrogazione come da esempio:
Quote:
Porter:/proc/acpi/thermal_zone/THRM# cat temperature
temperature: 38 C
- trip_points: questo è probabilmente il file PIU' IMPORTANTE del sistema di gestione temperature. Vediamolo:
Quote:
Porter:/proc/acpi/thermal_zone/THRM# cat trip_points
critical (S5): 119 C
passive: 118 C: tc1=9 tc2=2 tsp=1800 devices=0xdfee6220
active[0]: 118 C: devices=0xdfee5960
active[1]: 118 C: devices=0xdfee5960
Cosa significano? "critical" è il valore di stop critico, raggiunta la temperatura di 119C al processore, il sistema invoca uno "sleep state" 5 che corrisponde a "spegni tutto". "passive" indica la temperatura a cui si vuole che il sistema entri in raffreddamento "passivo" diminuendo le attività. "active[0]" è la temperatura a cui si vuole che il raffreddamento attivo funzioni a tutta potenza, si noti che, a seconda del sistema sono possibili fino a 5 livelli "active" di potenza via via decrescente. Si noti che si agisce in maniera "cumulativa" partendo dall'ultima riga quindi in prima entra in funzione il ventilatore a bassa potenza, poi a massima potenza, poi tenta di depotenziare la cpu e, infine, spegne per evitare danni. Come detto sul mio sistema è possibile che "toshiba_acpi" interferisca, per cui avrete notato dei valori sballati. Per impostare i valori corretti non è possibile agire direttamente sul file, ma occorre "echeggiare" dei valori al suo interno secondo una sintassi ben definita:
Quote:
echo -n "critica:hotassive:active0:...:activeX" > trip_points
ovvero, fornendo questo al mio sistema:
Quote:
Porter:/proc/acpi/thermal_zone/THRM# echo -n "110:0:90:60:0" > trip_points
ottengo:
Quote:
Porter:/proc/acpi/thermal_zone/THRM# cat trip_points
critical (S5): 110 C
passive: 90 C: tc1=9 tc2=2 tsp=1800 devices=0xdfee6220
active[0]: 60 C: devices=0xdfee5960
active[1]: 0 C: devices=0xdfee5960
Che sarebbe già più sensato se il ventilatore non fosse sotto il controllo del modulo toshiba... Si noti, tra l'altro, che vanno SEMPRE forniti almeno 5 valori anche se se ne leggono solo 4.
Per informazioni approfondite fate riferimento al sito degli sviluppatori SOPRATTUTTO se avete la fortuna di avere un bios standard:
http://acpi.sourceforge.net/

TOSHIBA:
Questo il contenuto, ovviamente è d'interesse SOLO per utenti toshiba:
Quote:
Porter:/proc/acpi/toshiba# ls -la
totale 0
dr-xr-xr-x 2 root root 0 2005-01-10 12:10 .
dr-xr-xr-x 11 root root 0 2005-01-10 10:14 ..
-rw-r--r-- 1 root root 0 2005-01-10 12:12 fan
-rw-r--r-- 1 root root 0 2005-01-10 12:12 keys
-rw-r--r-- 1 root root 0 2005-01-10 12:12 lcd
-rw-r--r-- 1 root root 0 2005-01-10 12:12 version
-rw-r--r-- 1 root root 0 2005-01-10 12:12 video
- fan: descrive lo stato della ventola. Non può essere modificato direttamente ma solo "echeggiando" un'istruzione:
Quote:
echo "force_on:1" > fan
(attiva la ventola)
echo "force_on:0" > fan
(disattiva la ventola)
- keys: gestore delle hotkey, verifica se è attivo... non è consigliabile toccarlo ma può essere utile per avere il codice dell'ultima hotkey premuta.
- lcd: gestore della luminosità lcd. Non può essere modificato direttamente ma solo "echeggiando" un'istruzione.
Quote:
echo "brightness:n" > lcd
(dove "n" va da 0 a brightness_levels-1)
- version: ... va da sè
- video: permette di attivare i diversi schermi collegati, lcd, crt e tv.

NOTA: per toshiba esiste un simpatico demone che permette di legare molte delle funzioni "toshiba_acpi" alle hotkey (attivate con il tasto "Fn") in modo da risparmiare tutti i vari echo.
http://fnfx.sourceforge.net/

Script di monitoraggio temperatura ed accensione ventola
Questo è un piccolo script che ho creato, con l'aiuto di uno che ne sa più di me e che ringrazio:
Codice:
#!/bin/bash

#riceve la temperatura interrogando il file apposito, poi estraendo tramite awk il secondo valore

start_at="50"
stop_at="45"
temp=`cat /proc/acpi/thermal_zone/THRM/temperature | awk '{print$2}'`
fan_status=`cat /proc/acpi/toshiba/fan | awk '{getline; print$2}'`
value="force_on:"
report_inizio=":: La temperatura corrente è di: "
report_fine=" gradi. Ventola "

if [ $temp -ge $start_at ]
then
	if [ $fan_status -eq 0 ]
	then
		value=$value"1"
		report_stato="accesa"
		echo $value > /proc/acpi/toshiba/fan
		report=`date`$report_inizio$temp$report_fine$report_stato
		echo $report >> /var/log/temperature.log
	fi
fi

if [ $temp -lt $stop_at ]
then
	if [ $fan_status -eq 1 ]
	then
		value=$value"0"
		report_stato="spenta"
		echo $value > /proc/acpi/toshiba/fan
		report=`date`$report_inizio$temp$report_fine$report_stato
		echo $report >> /var/log/temperature.log
	fi
fi

#export value temp
Funziona ovviamente soltanto con il modulo toshiba_acpi installato ed attivo. Non fa nient'altro che leggere la temperatura dal file apposito, verificare se è maggiore della temperatura massima ammessa (start_at) o minore di quella "regolare" (stop_at) e accendere il ventilatore se non acceso o spegnerlo se acceso. Dopo di che, se ha compiuto un'azione (accendi o spegni) la scrive in un log.
Dopo di che basta scrivere nel crontab di root
Codice:
su root
[password]
crontab -e
Le seguenti due righe:
Codice:
* * * * * /usr/bin/controltemp > /dev/null 2>&1
1 12 * * 1 /bin/rm /var/log/temperature.log > /dev/null 2>&1
In questo modo lo script viene eseguito ogni minuto e il log viene cancellato ogni lunedì alle 12.01.

TOUCHPAD
Alcune distribuzioni configurano automaticamente il Touchpad Synaptic per tutto il resto c'è Vis... (scusate... maledetta pubblicità).
Per il resto si può fare riferimento a questo HOWTO
http://www.hwudebianclan.org/how-to.php#19
Con sentiti ringraziamenti al Clan Debian di HWU


DISCHI
Per i dischi esiste un'utility veramente figa che si chiama hdparm. Penso esista in qualsiasi distribuzione, sotto debian/ubuntu è un attimo scaricarla:
Codice:
apt-get install hdparm
Per il suo uso estensivo rimando a questo tutorial che è davvero ben fatto.
Dopo di che rintracciate il file hdparm.conf nel vostro sistema (a seconda della distribuzione cambia di locazione) e impostate i valori che i benchmark vi hanno dato come sicuri.
A titolo di esempio posto la mia configurazione:
Codice:
/dev/hda {
	mult_sect_io = 16
#	write_cache = off
	dma = on
	io32_support = 1 
	interrupt_unmask = on
	spindown_time = 120
}
WIRELESS
Wireless con NDISWrapper
Grazie a RaouL_BennetH.

Queste le operazioni:
Codice:
apt-get install ndiswrapper-source ndiswrapper-utils wireless-tools
fatto questo c'è bisogno del pacchetto "module-assistant" per creare un modulo ndiswrapper nel nostro kernel :
Codice:
apt-get install module-assistant
tutto ciò scaricherà un file in /usr/src:
Codice:
ndiswrapper-source.tar.bz2
IMPORTANTE: prelevate il driver della vostra scheda per windows dal cd o dal sito del produttore e copiate in una directory su linux il file .inf (nel mio caso era neti2220.inf)

Ora,non resta che eseguire il comando: module-assistant
Avrete una lista di opzioni,limitatevi ad eseguire:
Codice:
SELECT <- e qui andrete a scegliere appunto ndiswrapper
finito questo,nella dir /usr/src vi troverete un .deb dal nome:
Codice:
ndiswrapper-modules-`vostra_versione_del_kernel`+1.3rc1-1+10.00.Custom_i386.deb
da installare con il comando:
Codice:
dpkg -i ndiswrapper(etcetera....)
Bene,adesso:
IMPORTANTE:
Prima di installare il modulo ndiswrapper,dobbiamo installare il driver di windows precedentemente copiato su linux (il .inf).

Quest'operazione si esegue con:
Codice:
ndiswrapper -i nome_driver.inf
Fatto questo,non ci resta che dare:
Codice:
modprobe ndiswrapper
A verifica che la scheda viene riconosciuta,basta lanciare:
Codice:
ifconfig wlan0
__________________
Eroi da non dimenticare: Nicola Calipari (04/03/2005) e Vittorio Arrigoni (14/04/2011) e Bradley Manning.
Sono certo che anche i francesi si indignarono per il fatto che i tedeschi, piuttosto che veder dissolvere la loro nazione, preferirono il nazismo. Chi non impara la storia...

Ultima modifica di cerbert : 09-06-2006 alle 10:36.
cerbert è offline   Rispondi citando il messaggio o parte di esso