Right, I wanted a way to get a warning of battery status whilst playing full screen games on my G1s. Since ASUS don't seem keen on giving us an API for it (grrr) I decided to do some monitoring of how the DirectConsole application actually addressed the oled under Vista in a debugger.
[Usual 'its your own fault if you break it' caveats but there's nothing much in here that should cause problems. But if it does, don't come running to me!]
Now, it turns out that if you set the type to be a custom display and put some text in then it actually converts that to a bitmap at that time and stores it in a file called USERMODE.BMP in c:\users\YOURNAME\AppData\Local\VirtualStore\Program Files\ASUS\ASUS Direct Console
The important thing is that when the Direct Console application starts (LCMP.EXE) it reads the type of display from the registry so you need to have it set to 'my personal setting' for the following to work - if that is set it then READS THE USERMODE.BMP FILE FROM DISK. This means that if we change the file, kill/restart the process we get a new message on the display![]()
I'll explain what I've done to get the OLED display updated with the battery state of my G1s but of course you can customise these instructions for whatever you want. The only thing is that you need a BMP file in the right format on disk - so as yet there's no on the fly 'string to OLED' ability.
(I may write a utility to take a text string and convert it to a compatible bitmap on the fly - if anyone has something, I'd very much appreciate a copy)
Ok, on to the instrucations:
To start with go into the Direct Console Direct Messenger utility and change it to 'my personal setting' put in the text 'Plugged in' and apply it so that you see that text on your OLED - you can play with the text until it displays how you like.
Then copy USERMODE.BMP to pluggedin.bmp
Now do the same for a message for 'battery fine' -> batteryfine.bmp and 'battery low' -> batterylow.bmp
Now we have three files for the status which we can load when we detect the status has changed.
The easiest way to kill the process is to download the sysinternals (now MS) pskill application - do that and store it somewhere on your disk.
So, now we need to:
Check for state - copy required BMP file to USERMODE.BMP
Kill LCMP.EXE
Start LCMP.EXE
The only downside to this is you get an extra DirectConsole icon in the status tray area - it vanishes when you mouse over it so its no big deal, but with hundreds of kill/start there are an awful lot there! My attached app only does the kill/restart if something has changed, to minimise this.
If you name the files as I've suggested then you can use the attached battmonitor.txt file to update your OLED. Remember to grab PSKILL.EXE and change the path to it in the script for where you've saved it to. Then just rename the file to battmonitor.vbs and run it using:
cscript /nologo battmonitor.vbs
[Note: you can programmatically change the registry key Computer\HKEY_CURRENT_USER\Software\ASUS\DirectMessenger\UserMode before doing a restart of the process and it will use the mode, as defined. So setting it to 0 you get the default display and 1 it loads the USERMODE.BMP file. You could use this to change from the time display to something else, and back again]
Its possible I missed a step, or overlooked something as I've been mucking about with this for a while - any problems/questions post here and I'll answer what I can.
I hope some of you find this useful - there are enough hits for questions of 'how do i change the OLED' without any solution that I figured it was worth posting my little hack for others to use![]()
kryten
-
Attached Files:
-
-
Good job, Kryteng! If someone finds a way to restart the LCMP.EXE so that there won't be any additional icons in the desktop status tray area, it is very easy to create a graphical bar indicatos, which will show how much charge there is left in the battery. All you have to do is create "a couple more" bar graphs using your favourite bit map editor to show "100%", 90%, 80%, 70%, 60%, 50%, 40%, 30, 20% and 10% charge and tweak Kryteng's script accordingly.
Ps. I haven't got my G1S here at the moment to be able to test this, but could it be possible that LCMP.EXE provides already some command line parameters, which could be used to refresh the bitmap image from a given file? -
Yeah I know, but I couldn't be bothered to go to that much hassle
Just needed to know when to run for the power adaptor so I don't go linkdead in EQ2 when the laptop shuts itself down!
There's some work on the Linux based asusoled project that looks like it could be used to generate bitmaps for customised displays, I just haven't had the time!
Couldn't find any cmdline options in LCMP which is why I went the KILL route - there's probably a way to tell Vista to refresh that display area as that's all it needs (its a Windows thing, not APP specific because the same thing happens if you kill/restart any application with a tray icon). -
Great idea kryteng1!
But is it possible for you to monitor with the debugger but when the MSN Messenger sends the new message screen to the OLED? I really doubt they are creating that new message with your approach.
There must be a way of sending plain text to that little screen...
I just sold my G1P but will order a new G1S real soon to test your approach!
At least we have something new for our OLED screens!!!
Cheers!
Rayan -
Is it possible to just send the windows message for a mouse over event to the old icon? That would at least keep the icons from piling up in the systray.
Though I agree, there has to be some hidden API at work here, and I would much rather use that than modifying files and killing and starting processes. I looked around in the device manager but couldnt find anything that looked like a generic controller. Theres gotta be some sort of motherboard driver that handles it. I will keep diggin. -
months have passed...
Did anyone find out a way to customize that cool but almost useless oled display? Any utility? Any solution at all? -
Hi everybody
I'm new here, and I'm French, so sorry for my (not so bad...) English
If there is still someone interested in that tweak, I found that there is a little utility called "KWin.exe" located in "C:\Program Files\ASUS\ASUS Direct Console" whose purpose is to kill the Direct Messenger display by closing all running Direct Console software, (including Chkol.exe, D3DCheck.exe, and LCMP.exe) in a clean way ( no tray icon left)
So in kryteng1's script, by replacing the line :
set oExec=WshShell.Exec ("c:\users\your_name\pskill.exe lcmp")
with:
set oExec=WshShell.Exec ("C:\Program Files\ASUS\ASUS Direct Console\KWin.exe")
we can now have a clean refresh
Voila, hope someone will find something else to make it better -
Yeah, here is "something better"
You have probably heard of LCDHype, for those who haven't - it's a freeware application for Windows that enables you to connect almost every type of LCD to your LPT or USB port (when talking about desktops). You can create scripts for whatever you want to visualize on the LCD, from core/GPU temperatures/voltages, fan speeds to winamp information, spectrum analyzers, graphics, wheather, news...just name it!
I've recently bought myself G1S-B1, which has this OLED display, so I decided to write a driver for it
Instructions
Follow these steps to run this application with the G1S (and other G -series laptops):
- Download and install LCDHype from here
- Download the driver for Asus G-series OLED from here
- Extract the driver archive to C:\Program Files\LCDHype\Controller\ folder (where C:\Program Files\LCDHype is the folder you installed LCDHype at, may differ on your PC)
- Download Asus G1S Megascript for LCDHype from here and extract it to LCDHype\scripts\ folder
- You can find more scripts here
- Run LCDHype, you should already see the OLED showing a logo of LCDHype (which means my driver is initialized successfully).
- Open LCDHype main window, go to Configuration -> LCD Configuration, select "Asus G1S OLED Display".
- In LCDHype main window, go to Scripts -> Open File, navigate to the folder you extracted the script (above), select the script file.
- (Optional) In the Common settings of LCDHype, put checkmarks on the first 3 options and put LCDHype to autorun of your Windows.
- That's it! The rest is up to you, you can create your own script for whatever you want to visualize and add it to the Asus G1S Megascript (you can find intruction how to do it in the script download page)
Use LCDHype's internal help to find out how to visualize variables on the LCD. You can find examples and cool scripts here.
(check out this script, it creates a very cool animation - sheep running over some fences).
NOW - you can use your OLED to show you even kill/deaths/ping while playing ingame (there are many additional plugins like game query plugins also in this site). I would post up some of my examples, but I've written them on my old PC, where I used external LCD which was different resolution, so I must rewrite them to work with G1S' OLED.
I'll post some screenshots and pictures of how this all looks on my Asus
LCDHype and G-Series FAQ
Q: My Network script doesn't show the network that I want, how to change the network adapter that it shows ?
A: The "Network Simple" script may not run when you first start the script. To make it run properly, you must change this line in the header:
%DefVar(N=7)
The number 7 is the LAN network adapter of my computer, it differs on every single PC and Windows installation. Just start from 0 and increase this value untill you see your network adapter name scrolling on the top of the screen.
___
Q: I don't temperature values, it says "no data available" on where a value should show, how to fix it ?
A: Everest is required to be able to show temperatures with the Asus G1S Megascript. When you run Everest, go to Preferences -> External Applications and put a checkmark on " Enable shared memory", then down in the list put a checkmar ONLY on CPU and GPU temperatures.
___
Q: CPU temperatures work fine, but GPU doesn't, why ?
A: In the line that reads the GPU temperature (%UsePlugin(..., TGPU1) , instead of TGPU1 try TGPU1DIO, difference comes from Everest versions.
___
Q: Winamp scripts don't visualize Winamp, why ?
A: You need to install a plugin in Winamp which will send data to LCDHype. You can find the plugin in your LCDHype\stuff\Winamp folder. Copy all the files from there to your Winamp\plugins folder (and restart Winamp). Open winamp's preferences (Ctrl+P) and go to Plug-ins -> Visualization, select the "Winamp Data Collector" plugin and press Start.
___
Q: I can't get anything to work, when I run LCDHype it says something like "No skin data" or/and errors come up on the screen. LCDHype seems messy.
A: You have not correctly installed LCDHype. You have probably only installed an update of LCDHype. You need to get a basic version that has installer (for example LCDHype 0.6) and then upgrade by simply overwriting it with the files from the update archive. Regularly check for LCDHype updates on www.lcdhype.condense.de -> LCDHype releases.
___
Q: Everything works! How to add my own scripts into the megascript ?
A: Read the megascript details.
___
Q: What to expect next ?
A: New version of the Megascript for LCDHype with lots of improvements, globally working GPU/CPU temperature graphs, LED (Gaming LED, Mail LED) controls, Skype/MSN notification scripts... Be patient, it takes time, I have a lot of other work to do also
Beta version of the Megascript 2.0
Video
Here's a small video of how it looks on my G1S (sorry for the poor quality):
http://youtube.com/watch?v=Mcnd4_mMsc8
A preview of the Asus G1S Megascript:
Last edited by a moderator: May 8, 2015 -
Great news Predator!!!
Finally something really interesting for our oled screens
I had nerver heard about LCDHype but I just tried it, and even if it does'nt seem too simple tu use, it offers great possibilities and I'm going to take time to study it
Furthermore it is multilanguage (including French)
Thanks a lot ! -
You are welcome!
Btw I noticed there're no Battery-state commands, so I will write a plugin for LCDHype later, which will enable us to show battery status on the OLED in real time.
LCDHype is nothing hard, you write your screen in a script, you have common commands like turning ON/OFF the LCD, loading graphic on it, writing text (with selected font and color), writing variables.
The scripts are pretty much simple to write, there are two common areas in a script:
1. Header - runs only when the script starts executing. You can declare your own variables there, clear the screen, whatever initialization of the script.
2. LCD Area - there are two types, GfxMode and TxtMode, on this OLED driver I wrote, you can only use GfxMode (you can still write text of course, don't confuse it), TxtMode is for displays which only support outputing text (older and cheaper LCDs).
Example for a script:
Code:#Header #EndHeader #GfxMode 'This is Asus G1S' #EndGfxMode
Here are some pictures, sorry for the poor quality - it's a webcam -
I've been toying with LCDHype since I read Predator_MF's post. It works great on my G1S.
Now I'm trying to get it to work with one of the temperature monitoring plug-ins. Changing the display size has been easy, but so far I can't get them to show any temperature values. -
Temperatures and voltages could be obtained with MBM (Mother Board Monitor 5), I've used it previously on my GF440, worked fine. Can't test right now, maybe tomorrow. This plugin should get the temperature from NVIDIA driver, no luck for me so far.
Here is a small set of scripts I written today (some of them are from LCDHype, but touched to work at this resolution better) use them as a 'kick start'Attached Files:
-
-
Does SpeedFan monitor the G1S's GPU temp?
I made this script, but the GPU temperature doesn't update through SpeedFan.
Everything else works. -
Anyone feel like sharing their scripts? That'd be great. I don't know how to write 'em
-
Alright, I re-did the above script for Everest Ultimate.
With this one the GPU, CPU, and HD temperatures are shown and updated.
Preview:
To Install:
1. Install Everest Ultimate.
2. Follow the instructions given http://lcdhype.de/index.php?showtopic=4399.
3. Download the everest plug-in for LCDHype from here (also included in attached file).
4. Create the folder "everest" in LCDHype's "plugins" folder (C:\Program Files\LCDHype\plugins\everest).
5. Place "everest.dll" into the newly created "everest" folder.
6. Download and run the attached script with LCDHype.Attached Files:
-
-
Dude, you're the best man...
-
+rep ... for sure.
-
@5482741, thanks man, great work. I'm finishing the battery status plugin, I'll post up here when it's done
-
Nice work everyone.
-
Very very nice work guys! Finally a way to customize the oled display!
-
Added to Info Booth sticky.
-
I slightly redid 5482741's script for layout and added the date. If anyone is interested I uploaded it.
Thanks 5482741 for the original script, much better than Direct Console.Attached Files:
-
-
This is SOOOO awesome!!
There should be a sticky thread about this, with all the developments about scripts, plugins and so on since it's useful to all the G series users.
Finally that display has some use
PS - What about adding an FPS counter to that script 5482741? Possible? -
I just added a Fraps plug-in from here .
Preview:
To Use:
1. Download the lcdfraps plug-in from here
2. Create the folder "lcdfraps" in the lcdhype plugins folder (C:\Program Files\LCDHype\plugins\everest)
3. Place lcdfraps.dll into the newly created folder (LCDfraps folder with plugin also in zip file)
4. Download the attached and run the attached script
Fraps must be installedAttached Files:
-
-
haha, this is so cool
Thank you! -
Another small update to 5482741's script
-changed time to 12 hour format
-added AM/PM indicator
Attached Files:
-
-
-
All of these mods are VERY cool. Can someone tell me if the LCD still flashes when you get an MSN message if you are using one of these customisations? That's useful when I'm gaming and wouldn't otherwise know there is someone getting impatient with me.
-
Here comes the battery plugin for LCDHype
After downloading it, just extract the folder from the zip archive into LCDHypeFolder\plugins\ folder and restart LCDHype. You will see the plugin in the "Plugins" section of LCDHype (Plugins->System Power Information).
Here is an example script I wrote too
PS: The OLED should start blinking when the battery level becomes critical. I would appreciate if someone tests that instead of meAttached Files:
-
-
You're so cool special thanks for al scripters, you're the best. Now I'm really proud to have a G2Sg.
-
Very very good !!!
Thanks again everyone for your good work
Predator, you were right, this program is rather easy to use
-
I think there is a MSN plugin for LCDHype too, so it would be easy to just get rid of Direct Console and use LCDHype instead.
I'm now going to wrap all my scripts and plugins for G1S and create the ultimate Asus OLED script (lan/inet speed, cpu/ram usage, cpu/gpu temp, clocks, weather, winamp, etc.) with a keyboard support (the OLED driver has a function for global shortcuts from the keyboard which can be read from the script)....but first, let me finish some work -
Predator_MF, we love you
-
Code:
AND (%BattFlag() ! 4))
Code:%If((%ACFlag() = 0) AND (%BattFlag() ! 4)) /Battery /
It flashes. -
I mean someone to test how the script works when the battery drops on critical...but anyway, I'm almost sure it will flash when this happens
-
I thought you meant that, but I wasn't brave enough to let the battery run out.
-
CPU usage graph
Attached Files:
-
-
does LcdHype only work in XP? I fired it up in Vista and nothing happened, the window was totally messed up too, couldnt read anything.
I grabbed the 0.6.0.2 latest build form thier site. Perhaps I should go back to 0.6.0.0 ? -
-
OK i figured out what the problem was, I was only downloading the updated files for 0.6.0.2, which is why the EXE had so much trouble finding things.
I installed 0.5.2 then overwrote with the newer files.
Theier site isnt very clear on what to download. But I added your driver and not am playing around with various scripts. -
hi everyone
do you know how to combine muliple scripts on the lcd? like a "slideshow"??
^^ -
I was just wondering if there was a driver For the G1 that u could use on lcd studio
-
-
and how could i do that?? i'm kinda new at this...
.... -
%Common.ChangeScreen(1000,2)
This will change the screen to screen number 2 in the list after 1000ms (1 second). Read the manual please -
-
Some ideas:
- a network traffic script with the current download/upload speed
- utorrent traffic
- rss feeds -
Why doesn't one of you start a website/repository of scripts where people can upload scripts? They would probably need to be checked by the admin before uploading (can malicious code be written using this LCDHype thing? Probably yes).
Just an idea. -
) for violations.
-
Yeah I meant a G1 specific thing. Maybe a subforum there if there's not already one.
ASUS G1S OLED display - I have found a way to set it :)
Discussion in 'ASUS Gaming Notebook Forum' started by kryteng1, Dec 14, 2007.