Aging problem just from storage Working 6632B stored for 10 years has a failed tantalum cap

I fired up one of my 6632B stored for almost 10 years and smelled burned electronics, despite everything is functioning. I tested the unit immediately when I bought them a decade ago and it was working fine, so it’s an example where electronics can deteriorate by storing (even in temperature controlled, dry environment).

Since I see smoke, I turned everything off immediately and investigated. Turns out one of the tantalum capacitors in the processor/controller board gave in:

Loading

Wobbling rotary encoder in Agilent/HP/Keysight 6630B series 6631B, 6632B, 6633B, 6634B, 6634A, 6635A, 66332A*

6630 series system power supply is sturdy as a rock, but has a rotary encoder sticking out that it’s almost guaranteed to wobble if you buy it used.

I thought they would have known better to secure the rotary encoder with a nut so it won’t wobble (HP usually does a perfect job making their designs reliable. This one is a rare miss), so I opened it up to see what I can do about it.

My initial guess was that the solder joints were weakened as it was used to mechanically support external forces for users of the dial. But I was wrong. Here’s what I’ve found:

The weak metal strip retainers gave in and the whole rotary encoder is about to break loose! The encoder was actually still functioning before I opened the case up. So HP assumed their vendor for the mechanical rotary encoder did a good job withstanding frequent wiggling. Apparently their vendor completely failed them: the metal retainer design was hopelessly flimsy that I wouldn’t even consider using it even in light-usage applications! FAIL!

There’s a huge number of these high quality power supplies on the market because Motorola/Nokia closed down their massive operations, flooding the market with 6632Bs for years to come.

I’ll now strengthen (I came up with a solid technique to make sure the dial will never fall apart again) the 6632Bs I have for sale to businesses that needs a perfect unit (which I sell for $699/ea). If you are a hobbyist, feel free to send me a message and I’ll tell you how to do it, provided that you do not share it with anybody else (I’ll trust you). If you are a business, I can restore 6630B series to a professionally salable state starting at $499.


* Note that I included 66332A despite it’s a mobile communication DC source (66300 series) here because the guts of it is actually 6630 series. Every other 66300 series (3 Amps max) or less has a different form factor (that’s more like a 33120A) and the only odd one out of the series is 6632A (5 Amps max).

Loading

Explain XOR tricks succinctly with two properties Change detector, toggler

Most teaching materials on XOR starts from its straight definition then a bunch of recipes for exploiting XOR. It is not convenient to remember and not intuitive to come up with new tricks on our own. Instead, I’d like to describe XOR as two intuitive operations:

  1. Change detector (The logic definition itself)
  2. Toggling light switches (Flipping twice undoes it)

The second interpretation (toggling) is actually way more powerful and easy to remember than the first interpretation (definition).


With the toggling interpretation, you don’t have to think hard to come up with the four algebraic properties:

  1. Associativity and commutativity: we only care about whether the individual light switches (bits) are flipped odd (flipped) or even (not-flipped) number of times at the end of the day. When it happens in what order does not matter.
  2. Identity: flipping NONE of the switches (a mask of all 0) leaves it alone
  3. Inverse: pick only the switches that are already turned on (using itself as mask) and flip them (xor) guarantees to turn everything off (0)

The XOR swap trick can be constructed by exploiting the fact that flipping the same switch twice (at any point) reverts it back to where it started:

x y
Start x_0 y_0
Mix y_0 with x_0 x_1 = x_0 \oplus y_0 No info is lost, still have y_0 somewhere to undo if we wish.
The incumbent y_0 is used to cancel the y_0 inside x_1 to recover x_0 \begin{array}{rcl} y_2 & = & y_0 \oplus x_1 \\ & = & y_0 \oplus (x_0 \oplus y_0)\\ & = & x_0 \end{array} Since y_0 is already saved (mixed with) x_1, we don’t have to worry about losing it as long as we get to our main goal of putting x_0 in y, which will be used as a recovery key later.
Now use the x_0 stored in y_2 to unmix x_1 to recover y_0 \begin{array}{rcl} x_3 & = & x_1 \oplus y_2 \\ & = & (x_0 \oplus y_0) \oplus x_0\\ & = & y_0 \end{array}

Note that this trick is obsolete for modern computer architecture because

  • it enforces strict dependence that kills any predictive pipeline (speedup) in modern computer architecture, and
  • will yield zero all the time if you try to swap with itself in-place (same memory location), which is wrong because you expect the swap to do nothing.

Adding a check for the degenerate case (self-swap) slows the program down even further, making it worse than using a temporary storage for swapping. Therefore there’s no good reason to use it unless you have an exotic use case.

This is mainly used as a teaching device (or homework problem) to teach that XOR-ing even instances of the same variable in the chain cancels it.


 

Loading

Malware deleting TrustedInstaller.exe, therefore crippling Windows

My sister’s computer is was infected with a bunch of stubborn malware. Even after cleaning the offending files, a lot of things won’t wouldn’t work.

Windows Update, run sfc /scannow, or DISM /Online /Cleanup-Image fails with unknown reasons, which I found it somehow related to “Windows Module Installer” service not running.

I saw something weird in services.msc: “Windows Module Installer” doesn’t exist, but I know the underlying name is “TrustedIntaller” and noticed a service named as such is there, but it cannot be started, nor there are any descriptive information.

So I searched registry for “TrustedInstaller” and got to its entry. I noticed these two:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TrustedInstaller]
"DisplayName"="@%SystemRoot%\\servicing\\TrustedInstaller.exe,-100"
"Description"="@%SystemRoot%\\servicing\\TrustedInstaller.exe,-101"

It means the meaningful names and descriptions I saw on services.msc are generated by calling the underlying  service executable file with switches. I checked my “C:\Windows\servicing” and found that “TrustedInstaller.exe” is not there at all! Of course you cannot start a service where the file does not exist at the promised path (ImagePath).

I searched the hard drive and found only one instance of the file stored somewhere (like C:\Windows\winsxs\x86_microsoft-windows-trustedinstaller_31bf3856ad364e35_6.1.7600.16385_none_90e389a7ae7a4b6c) and I tried to move the file to “C:\Windows\servicing”. However the ownership and permissions to write to “C:\Windows\servicing” goes to “TrustedInstaller” account, not “Administrator”, so I took the ownership, gave Administrator full rights, then move the file over.

Everything worked after that! Just the mere trick of deleting TrustedInstaller.exe is enough to make the user miserable trying to clean the system up! “sfc /scannow” or the like requires TrustedInstaller/WIM to be working in the first place, so you cannot use it to repair TrustedInstaller/WIM problems.

Loading