Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Vista Newsgroups > Vista General

Vista - Intel 82852/82855 GM/GME Display

Reply
 
Old 05-12-2007   #1 (permalink)
Captkirkusa


 
 

Intel 82852/82855 GM/GME Display

I have a Toshiba Satellite R15-S822 Tablet Notbook with the Intel 82852/82855
GM/GME graphics card. Once I upgraded to Vista Prem. I was no longer able
to connect to a data projector or external monitor in mirror mode. I can
extend across either the data projector or the external monitor.

Prior to Vista all I had to do was press Fn+F5 to cycle through different
display modes. I have checked with Intel and they do not have a Vista ready
update for the Intel 82852/82855 GM/GME.

Has anyone else had this problem?

The Captain

My System SpecsSystem Spec
Old 09-07-2007   #2 (permalink)
orescb


 
 

Re: Intel 82852/82855 GM/GME Display


I have the same problem. I got a new monitor to use in extended desktop
mode and the computer does not even recognize it is there. The only
thing I can do so far is to use it as my primary monitor along with the
laptop one.
If I find a workaround until they release a driver update (I am not
sure if they will do so), I will post it here to let you know.


--
orescb
------------------------------------------------------------------------
orescb's Profile: http://forums.techarena.in/member.php?userid=30722
View this thread: http://forums.techarena.in/showthread.php?t=746104

http://forums.techarena.in

My System SpecsSystem Spec
Old 05-09-2008   #3 (permalink)
psynetkilla


 
 

Re: Intel 82852/82855 GM/GME Display


Rotfl, So I sat Down with my newly installed vista prepared to watch my
new movie when bam, I realize there's no output option for my dual
monitor display!!!
WTF MICROSOFT i Screamed! After a quick try at the old driver i got
the Your OS is not supported bull crap. Anyways I smoked one and it
came to me...

Run in Compatibility mode for Windows XP SP2 and restart..... GOLDEN
now the easyizt way is to right click the destop and hover graphics
options TA DAAAA! Dual output WORKS!!!!


--
psynetkilla
------------------------------------------------------------------------
psynetkilla's Profile: http://forums.techarena.in/member.php?userid=48705
View this thread: http://forums.techarena.in/showthread.php?t=746104

http://forums.techarena.in

My System SpecsSystem Spec
Old 07-28-2008   #4 (permalink)


Vista Business 32
 
 

Re: Intel 82852/82855 GM/GME Display

I also tried to install the XP-driver some month ago, but it didn't work.

I found a solution for working with internal and external display. With this solution, it is possible to switch between internal and external display as primary screen. Mirror mode is not available.

The solution consists of a visual basic script that I wrote and that changes the Windows registry. The registry settings used by the driver are similar to the ones in Windows XP. I have a 855-chipset and it works on my computer. I hope that it also works with other chipsets or is extendable to do so. If you find out how to improve it you may do so. Please read the instructions at the top of the code before experimenting with it.

Code:
' THIS SCRIPT IS EXPEREMENTAL. USE IT AT YOUR OWN RISK AND
' MAKE SURE THAT YOU UNDERSTAND WHAT IT DOES AND THAT YOU ARE
' ABLE TO RECOVER YOUR COMPUTER IN CASE OF A BREAKDOWN (FOR
' EXAMPLE A BLANK SCREEN)!


' This script chooses a screen as primary screen on Windows Vista
' with the Intel 82852/82855 GM/GME graphics driver (included in Vista)
' when you have an Intel 855GM/GME-chipset in your notebook.
' This is not natively supported by the driver in a way that
' can be used by normal users. I suppose that the driver doesn't
' offer the interfaces that are used by the Vista user interface
' to do this task. The driver is also not shipped with a special
' tool to change the primary screen. It seems that there are no
' other drivers available for Vista.
'
' The script also adjusts the screen resolution for the new primary
' screen.
'
' It is written in Visual Basic Script. It only works if scripting
' is not disabled on your Windows - system.
'
' The primary screen is chosen by changing the value of
'   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
'   Services\ialm\Device0\Display1_UID1
' in the registry. The following values are used:
'   internal screen as primary: 00 00 04 04
'   external screen as primary: 00 00 00 01
' It is possible that these values won't work for you. They
' could instead result in a blank screen. It is at least no bad
' idea to find out the current value in your registry. It is
' also recommended to make the first test with the /test - parameter.
' It is possible that this script also works with similar chipsets
' from Intel and that only the registry value is different.
'
' The script uses the file ResSwitch.exe which has to be in the
' same directory as this script. ResSwitch.exe is part of
' the small freeware tool QRes which can be downloaded here:
' http://www.naughter.com/qres.html
'
' This script is meant to be saved in a file called
' setPrimaryScreen.vbs. Make sure that no line breaks
' are added.
'
' The necessary command line - parameters are displayed when starting the
' script. It can also be started by a shortcut on your desktop.
' The script needs privileges to change the registry value mentioned
' above. The easiest way to achieve this is to run it as administrator.
' A shortcut could have the following target:
' %SYSTEMROOT%\system32\wscript.exe %SYSTEMROOT%\setPrimaryScreen.vbs ...
' If you do it this way (with wscript.exe) you are able to run it as
' administrator, but you will have to copy ResSwitch.exe to
' %SYSTEMROOT%\system32\
'
' Note: The error codes given back by the registry manipulation -
' operations that this script uses are not always helpful.


