TDS 500 600 Series (and TDS 820) Monochrome CRT Horizontal Linearity

I have a batch of TDS 620A which everything looks shiny new, but the display will stretch vertically and eventually gone unstable after turning it on continuously for a long time.

Turns out there’s a specific batch of flyback transformer (120-1841-00) on the monochrome CRT driver board (640-0071-06) that has quite a bit of infant mortality. The newer the unit looks (of the CRT tube looks shiny new without burn-in), the more likely it’s a victim of the bad batch.

The transformer is almost impossible to source (other than getting another CRT driver board), but I was able to find a Chinese supplier who makes it. It was usable, but it’s a nightmare to get it on because it’s really done with the stereotypical Chinese (PRC) manufacturing caliber.  When I received the unit, it’s a WTF moment! Leave me a comment if you want me to write about it.

The replacement transformer is only pin and functionality compatible, but it’s not a drop in replacement (not even geometrically). The characteristics are different and I had to adjust the trimmers all over the place.

I was able to get the screen width I want by adjusting the variable inductor (L105, HOR SIZE) by nearly pulling ferrite rod out, but the horizontal linearity was way off (the left side is very squeezed):

I looked into the TDS520B Component Service Manual (Same CRT board circuit diagram) and found this:

But L100 looks like this, which doesn’t seems trimmable:

The right hand side is the same L100 choke I extracted from a CRT driver board (same model) that I’ve disposed of. I saw two suspicious pieces of metal-like objects strapped on the choke on the left (installed) which I haven’t seen in other identical boards. 

Thinking that by changing the magnetic property of the core, I can adjust the inductance of an otherwise non-adjustable inductor. I took a few bits of magnets sitting on my bench and swing it around the L100 choke, the horizontal display widens/narrows depending on which pole of the magnet is facing the L100 choke.

After a few trial and error, I picked the right amount of magnet discs to correct the horizontal linearity so the squares have roughly the same width:

I guess I cracked the code! Here’s the result of correction by magnet:


430 total views, 1 views today

RTC / NVRAM in Test Equipment

HP Infiniium Series Atlas III Motherboard (Oldest generation Infinium oscilloscopes still branded as HP):

  • [RTC. There’s no exposed batteries] bq3287AMT = DS1288

Tektronix TDS Series (500, 600, 700, 800)

  • Older TDS (without alphabet suffix): Dallas DS1245Y
  • Model number that ends with ‘A’:  Dallas DS1650Y

The NVRAM in TDS series only contains the options data. Since I can reprogram the options, I can start with a blank NVRAM without reprogramming it). 

Will keep updating this page when I came across more test equipment.

310 total views, no views today

C Traps and Pitfalls

