Thursday, March 17, 2011

Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

This thread is for mods and tweaks only. If you have a general question about installing drivers, about what case fits this laptop best, about LCD screen on Acer Aspire 3820T/TG/TZ/TGZ, etc, then please go to this thread 3820TG Owner's Lounge - Part Two



If you have a tweak/hack/mod to share or have a question about, feel free to post it here.



This front page will be updated with information about all the available mods and tweaks. If you notice something missing, either send me a PM or post in this thread.



Guides are welcome!



Useful links:

- Service guide/repair manual

Reply 1 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

Hey everyone!



I have figured out where and how to control Wifi/BT/3G LEDs, enable WiFi/BT/3G, set custom fan speed, change brightness to "unsupported" levels, etc.



I don't have time at the moment to post everything I discovered, but here is some info to get you started. To apply these tweaks you have to use a program called RWEverything (download here). Once installed, launch it at the top you will find many buttons. Find one that says "EC" (or "Embedded Controller" if you hover your mouse over it) and click on it. You will see this:



This window displays what is stored in the Embedded Controller (EC) memory on your laptop. It is possible to get some information from these values (such as status of LEDs, CPU temperature, Fan speed) and change some of it (such as fan speed, status of LEDs).



All the numbers that you see in this window are in hexadecimal. If you don't know what that is, take the time to look it up. Also read about binary numbers, understand what bits are, etc.



The addresses in EC range from 0x00 to 0xFF. 16 numbers per row and 16 numbers per column. The way you tweak or read information is: find a place the in memory that interests you and read or change its value.



------------- Fan control: ----------------

[0x93] - CPU fan: Fan mode. 0x04 Auto, 0x14 Manual

[0x94] - CPU fan: Desired fan speed. 0x00-0xFF. With 0x00 being max speed and 0xFF means fan is off

[0x95] - CPU fan: Actual fan speed (in %? See note below).



[0x96] - GPU fan: Fan mode. 0x04 Auto, 0x14 Manual

[0x97] - GPU fan: Desired fan speed. 0x00-0xFF. With 0x00 being max speed and 0xFF means fan is off

[0x98] - GPU fan: Actual fan speed (in %? See note below).



To test: Open RWEverything, click on Embedded Controller (EC), go to [0x93] and change it to 0x14. Then change [0x94] to 0x00. This will set CPU fan speed to maximum! Sounds like an airplane, doesn't it?

--

If [0x93]/[0x96] fan mode is set to Automatic (0x04), then changing [0x94]/[0x97] will not work. It will simply revert back to the old value.

--

If CPU fan is set to max speed (0x00) in [0x94] then the maximum fan speed it reaches is 0x60 in [0x95].

If GPU fan is set to max speed (0x00) in [0x97] then the maximum fan speed it reaches is 0x45 in [0x98].

--

Fan speed steps and corresponding temperature in Celsius that triggers the change. (Looked at changes in EC [0x94] and [0x97] and at temps in HWMonitor to figure this out):



CPU Fan speed : 0xFF 0xD0 0xB6 0x9E 0x81 ....

CPU Temperature: <? ? ? ? ? ?



GPU fan speed : 0xFF ...

GPU Temprature : <?

--

NOTE on fan speed:

The formula for calculating the actual fan speed in RPM is not yet known. I did find fan speed formulas for other Acer laptops (examined DSDT tables). There are no FAN tables or methods in 3820 DSDT, so we will have to figure out the fan speed formula ourselves. The formulas I found were:

1) ((~VAL) & 0xFF) * 10. OR in other words: ( NOT(VAL) AND 0xFF) * 10

2) 0x78000 / VAL

3) 1350000 / 8 / VAL

4) 1350000 / 4 / VAL



Where VAL is the fan speed value from [0x94],[0x95],[0x97],[0x98].



As far as I know, the only way we can find the true fan speed formula is to either measure the actual fan speed, or look up the data sheet for the fans and find the maximum (and minimum?) RPM speed. Then use those max/min values to find the formula, knowing that CPU can only go as high as 0x60 in [0x94], etc.