' used registry values (REG_BINARY), could be different for your computer:
Dim internalScreenRegistryValue, externalScreenRegistryValue
internalScreenRegistryValue = Array(0,0,4,4)  ' in regedit: 00 00 04 04
externalScreenRegistryValue = Array(0,0,0,1)  ' in regedit: 00 00 00 01
' be careful when copying values from regedit, I am not 100% sure,
' but I think that the hex-numbers in regedit (groups of two digits)
' have to be converted to integers which can be done with windows-
' calculator by converting from hex to dec


' ------- Don't change the following unless you are able to -------
' ------------ write scripts with Visual Basic Script! ------------



Dim errorCode

' validation of user input:
Dim usageMessage
usageMessage =_
        "Please use this script in the following format:"&vbNewLine&_
        "     "&WScript.ScriptName&" primaryScreen width height "&_
        "[/test]"&vbNewLine&_
        vbNewLine&_
        "primaryScreen has to be replaced by internal or external. "&_
        "width and height are the resolution for the primary "&_
        "screen. The parameter /test is optional. If it is used "&_
        "the script tries to change the registry value back to it's "&_
        "original value at the end (after 15 seconds)."&vbNewLine&_
        vbNewLine&_
        "Examples:"&vbNewLine&_
        "     "&WScript.ScriptName&" external 1280 1024"&vbNewLine&_
        "     "&WScript.ScriptName&" internal 1024 768"&vbNewLine&_
        "     "&WScript.ScriptName&" internal 1024 768 /test"&vbNewLine&_
        vbNewLine&_
        "The script has done nothing. Please start it again."
If  ( WScript.Arguments.Count < 3 ) Then
   WScript.Echo(usageMessage)
   WScript.Quit(-1)
Else
   If  ( _
           Wscript.Arguments(0) <> "external" _
           And _
           Wscript.Arguments(0) <> "internal" _
       ) _
       Or _
       ( Not isNumeric(Wscript.Arguments(1)) ) _
       Or _
       ( Not isNumeric(Wscript.Arguments(2)) ) Then
      WScript.Echo(usageMessage)
      WScript.Quit(-1)
   End If
End If

' check if ResSwitch.exe is present:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists("ResSwitch.exe") Then
   WScript.Echo(_
       "The file ResSwitch.exe is not present in the directory where this "&_
       "script is located. ResSwitch.exe is part of the "&_
       "small freeware tool QRes. You can download it here:"&vbNewLine&_
       "     http://www.naughter.com/qres.html"&vbNewLine&vbNewLine&_
       "The script is aborted. Nothing was changed.")
   WScript.Quit(-1)
End If

Dim testMode
testMode = false
If WScript.Arguments.Count > 3 Then
   If Wscript.Arguments(3) = "/test" Then
      testMode = true
   End If
End If

' choose code that will be set in registry
' depending on the selected primaryScreen:
Dim displayCode
If Wscript.Arguments(0) = "external" Then
   displayCode = externalScreenRegistryValue
Else
   If Wscript.Arguments(0) = "internal" Then
      displayCode = internalScreenRegistryValue
   End If
End If

' if test-parameter given, save current registry value:
If testMode Then
   Dim originalDisplayCode
   errorCode = getRegValue(originalDisplayCode)
   if errorCode <> 0 Then
      WScript.Echo("The current registry value couldn't be read for "&_
                   "later restoring (necessary for test-mode). "&_
                   "The error code is "&CStr(errorCode)&". You can try "&_
                   "to google for WbemErrorEnum and look the error code "&_
                   "up. The script is aborted. Nothing was changed.")
      WScript.Quit(-1)
   End If
End If

' set value in registry to change primary screen:
errorCode = setRegValue(displayCode)
if errorCode <> 0 Then
   Dim errorMsg
   errorMsg =_
         "An error occured during changing the registry value. "&_
         "The error code is " & CStr(errorCode) & ". You can try to "&_
         "google for WbemErrorEnum and look the error code up. "&_
         "The script is aborted. It is not 100% sure if the registry "&_
         "is unchanged. Possible changes are not applied until "&_
         "display settings like resolution are changed or the "&_
         "computer is restarted."
   If testMode Then
      errorMsg = errorMsg &_
         " The original registry value was "&_
         regValueToStr(originalDisplayCode)&". "&_
         "You can use regedit to verify that the registry value is still "&_
         "the original value and change it manually if it is not. "&_
         "You will find it here: HKEY_LOCAL_MACHINE\SYSTEM\"&_
         "CurrentControlSet\Services\ialm\Device0\Display1_UID1"
   End If
   WScript.Echo(errorMsg)
   WScript.Quit(-1)
