News:

è stata rilasciata Zorin OS 17 basata su ubuntu 22.04

Menu principale

[Risolto] Fancontrol Acer 5750G

Aperto da diak, Venerdì 10 Novembre 2017, 17:01:38

Discussione precedente - Discussione successiva

diak

salve,
ho un acer aspire 5750g...
(su win 7 c'era un "fancontrol" che funzionava... che su win10 non funzionava più)
ora con mint mate 18.2... ho seguito tutte le istruzioni...

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +53.0°C  (high = +86.0°C, crit = +100.0°C)
Core 0:         +53.0°C  (high = +86.0°C, crit = +100.0°C)
Core 1:         +53.0°C  (high = +86.0°C, crit = +100.0°C)

tutto chiaro e funzionante...
fino al comando:
sudo pwmconfig

che mi da come risposta:
/usr/sbin/pwmconfig: There are no pwm-capable sensor modules installed
ed è qui che inizio a piangere come un vitello... che fare?

raggiungo temperature di cottura alimenti...

Tony


Linux non è solo un sistema operativo ma...
"È uno stato mentale, dove prima ti perdi e poi ti ritrovi"
(cit. Point Break).
Il mio pc.

diak

purtroppo niente da fare... pwmconfig mi da lo stesso errore...  :o
ho provato anche a rifare tutto dall'inizio...
grub, riavvio ecc... nulla  :boh:
se non avessi già modificato la velocità della ventola sotto windows.... mi rassegnerei a questo problema... (dietro vostro consiglio di non accanirmi oltre)  :bonk:
ma l'ipervelocità della ventola mi servirebbe proprio!



Pope

Linus Benedict Torvalds, 25 agosto 1991: "Hello everybody out there [...] i'm doing a (free) operating system, just a hobby, won't be big and professional [...]".

diak

#4
ops...
chiedo scusa, ho dato per felice punto di partenza questo forum, non pensando ne esistessero altri!! hehe
spero di trovar la soluzione... e tornare qui da vincitore per scriverla!
grazie!

edit: risolto!!!! o meglio aggirato in altro modo... (anche se mi piacerebbe capire il perché l'altra strada non mi porta da nessuna parte)
la ricerca più semplice: acer 5750G fan maximiser
mi porta a qui:
https://github.com/neduard/acer_5750G_fan_maximiser

uno script che...
It writes one of two magic values (0x77 and 0x76) to port 0x68.
The first value value (0x77) makes the fan spin at maximum speed,
the other value makes it return to normal





Superciuk

Immagino che avrai letto, nella pagina che hai linkato, che c'è una qualche possibilità di brikkare il dispositivo. Facci attenzione.

CitazioneWARNING: this is software that writes (magic) values to unknown ports on your laptop. This can easily cause BRICKING of your device.

Use at your own risk and be sure to check the laptop model! You may want to inspect the source code also.

Probabilmente quel messaggio è li solo per parare il sederino del suo autore, ma WARNING l'ha scritto bello grosso.  :)

diak

si si letto... più volte ... non sono stato così sconsiderato da ritenere solamente un parafondoschiena quel WARNING, ma mi ha tranquillizzato il fatto che il codice è stato estrapolato dal fancontroller.exe di acer che usavo su win7.
nel dubbio certo, ho rischiato...
però tutto funziona...

ora devo imparare a non farmi chiedere la password ogni avvio del comando e creare una piccola applicazione con i due pulsanti MAX e NORMAL... partendo da zero conoscenze... sarà interessante!

per ora grazie di tutta l'assistenza...
ma tornerò piangendo chiedendo altro aiuto. di sicuro
:)

Pope

#7
Citazione di: diak il Lunedì 13 Novembre 2017, 08:52:01
ora devo imparare a non farmi chiedere la password ogni avvio del comando e creare una piccola applicazione con i due pulsanti MAX e NORMAL... partendo da zero conoscenze... sarà interessante!

per ora grazie di tutta l'assistenza...
ma tornerò piangendo chiedendo altro aiuto. di sicuro
:)
:ok:
Soffrire è produrre conoscenza
;)
Linus Benedict Torvalds, 25 agosto 1991: "Hello everybody out there [...] i'm doing a (free) operating system, just a hobby, won't be big and professional [...]".

Vespa

Citazione di: diak il Lunedì 13 Novembre 2017, 07:28:36
ops...
chiedo scusa, ho dato per felice punto di partenza questo forum, non pensando ne esistessero altri!! hehe
spero di trovar la soluzione... e tornare qui da vincitore per scriverla!
grazie!

