HP ZR24w 24″ monitor resolution issue in Windows 7

I have been using the excellent HP ZR24w 24″ LCD monitor for about 3 weeks now.

While the monitor and the IPS panel that it uses are excellent there are a couple of annoying issues with the monitor:

  1. An high pitch buzzing or humming noise. It’s very faint but definitely there. I think most people wouldn’t be able to hear it.
  2. When the monitor is turned off and turned on again Windows detects it as low resolution monitor before high resolution kicks in.

I seem to be able to hear the buzzing but almost nobody else can hear it. In any case there is not much that can be done about the buzzing noise.  All my monitors have had some kind of high pitched buzz. You only notice it if you are really sensitive to high pitched noise and if you pay attention to it.

The other problem however is hard to ignore. When the monitor is turned on using the power switch, Windows decides to resize all your windows to 1024×768 resolution before it switches to 1900×1200. So you end up with monitor’s native resolution but all your running app windows have been resized to fit 1024×768. This doesn’t happen when the monitor wakes up from sleep but I have a habit of turning off the monitor when I’m away from the desk for a longer period.

After a lot of searching there wasn’t any conclusive answer. A lot of people were suggesting a display driver issue but that seemed unlikely as this didn’t happen on my old monitor. So I decided to poke around with the OSD settings. I tried a factory reset but that didn’t fix the issue. After a lot of experimentation and changing a lot of settings I hit the jackpot.

Solution:

  1. Hit the menu button on the monitor to bring up the OSD menu.
  2. Select the ‘Source Control…’ option.
  3. From the Source Control menu, select the ‘Source Detection’ option.
  4. From the Source Detection menu, select the ‘Always Active’ option (the default is ‘LowPower’, which seems to cause the problem)

That’s it. Once you set the ‘Source Detection’ to ‘Always Active’, Windows won’t resize your running application windows when you turn the monitor on.

, , , , ,

No Comments

Error LNK2019: unresolved external symbol

After upgrading a VC6 project to Visual Studio 2010 we were getting this error.

error LNK2019: unresolved external symbol "public: class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > __thiscall MyClass::MyMethod(void)" (?MyMethod@MyClass@@QAE?AV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ) referenced in function "void __cdecl MyFunction(class ATL::COleDateTime,class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >,class CStringList &)" (?MyFunction@@YAXVCOleDateTime@ATL@@V?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@2@AAVCStringList@@@Z) C:\Source\MyProject\MyModule.obj MyProject

Strange error, easy solution: make sure you are using Unicode character set in your project properties. Under: Project Properties > Configuration Properties > General > Character Set = Use Unicode Character Set.

, ,

No Comments

MSI error “HRESULT: 0×80131043″ when installing an Assembly in GAC using WiX

Recently we ran into this issue in one of our library installer. The installer installs a few .NET assemblies in the GAC. Running the installer with the verbose switch (the /lv switch of msiexec.exe) generated the following diagnostics information…

MSI (s) (D8:AC) [13:33:48:690]: Executing op: End(Checksum=0,ProgressTotalHDWord=0,ProgressTotalLDWord=13080053)
MSI (s) (D8:AC) [13:33:48:691]: Note:
1: 1935
2: {DEBFA5D6-3396-4840-884E-71A2E1D743E9}
3: 0x80131043
4: IAssemblyCacheItem
5: Commit
6: Company.Library1,version="1.1.0.0",culture="neutral",
publicKeyToken="4374567845674567",processorArchitecture="MSIL"
MSI (s) (D8:AC) [13:33:48:691]: Note: 1: 2205 2: 3: Error
MSI (s) (D8:AC) [13:33:48:691]: Note: 1: 2228 2:
3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1935
MSI (c) (E8:84) [13:33:48:694]: Font created.
Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell DlgMSI (s) (D8:AC) [13:34:06:559]: Note: 1: 2205 2: 3: Error
MSI (s) (D8:AC) [13:34:06:559]: Note: 1: 2228 2:
3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI (s) (D8:AC) [13:34:06:559]:
Product: FooBar (1.0.0) -- Error 1935.
An error occurred during the installation of assembly
'Company.Library1,version="1.1.0.0",culture="neutral",
publicKeyToken="4374567845674567",processorArchitecture="MSIL"'.
Please refer to Help and Support for more information.
HRESULT: 0x80131043. assembly interface: IAssemblyCacheItem,
function: Commit, component: {DEBFA5D6-3396-4840-884E-71A2E1D743E9}
Action ended 13:34:06: InstallFinalize. Return value 3.

 

Looking up the HRESULT value 0×80131043 there were some suggestions that it’s the result of a possible component GUID clash – two components with the same GUID – searching the WiX script we couldn’t really find any GUID duplication.

In our case however it turned out that we had created a “DEBUG” build of the product and the installer. Switching to release configuration in Visual Studio and generating a new release build solved the issue. Not sure why the error only happens in debug builds but in our case we rarely have to use the debug install. Putting this up here as a reminder, so it might help people in similar problems with WiX generated installer and .NET assemblies.

, , , , , ,

No Comments

PowerExt v1.0 (Alpha 1) released

I have just published PowerExt. It’s a Windows Explorer add-in written in C++. Primarily targeted at programmers, it adds an additional .NET tab to the File Properties dialog. For .NET assemblies (DLLs, EXEs) it can display information such as assembly name, assembly version, public key etc in Explorer.


PowerExt is packaged in a simple MSI installer. There are builds for both x86 and x64 editions of Windows in the zip file available for download. The x64 build is tested on 64bit Windows 7 with .NET 3.5 SP1 and x86 build is tested with Windows XP .NET 1.1.


PowerExt File properties dialog

