Re: Intel 855GME graphic driver woes....

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



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;
}

.



Relevant Pages

  • Re: hijack this startup - can someone tell me the hack i am experienci
    ... | *Registry key not found* ... | *Registry value not found* ... | Autorun entries from Registry: ... | Intel82801 Audio Driver Install Service: ...
    (microsoft.public.windowsxp.security_admin)
  • Re: usbccid driver : enable Escape command
    ... missing registry key detection and modification. ... Your second idea (filter driver) needs some more investigation for us as we ... installation could monitor the PNP notification of the device insertion ...
    (microsoft.public.development.device.drivers)
  • Re: ActivateDeviceEx doesnt work....
    ... Pointer to a string containing the registry path of the device ... registry key. ... Take a look at these Bruce Eitman's blog posts ... want loading the driver from an application. ...
    (microsoft.public.windowsce.platbuilder)
  • Re: Shared PCI NIC for KITL and NDIS
    ... registry key is already in the registry, ... It cannot deal with a PCI NIC that is used for KITL ... Unfortunately the PCIBUS driver holds an open key ...
    (microsoft.public.windowsce.platbuilder)
  • IRC Packets being generated. Dont know where from...
    ... *Registry value not found* ... Autorun entries from Registry: ... Enumerating ICQ Agent Autostart apps: ... RAS Asynchronous Media Driver: System32\DRIVERS\asyncmac.sys (manual ...
    (microsoft.public.security.virus)