I did some research, but I couldn't find any fan speed information apart from manufacturer and part number. Perhaps, we should email the fan manufacturer and ask for fan speeds?

CPU fan: SUNON Model: MG057PFV1-A P/N: MG50060V1-B000-S99 image

GPU fan: -Manufacturer- -Part number-



--

(please help out!)

1. Need to know max/min RPM of CPU and GPU fans for fan speed calculation.

2. Need a screenshot of RWEverything EC window on 3820T. This model doesn't have GPU fan, so we need to see how EC reflects that.

3. Need CPU/GPU fan speed steps that are there in Automatic mode (0x04). Also temperature in Celsius that triggers each change. Please include your BIOS version.



----------------------------------------------------



- means read-only.

- means sensor, changes dynamically.



------------- Misc: ----------------





[0x77] - - Fn key: If Fn key is pressed, it is equal to 0x04, otherwise 0x00. Maybe signals other keys too? It could be keyboard controller and we can send key signals to it?

[0x87] - - Backlight/brightness level: From 0x00 (backlight off) to 0x64 (backlight 100%). This is a read-only copy of [0x84].

------------------------------------------------------------------





------------- LEDs: ----------------

[0x0A] bit 1 - Power LED: if on(1) it will blink orange.

[0x0C] bit 2 - - CapsLock (LED?): If CapsLock key is on, bit is set. (0x04)

[0x0C] bit 4 - - NumLock (LED?) : If NumLock is on, bit is set. (0x10)

[0x51] bit 0 - LED next to P button: on(1)/off(0).



------------------------------------------------------



------------- Devices: ----------------

[0x0B] bit 0 - - Touchpad: Indicates whether touchpad is enabled (bit set 0x01) or disabled (bit unset 0x00).

[0x71] bit 0 - WiFi status: On(1) or Off(0).

[0x71] bit 1 - Bluetooth status: On(1) or Off(0).

[0x73] bit 0 - WiFi LED or 3G status(?).



---------------------------------------------------------



------------- Sensors: ----------------

[0xA8] - TZS0 in CPUID Hardware Monitor

[0xA9] - TSZ1 in CPUID Hardware Monitor

---------------------------------------------------------



More info to come!

Reply 2 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

I installed Ubuntu 10.10 64-bit on my 3820TG a few days ago and it is working great!



You need to do a bit of tweaks here and there, but otherwise everything works out of the box. 1080p video playback using VLC player is completely smooth both on Intel and ATI right out of the box.



Some tips:

1. Do not install flgrx proprietary ATI driver. This will leave your system in an unbootable state. You can install it if you set video to Discrete in the BIOS, otherwise you will be stuck at the Terminal screen. Speaking from experience...

2. To turn on/off Bluetooth press Fn+F3 once.

3. To turn on/off Wi-fi press Fn+F3 twice (quickly).

4. When you have Switchable graphics option set in BIOS, both ATI and Intel cards will be powered on, and the active one will be Intel. So you will need to manually turn off the unused card (see below). You can also switch between cards as computer is running (see below).

5. When you are on Intel graphics -- HDMI-out will NOT work. This is the case both on Windows and Linux. Just the way it was designed (hardware). Works perfect on ATI.



Some things you need to tweak:

1. To adjust the screen brightness via the Fn+Left Arrow and Fn+Right Arrow keys, you need to add an option to the kernel boot command. Open a terminal and type: sudo gedit /etc/defaults/grub

Look for the GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" line and change to: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"

Now update grub with: sudo update-grub

Reboot.



2. Depending on the wireless card you have, there might be no wireless drivers pre-installed. If that is the case, then you will need to connect to the internet via cable and then go System->Administration->Hardware Drivers, select your Wireless card driver and click Activate. It should automatically install it for you. Reboot.

If you have Broadcom wireless, then it probably doesn't work correctly. Uninstall default Ubuntu driver above and follow install a new one from here Broadcom.com - 802.11 Linux STA driver



