lunedì 7 novembre 2011

ACPI Scripts per eeepc 1015PEM e non solo


È da un po' che ci penso e finalmente mi sono deciso a scrivere degli script acpi che più si adattano alle mie esigenze.
Si, lo so che ci sono già dei progetti simili, basta una ricerca su google per trovare quelli per debian o quelli per arch linux. Il problema è che i secondi sono abbastanza "antichi" e poco sviluppati, ed entrambi supportano i tutti i modelli di eeepc fino ai primi usciti.

Soprattutto quest'ultima caratteristica, che potrebbe essere in prima analisi positiva, la trovo negativa perché appesantisce gli script e rischia di creare incompatibilità, o in ogni caso workaround non da poco, con i nuovi modelli. Vi faccio notare che i primi modelli per esempio il 701 montavano un Celeron, con tutti i problemi che può portare un  implementazione di gestione CPU affiancata ai moderni Atom.


Quasi tutti gli eeepc seashell non supportano lo spegnimento del lettore sd e della webcam, a causa dei nuovi bios. Inoltre con i nuovi kernel è possibile gestire il wifi direttamente con i driver inclusi, senza dover ricorrere a rfkill. Questo semplifica di molto la gestione generale degli script.

Ho cercato di sviluppare il progetto in un ottica leggermente diversa da come si è fatto finora. Infatti oltre alla gestione dei tasti funzione, che è la caratteristica di questi script, ho voluto introdurre degli strumenti automatici basati sugli eventi per ridurre l'utilizzo di batteria in funzione dello stato di alimentazione. Chiaramente questo si ripercuote in prestazioni massime nell'utilizzo a corrente e powersave forzato nell'utilizzo a batteria, comunque con la possibilità di switchare manualmente tra un preset e l'altro.

La compatibilità attuale è solo per 1015PEM e simili, credo che tutti i 1015P* possano già essere supportati. L'importante è che gli eventi acpi siano gli stessi (li potete controllare nel file eeepc-1015pem-handler.sh). Non escludo la possibilità di estendere il progetto ad altri modelli simili, se siete interessati potete lasciare un commento :)

Ora arriva la parte interessante. Gli script sono validi per tutte le distribuzioni, infatti sono dotati di uno scriptino che si incarica di installare o rimuovere gli script dal vostro sistema senza lasciare traccia.
L'unica distribuzione che supporterò ufficialmente è arch linux, prossimamente creerò un pacchetto su AUR.

Per ora il progetto si trova su github dove potete controllare l'avanzamento dei lavori. Al momento della scrittura di questo articolo, sono già pienamente funzionanti e supportano:
  • Switch del Super Hybrid Engine in base all'alimentazione
  • Switch dei governor della cpu in base all'alimentazione
  • Spegnimento del touchpad
  • Assegnamento comandi a tutti i tastini Fn+FX
  • Esecuzione di uno script per vari tweak per il powersave in /sys e /proc
  • Supporto al log
  • Supporto alle notifiche via notify-send o kdialog
  • Supporto ai profili di prestazioni
  • Gestione prestazioni già dal boot
L'unica cosa richiesta è avere un kernel che supporti lo scaling dei governor (come il kernel-netbook), e il modulo eeepc-laptop caricato.

INSTALLAZIONE:

git clone git://github.com/dieghen89/eeepc-1015pem-acpi.git
cd eeepc-1015pem-acpi
sudo ./install.sh
per rimuoverli potete usare:
sudo ./install.sh --uninstall

Chiaramente vi serve avere installato git, ma questo passo lo lascio a voi.
 
Se siete interessati al progetto potete forkarlo, modificarlo e mandarmi delle pull request. Devo ancora imparare bene il funzionamento di git ma cercherò di non fare troppi casini ;)

Il progetto è partito a scopo didattico e lo sviluppo è altamente saltuario! Se volete aggiungere il supporto al vostro modello è consigliato l'utilizzo di un profilo in GitHub, sono più che aperto ad una vasta collaborazione :) Tempo ne ho piuttosto poco ma cercherò di vagliare ogni vostra proposta.