Here’s a concise paper describing common C programming pitfalls by Andrew Koening ( corresponding to be book with the same title.

As a reminder to myself, I’ll spend this page summarizing common mistakes and my history with it.

Here are the mistakes that I don’t make because of certain programming habits:

  • Operator precedence: I use enough parenthesis to not rely on operator precedence
  • Pointer dereferencing: I always do *(p++) instead of *p++ unless it’s idiomatic.
  • for() or if() statements executing only first line: I always surround the block with {} even if it’s just one line. Too often we need to inject an extra line and without {} it becomes a trap.
  • Undefined side effect order: I never do something like y[i++]=x[i]
  • char* p, q: very tempting since C++ style emphasize on pointer as a type over whether the variable is a pointer. I almost never declare multiple variables in one line.
  • Macro repeating side effects: use inline functions instead whenever possible. Use templates in C++.
  • Unexpected macro associations: guard expressions with (). Use typedef.

Did these once before, adjusted my programming habits to avoid it:

  • counting down in for() loop with unsigned running variable: I stick with signed running variables in general. If I’m forced to use unsigned, I’ll remind myself that I can only stop AFTER hitting 1, but not 0 (i.e. i=0 never got executed).

Haven’t got a chance to run into these, but I’ll program defensively:

  • Integer overflow: do a<b instead of (a-b)<0. Calculate mean by adding halfway length to the smaller number (i.e. (a+b)/2 == a + (b-a)/2 given a<b). Shows up in binary search.
  • Number of bits to shift is always unsigned (i.e. -1 is a big number!)

What I learned from the paper:

  • stdio buffer on stack (registered with setbuf()) freed before I/O flushed: use static buffer (or just make sure the buffer lives outside the function call).
  • char type might be signed (128 to 255 are -128 to -1) so it sign extends during upcast. Use unsigned char go guarantee zero extend for upcasting.
  • toupper()/tolower() might be implemented as a simple macro (no checks, incorrect /w side effects)
  • Can index into a string literal: "abcdefg"[3] gives 'd'

Mistakes that I usually make when I switch back from full-time MATLAB programming:

  • Logical negation using ~ operator instead of ! operator.

Common mistakes I rarely make because of certain understanding:

  • Forgetting to break at every case in switch block. It’s hard to forget once you’re aware of the Duff’s device.
  • sizeof(a[])/sizeof(a[0]) after passing into a function does not give array length: hard to get it wrong once you understand that array (declared on stack) has meta-info that cannot be accessed beyond the stack level it’s initialized.

231 total views, no views today

Agilent 54830 Infiniium Digital Oscilloscope Repair / Service / Upgrade 54830B, 54830D, 54831B, 54831M, 54831D, 54832B, 54832D

As time goes by, it seems like there’s quite a few small problems with the very well engineered 54830 series oscilloscope. These are all manageable (not core) problems and I believe I got the details down.

Models supported: 54830B, 54830D, 54831B, 54831M, 54831D, 54832B, 54832D
‘D’ means it’s a Mixed-Signal oscilloscope (comes with logic analyzer)
‘M’ is the military versions that’s exactly the same as ‘B’. The ‘M’ batch is for sure shipped with Windows 98.

I also support upgrading any Windows 98 based unit to Windows XP Pro.

I also have plenty of units and parts to get your problems fixed.

If it doesn’t power or boot, it might be a less severe problem than you think. Evaluation is always free. 

Trade in for a guaranteed unit

Serviced units (Motherboard corrected, replaced mechanical HDD to SSD, replaced CD-ROM with DVD writer, comes with LS-120 drive, Windows XP Pro installed, 2 years repair/exchange* warranty):

  • 54831M[$2999]: 600Mhz, 4GS/s
  • 54831M modded to 54832B [$3499]: 1GHz, 4GS/s.
  • 54832B [$3999]: 1GHz, 4GS/s
  • 54832D [$4499]: 1GHz, 4GS/s (Mixed Signal Oscilloscope with Logic Analyzer)

If your decaying unit is frustrating you, you can swap your it with the worry-free, fully serviced units by paying a $1500 difference to enjoy all the upgrade and peace of mind. 

* I’m likely to have a replacement unit for immediate exchange to get you up and running. In the unlikely event I run out of units, I’ll pay you $100/week delay if the repair takes more than 1 week, up to the full amount you’ve paid.

NOTE: This (swap) deal does not apply to units with a genuinely failed Acq board (like analog signal path/cal/trigger problems) or I confirmed that it has a failed power supply unit.

Parts cost (they are taken from fully working units, so there’s sacrifice):

  • Corrected VP22 motherboard [$699]
    [Subtract $200] if you trade in a defective VP22 (4 PCI slots).
    [Subtract $300] if you trade in a working M880 (3 PCI slots).
  • Old style interface card [$699]:
    [Subtract $200] if you trade in your working GPIB combo card.
    Old style interfaces works across the board. The combo only works on the latest acq boards.

Labor/Repair cost (all service guaranteed for 2 years). No cost if not successful:

  • Front-end problem (cannot calibrate) [$599 for first channel + $199/channel]. Parts included.
  • Cannot power up [$199]. Parts NOT included. Not charged if no actual repairs were made.
  • Boot problems [$199]. Waived if parts were bought to solve it.
  • Oscilloscope program hangs / BSOD [$199]. Waived if parts were bought to solve it.
  • Replace motherboard [$199]. Parts NOT included.

Upgrade / service cost

  • Upgrading from Windows 98 to Windows XP Pro [$499 for DIY, $699 for full service]: SSD included. This covers the self-calibration.

    If your unit comes with licenses, you will need to provide the license number (can easily do it yourself) to enable them. Can ask Keysight to look it up for you.

  • Modernize the unit [$299, $149 when combined with any repair/service/parts above]: migrate hard drive to SSD, replace CD-ROM with DVD drive, replace FDD with LS-120 drive (if applicable).

The prices are negotiable if more than one part/service is needed. 

Call me at 650-804-5024. I’m located in Irvine, CA. You’ll be responsible for all shipping costs for anything that’s not my fault.

283 total views, no views today

Does the east coast have a ‘go fig’ culture?

Nearly a year ago I went for a company sponsored training at MIT and I toured around the Boston area. My first impression was that nobody in the east coast gives a damn about ‘ease of use’ issues (apparently it’s an artistic exaggeration, but you know what I mean). The signs were often wrong (contradictory), confusing or not at conspicuous places, ranging from traffic signs (lane markings are optional, plus there are plenty of last minute turns at acute angles) to the MIT summer program registration itself (intentionally not telling you where the classroom is located before you book the hotels, and there were no signs telling you how to get to the registration if you came from the back end of the building).

Here’s a funny example:

(In case if you didn’t notice, the buttons points down. Telling the people who uses it to ‘go straight to hell’, hehe.)

I understand the people in the east coast must be very smart given that they have to dance around the mess every day. For me, I’d rather focus my effort developing algorithms or solving engineering/business problems than sorting through the mess to get the basic information I need. 🙂

198 total views, no views today

Tablet / Cell phone holder for Nissan Maxima 2001

While transferring to my new cell phone, I found a photo of my hack to create a 7″ tablet & 5.7″ cell phone holder for my Nissan Maxima 2001. It consisted of a tablet (or cell phone stand from eBay as pictured), two large binder clips and a pocket kleenex. Turns out you can use a packet of pocket Kleenex to extend the legs of the tablet/phone holder and have it snugly fit in the dummy space in the factory stereo bezel. The two binder clips was just to avoid the unit from sliding sideways. The trick is to use stick one hand of the binder clip to the gap at the sides of the front panel.


155 total views, 1 views today