edit: risolto!!!! o meglio aggirato in altro modo... (anche se mi piacerebbe capire il perché l'altra strada non mi porta da nessuna parte)
la ricerca più semplice: acer 5750G fan maximiser
mi porta a qui:
https://github.com/neduard/acer_5750G_fan_maximiser

uno script che...
It writes one of two magic values (0x77 and 0x76) to port 0x68.
The first value value (0x77) makes the fan spin at maximum speed,
the other value makes it return to normal


Riprendo questa discussione. Ho lo stesso identico problema con lo stesso pc ma purtoppo non ho capito come risolverlo, dato che mi mancano le nozioni di base, anche se uso Ubuntu da dieci anni. Se fosse possibile spiegarmi per filo e per segno come procedere... :-) Grazie

Vespa

Aggiungo il saluto iniziale: buon Primo maggio a tutti :-)

Tony

#10
Se da quel link vai in jump to file trovi un file scritto in Perl.
Cioè questo qui.

Ovviamente lo salvi da qualche parte, gli dai i permessi di esecuzione.
E lo avvii come spiegato qui.

Ovverosia con
perl acer_5750G_fan_controller.pl MAX
oppure
perl acer_5750G_fan_controller.pl NORMAL

A seconda della velocità che vuoi.

Linux non è solo un sistema operativo ma...
"È uno stato mentale, dove prima ti perdi e poi ti ritrovi"
(cit. Point Break).
Il mio pc.

Tony

#11
Spiegazione passo passo.

Apri un terminale e avvia l'editor di testo con
sudo gedit /usr/local/bin/acer_fan.pl

Se non hai gedit ma un altro editor di testo (pluma, mousepad...) ovviamente adegua il comando.
Ti chiederà la password di amministratore.

Una volta aperto l'editor di testo, copiaci dentro questo che segue

#!/usr/bin/perl -w

# acer_5750G_fan_controller.pl
# Copyright (C) 2014  Eduard Nicodei   eddnicodei (at) gmail.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#
# This software is based on acer_ec.pl version 0.6.1 (2007-11-08):
# Copyright (C) 2007  Michael Kurz     michi.kurz (at) googlemail.com
# Copyright (C) 2007  Petr Tomasek     tomasek (#) etf,cuni,cz
# Copyright (C) 2007  Carlos Corbacho  cathectic (at) gmail.com


require 5.004;

use strict;
use Fcntl;
use POSIX;
use File::Basename;

sub initialize_ioports
{
  sysopen (IOPORTS, "/dev/port", O_RDWR)
    or die "/dev/port: $!\n";
  binmode IOPORTS;
}

sub close_ioports
{
  close (IOPORTS)
    or print "Warning: $!\n";
}


# Read from a ioport.
# Takes one argument: the port number.
sub inb
{
  my ($res,$nrchars);
  sysseek IOPORTS, $_[0], 0 or return -1;
  $nrchars = sysread IOPORTS, $res, 1;
  return -1 if not defined $nrchars or $nrchars != 1;
  $res = unpack "C",$res ;
  return $res;
}

# Write to a ioport.
# $_[0]: value to write
# $_[1]: port number
# Returns: -1 on failure, 0 on success.
sub outb
{
  if ($_[0] > 0xff)
  {
    my ($package, $filename, $line, $sub) = caller(1);
    print "\n*** Called outb with value=$_[1] from line $line\n",
          "*** (in $sub). PLEASE REPORT!\n",
          "*** Terminating.\n";
    exit(-1);
  }
  my $towrite = pack "C", $_[0];
  sysseek IOPORTS, $_[1], 0 or return -1;
  my $nrchars = syswrite IOPORTS, $towrite, 1;
  return -1 if not defined $nrchars or $nrchars != 1;
  return 0;
}



# wait_until_mask_is_value(mask, expected_value) reads from port 0x6C a value,
# bitwise-ands it with the mask and compares the result
# with the expected value. This is a convoluted way of doing things.
# Originally, in acer_ec.pl, this was substituted by two functions:
# sub wait_write
# {
# my $i = 0;
# while ((inb($_[0]) & 0x02) && ($i < 10000)) {
# sleep(0.01);
# $i++;
# }
# return -($i == 10000);
# }
#
# sub wait_read
# {
# my $i = 0;
# while (!(inb($_[0]) & 0x01) && ($i < 10000)) {
# sleep(0.01);
# $i++;
# }
# return -($i == 10000);
# }
# wait_until_mask_is_value however corresponds do an equivalent function
# in eblib.dll library.

sub wait_until_mask_is_value
{
my $i = 0;
while ($i < 10000) {
if ((inb(0x6C) & $_[0]) == $_[1]) {
return 0;  # success
}
sleep(0.01);
$i++;
}
printf("Error: timeout when waiting for mask 0x%2X\n", $_[0]);
return -1;  # timeout
}

sub ec_intro_sequence
{
# if the outro sequence doesn't execute, the following wait will time out,
# (we will read back 0x80 each time)
if (wait_until_mask_is_value(0x80, 0x00)) {
return -1;
}
inb(0x68);
# write wait.
if (wait_until_mask_is_value(0x02, 0x00)) {
return -1;
}
# magic value.
outb(0x59, 0x6C);
}

