Keyboard repeat rate and MSTSC/Remote Desktop

I’ve managed to find an interesting “flaw” of some kind with MSTSC and Windows, specifically in regards to keyboard repeat rate.

At work, I have my Keyboard repeat rate set via the Keyboard control panel as “Fast” (30-31 characters per second). This corresponds with the registry entry HKCU\Control Panel\Keyboard\KeyboardSpeed. At home, I have the same value set. I like a keyboard that has a very short delay (250ms is perfect), and a fast repeat rate.

I’ve noticed that at work, the repeat rate is slightly faster than at home (the delays are identical).  A friend of mine wrote a simple Win32 program which timed characters per second on a keyboard, and sure enough, my home machine outputs 20-21 characters per second.  Both my home and work workstations run Windows XP SP2.

Here’s the kicker — If I use Remote Desktop to connect from my work machine to my home machine, the keyboard repeat rate is that of my work workstation — makes sense, since I’m remotely connected. But after I’ve disconnected/logged out, the repeat rate of the remote workstation is retained on my machine at home. Well, that is until I reboot it. :-)

The bug itself is bizarre, but (for me) it’s actually useful. I like having a higher repeat rate. The repeat rate of my workstation at work is perfect.

So my question is: how exactly do I figure out what Remote Desktop is doing to set the keyboard rate, so that after a reboot I can restore that same rate?

Additionally, there’s a third-party program called Keyboard King which lets you adjust all of this stuff, but I’ve read a few forum posts saying that it can make a mess of certain keyboard input characters, and I’d rather not have some program sitting around in the systray running actively when, based on the above experience, I know there’s something internal to Windows which can allow me to have a higher repeat rate w/out third-party software.

GDI bugs with 2K/XP’s East Asian Languages option

For many (at least 7) years, there has been a bug which has driven me absolutely crazy when it comes to Windows 2000 and Windows XP. It’s very easy to explain: when the East Asian Languages check box is enabled in the Regional and Language Options, the GDI layer in Windows 2000 and Windows XP stops redrawing underlying windows properly when a window is dragged across another, or resized. The visual result is quite noticeable: leftover white lines all over the underlying window.

It honestly looks like an off-by-one bug of some kind, and is only induced when EAL is enabled. If you disable EAL and reboot, the problem goes away. The issue has kept me from enabling EAL for some time now. I’ve been able to confirm it on virtually every Windows XP Professional installation I’ve seen or done. However, on most of our workstations at work (Microsoft!), EAL is enabled and the problem does not occur.

When I brought it to the attention of some peers of mine who are more in-tune with the underlying workings of Windows, they were baffled. It’s well-known (and documented) that enabling EAL does “magical stuff” to GDI underneath, which leads me to believe the problem lies there.

The only workaround I know of is to avoid checking the EAL box, and instead extract individual Asian fonts from your Windows CD (they should be in \I386\LANG), decompress them, and copy them using Windows Explorer to your fonts folder. For example, copying MSGOTHIC.TTC and BATANG.TTC to your font folder would get you the ability to view Japanese Hiragana, Katakana, many Kanji, and with the 2nd font, Korean Hangul. Japanese or Korean input (IME) will not work, however.

Posted in Windows. 1 Comment »

Corsair Twin2X2048-6400C4 and Asus P5N-E SLI

Zipzoomfly happened to have a really great deal going on Corsair’s Twin2X2048-6400C4 (only US$63, free shipping, CA sales tax only), so I thought I’d give it a shot and compare the 6400C4 version to what I already had (Corsair Twin2X2048-6400).

Interestingly, the 6400C4 pair would cause my P5N-E SLI to randomly lock up, especially during heavy memory I/O, but occasionally during BIOS initialisation. memtest86 couldn’t even reach Pass 1%; the machine would hard lock. Windows XP would usually boot, but the instant you did anything memory-intensive (such as run Orthos for stress testing), it’d lock up. It doesn’t take an expert to quickly determine that the issue was likely being caused by some awkward memory timings.

Past experiences with Corsair memory had shown me that Corsair often tinkered with the SPD timing profiles (more on that in a moment), and was also known for changing DRAM manufacturers without any indication that such had been done. Okay, that’s not entirely true: they do have “version” numbers on their DIMMs, but they’re not always accurate. Corsair uses either Micron, Infineon, or Promos DRAM chips — and in the case of Micron, they use either older Micron chips or what’s referred to as “Micron D9″, a newer revision chip that is known to handle overclocking better — but also cause compatibility issues with some boards. Wonderful.

