BMWs are Dumb

The machine shop called to say that three valves were bent, and they were having trouble locating replacements. I quickly browsed all the German car part sites, and most of them didn’t have any intake valves in stock, but ECS tuning did. That should have been a warning sign, but I just ordered them with overnight shipping and figured it’d be fine.

They called shortly after delivery to let me know that the exhaust valve was correct, but the intake valve was the wrong size. After much searching, it turns out that the 6mm intake valves on the M42 were only used for one year, and they’re NLA from BMW. After much searching, it turns out that Rock Auto, of all places, actually has some aftermarket ones readily available. They don’t, of course, list the valve in a part search for my car, but once I managed to find the magic part number (RV1359), they appear. And unlike most sites, Rock Auto actually lists all the relevant dimenstions in a diagram, so I was able to be sure they were the right ones before ordering. Unfortunately, while RockAuto would happily ship next day, they said they wouldn’t ship for 3 days.

Luckily, they lied, and the shop got the valves on Friday, in time to return the head to me on Saturday.

Not good as new, but hopefully good enough:

A continued annoyance when reassembling this thing: BMW can’t be bothered to mark TDC (or anything else) on the M42 crank pulley. Just… why not? Yes, the stock flywheel has a hole that lines up with a hole in the case that you slot a tool through to lock the crank in TDC, but I don’t have a stock flywheel. And you still have to locate TDC to stick the tool in. This seems like the most basic thing you do to make an engine serviceable. I’m so over BMW. Problem solved for now:

I got it mostly bolted together on Saturday evening (at least everything with sealant on it) so it could cure overnight. Finished up Sunday morning. Cranked it over to prime the oil system, got 30PSI of oil pressure on the starter motor. Then flipped on the fuel pumps and hopped out to leak-check the fuel system.

I had a geyser of fuel spraying from one of the braided stainless hoses on the firewall. It had leaked there once before, and tightening the connector fixed it. It did not this time.

I pulled the fuel hose, cut an inch off the end and reattached the AN fitting. An even bigger leak. Curious how I bungled that so badly, I did it again, and it leaked again. This time when I pulled it off, I noticed the rubber hose inside was cracked several inches. I cut it off past where it was cracked, reattached the connectors and tried yet again. This time the geyser came from the middle of the hose. At this point, I’d probably been screwing around with this hose for 3 hours, I was drenched in fuel and furious.

After looking it up, apparently it’s normal for this stainless braided rubber fuel hose to disintegrate after just 5 years? This stuff is probably as old as the original build (2007), but what the hell? OEM rubber fuel lines often last 40 years with no problems! I think the fact that it spent a year drying out when the engine was disconnected is probably the biggest problem.

Anyway, AN-sized braided fuel line isn’t something that auto parts stores seem to have in stock. I ordered a bunch of replacement stuff from Amazon, this time PTFE (teflon) which supposedly lasts longer than the rubber. But it won’t get here until tomorrow. And registration for Rally Colorado ended last night.

So, I went ahead and registered even though I have no idea the car even runs, much less drives. I have 9 days. I’m sure it’ll be fine?

That time I flew a spy plane.

Google thought it’d mention that this photo was taken 14 years ago.

Usually when it brings up images like this (taken at Jackson Hole, WY), I start to wonder about my career choices. I suddenly wondered what happened to Mesa’s Dash 8’s. So I looked up this one since its N-number (N455YV) was right there, and discovered that it eventually made its way to the U.S. Army, who turned it into a surveillance plane. And then it was destroyed in a terrorist attack in Kenya.

Presidential M42 Progress

The timing covers on the front were leaking profusely from both engines. As others have mentioned, “they do that.” That’s disappointing and annoying, but I’m not here to solve age-old BMW problems. The engine my car came with managed to completely coat the inside of my skidpan with about 5 miles of driving so, hopefully I can do better than that? The way these timing covers seal with a fiddly “profile” gasket in some places and a super thin paper/composite gasket in others is problematic. I’m normally not one to use RTV on gaskets, but it seems like anything might help here. The replacement M42 came completely coated in RTV squeeze-out as well as oil leaks, so it’s clear that RTV alone doesn’t solve the problem. I used a very thin layer on both sides of the gasket, and a bit more where the rubber profile gaskets join. The inner part of the profile gasket protruded a bit on one side after torquing the head down, so I trimmed it flush with a razer blade. The outer section of the gasket that rides between the timing covers is more problematic. It’s clearly meant to be compressed downward to (1) seal the forward edge of the gasket, and (2) provide a flush surface for the valve cover to mount to. Only, there’s no good way to apply downward tension on it. Worse, the holes in the upper timing cover are oblong, which means that you can line up the holes and bolt it together completely misaligned. I used some vice grips to compress the upper timing cover such that its top surface was level with the valve cover while I torqued down the bolts. I don’t think I’d recommend this technique as it put some ugly gouges in the timing cover, but you won’t be able to see them over the inevitable oil and dirt covering anyway:) The whole thing is a pretty unimpressive maintenance-unfriendly design.

I told myself I wasn’t going to clean any of this stuff up and just stick all back together with the outsides dirt and oil covered as long as the inside was clean, but I just couldn’t help myself and even wire-wheeled the valve cover a little bit. In any case, the engine is mostly reassembled, minus the intake and cooling stuff on this side.

I know how these block heaters are held in place, yet like an idiot, I went ahead and completely removed the bolt on the front before thinking it through. That left the nut and expanding wing bit to drop into the water jacket. And of course they’re stainless, so I couldn’t fish them out with a magnet. I spent an hour and got one piece out by tilting the engine over on the stand. I got the other one out by duct taping a piece of tiny silicone hose to my shop vac, which let me fish it out.