3. If graphics option is set to Switchable in the BIOS then both cards will be powered on by default. To save power and cut down on the heat, you can turn off the unused card (ATI) as Intel is good enough for day-to-day activities. You can do this by following this guide here. You should follow the steps up to and including installing switch_between_cards.sh. There is a bug in that script that prevents it from working on 3820TG, so you will need to fix the following two lines. You must add : once in every line after grep (notice the red):


Quote:







integrated=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_integrated | grep -o -P ':.:...:')

discrete=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_discrete | grep -o -P ':.:...:')



Fix to:

integrated=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_integrated | grep -o -P ':.:...:')

discrete=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_discrete | grep -o -P ':.:...:')


Once fixed you can use this script to switch between graphics. Just make sure you save all your work before you switch as the script will log you out.



4. The battery life isn't that great by default, so you might want to google for some power saving scripts and tweaks. I recall seeing a few on Ubuntu Forums specifically for 3820TG.





That is all I've done so far to my install. You can google for instructions on enabling multitouch and two-finger scrolling on the touchpad (or see here). I haven't done it myself yet. I might permanently switch to Discrete graphics and try newest ATI proprietary flgrx graphics from ATI website. I'll be trying it out on a test install (external HDD).



Cheers and have fun!



Further reading: https://wiki.archlinux.org/index.php/Acer_TimelineX

Replaced by vga_switcheroo, but still good for reference: [SOLVED] Acer 3820tg battery life - Ubuntu Forums

TO stop WiFi LED blinking. Ubuntu 10.10: how to stop the wifi led blinking | xAppSoftware - the xAppSoftware Web Site

Reply 3 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

Here will be info about Fan Speed Regulator utility for 3820.



First beta is planned in 2-3 days.

Reply 4 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

- "Intel Only" option in BIOS. Completely disable ATI/AMD card



Here will be information about different BIOS mods and tweaks.

Reply 5 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

Adding PCI-e port and installing UTSM modem

Link





Here will be info about different hardware modifications.



This includes:

- Backlit keyboard

- Changing thermal paste

- Changing LCD screen to a higher resolution one

Reply 6 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

Here will be information about switchable graphics.

Reply 7 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!

Ufff... Seems TZ temps readings are up and working. The only thing that concerns me from sharing current version is than sometimes (especially when RWEverything is run in background) I'm getting junk instead of temp value.



I found and use next code for EC access:


Code:

    const int EC_DATAPORT = 0x0062;

const int EC_CTRLPORT = 0x0066;

const char EC_STAT_OBF = 0x01; // Output buffer full
const char EC_STAT_IBF = 0x02; // Input buffer full
const char EC_STAT_CMD = 0x08; // Last write was a command write (0=data)

const char EC_CTRLPORT_READ = (char)0x80;
const char EC_CTRLPORT_WRITE = (char)0x81;
const char EC_CTRLPORT_QUERY = (char)0x84;

bool waitportstatus(int bits, int onoff= false, int timeout= 1000)
{
bool ok= false;
int port= EC_CTRLPORT,
time= 0,
tick= 10;

//
// wait until input on control port has desired state or times out
//
for (time=0; time < timeout; time+= tick) {
DWORD data = PortIn(port);
// check for desired result
int flagstate= (((char)data) & bits)!=0,
wantedstate= onoff!=0;

if (flagstate==wantedstate) {
ok= true;
break;
}

// try again after a moment
::Sleep(tick);
}

return ok;
}

char EmbeddedController::ReadByte(int offset)
{
// wait for IBF and OBF to clear
if (!waitportstatus(EC_STAT_IBF | EC_STAT_OBF, false)) return 0;
// tell 'em we want to "READ"
PortOut(EC_CTRLPORT, EC_CTRLPORT_READ);
// wait for IBF to clear (command byte removed from EC's input queue)
if (!waitportstatus(EC_STAT_IBF, false)) return 0;
// tell 'em where we want to read from
PortOut(EC_DATAPORT, offset);
// wait for IBF to clear (address byte removed from EC's input queue)
// Note: Techically we should waitportstatus(OBF,TRUE) here,(a byte being
// in the EC's output buffer being ready to read). For some reason
// this never seems to happen
if (!waitportstatus(EC_STAT_IBF, false)) return 0;

return static_cast(PortIn(EC_DATAPORT));
}

Does anybody know maybe its not quite correct and another one should be used here?

Reply 8 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!


Quote:








Originally Posted by _InKr_
View Post

Ufff... Seems TZ temps readings are up and working. The only thing that concerns me from sharing current version is than sometimes (especially when RWEverything is run in background) I'm getting junk instead of temp value.



I found and use next code for EC access:


Code:

    const int EC_DATAPORT = 0x0062;

const int EC_CTRLPORT = 0x0066;

const char EC_STAT_OBF = 0x01; // Output buffer full
const char EC_STAT_IBF = 0x02; // Input buffer full
const char EC_STAT_CMD = 0x08; // Last write was a command write (0=data)

const char EC_CTRLPORT_READ = (char)0x80;
const char EC_CTRLPORT_WRITE = (char)0x81;
const char EC_CTRLPORT_QUERY = (char)0x84;

bool waitportstatus(int bits, int onoff= false, int timeout= 1000)
{
bool ok= false;
int port= EC_CTRLPORT,
time= 0,
tick= 10;

//
// wait until input on control port has desired state or times out
//
for (time=0; time < timeout; time+= tick) {
DWORD data = PortIn(port);
// check for desired result
int flagstate= (((char)data) & bits)!=0,
wantedstate= onoff!=0;

if (flagstate==wantedstate) {
ok= true;
break;
}

// try again after a moment
::Sleep(tick);
}

return ok;
}

char EmbeddedController::ReadByte(int offset)
{
// wait for IBF and OBF to clear
if (!waitportstatus(EC_STAT_IBF | EC_STAT_OBF, false)) return 0;
// tell 'em we want to "READ"
PortOut(EC_CTRLPORT, EC_CTRLPORT_READ);
// wait for IBF to clear (command byte removed from EC's input queue)
if (!waitportstatus(EC_STAT_IBF, false)) return 0;
// tell 'em where we want to read from
PortOut(EC_DATAPORT, offset);
// wait for IBF to clear (address byte removed from EC's input queue)
// Note: Techically we should waitportstatus(OBF,TRUE) here,(a byte being
// in the EC's output buffer being ready to read). For some reason
// this never seems to happen
if (!waitportstatus(EC_STAT_IBF, false)) return 0;

return static_cast(PortIn(EC_DATAPORT));
}

Does anybody know maybe its not quite correct and another one should be used here?



Both of you, you with winring and Read&Write Everything don't use a Mutex for the EC and this means, that you are reading and writing at the same time with two apps on one device. This creates trash.



Search for a Mutex or look for the R&W Process before acessing the EC.

Reply 9 : Acer Aspire TimelineX 3820TG mods/tweaks ONLY!


Quote:








Originally Posted by prikolchik
View Post

NOTE on fan speed:

The formula for calculating the actual fan speed in RPM is not yet known. I did find fan speed formulas for other Acer laptops (examined DSDT tables). There are no FAN tables or methods in 3820 DSDT, so we will have to figure out the fan speed formula ourselves. The formulas I found were:

1) ((~VAL) & 0xFF) * 10. OR in other words: ( NOT(VAL) AND 0xFF) * 10

2) 0x78000 / VAL

3) 1350000 / 8 / VAL

4) 1350000 / 4 / VAL



Where VAL is the fan speed value from [0x94],[0x95],[0x97],[0x98].



Regarding Fan Speed formula, I can confirm that 3 and 4 (and probably 2) are working with 2 bytes VAL. So it is not applicable for our case, since we have only 1 byte VAL.



1st looks more promising we only need to find proper constant instead of 10, because I don't believe that our CPU Fan has only 1600RPM max (~0x60)*10.

No comments:

Post a Comment