I won’t go into details of what DIMM SPDs contain, or the very-likely-marketing-driven SPD extensions like EPP (a bastardised profile extension created by Corsair and nVidia), but if someone asks, I’ll provide one in a future post.

The 6400C4 pair contained three SPD profiles available:

JEDEC#1 JEDEC#2 EPP#1
Frequency 270MHz 400MHz 400MHz
CAS Latency 4 5 4
RAS to CAS 4 5 4
RAS Precharge 4 5 4
tRAS 13 18 12
tRC 15 22 22
CMD Rate 2T
Voltage 1.8V 1.8V 2.1V

There’s a few interesting things about this chart, but the important two are:

  1. Lack of CMD rate on the two JEDEC profiles.
  2. Explicit CMD rate of 2T (2 cycles) on the EPP extension profile.

When the P5N-E SLI BIOS starts, it’s kind enough to show you what the CMD rate is. With BIOS settings of “Auto” for all memory timings, the CMD rate being chosen on the 6400C4 was 1T. Yes, that’s right, 1T.

This seemed, well… wrong. :-) Some other individuals (see References below), including Corsair’s own “RAMGuy” (who is a pretty low-level/technical individual to begin with), recommended to owners of 6400C4 RAM to adjust memory voltages in the BIOS.

This is not the correct solution; voltage is not the problem, CMD rate is!

It boils down to the simple question: why is the P5N-E SLI picking a CMD rate of 1T when neither the JEDEC SPD profiles nor the EPP extension profile state to use 1T?

The solution: go into the BIOS (under Advanced, Chipset, Memory Timing Setting, Command Per Clock (CMD)) and change Auto to 2T.

And voila — memtest86 ran for an hour without a single error or lock-up, and Orthos ran for 2 hours without any problem. I’ll add that the P5N-E SLI in question is running BIOS revision 0703, which is the latest-and-greatest. Oh, and the ChangeLog for the 0703 revision also states that it adds “better memory compatibility”. I’m tempted to downgrade the BIOS just to see if the CMD rate is properly negotiated…

UPDATE: I making use of the EPP profile (which explicitly states to use 2T).  Since the 6400C4 is “nVidia SLI-ready” (marketing-schmooze for “has an EPP profile”), I went into the BIOS and set SLI-Ready Memory to CPUOC 0% (thus not overclocking the processor, but gaining use of the EPP profile settings on the RAM).  I also put the CMD clock back to Auto.  No go — the BIOS would pick a CMD timing of 1T.  So the EPP profile has nothing to do with the problem.  It’s got to be some weird SPD setting on the 6400C4 memory.  Gee, thanks Corsair.

UPDATE: Almost a year later, people are still reporting this problem. I commented in a recent thread over at the Corsair Micro forums, and was able to get an explanation from RAMGuy. The problem appears to be some kind of incompatibility with a specific brand of DRAM and the P5N-E or P5N-E SLI. What DRAM manufacturer is used is entirely up to Corsair, and is very likely difficult to control. Full details are available in this post on their forum.

Related references:

Noctua NC-U6 – in practise

For a few months my Asus P5N-E SLI board had been suffering from two particular “problems”:

  1. CPU (E6600) core temperatures were significantly higher than what others were reporting.
  2. Overall system temperature higher than it should be (requiring me to keep my A/C on all day!); I use an Antec P182 case, which received incredible praise for dampening noise and providing effective cooling at the same time.

To try and alleviate #1, I invested in a Nexus LXM-8200 CPU HSF, naturally assuming the issue was too much heat being output from the processor or stock Intel HSF itself (which is apparently an atrocious HSF). After installing the LXM-8200, I found my core temperatures had dropped 2-3 degrees Celsius during idle time, which was nothing impressive. Under load, the LXM-8200 decreased temperatures by about 7-8C, which was impressive. I still use the LXM-8200, by the way. But the system temperature didn’t go down at all. Hmm…

I knew that the nVidia 650i SLI northbridge and southbridge were renowned for “running hot”, but I couldn’t find any reviews on the web which provided comparative numbers. It seems every review site skips the most important things, leaving it up to grammatically-impaired forum users to discuss such issues — not cool (pun intended). I needed a way to determine what the source of heat was, so I bought an Extech IR201 infra-red thermometer to help track down the source. A few days later, the Extech arrived, and it took me a matter of minutes to determine the culprit:

Lo and behold, the top of the stock Asus HSF read anywhere between 60-65C depending on where I focused the laser (the closer to the motherboard I got, the hotter the temperature). There’s no HSF on the southbridge, which read a consistent 60C. Hot hot hot! I quickly concluded that Asus had placed their HSF too close to the main CPU, and that the amount of heat it was giving off was probably influencing my CPU core temperatures.

Hence my investment in the Noctua NC-U6.

The first thing I noticed about the NC-U6 was the price. Almost US$30 — not cheap for something as “simple” as a chipset cooler. I purchased mine from Xoxide.com, and it took about a week for the product to arrive. It sat on my desk for 4-5 days before I decided I wanted to give it a try. I intentionally removed the P5N-E SLI from the case, as I wanted to make absolutely sure the NC-U6 would fit on the northbridge with the LXM-8200 mounted.

After a few minutes of futzing around with the arm locations, lining up the mounting push-pins with mounting holes, and triple-checking the need for the square foam used to “level” the HSF on the chipset, I concluded that the NC-U6 would work just fine with the LXM-8200, leaving about 3/4″ space between each (well within reason). I applied Arctic Silver Ceramique to the NB and did my best to install the HSF (I use Ceramique on things like chipsets, and AS5 on actual processors). Here are some things I noted about the installation process, and the installation results:

  1. The square-shaped foam which you place on the chipset has to cover some resistors which stick up from the NB PCB itself. I had concerns over this, worrying that it might cause the HSF to sit unevenly on the die… but without it, I risked damaging the surrounding NB PCB area (thus those resistors)! I decided to use the foam as per Noctua’s installation instructions.
  2. The NC-U6 can easily “wobble” from side-to-side when mounted properly, even with the square-shaped foam “level” in place. This is one of the biggest concerns I have with using this chipset cooler on the 650i SLI NB. Noctua should have included a couple different foam squares (preferably one which covered more surface area!), especially for the price.
  3. It can also rotate while mounted (this is intentional, as to give you 120-degrees of rotational room in the case your video card, RAM, or CPU HSF get in the way); however, by tightening the middle screw, you can ensure the HSF won’t rotate. Leave the screw a tiny bit loose while doing the install, position the HSF however you need, then tighten the middle screw down.
  4. Due to Asus mounting the 650i SLI NB at an odd angle (positioned like a diamond (45-degrees rotated), rather than a square/rectangle), and the location of the arms on the NC-U6, the base of the NC-U6 ends up being positioned 45-degrees opposite to the NB die. This is hard to explain with words, but I don’t have a picture to show. :-) If you try the installation, you’ll see what I mean. Anyways, it’s not something to worry about, but it likely plays a big role in regards to Item #2 above.
  5. The weight of the NC-U6 is acceptable, and even with Item #2 in mind, the HSF isn’t heavy enough to cause it to “pop off” the board once a motherboard is mounted in a case (read: vertically). In English: don’t worry about the weight of the HSF. :-)
  6. I had no issues with clearance when it came to my video card. If your video card has a very large HSF on the back side of the card, you may run into problems.

I also took the liberty of re-installing my LXM-8200 while the motherboard was out of the case, as I had some issues with the plastic expanders not feeling like they were all the way through the motherboard. As I briefly mentioned above, I used Arctic Silver 5 between the LXM-8200 and the E6600. After reinstalling everything in the case, I booted up Windows and fired up RMClock while simultaneously grabbing the Extech thermometer. After 15 minutes, I was absolutely stunned at the difference the NC-U6 made. Here’s the before-and-after chart, with readings from the NB taken via the Extech thermometer (“top” means the highest point on the HSF, and “base” means as close to the die or motherboard as I could get):

Before NC-U6 After NC-U6
CPU (idle) 40-46C 33-37C
CPU (load) 56-60C 47-52C
650i NB 60C (top), 65C (base) 30C (top), 40C (base)

Needless to say, I am a very happy camper, and the results speak for themselves. And remember, that’s using Arctic Silver Ceramique, not AS5. What all of this proves is that the stock NB cooler that Asus includes with the P5N-E SLI is responsible for increased temperatures around the system CPU.

If the 650i SLI was still the “latest and greatest chipset”, I’d recommend Asus issue replacement HSFs to any customers who complained. Though, Asus has a tendency to just throw a high-speed (read: loud) fans on chipsets to alleviate cooling problems. The NC-U6, lightweight and sporting two heat pipes, proves a fan isn’t necessary.

Other people’s reviews: