#125629 - 2004-08-26 09:56 PM
Re: Monitor Serial
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
Shane,
This works a treat!
Thanks dude..
Richard - you should post this UDF.
I searched high and low on the Internet and nobody seemed to know how to address this problem. My hat's off to you guys. If you are ever in the Portland, OR area look me up and we can go have a microbrew!
Thanks!
Kent
|
Top
|
|
|
|
#125630 - 2004-08-26 11:08 PM
Re: Monitor Serial
|
Allen
KiX Supporter
Registered: 2003-04-19
Posts: 4546
Loc: USA
|
I'm not getting any results... the code returns @error=0 but no serial number or model number.
I only have one EDID value in the registry and its value is:
Code:
00ffffffffffff005a634a4b783b0000180701000f201899e80489a0574a9b2612484c246700818f 614f614a494f454f314f31403140bc34009851002a40109013001ee51000001e401f003041002430 206033002ce110000018c31e002041002030106013002ce11000001e4c1d00304100263018883600 2ce11000001800a20000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000
The monitor is a Viewsonic...
I'm just testing the script and have no use for this right now, but I thought I would pass this on, if anyone has any ideas.
|
Top
|
|
|
|
#125631 - 2004-08-27 03:29 AM
Re: Monitor Serial
|
Allen
KiX Supporter
Registered: 2003-04-19
Posts: 4546
Loc: USA
|
After reading the original webpage and notes it appears that it is possible my monitor just doesn't have this information stored, in which case it must be working as expected...
Quote:
'Another reason for reliability problems is that there is no 'requirement in the EDID spec that a manufacture include the 'serial number in the EDID data AND only EDIDv1.2 and beyond 'have a requirement that the EDID contain a descriptive 'model name 'That being said, here goes....
|
Top
|
|
|
|
#125632 - 2004-09-02 08:21 AM
Re: Monitor Serial
|
mike_mcsw
Lurker
Registered: 2004-09-02
Posts: 4
|
what is this code?? I cut and paste it with vbs extension and it gives errors...
|
Top
|
|
|
|
#125634 - 2004-09-02 09:13 AM
Re: Monitor Serial
|
mike_mcsw
Lurker
Registered: 2004-09-02
Posts: 4
|
what is with this code? with vbs extension it doesn't like $, ;, or@
whats up?
|
Top
|
|
|
|
#125635 - 2004-09-02 09:40 AM
Re: Monitor Serial
|
mike_mcsw
Lurker
Registered: 2004-09-02
Posts: 4
|
ok, thanks...i downloaded the kixstart executable and installed in c:\kix
i then pasted the script as monitor.kix and copied it to the same directory
i then run "c:\kix\kix32.exe monitor.kix" and nothing happens? is it supposed to copy a text file somewhere?
I also tried wkix32.exe with no results as well???
|
Top
|
|
|
|
#125636 - 2004-09-02 10:17 AM
Re: Monitor Serial
|
Richard H.
Administrator
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
If your monitor (and/or graphics card) is not EDID compliant then it will not return the information, so nothing will be displayed.
To confirm this you can check the registry information manually.
Warning! Mucking about in the registry can really bugger your operating system up - only do this if you fully understand the implications!
Ok, start regedit and navigate to registry key "HKLM\SYSTEM\CurrentControlSet\Enum\Display"
In this key you will find a number of subkeys, which represent graphics cards, drivers, monitors and other display devices.
- Look through each subkey, and you will see a key with a hexadecimal garbage string - possibly an internal resource id, but don't quote me on that.
- Look in this key for a DeviceID. If the DeviceID string starts with "Monitor\" then the entry is a monitor. "Class" is also set to Monitor.
- Now look for a subkey called "Control". I use this to identfy the active monitor - I have no idea if this is a valid test, but it works for me. If it doesn't have the "Control" subkey the script ignores it.
- Finally, look in the "Device Parameters" subkey. This should have an entry "EDID", which is the response from the monitor. This is a binary block with the data encoded in it.
The script is an example of parsing this block which may not work for everyone. Specifically I assume that there is only ever a single "garbage" subkey, however this is not necessarily the case.
If you find that the script is not displaying data when it should, post the details and I'll see if we can get it working for you.
|
Top
|
|
|
|
#125637 - 2004-09-02 10:29 AM
Re: Monitor Serial
|
mike_mcsw
Lurker
Registered: 2004-09-02
Posts: 4
|
yes, it is in the registry, and the vbscript that someone else posted "almost" worked, which is why i was hoping i could get this to work. but this one just opens a black window and sits there...if i press the space bar the window closes, but nothing is output. the vbscript does report a monitor, but I need to report more than one monitor, but this kixstart script doesn't do anything?
|
Top
|
|
|
|
#125639 - 2004-09-02 10:42 AM
Re: Monitor Serial
|
Richard H.
Administrator
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
Quote:
yes, it is in the registry
LOL
You'll have to provide more info than that - good looking intelligent and witty I am, omniscient I'm not
I'll knock up a debug version which will dump status information while it is working, but if you can post a text dump of the registry key it would help a lot.
Post any information that you think might be useful, especially if you think you know why it might be failing considering the check list I gave you in the last post.
|
Top
|
|
|
|
#125642 - 2004-09-06 09:52 PM
Re: Monitor Serial
|
kholm
Korg Regular
Registered: 2000-06-19
Posts: 714
Loc: Randers, Denmark
|
Thank's guys
I have been looking for a way to retrieve the Monitor model/serielnumber for quite some time.
I have made a small ajust on Shanes script and made it part of my logonscript's collecting hardwareinfo. This seems to work 99 %
All my IBM-monitors report both model and sernum. Many others also reports both. A few only reports model (Sernum is not required in EDID)
The sad thing is that some workstations reports nothing. (Could be that they don't conform to the VESA/EDID standard ???)
I will have a closer look on the non-reporting systems later, to see if the info is burried somewhere else in: CurrentControlSet\Enum\Display
OS: mostly XP a few 2K (Stil about 200 9x/Me, where this script wont work)
Anyway, since this is not a 100% solution you wil stil have to record the data manually.
-Erik
|
Top
|
|
|
|
#125643 - 2004-09-07 01:30 AM
Re: Monitor Serial
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11624
Loc: CA
|
Well now that the monitor is below $500 it is not a Capital expense for us anymore, so don't have to record it anymore. But nice to have a script that does retrieve it most of the time.
|
Top
|
|
|
|
#125644 - 2004-09-07 10:05 AM
Re: Monitor Serial
|
Richard H.
Administrator
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
I don't have a real use for this script, so I will not be spending any real time on adding features or fixing it to work with other versions of EDID.
If anyone determines a better test for the "active" monitor, let me know and I'll add it.
If anyone determines a bug in the code, let me know and I'll fix it.
If anyone want support for other versions of EDID (these fields are defined in version 1.3) then you are on your own
Quote:
I will have a closer look on the non-reporting systems later, to see if the info is burried somewhere else in: CurrentControlSet\Enum\Display
Erik, run the debug version (posted above). It should be immediately obvious where the problem is.
I don't have the info for EDID 2.0, which I guess more recent monitors may support - if anyone has the specifications let me know and I'll have another look.
If you are interested in the documentation you can get the publicly available documents here: http://www.vesa.org/public
I guess you need to pay for the later versions
You will find that older versions of EDID stored a 32 bit serial number at 0x0C - 0x0F - I'll see if I can grab anything sensible from here.
|
Top
|
|
|
|
#125645 - 2004-09-07 11:52 AM
Re: Monitor Serial
|
Richard H.
Administrator
Registered: 2000-01-24
Posts: 4946
Loc: Leatherhead, Surrey, UK
|
Updated.
- Checks that the EDID block is valid.
- Displays the EDID version info if debugging is switched on.
- Displays the week and year of manufacture.
- Displays the 1.2 serials number - YMMV but this is a garbage value for me.
Code:
; Return monitor info. Break ON $=SetOption("Explicit","ON") $=SetOption("WrapAtEOL","ON") $=SetOption("ASCII","ON")
GLOBAL $VERBOSE
$VERBOSE=1 ; Set to "0" to disable debug info Dim $KEY_DISPLAY Dim $iIndexPri,$iIndexSub Dim $sMonitor,$sDevice $KEY_DISPLAY="HKLM\SYSTEM\CurrentControlSet\Enum\Display" ; Iterate through possible displays. Log("Starting scan for monitor info...") $iIndexPri=0 $sMonitor=EnumKey($KEY_DISPLAY,$iIndexPri) While Not @ERROR $sMonitor=$KEY_DISPLAY+"\"+$sMonitor Log("--------------------------------------------") Log("Primary key is '"+$sMonitor+"'") $iIndexSub=0 $sDevice=EnumKey($sMonitor,$iIndexSub) while Not @ERROR $sDevice=$sMonitor+"\"+$sDevice Log(" Secondary key is '"+$sDevice+"'") If KeyExist($sDevice+"\Control") Log(" Control found - device assumed to be active") If Instr(ReadValue($sDevice,"HardwareID"),"Monitor\")=1 Log(" Device type is monitor.") ParseEDID(ReadValue($sDevice+"\Device Parameters","EDID")) Else Log(" Device type is not monitor.") EndIf Else Log(" Control not found - device assumed to be inactive") EndIf $iIndexSub=$iIndexSub+1 $sDevice=EnumKey($sMonitor,$iIndexSub) Loop $iIndexPri=$iIndexPri+1 $sMonitor=EnumKey($KEY_DISPLAY,$iIndexPri) Loop
Log("Completed scan for monitor info.") Exit 0 Function ParseEDID($sEDID) Dim $iOffset, $sBlock If $sEDID="" Log(" No EDID information associated with device") Exit 0 EndIf ; Check for valid EDID data If SubStr($sEDID,1,16)="00ffffffffffff00" Log(" EDID signature is valid") Else Log(" EDID signature is invalid: "+SubStr($sEDID,1,16)) Exit 0 EndIf Log(" "+$sEDID) Log(" EDID Version number is " +Execute("Exit &"+SubStr($sEDID,(&12+1)*2-1,2)) +"." +Execute("Exit &"+SubStr($sEDID,(&13+1)*2-1,2))) ; Look for serial number and model number in descriptor blocks. For $iOffset=54 To 108 Step 18 $sBlock=SubStr($sEDID,$iOffset*2+1,18*2) Select Case Left($sBlock,8)="000000fc" " Model: " Bin2Str(SubStr($sBlock,9)) ? Case Left($sBlock,8)="000000fe" " Other info: " Bin2Str(SubStr($sBlock,9)) ? Case Left($sBlock,8)="000000ff" "EDID 1.3 Serial number: " Bin2Str(SubStr($sBlock,9)) ? Case "Unknown type" Log(" Unknown type: "+Left($sBlock,8)) EndSelect Next "EDID 1.2 Serial number: "+Execute("Exit &"+SubStr($sEDID,(&1C+1)*2-1,8))+@CRLF " Week of manufacture: "+Execute("Exit &"+SubStr($sEDID,(&10+1)*2-1,2))+@CRLF " Year of manufacture: "+(1990+Execute("Exit &"+SubStr($sEDID,(&11+1)*2-1,2)))+@CRLF EndFunction Function Bin2Str($s) Dim $c While $s $c=Execute("Exit &"+Left($s,2)) ; Truncate string at CR If $c=10 Exit 0 EndIf iF $c $Bin2Str=$Bin2Str+Chr($c) EndIf $s=SubStr($s,3) Loop
Exit 0 EndFunction
Function Log($s) If $VERBOSE @DATE+" "+@TIME+" "+$s+@CRLF EndIf Exit 0 EndFunction
|
Top
|
|
|
|
#125646 - 2005-07-12 08:20 PM
Re: Monitor Serial
|
NTDOC
Administrator
Registered: 2000-07-28
Posts: 11624
Loc: CA
|
Richard,
If you get bored, or free time on your hands, maybe you could take a look at this product and see if you can refine your script output/details some.
Phoenix EDID Designer 1.31
|
Top
|
|
|
|
Moderator: Arend_, Allen, Jochen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 352 anonymous users online.
|
|
|