Re: Intel 855GME graphic driver woes....
- From: "steves" <steves_garbage@xxxxxxxxxxxxx>
- Date: 14 Feb 2006 10:33:09 -0800
Ben - thanks! That is very useful!
JREvans -
Since you know the registry keys, how about if you deny write
permission to that
key after it is all set up.
1) Login as Admin
2) Start Regedit, select registry branch you want to deny access to.
i.e. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ialm]
3) Right click, Select Permissions.
Select the desired group, (System? Users?, Everyone?) and deny
write access.
This is certainly less flexible and more Hacky and ugly than Bens
method,
but it is very easy to try and implement, even on a system in the
field.
SteveS
stevesATeyeDASHimagingDOTcom
Ben Harris wrote:
jrevanswork@xxxxxxxxx wrote:
I'm working on an embedded product using a Freetech P8F216 mobo with a
Celeron-M 1.4 processor and the Intel 855GME (ICH-4) chipset. I have
XPE SP2 and a decent image (with EWF) that works well. As for my video
woes, I am trying to use the "Intel(R) Embedded Graphics driver package
for Microsoft* Windows* Version 4.1, October 2005" driver
(IEGD_4_1_Windows), but I have two problems.
1.) If I power up the system without anything plugged into the VGA
port, the driver defaults to the internal LVDS connection, which we
don't use, and then the output never comes back to the VGA connector
unless you boot into safe mode. I found a cheesy way of getting around
this: I deleted lvds.sys from the drivers directory, so the LVDS stuff
doesn't work, but I doubt that is the best solution.
2.) The IEGD_4_1_Windows driver has a problem rendering Java stuff. I
have JRE 1.5 installed on the system, and just going to Control Panel
and clicking on the Java icon will result in parts of the dialog not
being displayed properly. It's very odd. To see if it was driver
related, I installed the big, non-embedded XP Pro driver (Driver
Revision: 6.14.10.4421, Package: 25033, Production Version
14.18.0.4421, November 9, 2005) and then the Java works. The problem
that I have with this solution, is that problem number one occurs again
and I can't just simply delete a .sys file to fix it. I have tried
disabling the LVDS output device in device manager, deleting it's
existance from registry, making sure that single display output is
selected, etc. I just can't find a solution. Could I be missing a
component in my XPE build that gets manually installed when I install
the XP Pro version of the driver?
I contacted Intel and this is what they said:
============================
1. This is expected behavior. The fact that the monitor was
disconnected is seen as a hardware change, which will revert the
settings as you are seeing. This is how the Intel(R) drivers work and
not an issue.
2. This issue has not been duplicated nor has it been reported by other
customers. Please contact Sun* Microsystems for additional information
and troubleshooting assistance.
============================
So, if I setup the intel driver to be "single display", "VGA port only"
and don't plug a monitor into the VGA port, they think it's okay to
switch the output to the LVDS connector, which isn't even used on my
system? That's not acceptable to me and I need to find a way to disable
this.
And I don't believe that the other problem is Sun's fault, since just
updating the Intel driver (from the XPE ver to XP Pro ver fixes the
problem).
Anyone have any ideas on how to get around my two problems? If I can
get the XP Embedded driver to properly display Java stuff, then I'd be
okay, because I can use my "delete lvds.sys" fix. Otherwise, I need to
figure out how to force the XP Pro driver to never use the LVDS output,
which I can't seem to do.
Jim Evans
R&D Software Engineer
We had a similar problem with one of our own motherboards a few months
back, and I managed to find a way around it by creating the C++ program
I've attached the source for at the bottom of this post. By setting the
registry settings in the Intel section, and then 'refreshing' the video
display mode, it would then enable the VGA connector if it hadn't been
plugged in during startup. I made this program run automatically once
Windows had started.
As the motherboard is our own design, we managed to solve it on a more
permanent basis by having our BIOS developer add some code into the BIOS
which makes it think the LCD panel is always closed (imagine a laptop
environment). The Intel driver picks up on this and always enables the
VGA connector regardless when it gets to Windows.
Sorry there aren't many comments in the code - it was only intended for
my own use, and we managed to solve it using the BIOS method before we
released the 'workaround', and it was no longer needed.
Hope it helps!
--
Ben Harris
Design Engineer
Arcom, Clifton Road, Direct: +44 (0)1223 403456
Cambridge CB1 7EA United Kingdom Phone: +44 (0)1223 411200
******************************************************************
#include "stdafx.h"
#include <windows.h>
BOOL CreateRegistry(char * szSection, char * szEntry, char * szValue)
{
BOOL Succeeded = FALSE;
HKEY hTopKey = 0 ;
HKEY hMasterKey = 0 ;
DWORD dwDisposition = 0 ;
LONG lReturn = 0 ;
hTopKey = HKEY_LOCAL_MACHINE ;
// Open registry key.
// Create new key if it doesn't exist.
lReturn = RegCreateKeyEx (hTopKey,
szSection,
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_SET_VALUE,
NULL,
&hMasterKey,
&dwDisposition);
if (lReturn == ERROR_SUCCESS)
{
// Write the registry value
lReturn = RegSetValueEx (hMasterKey,
szEntry,
0,
REG_BINARY,
(CONST BYTE *) szValue,
(DWORD) sizeof(szValue));
if (lReturn == ERROR_SUCCESS)
{
Succeeded = TRUE;
}
}
// Close registry key.
if (hMasterKey)
RegCloseKey (hMasterKey);
return Succeeded;
}
int _tmain(int argc, _TCHAR* argv[])
{
char DisplayDeviceMode[] = {0x01, 0x00, 0x00, 0x00};
char Display1_UID1[] = {0x5a, 0x00, 0x00, 0x01};
char Display1_UID2[] = {0x5d, 0x00, 0x04, 0x04};
CreateRegistry("SYSTEM\\CurrentControlSet\\Services\\ialm\\Device0",
"DisplayDeviceMode",
DisplayDeviceMode);
CreateRegistry("SYSTEM\\CurrentControlSet\\Services\\ialm\\Device0",
"Display1_UID1",
Display1_UID1);
CreateRegistry("SYSTEM\\CurrentControlSet\\Services\\ialm\\Device0",
"Display1_UID2",
Display1_UID2);
LONG lResult;
DISPLAY_DEVICE lpDisplayDevice;
DEVMODE lpDevMode;
lpDisplayDevice.cb = sizeof(lpDisplayDevice);
lpDevMode.dmSize = sizeof(lpDevMode);
lResult = EnumDisplayDevices(
NULL, // reserved
0, // display device
&lpDisplayDevice, // device information
0 // reserved
);
lResult = EnumDisplaySettings(
lpDisplayDevice.DeviceName, // display device
ENUM_REGISTRY_SETTINGS, // graphics mode
&lpDevMode // graphics mode settings
);
lResult = ChangeDisplaySettings(
&lpDevMode, // graphics mode
CDS_RESET // graphics mode options
);
return 0;
}
.
- References:
- Intel 855GME graphic driver woes....
- From: jrevanswork@xxxxxxxxx
- Re: Intel 855GME graphic driver woes....
- From: Ben Harris
- Intel 855GME graphic driver woes....
- Prev by Date: Re: Antivirus SW for XPe
- Next by Date: Re: Exception occurs when trying to access "System\System Up Time" performance counter in .NET (on XPe)
- Previous by thread: Re: Intel 855GME graphic driver woes....
- Next by thread: Re: Intel 855GME graphic driver woes....
- Index(es):
Relevant Pages
|