Anyway, shiny freeze plug installed. I also removed the German-tastic studs-welded-to-a-flange thing the exhaust header has going on. I now have 2 of these in my possession, and on both 2/3 studs break loose, but the third stays firm. There is absolutely no reason that these should be studs welded to a flange as bolt heads are perfectly accessible even when this is installed in the car. Fixed.

Some M42 Assembly

Forward progress. I’d forgotten, initially, to loctite the bolts that Josh said to loctite. I remembered to do it before the lower oil pan though, so I went back and did that, as well as the oil pickup bolts since apparently they’re problematic as well. I went ahead and doubled the lower oil pan gasket and hope that it works out.

Other frustrations–the Bentley manual talks about an oil supply check valve that goes in the block, but neither of mine had any such thing. Some internet searching found lots of other perplexed people. Apparently the part is listed, but it doesn’t actually fit unless you machine the threads in the block. Not having any interest in that, I’ve chosen to believe the parts of the internet that say such a valve was only for later years. It probably does need a valve–possibly related tow hy it takes 20+ seconds on a cold start to get oil pressure? Or maybe that’s because my oil pickup was smashed into the bottom of the pan.

I feel like there must have been more than one alignment sleeve between the block and the head, but the head came back with only one in the baggy of bits of they removed. Possible it stayed with the block and I lost it. Possible there was only one. I put it back together with one.. How misaligned could this get, anyway?

I used the cams and caps that came with my car, because the ones that came with the replacement engine looked servicable, but noticeably more worn. Some of the hydraulic lifters that came with my car had some pretty significant pitting on the surface, so I swapped the questionable ones out. They have different part numbers. I hope that works out.

I thought I’d ordered new bits for all the timing chain stuff. The old version of the guide that goes against the tensioner is NLA, but the new one is still available. Only, for some reason, it appears my new timing case had the old style installed. The difference appears to only be that the stud it pivots on is much, much larger on the new version. Not having a new stud, I used the better of my two worn ones. I’m sure it will last long enough for me to drive into a tree, right?

134911 hours

I recently fixed the local email on my Linux desktop. One of the side effects of never, ever reinstalling Debian is that things sometimes go wonky in the day-to-day upgrades and I never notice it. I last reinstalled Debian when I upgraded to a 64bit system in 2007. I’ve been running sid ever since then, which means that things break sometimes. When I decided to upgrade my hardware last week, I checked on my backups and noticed that the backup cron job hadn’t run since August. It probably took me awhile to notice because it also stopped sending me e-mail when things break.

So I fixed the e-mail. Which meant that today, it emailed me to tell me that one of my hard drives has noticed that it’s got 532 bad sectors. That’s unfortunate, but hard drives break. All the time. This particular drive is only a couple years old, so that’s sad. I started looking into the SMART data for all my hard drives, and noticed something that’s well, truly outstanding on an entirely different drive:

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Raptor
Device Model:     WDC WD360GD-00FLA2
Serial Number:    WD-WMAKH1125117
Firmware Version: 31.08F31
User Capacity:    37,019,566,080 bytes [37.0 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database 7.3/5319
ATA Version is:   ATA/ATAPI-6 (minor revision not indicated)
Local Time is:    Mon Nov 28 22:15:43 2022 MST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (  957) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        No General Purpose Logging support.
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  21) minutes.
Conveyance self-test routine
recommended polling time:        (   5) minutes.
SCT capabilities:              (0x001f) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0007   120   119   021    Pre-fail  Always       -       2541
  4 Start_Stop_Count        0x0032   099   099   040    Old_age   Always       -       1433
  5 Reallocated_Sector_Ct   0x0033   196   196   140    Pre-fail  Always       -       55
  7 Seek_Error_Rate         0x000b   200   200   051    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   001   001   000    Old_age   Always       -       134911
 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0013   100   100   051    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1349
194 Temperature_Celsius     0x0022   118   100   000    Old_age   Always       -       29
196 Reallocated_Event_Count 0x0032   189   189   000    Old_age   Always       -       11
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0012   200   200   000    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       141
200 Multi_Zone_Error_Rate   0x0009   200   179   051    Pre-fail  Offline      -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The most outstanding line there is the power-on time of 134911 hours, or 15 years. This is a WD Raptor, a 10,000RPM monster that I purchased in 2005 for $104.50. For some number of years, it housed my root partition. I’m sure it was retired from primary duty whenever I acquired my first SSD, but it’s sat in my case chugging along. I’ve kept it there because I’m weird and lazy, even though 36GB is now hilariously small in hard drive terms. It now contains a bare-bones rescue Debian system that I boot into every time my primary drive dies, or when I wish to upgrade the primary drive. Normal people would probably use a USB stick for that sort of thing, but they’re obnoxiously slow and easily misplaced. I just spent a lot of time last weekend booted off that drive, migrating the root partition from a 1TB PCIe 3.0 to a PCIe 4.0 drive.

And it works just fine. Sure, in the last 5 years it’s had to relocate 55 bad sectors, but that was probably ages ago. It has no currently pending or uncorrectable sectors. When I bought it, everyone figured that a 10,000rpm drive was a disaster waiting to happen. It’s turned out to be remarkably reliable.

This drive is a relic. It wasn’t even native-SATA. It’s a PATA drive with a SATA bridge. It’s doesn’t even have NCQ.

Meanwhile, I’m waiting hours to write zeros to the newish “bad” drive to see if it relocates all its bad sectors and pretends to be healthy again.