Vi consiglio di leggervi il README, dove troverete delle utili informazioni e link.
Un grazie va a melko per la sua introduzione alla scrittura degli script, e a tutto lo staff di L4N!

23 commenti:

  1. @Dieghen
    Ma cosa mi scrivi? Gli scripts per Debian
    1) non sono antichi
    2) se ne parla anche in questo blog! ;-)

    Se guardi bene, l'ultima versione è stata rilasciata ad ottobre di quest'anno!
    Il supporto è eccellente e riguarda ANCHE il tuo modello!

    RispondiElimina
  2. Dopo il kernel anche gli script!
    Bene bene... anche se devo dire che sul mio netbook sono riuscito ad ottenere la stessa durata batteria di Windows con gli script di Arch e l'uso di laptop-mode

    RispondiElimina
  3. Questo commento è stato eliminato dall'autore.

    RispondiElimina
  4. Ciao,
    non riesco a far funzionare gli script. Sono su una Debian Wheezy (testing) Kernel 3.1 eeepc_laptop (modulo) correttamente caricato :(

    Non so come mai, mi parte il pc in performance, se premo i tasti scala fino a powersave ma poi si blocca li e non sale più, non tornando quindi ad esempio a performance opure a ondemand.

    Sapete aiutarmi?

    RispondiElimina
  5. @agloco user
    Hai provato ad usare il comando:

    cpufreq-set -c 0 -g ondemand

    Se funziona così, dovrebbe anche con gli script che agiscono direttamente in /sys e /proc...Cmq, un debug utile è il file /var/log/eeepc-acpi.log che tiene traccia di tutti gli eventi.

    RispondiElimina
  6. Ciao, ho appena reinstallato sul mio 1025pem Arch + kernel-netbook + Gnome3, ma gli script non funzionano.

    Il problema è il modulo eeepc-laptop, se provo a caricarlo ottengo ERROR: could not insert 'eeepc_laptop': No such device.

    Qualche idea su come risolvere l'inconveniente?

    RispondiElimina
  7. Scusate, è un asus 1015PEM, non 1025! -_-'

    RispondiElimina
  8. Ciao! hai aggiunto il parametro acpi_osi=Linux a grub? senza quello si carica eeepc-wmi e non il -laptop...

    RispondiElimina
  9. Grazie, effettivamente era quello il problema. Ora il modulo lo carica ma gli scrip non vanno e non c'è nemmeno il log /var/log/eeepc-acpi.log

    RispondiElimina
  10. Domanda scema, hai il demone acpid in rc.conf?

    RispondiElimina
  11. Domanda + scema, hai il demone acpid installato?

    E la risposta imbarazzata sarebbe per entrambe NO!!!
    Sono un idiota, abbi pazienza. Ora funzionano ma non mi escono le notifiche: ho impostato sia il nome del mio utente che gtk come NOTIFY_DE. E' normale che con gnome-shell le notifiche non escano?!

    RispondiElimina
  12. nel mio pc attualmente ho sia gnome che kde proprio per provare le notifiche.. ho recentemente rivisto quella sezione e mi funzionano ovunque... il file di log dice niente?

    RispondiElimina
  13. [27-02-12 20:09] Profile button pressed
    [27-02-12 20:09] PRESET: --> Turbo
    [27-02-12 20:09] == SHE: --> performance
    [27-02-12 20:09] == CPU: --> performance
    [27-02-12 20:09] == SYS_PROC_TWEAK: --> no
    [27-02-12 20:09] PRESET: Performance --> Turbo
    [27-02-12 20:09] == SHE: performance --> performance
    [27-02-12 20:09] == CPU: ondemand --> performance
    [27-02-12 20:09] == SYS_PROC_TWEAK: no --> no


    ...e così via. Nessun messaggio relativo alle notifiche!

    RispondiElimina
    Risposte
    1. ora non mi riesce semplice incollarti tropical comandi visto che ho solo la connessione da telefono disponibile.. prova con:

      sudo sh /etc/acpi/eeepc-1015pem-acpi-handler.sh hotkey x 00000039

      dovrebbe cambiare preset e mandare la notifica... posta qua l'output...

      Elimina
    2. Tranquillo, non ho fretta!! :-)

      se lancio questo comando il send-notify funziona e la notifica toast appare in basso nello schermo; nella console scrive:

      Preset Normal loaded!
      notify-send 'PRESET:' 'Powersave --> Normal'

      Elimina
  14. Se con quel comando la notifica esce, dovrebbe funzionare anche tramite combinazioni di tasti visto che acpid parsa gli eventi e lancia esattamente il comando che ti ho scritto....

    Che notifiche intendi tu? Gli scripts supportano:

    -touchpad
    -preset
    -she

    per il volume/luminosita etc rimando tutto al DE.

    RispondiElimina
  15. Le notifiche che mi interessano sono preset e she, tanto per vedere in che configurazione mi trovo.

    Per quanto riguarda il touchpad succede una cosa strana: non si disabilita! Nel log trovo sempre le stesse righe relative all'abilitazione:
    [29-02-12 22:47] Touchpad button pressed
    [29-02-12 22:47] Touchpad enabled
    [29-02-12 22:47] Touchpad button pressed
    [29-02-12 22:47] Touchpad enabled

    (in realtà questa è una funzione di cui non mi importa nulla, te lo scrivo giusto per informazione)

    RispondiElimina
  16. Allora per il touchpad puoi lanciare:

    sudo sh /etc/acpi/eeepc-1015pem-acpi-handler.sh hotkey x 00000037

    e se è tutto funzionante il touchpad si spegne e arriva la notifica...

    RispondiElimina
    Risposte
    1. Se eseguo quella riga in una shell tutto funziona a dovere, con la combinazione di tasti no! Abilita e basta, come scrivevo nel commento precedente (e senza notifica).

      Non sarà un problema di permission dell'utente?
      I gruppi di appertenenza sono: users, audio, video, wheel, storage e optical.
      La relativa riga di configurazione su /etc/sudoers è:
      paolo ALL=(ALL) ALL

      Elimina
  17. È una cosa strana lo ammetto...come forse già scritto quei comandi vengono eseguiti da root, mandati dal demone acpid...Il tuo utente c'etra relativamente poco, o meglio, c'entra nelle notifiche e nell'uso della sessione X corrente, ma se da terminale funziona non vedo il motivo per cui via script non lo fa...

    Ora, anche se credo sia la stessa cosa, prova a loggarti proprio come root (su e basta) e da lì ridare il comando che ti avevo mandato...Se non funziona la notifica, c'è qualcosa che non va presumo nel demone...non è facile il debugging per il motivo che non ho tante idee a riguardo :P

    RispondiElimina
    Risposte
    1. RISOLTO!!!!

      Dovevo installare xorg-server-utils (l'idea mi è venuta guardando le dipendenze di eeepc-acpi-generic)!

      Grazie per l'aiuto e la pazienza!! :-)

      Elimina
    2. Oh bene, ti ringrazio! la aggiungerò nelle dipendenze del file README :)

      Elimina

Chiunque può commentare. Anzi, siete altamente incoraggiati a commentare

Se avete una miglioria o qualche consiglio che pensiate migliori la guida sarete i benvenuti. Vi sarà riconosciuto onore e verrete citati in modo doveroso. Non esitate a comunicarci dubbi e/o critiche. Le migliori guide sono quelle che si fanno insieme, ed è questo lo spirito che vogliamo mantenere.

NOTA BENE: Se avete critiche riguardo alla gestione di questo blog potete inviarle al nostro indirizzo: netbookteam [at] gmail [dot] com. Chiediamo quindi di farle in modo privato, per non generare confusione nelle discussioni tecniche che si trovano qui nei commenti. Grazie.