I wasn’t surprised when my dad’s laptop died on him - for months he’d been getting error messages at startup, and getting all the way to the Windows laptop was a dicey proposition. So when it finally seized up and the display died, the third of my family’s WinTel laptops to die a horrid hardware death over five years, it was great that he decided to go down the road to his local Mac dealer (indeed, the only one in northern Michigan) and get a new iMac. I figured that all the support calls I’d been getting would soon be a thing of the past.

Uh… no. Not yet, anyways.

Getting up and running with Mail and IE was easy enough (no, it didn’t have Safari pre-installed), but we kept getting dropped by Earthlink’s dial-up. I was out of my element here, since I haven’t relied on dial-up for years. Unfortunately, in remote Torch Lake, Michigan, the cable company is in no hurry to offer cable-modem service, and DSL is almost certainly impossible. Still, a few hours of phone help from Earthlink and Apple seemed to clear things up.

But then he called me to say that when he sent a big (1.5 MB) PDF file as an e-mail attachment, he’d constantly get a server failure part-way through and the file would go back to his out-box.

This is where having a supportive Apple community helps out. I posted a message to Apple’s support boards, which quickly generated a response suggesting I look into resetting the MTU (Maximum Transmission Unit) value, a low-level networking config. Researching this, I found an article on Mac OS X Hints that described a one-line call to ifconfig to reset the value, and in the feedback, someone posted a good tip for using different packet sizes for ping to find an optimal value.

Ordinarily, investigating this over the phone would be a nightmare, but that’s where the Unixness of Mac OS X pays off. I had my dad create a user for me on his iMac, dial-in, start an ssh server, and tell me his IP address. That allowed me to ssh into his iMac and get a command-line. Pinging with common MTU values (576, 1452), I found we were getting massive packet loss, up to 70% at higher MTU values. I guess that’s what happens when you’re out in the woods and can only get 24Kbps dial-up.

I finally found that I could eliminate packet loss with an MTU of 200, so I set that temporarily with ifconfig and had him send his attachments. Everything started working.

Granted, now I have to find a way to make that MTU value permanent, and maybe I can find a slightly more optimal value, but the process went a lot faster by allowing me to get in with a command-line.

I also wonder why Mac OS X fails so badly off the shelf - does Apple not test a low-bandwidth dial-up configuration? And why can’t a proper MTU be auto-determined at the time a dial-up connection is established? And why is any end-user ever responsible for this value - that’s like expecting me to calculate torque ratios for my car’s gearbox before driving to work. I think I’ll file it as a bug.

Still, for such an obscure problem, this wasn’t too bad to work through. Apple community, unix toolset. Nice combination.

Surely someone has something important and useful to say about this hideous little MTU config. Let’s have it.