[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1127
  • Last Modified:

Windows 7 Changes Screen Resolution Arbitrarily

Hey there!

I build Touchscreen PCs.  They're built very much like a laptop, with all components contained in the same case.  Recently I have started installing Windows 7 on these Touchscreen PCs, and the internal screen (LCD) supports only 800x600.  The computer (motherboard) supports 800x600 and 1024x768, and Windows 7 seems to select 1024x768 whenever it is least convenient.  And this causes the LCD to glow flat white, since it cannot display anything beyond 800x600.  This is a problem.

Resolution: have the customer connect an external monitor, and re-set the display resolution to 800x600 manually.  This defeats the purpose of the Touchscreen PC - why have a Touchscreen if it doesn't work/won't work out of the box?

To try and resolve this issue, I built out image on one of the production models, manually set the resolution to 800x600, and made an unattended.xml file containing the same resolution settings with the intent on FORCING Windows 7 to remain in 800x600 mode.  And when the customer first turns on the machine, they get a white screen, because Windows 7 "thinks" it would look better.  GRRRRRR!

This has become an embarrassment.  Is there any way to keep Windows 7 from "jumping resolution" and disabling this Touchscreen PC?  I'm sure there's a detail that I have overlooked, and I need to resolve it soonest.

Thanks (in advance)
- The Lurking LongFist
0
LongFist
Asked:
LongFist
1 Solution
 
johnb6767Commented:
If they don't support the AERO themes, you could force install a Standard VGA Driver, instead of the proper one... Maybe it wouldn't do it anymore?

0
 
David Johnson, CD, MVPOwnerCommented:
also adding a monitor.inf that has the desired resolution(s) would be a good idea.
0
 
LongFistAuthor Commented:
I'm going to explore the [monitor.inf] option: it sounds like the cleanest method possible.  Anybody have any details for that?  I'm sure it has a proper format/protocol that must be followed, lest it error out and be ignored.

Time to exercise my Google-fu, methinks.

Thanks!!!
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
The_AntmanCommented:
Your monitor is not providing EDID to Windows, or it is providing it incorrectly.

The INF file may work.  However, a firmware upgrade for the monitor panel is in order.

I am curious - the problem does not present during install?

Possible solution for you from SevenForums - this will show you how to write your own INF for the monitor.
0
 
LongFistAuthor Commented:
Maybe I haven't shed enough light on the TouchScreen PC.  I use a raw LCD with an LVDS connection to the motherboard - just like a Laptop computer does.  As a result, there is no firmware or monitor panel to upgrade: it's all in the same case, all hardware.

And yes, this problem presented itself initially at install - but the machine on which I was building the image already had an external monitor connected, so I quickly remedied the problem by manually setting the resolution down to 800x600, which allowed the LCD to display properly.  It should have kept the resolution setting, but somehow "Windows knows best", and I'm merely trying to regain control of the situation.

I've been Googling "Monitor.Inf Format", "Monitor.Inf protocol", "Monitor.Inf File", and "Monitor.Inf
File Format" with little up-to-date success.  Two very close matches were:

http://msdn.microsoft.com/en-us/windows/hardware/gg487330
http://msdn.microsoft.com/en-us/library/windows/hardware/ff568432(v=vs.85).aspx

...so I will be VERY interested in learning how to write this file (by hand) - especially if that solution allows me to keep the machine fixed at the one resolution permanently.  THAT would be the perfect solution.
0
 
The_AntmanCommented:
Here is the link I failed to include in my earlier post - How To Write An INF to force resolution

http://www.sevenforums.com/tutorials/7947-force-dvi-hdmi-resolutions-refresh-rates.html

Also, firmware applies to the device, not the container.
0
 
LongFistAuthor Commented:
Well, the motherboard is the only "intelligent" item in the mix: the LCD is connected to the LVDS for video, the inverter for backlight power, and it doesn't respond to queries from Windows.  The motherboard supports 800x600 and 10214x768, and there lies the problem.  When Windows queries the system, the motherboard replies, and it automagically "chooses" the higher resolution at the worst possible moments.

I'll need a little time to test the INF solution; I don't doubt that it works, but since the LCD is driven like a CRT I'm curious if this will work.  On the forums there was this little detail that I came across:

My monitor is a LCD connected through DVi, BTW. This probably does'nt work for CRTs.

...if that turns out to be the case, I'll be casting about for a different solution.  But hey - let's not disregard a possible solution because of a simple line of text: lemme' try it out first.

Thanks guys!
0
 
The_AntmanCommented:
Please identify the graphics chip/device.
0
 
The_AntmanCommented:
The INF file technique does not address the monitor.  It addresses the video driver.

Faking the EDID data provides an avenue for the video driver to limit/expand the range of supported resolutions.

There is a method available to set registry values.  I can only provide links because I have never resorted to this approach.  See http://www.mp3car.com/lcd-display/42122-tutorial-forcing-custom-resolution-in-windows.html

See http://entechtaiwan.com/util/ps.shtm
0
 
LongFistAuthor Commented:
Special Note: I am awaiting a new shipment of Windows 32-bit disks - we shipped everything with our latest product, and I have nothing to experiment with at present.  Should have something in the next day or so, please be patient with me.

I'll be sure to let you know how it works out: I think the Registry solution may save the day, I'll have to run a full cycle to be sure.

Thanks again!!!  (I haven't forgotten - I'm just "on hold" for a little minute...)
0
 
LongFistAuthor Commented:
Had an emergency install (RMA) come across the desk, applied the registry changes, and rebooted.  Initially, even though the registry had been changed, the machine still booted into 1024x768.  Attached an external monitor (so I could see what I was doing), and checked the registry for my changes.  Both changes were present.  So I restarted the machine again.

An it booted to 800x600 exactly as it was supposed to.  From what I can tell, after its initial futile fit with 1024x768, it began to mind the registry - it might have been a reaction to the fresh, new install - but we may never know.

Just in case the link goes away, here are the instructions:

1

Click on Start, then Run

2

Type in regedit in the Open box, then hit [Enter]

3

Expand down to HKEY_CURRENT_CONFIG\System\CurrentControlSet\Contr ol\VIDEO\{Hexadecimal number for your primary video card}\0000
Note: Under VIDEO will be one or more registry keys that have a long hexadecimal number; this is the Hexidecimal number assigned to a specific physical or logical video card. There may be more than one if video cards have been changed or a major driver update has been performed. The key that has the current setting should be the one that needs to be modified.

4

Double-click DefautlSettings.XResolution, change the Base from Hexadecimal to Decimal notation, and set the X axis.

5

Double-click DefautlSettings.YResolution, change the Base from Hexadecimal to Decimal notation, and set the Y axis.

6

Reboot
Note: If settings did not take effect, modify a different video card in the registry
Note: If monitor ceases to function upon Windows coming up, reboot and go to Safe Mode. Pull up the registry and change the settings that were last modified back to the way it was or change the resolution to a safe resolution such as 640x480.
I noticed that, within the entry for /0000 was the actual display's entry, which mirrored the /0000 entry line-for-line.  I applied the same alteration(s) to those settings as we did for the /0000 entry, and it seems to have worked, after the second reboot.

...and for every reboot since.  I have re-sealed the machine, prepped and ready to go (back) to the customer.  But I thought I'd go ahead and close this case, issue the points and thank you for such a wonderful job.

Mission successful.  Now I get to include it/pre-set it into our normal images that we "blast" out to new hard drives.  And we know that it works!  Hooray!!!
0
 
LongFistAuthor Commented:
To resolve the issue, change the default monitor resolution settings (XResolution and YResolution) in the registry at HKEY_CURRENT_CONFIG\System\CurrentControlSet\Contr ol\VIDEO\{Hexadecimal number for your primary video card}\0000, remembering that there may be multiple entries for {Hexadecimal number for your primary video card} - so it may take a little trial and error before you resolve the issue.

Also, especially if performing this operation shortly after a fresh install, it may take one or two reboots before Windows 'gets the hint' about screen resolution.  At least that has been the practice, here.
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now