Chevy Cavalier 97 oil light flickering

January 15th, 2007

This might be the worst of the worst fears. You change your oil before a long road trip. You get off the highway and tooling around the neighborhood, there goes your oil light when idling at a stop sign. Kill the car and restart it, and all seems well for a few minutes and there it is again. Get out, check the oil which is full, and wonder what the heck is going on. Assume the new oil filter must have been bad and change the filter, only to end up with the same intermittent oil light. Well, I shouldn’t say intermittent, because it happens at low RPM and at high engine temperature, the same preconditions that would give you low oil pressure if you had a weak oil pump or excessive bearing clearance.

Well before you start fearing the worst, if you are sure the oil level is fine, the oil is not contaminated and that there can be nothing wrong with the filter, the next place to look is the oil pressure switch that sends the signal to the oil light. The way the switch works is that oil pushes on it until it turns off. Sufficient push on the “inside” of the switch from high oil pressure will turn off the light, while insufficient push from low oil pressure will allow it to remain on. Well, if the pressure switch is dripping oil from the plug side, that is your first sign something is wrong with it. The diaphragm internal to the switch is supposed to keep the oil on the engine side. If the oil gets through onto the electrical side, it will foul the connectors and give an intermittent connection. Coincidentally, the conditions for the oil getting through the diaphragm into the plug are the same as those that would give you an oil light on a tired engine: fresh oil and a hot engine at idle. Also, when the diaphragm begins to leak, that means that some of the pressure on the engine side is escaping through the diaphragm instead of pushing on it, meaning that the oil pressure will be sensed consistently lower than its actual value, and so the oil light will come on at times when the real pressure is actually fine.

The fix is to replace the switch. It costs 12 bucks at a parts store. You need a 1 1/16 inch deep socket to remove the old sender and install the new one. If the new sender did not come with teflon or similar sealer on the threads, use appropriate plumbing thread sealer before installing. Also, clean out the electrical plug with solvent and blow clear with compressed air to clear any oil from it that might foul the connection.

Honda wishbone suspension

January 15th, 2007

I was surprised to find out that on the “wishbone” front suspension in the 90-93 Accord among other Honda cars, the caster and camber are not adjustable. Hence, you do not have to worry about having an alignment done after replacing struts, ball joints, control arms, bushings, etc. If you want to replace the tie rod ends, you can mark their position on the tie rod to avoid needing the toe set. All in all, a very convenient suspension to work on, and since mine had a broken spring and two bad upper ball joints, that is a good thing.

An economical way to have the struts done is to buy all the replacement parts yourself (preferably brand name struts such as Monroe or Gabriel at the low end and KYB at the high end, and brand name suspension components with new fasteners and a lifetime warranty from Moog). I buy all of this stuff from O’Reilly who also offers a farm discount if you are into that sort of thing. Pack the new parts in a sturdy cardboard box with the old struts and start calling around the “Mom n pop” repair shops. Eventually you will find one that will allow you to bring in the box’o’struts and they will rebuild them with the new hardware for 20-25 dollars a piece.

So instead of a $1000+ suspension and brake job, I got
$93 – 2x Monroe strut cartridges
$25 – 2x Monroe upper strut mounts 901940 (cheap because these struts have no bearings as in a normal MacPherson suspension)
$40 – 2x Moog strut boot kit K9306
$72 – Moog front springs 9258
$174 – 2x Moog upper ball joint K9815,K9816
$20 – Brakebest front pads
$13 – Brakebest rear rebuilt shoes
$12 – Brakebest rear hardware kit
$5 – Brake fluid
$45 – Strut labor
Free – Working on a day off
——–
$499 less than half price, and lifetime replacement on everything except the strut cartridges.

Loaned a 2 jaw “pitman arm” puller from Autozone to separate the ball joints from their respective spindles.

The stabilizer bar bushings were close to new already from previous owner. I did not replace the lower control arm bushings, lower ball joints, or tie rod ends. Those can all be done at a later point without disturbing the alignment. Smear the ball joint boots, strut boots, tie rod ends, axle boots and bushings with non-petroleum grease and everything should be good to go another 100,000 miles at least.

Compressed file archives

January 15th, 2007

Would like all of the following:
– Fast listing of archive contents with file metadata
– Fast retrieval of an individual file
– Fast retreival of a specific address in the input stream

Each compressed block should have metadata such as starting block address, filename and MIME type, and length of block.

Christianity and its patriarchy

January 2nd, 2007

Christian doctrine asserts that woman was created from man, and therefore concludes woman should be subservient to man.

What if it were pointed out that all egg cells have a XX pair of chromosomes, making every zygote by default female? The only thing that can be done to change this default state is for a male to contribute the Y chromosome that could potentially lead to the embryo becoming male at some indeterminate point after conception.

