The error usually went away if I turned the camera off and on again, so I just lived with it for a while. Then it started happening all the damn time, every few pictures, so I scraped together some spare pennies and got myself an EOS-60D, which is very nice - shoots video, far better screen on the back, high-ISO improvements, et cetera.
Not long after the 60D (not to be confused with the EOS-D60, from eight years earlier, when $AU2000 was a low price for a DSLR) arrived, my 20D completely failed. Every attempt at a shot now produced the dreaded flashing "Err 99" on viewfinder and top display.
I always meant to try to get to the bottom of the error, though, and just now I got around to doing it.
There are many, many sites, like to pick one at random this one, that tell you Error 99 happens when the contacts on your lens and/or the matching contacts on the camera are dirty. Or perhaps it's your battery terminals that're dirty. This may be the case, and is at least easy to remedy with a pencil eraser or a dab of metal polish. But Error 99 really is a fall-through error that just means "something outside the other error codes listed,...
...and magnificently clearly explained, in the manual".
In my case, Error 99 definitely wasn't happening because of dirty lens contacts, because the error still happened when there was no lens on the camera at all.
When I actually sat down to seriously diagnose the problem, it didn't take long. I found this excellent article at LensRentals.com, that talks about the many, many possible reasons for Error 99, and the many, many myths and legends concerning it. Some are very difficult for a home user to fix, like dead drive motors, or circuit-board stuff requiring surface-mount rework on extremely cramped electronics. If that was the problem, Canon could fix it for me, but only for about the price of a new(er) 20D on eBay, so I might as well toss the wretched thing and get a new one. Which is of course essentially what I've already done.
Aaaaanyway, I scanned the LensRentals Common Causes page, skipped the stuff mortals can't fix, and decided to see if a stuck shutter was the problem.
And lo, it was. (Which was good, because diagnosis of some Error 99s can be... time-consuming.)
To diagnose this, once you've established that the error happens without a lens, go to the Sensor Clean option in the camera menu and select it. (Modern DSLRs from Canon and some other manufacturers clean at least some dust off their sensors with a little ultrasonic shaker thing. In older cameras like the 20D, "Sensor Clean" just flips up the mirror and opens the shutter, so you can whip out the wire brush and pressure washer and clean the sensor yourself.)
With sensor-clean mode activated, just remove the lens if there's one on the camera, and look into the camera through the lens-mount ring. If you see the shiny sensor, the shutter is OK, or at least managed to open this time. If you see the matte-black shutter curtain, then there's your problem. And that's what I saw.
I poked the closed shutter curtain's segments around a little with a cotton bud - as with ordinary sensor cleaning, this made me feel like a gorilla trying to build a ship in a bottle, or possibly like a Caucasian who's too damn tall - and then removed the battery from the camera. With this problem, that's the only way to get a 20D, at least, back out of sensor-clean mode; just turning the camera off won't work, because the camera is still stuck at the "open the shutter" stage of the sensor-clean process.
Battery back in, camera back on, down went the mirror with a click, and now when I put a lens on it, I could take pictures again.
The shutter's clearly not fixed, though. It's just back to the state it was in when I didn't, quite, have to get a new camera yet. I shot a bunch of continuous-mode paparazzi pictures of nothing and got new Error 99s separated by ten or twenty images, but these ones were clearable by turning the camera off and on again. This camera, with a cheap zoom on it, is now a bit too bulky but otherwise suitable to be chucked in my backpack in place of the $40 eBay Kodak I used to have, until that got rained on the other week and became unhappy.
If the 20D gets back into the fully-wedged error-99 state when I'm out and about, I can just Sensor Clean it again and stick my finger in there to wiggle the shutter loose once more. I very much hope some of the $5000 Lens Brigade that hang around the scenic areas of my town get to see me do that, and go as pale as an audiophile watching someone fixing a $10,000 turntable with a club hammer.
You can get parted-out shutter modules for almost any model of DSLR for pretty reasonable prices; looking on eBay now I see 20D shutter assemblies for about $50 delivered. I actually have in my time managed to dismantle and re-mantle a digital camera and have it work afterwards, but that was just to clean out crud that'd mysteriously gotten into the lens assembly of a point-and-shoot; replacing a whole super-finicky module would not make for a pleasant afternoon.
There are a couple of eBay dealers, "camera-revivor" and "Pro Photo Repair", who as well as selling various camera bits will also each replace a 20D shutter for about $200. Again, this is stupid for an old DSLR that only costs about that much second hand, but it could make sense for someone with a high-end pro DSLR of similar age with the same problem.
Do any of you, gentle readers, know if there's some lubricant or other trick that may make my old 20D's shutter happier? You've got to be very careful doing anything like that to a DSLR, because oil on the sensor is Bad, and oil also catches dust and crud and sticks it to mechanical assemblies, which is Worse. Actually, many lubricants will all by themselves make a sticky shutter even stickier, owing to the tight tolerances, low mass and high speed of the mechanism.
To stick with the horrifying-shade-tree-mechanicking-of-precision-equipment motif I should probably just squirt some WD-40 in there. Actually, being serious for a moment, a tiny dab of graphite powder (which is, by the way, cheap and a very useful dry lubricant for tasks like, stereotypically, freeing up stiff locks) might work.
LensRentals say you might perhaps be able to slightly bend or otherwise modify a shutter curtain section to prevent it from binding, but they'd just send the camera in for a proper service.
What do you reckon?