Monday, November 16, 2009

Of ARMs and MIPS

A few years ago I to ran my website off a Linksys WRT54GS. With a OpenWRT firmware and a little OCaml web app I ended up with a robust web site. I thought ARM was so cool. I bought 2 other hackable routers based on the platform(another wrt54gs and an asus wl500w).

Wireless routers + custom firmware were attractive because once one sets them up there is not much to go wrong. No moving parts, no particularly hot parts and the thing turns back on automagically after power-outages. That and the wireless router used around 5-6W of power.

A couple of years passed...
Then kernel 2.6 acquired cool features that I wanted to use (mainly fuse). But due to proprietary Broadcom wifi I was stuck on 2.6. So I sucked it up and stuck with 2.4. Soon after the wifi started misbehaving and I had to reflash back to proprietary firmware...and the problems magically went away.

I got the Asus wl500w when I moved out. It had mini-pci-e(aka swappable!) N wifi and usb 2.0 port. I thought I could replace an x86 desktop with it. I figured with a custom mini-pci-E card, I would no longer be stuck on 2.4 and would be able to enjoy 2.6 + infinite storage via USB. But I figured wrong. USB was slow(crappy IRQ handling on embedded MIPS), kernels were buggy, hard to update. Proprietary bootloaders (which differ on every embedded board) + custom board layout means that MIPS/ARM kernels are board-specific, less tested and generally more buggy. That combined with the dismal state of linux wireless made me give up on the whole Linux on non-x86 idea. I can no longer be bothered to blindly flash kernels(with weird build environments) onto quirky and under-performing hardware.

For work I have to work with Nokia N810 arm thing. It's a great little device when it works, but it often doesn't. However I can't install a modern kernel on it because of obscure hw(which is only kind of supported in mainline). Without a custom kernel I loose tight integration with my hardware, cool new kernel features, etc. So much like MIPS, ARM = funny bootloader + funny SoC configuration => waste of time.

I also have a WinMo device for work. It makes the linux situation look like heaven.

Non-x86 is an Evolutionary Deadend
So what's the point of this? I'm gonna predict the future. I think presently ARM&friends exist because so far they managed to undercut x86 at power consumption. They are also appealing to companies that design their products from the ground up, such as cellphone vendors.

I believe that the supposed onslaught from ARM nettops/smartbooks/shit is going to flop. NVidia is gonna burn through a pile of cash developing WinCE doo-dads (seriously guys, who came up with that idea?) to showcase the awesomeness of their hw(I am sure they can make good hw) and completely fail in market due to users rejecting crappy software.