So, using the same logic that derives patriarchy from the creation myth of Adam and Eve, we can instead utilize known scientific fact to construct an argument for matriarchy!

Sexual Differentiation @ Wikipedia

Viewsonic G810 missing colors

December 30th, 2006

Common failure point is Motorola MHW3628 triple CRT driver IC on the HV8SA neck board (big IC in blue package). To verify, swap colors at connections with video board. The IC is very expensive ($75) from parts vendors. The one purchased by “customer” turned out to be defective, but no returns were possible. With the “new” IC, the monitor would not power up if the neck board was connected. I ended up sourcing another used neck board for around $25 (make sure it is the same part number) and this worked in the end.

Replacing Hammond M2 run motor

December 30th, 2006

So, I got this Hammond M-2 tonewheel organ in trade for some labor. The power cord was almost rotted off. So I replaced it with a generic power cord from local hardware store.

So, going to start it up finally, the starter spins but only catches about half the time. That isn’t the real problem though. After the starter catches, I turned on the run switch, and could hear the amplifier warming up. If I continued to hold the start switch, I could hear the tone generator but the sound was out of tune and sickly sounding. But if I released the start switch, the tone generator slowly ground to a halt with a gradually decreasing pitch.

Based on the M-2 reference manual and Hammond stuff on the web, I suspected a problem with the run motor. The run switch was working because the amplifier was coming on. No motor was seized because the TG shaft was spinning freely (and could be spun freely by hand).

I unplugged the power cord, removed four screws from the shield near the middle, and loosened four screws at the top of the shield, and removed the shield. The scanner (round thing with screws around the edge) and run motor are on the left. The run motor turns the scanner with a gear that penetrates the scanner housing. The run motor turns the tone generator shaft through a ball joint plate anchored by 2 springs to the tone generator’s flywheel.

To test the run motor, desolder the two wire pairs (rightmost terminal, and fourth rightmost terminal). Use an ohm meter across the two pairs. If the ohm meter reads zero, then at least one motor winding is shorted. If the ohm meter reads non zero, then your problem is elsewhere, perhaps bad solder at the switch or at the motor terminals. My ohm meter read zero, so I knew the motor was toast.

I acquired a used run motor for $20 on the HAMTECH list. When it arrived, I tested it to make sure it was not shorted, and then proceeded to install it.

I first removed the 4 nuts attaching the run motor to the floating TG cradle. Then I was able to disengage the run motor shaft coupler from the TG shaft and remove its two springs. Finally, remove 3 screws that couple the vibrato scanner to the run motor, and separate the two pieces, being careful not to break any oil wicks that are not already broken.

Now, what can be a real problem is those old oiling wicks. They are made of cotton thread and over time simply decompose. There are two wicks that enter the vibrato scanner housing, and one wick oiling the shaft on each side of the run motor. All of these wicks need to be intact, and have one end in the oil tub on top of the run motor. I repaired these broken wicks by going to the store and buying a spool of 100% cotton thread, then tying a piece of new cotton thread to the broken piece of wick. (This is easiest by first making a loop with the new thread, then placing it around the broken wick and pulling it taut.) Then, to get the wick into the oil tub through the passages, use a needle to start the thread into the passage, then a small straightened paper clip to finish ramming it through. Do not pull the knot into the passage.

Then finish reinstalling the 3 screws that couple the vibrato scanner to the run motor (installing the oil tub onto the new motor at the same time). Reinstall the run motor to the shaft coupler with the 2 springs, then simultaneously engage the coupler to the TG shaft while aligning the 4 run motor studs into the bracket holes. Push it together, and reinstall the 4 nuts.

Solder the run motor wire pairs to the same terminals you removed them from (the polarity is irrelevant). Use a low flux solder and make sure the terminal is thoroughly heated so you don’t get a cold solder joint.

Plug in the organ (being VERY careful not to stick hands, tools, etc into the exposed area since live AC is in there), and test it by starting it and flipping the run switch. Mine worked perfectly immediately. Reinstall the shield, tightening all the screws, and pat yourself on the back!

A resilient filesystem

December 25th, 2006

– Stable filesystem bookkeeping information should be replicated throughout the disk (such as ext’s backup superblocks).
– File UUID is updated for each file chunk whenever a new block is written.
– All file chunks should be tagged with metadata such as name, MIME type, and UUID, so that corrupted pointers do not prevent the file data from being located with a sequential scan.
– Each file chunk, as well as the entire file, has an embedded CRC that can be used in recovery as well as in detecting hardware (CPU, memory and/or disk subsystem) failure on the fly if enabled.
– User can choose the amount of parity redundancy.
– Data should be striped such that physical failure events are minimized by the parity information. Seek time profiling can be used to automatically determine the striping characteristics. This also ensures that a sequential overwrite does not lead to catastrophe.
– Directories point to files by UUID as well as by inode. Then directories can be reconstructed in a sequential scan.