# Probably close EC comms?
# note that this function MUST be called before exit.
# Otherwise, the first wait in ec_intro_sequence will fail.
sub ec_outro_sequence
{
inb(0x68);
if (wait_until_mask_is_value(0x02, 0x00)) {
return -1;
}
outb(0xFF, 0x6C);
}

sub print_usage
{
print "Usage: acer_fan.pl MAX|NORMAL\n";
exit -1;
}


if ($#ARGV != 0 || ($ARGV[0] ne "NORMAL" && $ARGV[0] ne "MAX")) {
print_usage
}

initialize_ioports();

if (ec_intro_sequence()) {
print "Unable to perform intro sequence\n";
goto "OUTRO";
} else {
print "ec_intro_secquence successful\n";
}

# write wait
if (wait_until_mask_is_value(0x02, 0x00)) {
print "Error waiting for writing magic value\n";
goto "OUTRO";
}

#default magic value is 0x77 == Turn fan to maximum speed.
my $CMD;
if ($ARGV[0] eq "MAX") {
$CMD = 0x77;
} elsif ($ARGV[0] eq "NORMAL") {
$CMD=0x76;
} else {
print "BUG: we should never reach this code.";
goto "OUTRO";
}

if (outb($CMD, 0x68)) {
printf "Unable to write magic 0x%02X command\n", $CMD;
} else {
printf "Successfully sent command 0x%02X\n", $CMD;
}

OUTRO:
if (ec_outro_sequence()) {
print "Unable to perform outro sequence\n";
} else {
print "ec_outro_sequence successful.\n";
}
close_ioports();


Salva e chiudi.

Con lo stesso terminale aperto digita
sudo chmod +x /usr/local/bin/acer_fan.pl

Se è tutto andato per il verso giusto puoi eseguire lo script aprendo un terminale e digitando
sudo acer_fan.pl MAX
e
sudo acer_fan.pl NORMAL
a seconda della velocità scelta.

Linux non è solo un sistema operativo ma...
"È uno stato mentale, dove prima ti perdi e poi ti ritrovi"
(cit. Point Break).
Il mio pc.

Vespa

Chiarissimo e procedura andata a buon fine, grazie!   :clap:

Però mi sa che c'è un problema di base, forse alla ventola. Mi spiego: tutto questo casino perché la ventola partiva rarissimamente nonostante il raggiungimento di temperature eccessive da far andare tutto in blocco. Stava proprio ferma (quando è ferma si vede nella grigliatura sotto); ogni tanto, e non per forza quando stava andando arrosto, si sentiva ma con fluttuazioni continue di velocità. Ora finalmente se imposto MAX si muove ma sempre con velocità molto irregolare e spesso comunque bassa e forse non raffredda comunque a sufficienza. Devo testare bene. Piuttosto, quando riavvio devo fare tutto da capo o basta il semplice singolo comando da terminale? Se Spengo il PC lasciandola su MAX la ritrovo su MAX anche al riavvio?

Grazie molte!


Tony

Basta dare il comando da terminale.
Se spegni credo che torni tutto come prima, ma non essendo mio il programma non ne ho l'assoluta certezza.

Per il problema alla ventola, potrebbe dipendere dall'accumulo di polvere.
Dovresti smontare il pc e pulire.
Con l'occasione cambierei, se possibile, anche la pasta termica.
Se non vuoi smontare, c'è chi consiglia dell'aria compressa nelle apposite fessure.
Non quella violenta del compressore (meglio non rischiare) ma si vendono delle bombolette apposite.

Linux non è solo un sistema operativo ma...
"È uno stato mentale, dove prima ti perdi e poi ti ritrovi"
(cit. Point Break).
Il mio pc.

Vespa

Non va più!  :bonk: :bonk:

Ho spento che funzionava, riavviato, dato comandi... nulla. Rifatto tutto da capo... nulla! Lo lancio dal balcone.
Polvere no: aspirato e soffiato anche da poco.

Eppure sembra che debba andare...

Citazione
mario@mario-Aspire-5750G:~$ sudo acer_fan.pl NORMAL
ec_intro_secquence successful
Successfully sent command 0x76
ec_outro_sequence successful.
mario@mario-Aspire-5750G:~$ sudo acer_fan.pl MAX
ec_intro_secquence successful
Successfully sent command 0x77
ec_outro_sequence successful.
mario@mario-Aspire-5750G:~$

Tony

Non so che dirti.
Il programma non dà errori, anzi.
Forse puoi contattare lo sviluppatore.

Linux non è solo un sistema operativo ma...
"È uno stato mentale, dove prima ti perdi e poi ti ritrovi"
(cit. Point Break).
Il mio pc.

Vespa

Dai, grazie, penso che alla fine sistemerò una ventola esterna che faccia il lavoro di quella interna, non ho voglia né di perderci tempo né di innervosirmi, non sapendo neanche dove e come metterci le mani.  Grazie di nuovo  :'(