New approach to the embedded controller (temp, fan, etc.)

Discussion in 'Windows' started by SH0DAN, Feb 14, 2009.

  1. SH0DAN

    SH0DAN

    Joined:
    Aug 28, 2008
    Messages:
    8
    Likes Received:
    0
    Hello all,

    I'm using a1ctl since a while. I'm very sattisfied with it but one problem persistet in the back of my mind. You have to patch acpiec.sys in order to get rid of the error message in the system log. The root cause of the problem is that the used driver talkes to the embedded controler without the permission of the operating system driver acpiec.sys. This causes an event log entry and can cause other problems because the os doen't know there is another party running elsewhere.

    I had a little time the last few days and began poking around within the driver acpiec.sys. It communicates with the embedded controller to get the battery state. I thought there should be more possible using this driver. After a day of reverse engineering I came up with the attached dll and tool. You can modify all 256 registers of the embeded controller on all systems that support acpiec.sys (tested on aspire one and my ibm thinkpad). No error messages and no problems.

    If someone wants to try it, please feel free to download the tool and watch/modify the values within the registers of the embedded controller. But please be carefull you can damage your hardware by setting the wrong values!

    Please note: This is a first beta version. I've tested it well, but I won't take any liability for damage you do to your hardware with it. As long as you don't use the "w"-Option there is no write access to the embedded controller. You have the permission to use the dll and tools free of charge for non commercial purpose.

    I'll release a fully documented version of the dll and tool as soon as I get some positive feedback. Because I've no windows vista on my notebooks I'd be interested if the tools works with vista as well (Run as an administrator!). If you tried it successfully on an other device, post a message as well.
     
    SH0DAN, Feb 14, 2009
    #1
  2. SH0DAN

    GvidoR

    Joined:
    Sep 11, 2008
    Messages:
    556
    Likes Received:
    0
    Location:
    Japan.
    What exactly can it do? :?
     
    GvidoR, Feb 15, 2009
    #2
  3. SH0DAN

    SH0DAN

    Joined:
    Aug 28, 2008
    Messages:
    8
    Likes Received:
    0
    Hello GvidoR,

    maybe I was a little unspecific. So let me try to clearify this:

    The embedded controller (EC) is a hardware device that controlls some of the special features that distinguish a notebook from a desktop pc. The EC controlls things like the temperature sensors, the fan speed, the charge state of the battery, the blinking lights on your laptop and many other things. It is connected to the cpu over the lpc (low pin count) bus interface. Tools like a1ctl access this interface directly to communicate with the EC to get the temperature readings and control the fan speed. But windows uses a driver to access the EC as well. It is used to monitor the battery charge.

    The utitlity I attached can be used to communicate with the EC and access it's registers. These registers control the funcitonality of the EC. Easily put: You can read the CPU temperature, control the fan and the blinking lights on your notebook. Sadly there is no standard how the registers within the EC are organised. So mostly it depends on brave people to figure out which register you have to write or read to get the desired information or action. This utitity helps those people to figure out no neccessary information and/or develop tools that use the EC (like a fan control application).

    :!: Don't take me wrong, but if you have to ask what this tool does it's not intended for you. You can for example shut down the fan and overheat your notbook. It can do serous damage to your hardware if used wrong. So please don' t download this, if you don't know what an embedded controller is or does.
     
    SH0DAN, Feb 15, 2009
    #3
  4. SH0DAN

    noda

    Joined:
    Aug 1, 2008
    Messages:
    35
    Likes Received:
    0
    Sounds really interesting!

    I love the idea of getting rid of direct I/O access within a1ctl, by using the acpiec.sys driver the right way. But before using it in a1ctl, I would be interested too on the behavior of this dll on windows vista and seven.

    Thanks for you time making this tool, I'll take a look at it when I found some time. I am currently preparing a new "final" version of a1ctl trying to resolve all the bugs and implementing requested features, and that would be great to get rid of acpiec patching by using you dll ;-)
     
    noda, Feb 15, 2009
    #4
  5. SH0DAN

    bolero

    Joined:
    Feb 19, 2009
    Messages:
    61
    Likes Received:
    0
    It doesn't work on Windows 7 for me. I tried in XP and Vista compat modes and run as admin. No change at all. It prints out the first line that denotes the register numbers, then the 00 on the next line and when it should start with the actual registert values it fails with an error 80040001. errlook tells me "Invalid advise flags".
    Maybe it's a not problem running on Windows 7 actually, but different hardware? This is a A150 ZG5.
     
    bolero, Mar 1, 2009
    #5
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.