End If

' change resolution (this will also apply registry changes):
errorCode = changeScreenResolution(Wscript.Arguments(1),Wscript.Arguments(2))
if errorCode <> 0 Then
   WScript.Echo("An error occured during changing the resolution. "&_
                "The error code returned by ResSwitch.exe is " &_
                CStr(errorCode) &_
                ". The registry value was changed, but this change isn't "&_
                "applied until display settings like resolution are "&_
                "changed or the computer is restarted. If the script "&_
                "was started in test-mode the registry value will be "&_
                "changed back to the original value.")
End If

' if test-parameter given, change registry value back to original value
' and apply it by changing screen resolution again after 15 seconds:
If testMode Then
   WScript.sleep(15000)
   errorCode = setRegValue(originalDisplayCode)
   If errorCode <> 0 Then
      WScript.Echo(_
          "An error occured during changing the registry value "&_
          "back to the original value. I am very sorry. "&_
          "The error code is " & CStr(errorCode) & ". You can try to "&_
          "google for WbemErrorEnum and look the error code up. "&_
          "The original registry value was "&_
          regValueToStr(originalDisplayCode)&". You "&_
          "can use regedit to change the registry value back "&_
          "to the original value. "&_
          "You will find it here: HKEY_LOCAL_MACHINE\SYSTEM\"&_
          "CurrentControlSet\Services\ialm\Device0\Display1_UID1")
      WScript.Quit(-1)
   End If
   errorCode = changeScreenResolution(_
                      Wscript.Arguments(1),Wscript.Arguments(2))
   If errorCode <> 0 Then
      WScript.Echo(_
          "An error occured during changing the resolution. "&_
          "The error code returned by ResSwitch.exe is "&CStr(errorCode)&_
          ". The registry value was changed back to it's original value, "&_
          "but this change isn't applied until display settings like "&_
          "resolution are changed or the computer is restarted.")
      WScript.Quit(-1)
   End If
   WScript.Echo("The registry value was changed back to it's original "&_
                "value.")
End If


' ------- subroutines with the most important code: -------

' changes screen resolution, width and height have to be numeric,
' function returns an error code, 0 means success
Function changeScreenResolution (width, height)
   ' starts ResSwitch.exe as new process and waits for it to finish
   Set oShell = CreateObject("WScript.Shell")
   changeScreenResolution = oShell.run (_
                               "ResSwitch.exe /WIDTH:" & CInt(width) &_
                                            " /HEIGHT:" & CInt(height) &_
                                            " /RESET", 0, true)
End Function

' reads value of HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
' Services\ialm\Device0\Display1_UID1 from registry and stores
' it in parameter value, value is of type uint8 value[] (REG_BINARY-
' representation), function returns an error code, 0 means success
Function getRegValue(ByRef value)
   Const HKEY_LOCAL_MACHINE = &H80000002
   Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
   getRegValue = objRegistry.GetBinaryValue(_
                    HKEY_LOCAL_MACHINE,_
                    "SYSTEM\CurrentControlSet\Services\ialm\Device0",_
                    "Display1_UID1",_
                    value)
End Function

' sets HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
' Services\ialm\Device0\Display1_UID1 to value,
' value is of type uint8 value[] (REG_BINARY-representation),
' function returns an error code, 0 means success
Function setRegValue(value)
   Const HKEY_LOCAL_MACHINE = &H80000002
   Set objRegistry = GetObject("Winmgmts:root\default:StdRegProv")
   setRegValue = objRegistry.SetBinaryValue(_
                    HKEY_LOCAL_MACHINE,_
                    "SYSTEM\CurrentControlSet\Services\ialm\Device0",_
                    "Display1_UID1",_
                    value)
End Function

' gets parameter value of type uint8 value[] representing value in registry,
' returns a string that represents the value as hex-numbers,
' the string-representation should be the same as REG_BINARY in regedit
Function regValueToStr(value)
   Dim result
   Dim currentByte
   result = ""
   For i=0 To UBound(value)
      currentByte = CStr(Hex(value(i)))
      If value(i) < 17 Then
         currentByte = "0" & currentByte
      End If
      result = result & " " & currentByte
   Next
   result = LTrim(result)
   regValueToStr = result
End Function
My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
Dual monitor support on Intel 82852/82855? Vista hardware & devices
Intel(R) 82852/82855 GM/GME Graphics Controller Vista music pictures video
Dual monitor support on Intel 82852/82855? Vista hardware & devices
Intel 82852/82855 has 0MB of memory on Windows Vista Vista hardware & devices
Intel 82852/82855 appears with 0MB Video memory Vista hardware & devices


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46