Compiling a Linux kernel with distcc

December 14th, 2006

Distcc with different architecture hosts

You may notice some strange problems when using distcc on mixed architecture machines. Especially when one of your machines is amd64 and the other i386. The object code that is output is mixed depending on what the output of gcc on each machine is, because distcc just calls the system gcc. Well, how can we make this more robust? In /usr/lib/distcc, there will be files named with GNU configuration strings such as /usr/lib/distcc/i486-linux-gnu-gcc. If you invoke make with CC=/usr/lib/distcc/i486-linux-gnu-gcc instead of CC=distcc, then distcc will only run this compiler if it exists. So this forces the remote hosts to have a correctly configured compiler for this build or they will reject the requests.

Distcc building a Debian kernel package

Here is how to use distcc to build a Debian kernel package using make-kpkg:

$ DISTCC_HOSTS="localhost remotehost1 remotehost2" CONCURRENCY_LEVEL=4
MAKEFLAGS="CC=/usr/lib/distcc/i486-linux-gnu-gcc" fakeroot make-kpkg \
--revision=1 --bzimage --initrd kernel_image kernel_headers

Comparison of Microsoft Dfs to AFS

December 12th, 2006

Similarities

  • Both DFS and AFS use a volume location server to present many spatially-disparate server volumes in a single tree
  • Both DFS and AFS support strongly encrypted authentication methods

Benefits of DFS compared to AFS

  • DFS has full incremental snapshot capability instead of AFS’s single backup volumes
  • DFS client support is built in and supported by Microsoft on NT-based Windows; the AFS client must be installed and supported separately
  • DFS management tools are built in to Microsoft server operating systems
  • DFS-compatible SAN appliances are readily available
  • DFS has read-write (multi-master) replication and failover; AFS only has read-only replication (though DCE DFS, a derivative of AFS, has read-write replication)
  • DFS volumes can be manually parsed and checked using standard filesystem check tools; AFS uses its own file storage mechanisms (namei and inode) that require the AFS salvager to recovery and verify, and in which files and directories appear as nonsense to someone attempting data recovery

Drawbacks compared to AFS

  • AFS supports Unix-style symbolic links and same-directory hard links
  • AFS has a unified cross-domain namespace (/afs) and standardized AFSDB record to locate servers in other cells
  • AFS encrypts transmitted file data using ‘fcrypt’, a variant of DES
  • AFS employs a local file cache on the client machine; DFS does not, making it infeasible to run applications or directly manipulate data files that are stored on a network volume
  • AFS employs UNIX filesystem semantics with few exceptions (@sys, cross-directory hard links and device files unsupported); DFS employs Windows filesystem semantics, so UNIX applications cannot create case-differentiated file names, create files corresponding to MS-DOS devices (con, aux, prn, lpt[1-9], com[1-9], nul), or create files with reserved characters in the name (such as a colon character)
  • AFS users can create and manage their own ACL groups; DFS ACL groups can only be created by domain administrators

OpenAFS and NAT

December 10th, 2006

The OpenAFS 1.4.2 client should be fairly NAT friendly. AFS only has UDP callback traffic unless you are using something experimental like Rx/TCP. Two ways to accomplish this:

1)
Set UDP timeouts to a higher value:
net.ipv4.netfilter.ip_conntrack_udp_timeout = 480
net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 900

This sets a 15 minute timeout. 30 minutes is recommended if you continue to have problems with timed out connections.

2)
Rewrite the client’s outgoing port 7001 traffic to a known “other” port that you assign.
For example, reserve port 7021 on the NAT box for this purpose. 192.168.1.5 is the internal AFS client and eth0 is the external interface of the NAT box.
Send all traffic arriving from the outside server on the assigned port to the inside client on its standard AFS callback port (7001):
# iptables -t nat -A PREROUTING -i eth0 –dport 7021 -j DNAT –to-destination 192.168.1.5:7001
Send all traffic destined to the server from the client out on the assigned port (7021) instead of port 7001:
# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.5 –sport 7001 -j MASQUERADE –to-ports 7021

Then set up Linux IP masquerading as usual. (This must be done after at least all of the above POSTROUTING lines, otherwise this rule will match first since it is more general, and none of the other lines will be used.)
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Note: If you are hopping off someone else’s wireless router, make sure traffic destined for the assigned ports, or for port 7001, on THEIR external interface is also being forwarded back to your network’s NAT gateway. Traffic destined for the designated external ports has to somehow be able to reach the NAT box that you control so that you can rewrite the port numbers with iptables.