, , ,

No Comments

Wiping Intel X25-M SSD to restore performance

I have been using the excellent 80GB Intel X25-M SSD for about 3 months now. Performance-wise it was quite simply the single most noticeable hardware upgrade after upgrading to dual-core CPUs years ago. I use it in my Dell Studio 15 laptop. Now the laptop isn’t exactly a slow laptop (Intel P8600 Core 2 Duo, 4GB RAM and ATI 4850 GPU) but I could definitely appreciate the near instantaneous loading of applications after upgrading to X25-M. The laptop booted to desktop in under 25 seconds and you could be browsing over wireless in just over 30 seconds. After a cold boot even resource hungry apps like Visual Studio launch as if they were just being restored from RAM. The system was just all-around snappy.

Now all is not well in the SSD land. Intel X25-M, like all the other SSDs out there suffer from performance degradation over time and it depends upon how much you use the drive. You can read about all the technical analysis in the excellent AnandTech article about SSDs. My usage is mostly programming using Visual Studio, building large projects and testing software under Virtual Machines, so I stress the drive a lot more than an average user would over 3 months.

During the past week or so I started noticing that the laptop was becoming slower, was beginning to freeze at random times and sometimes the boot took 4 minutes instead of usual 30 seconds. I have the generation 1 or G1 X25-M SSD. It is actually an A-Data rebranded X25-M but just the label is different. As far as I know the Intel X25-M SSDs are rebranded by A-Data, PQI and Kingston. I had already installed the official Intel firmware upgrade that addresses extreme slowdowns over a period of time. So I started looking for ways to fix the issue. First thing I did was reinstall Windows 7, which didn’t fix the issue, in fact it probably made things worse. Next a full format and reinstall, still no luck. A lot of people seem to think a full format will restore the SSD to factory performance but it just didn’t work in my case. Then I found that there is a utility called HDDErase, which was supposedly used by review sites to restore performance of their review units. I tried running various versions of HDDErase from a bootable CD but it just froze every time. I even tried the IDE mode instead of AHCI but it made no difference.

HDDErase would just not work on this laptop. While looking for a replacement to HDDErase I came across a few posts describing the ATA Secure Erase command to completely wipe SSD. After some searching I found this excellent ATA Secure Erase wiki article on Kernel.org that described in detail how to wipe the Intel X25-M using an in-built Linux utility – the utility was: hdparm. When a secure erase command is issued to an SSD all its cell are marked as free or empty. Just what I needed to restore performance of my SSD.

The haparm utility is part of most Linux distributions, so that part is easy. I used Kubuntu 9.04. There is just one problem using hdparm to secure erase SSDs: hdparm requires that disk that you want to wipe be a ‘non-frozen’ state – the 1st step in the Kernel.org wiki article. Almost all computer BIOSes will ask all attached disks to freeze themselves when your computer boots up. With the disks in frozen state you can’t use hdparm to secure erase. You can confirm this frozen state by following the 1st step in the Wiki article. The 1st step mentions unplugging and plugging your disks to workaround this issue.

What I did was open up the bottom plastic panel of my Dell Studio 15 laptop and removed the screws that hold the SSD in place. I then booted the laptop with Kubuntu 9.04 Live CD. I had to use the safe graphics option as Kubuntu doesn’t seem to like the ATI GPU in this laptop. Once I was at the desktop of the Kubuntu Live CD I unplugged the SSD by sliding it out gently and then plugging it back in a few seconds later. Since it’s a SATA disk, it is reinialized by the system and Linux detects it again as /dev/sda device but this time it is in unfrozen state, which will allow you to follow the rest of the steps in the above wiki article and restore the performance your SSD. Make sure your laptop is on AC power to avoid any low battery issues, when you are doing this. On my laptop the actual secure erase step took only 37 seconds. The SSD has now gained its performance back, it is just as fast as it was when I first installed Windows 7 on it after purchasing the disk.

Unfortunately this means that as good as the first generation Intel disk it is not immune from flash memory performance degradation even after the 045C8820 firmware upgrade. Once the disk is in a state when it has written to every flash memory block, it will slowdown. It still handles the slowdown better than any other SSDs out there but the problem is still there.

The newer 32nm X25-M G2 disks should improve this situation because they will support the ATA TRIM command via a firmware upgrade. The G1 owners, like myself, are out of luck, as Intel has has no plans to release any more firmware upgrades to for G1 disks. As an unfortunate owner of the Intel G1 disk, I will have to resort to doing the ATA Secure Wipe every few months. I will probably find myself taking a full disk image, doing the Secure ATA Erase and then restoring the disk image back to restore the performance. Thanks to the ata.wiki.kernel.org article, we will at least have the ATA Secure Erase as a last resort option.

, , , , ,

No Comments

Quake II on Windows Vista 64bit

Just had an urge to play one of my favourite games: Quake II.

I am using Vista 64-bit with SP1. I put the Quake II CD in the drive, run the setup.exe, get to the initial green screen. So far so good, now I click on the Install button and I am immediately greeted with the following error: “Severe: Could not load q2btns.dll”

Quake II Installer Error on Vista

Tried running the setup with administrative privileges and still no luck.

Vista didn’t like the Quake II installer but it turns out that the Quake II installer doesn’t do a lot of work anyway. It merely copies all the files and creates a few shortcuts. So if you want to play Quake II on your Vista system then from the Quake II CD you can just copy all the contents of the ‘\Install\Data’ to a folder on your hard disk and then manually create a shortcut to quake2.exe. That’s it. The game itself has no problems running under Vista 64-bit.

[Update: 20th April 2011: This also applies to 64bit Windows 7]

No Comments