Archive

Posts Tagged ‘Embedded’

The hidden world of Linux

April 5, 2008 7 comments

There are many great FOSS projects that utilise old PC hardware and give it a new lease of life. The best is desktop computing with various Linux distribution flavours like Mint, PCLinux, Ubuntu and countless others. In fact it is my considered belief that the best hardware to run Linux on is infact (almost) any machine that is at least 12 months old. It is possible, of course, to select components based on the degree (and maturity) of the specific support under Linux but this has two major drawbacks.

The first is the most frustrating; some categories of hardware have poor levels of Linux support. For example, most LAN cards are now supported natively but that is certainly not the case for wireless (wifi) equipment, particularly for some Broadcom and Atheros chipsets. Graphics cards are another great example of hardware that you have to be careful with. The best, bleeding edge graphics cards will likely not be fully supported under Linux due to the low frequency of binary driver updates from the manufacturers.

The second relates to notebooks / laptops. Whilst with PCs it is fairly easy to pick components which have good Linux support, laptops generally have proprietary or non F/OSS friendly chipsets which require tweaks or work arounds to get working. The issue is, the vast majority of the F/OSS / Linux userbase require the help of others in order to help them with the tweaks and work-arounds. Most people are not comfortable (or proficient) tweaking / compiling kernels as well as ACPI modules (or any one of the number of different patches required.)

Where Linux absolutely excels in my opinion is in embedded systems. By this I mean very low power devices or old computers which can be used headlessly for a variety of applications. Most people do not even realise they are running Linux at home in their router / modem, Freeview / Satellite settop boxes, Print / Media servers / MP3 players etc etc, the list goes on. Due to the GPL license requiring companies to release the source code of the software the produce, a few projects sprung up e.g. OpenWRT / WRT54G (followed by other organically grown projects) to modify such components. The philosophy behind these projects varied, but the common reason was normally to remove limitations and to improve / extend functionality.

Not only do such projects look to modify embedded Linux devices, but some great projects have sprung up to utilise old PCs every household seems to accumulate in order to fulfil a number of key uses. For example, comprehensive firewall distributions like IPCop or Smoothwall or NAS distributions like FreeNAS (although this is based on BSD.) These are not dirty hacked operating systems either but very mature, streamlined, low memory footprint distributions which run headlessly. Being totally administered through a web browser makes these distributions feel extremely professional and polished (even if the archaic hardware they are running on doesn’t) this being coupled by the extraordinary amount of options present really makes these projects an extraordinary example of the flexibility of Linux/BSD.

IPCop / Smoothwall / Monowall

I had played around with smoothwall before when I became interested in hardware firewalls, but after some tweaking I decided not to run it. Recently I was intrigued enough by IPCop (which started life as a fork of Smoothwall) to give it a go. I was immediately impressed by the degree of customisation and the number of configuration options which make a low powered computer suitable for use on a home network right the way upto a small/medium office network. The best way I can demonstrate IPCop is by reproducing an illustration from their Documentation describing a typical setup scenario.

Being able to completely separate the Green (protected local computers and servers) Orange (Promiscuous servers open to incoming connections from the internet) and Blue (Wifi / Wireless networks) allows for some incredible flexibility. There is a downside which I will discuss later.

FreeNAS

I have been hunting recently for an inexpensive, two disk Network Attached Storage (NAS) system. I have found that such a thing does not exist (at least in the UK Market) and whilst there are plenty one disk NAS systems, they have limited options and security but above all, being one disk systems would not be able to support RAID. There are a few types of RAID systems (which I won’t go into) but I will explain why I wanted a NAS with RAID. The RAID in question is referred to as RAID 1 (Mirroring) – what this means, is that any data one harddrive is automatically copied bit for bit to the second harddrive. Whilst this is not how the actually system works, it means that one harddrive can fail (unlikely) and the data will still be intact. When talking about pictures of friends and family as well as critical documents, I do not like to risk storing it on a single harddrive – I had one fail on me a little while back which cost me almost a year of pictures and data. The few solutions available on the market would cost around £220 for a dual SATA NAS enclosure and two good quality harddisk drives. (How I decided on these and what to look for in a Harddrive is beyond the scope of this post.)

On that basis, I considered the cost to me of setting up a software RAID using an old computer. Provided you have an old computer with at least 96Mb of RAM the only expense is the harddrives which scales based on the amount of protected storage you wish to have (e.g. 80Gb – 1Tb.) It is important to note however, that since two harddrives are being used to store the same data, you will only have the formatted capacity of one harddrive not two. Once installed and up and running, FreeNAS silently provides free and fast access to your data whilst allowing a huge amount of flexibility with regards to how that data is served. Not only does it natively support SAMBA (or SMB/CFS used by Windows), NFS (Unix implementation) as well as FTP and others. The FTP interface is so advanced you can explicitly specify which files / folders are shared and what permissions users have. This allows you to access, add / change and remove files remotely allowing you free access from wherever you are in the world. The cost of reusing and old system coupled with the cost of two IDE harddisks is a lot less than a NAS enclosure I taked about in the previous paragraph.

The Others

Home Automation (X10), media centers (Freevo/Geexbox and MythTV) and PBX telephone systems (Asterix) are great examples of other mature projects using linux. I will not discuss these in this post.

The Caveat : Power consumption

With more and more emphasis on global warming, I am getting more and more conscientious about my personal power consumption. Normally I would not be too concerned, but given the number of systems I run (sometimes for 12+ hours a day each) I am less than willing to introduce boxes which would be on for 24 hours. Whilst there are a variety of options in the distributions mentioned above to auto shutdown at prespecified times, it negates their usefulness if I have to remember to switch them on. What if, for example I am away for a few days and want to access my data or have my Media center (running MediaPortal) record something – since I shut all my equiptment down every night (I used to run it through the night running Folding at Home) I would physically have to switch it all on every morning. This obviously is not something I would be able to do remotely.

Whilst power consumption has dropped recently with the low power Core 2 Duo processors (originally based on a low power laptop processor design from Israel – Pentium M) and power saving built into hardware like AMD’s PowerNow!, do not forget that the majority of the hardware running will not have these power saving features. It will instead be based on very obsolete fabrication (fabrication scale decreases over time allowing for better power consumption and higher clock frequencies) scales which are extremely inefficient by todays standards.

Projects that modify firmware of existing low power systems (like the WRT54g router) are of course exempt from this as they draw only a few tens of Watts per hour compared to the few hundred normal PCs use even when idle. It is a shame that such systems (or equivalent running Via C7 or AMD Geode processors) are not cheap to build as they would provide all the computing horse-power required at a fraction of the power requirement.

So, I hope this has enlightened you to some of the amazing things one can do with an old system and Linux/BSD, just be aware that although there may not be high equipment costs, over a few months the running costs will start to add up. Unless you are running an archaic system (Circa 1995) you should consider building (or buying a antique on ebay) a low power system.

UPDATE: Due to the amount of attention this post has recieved, I am in the process of writing two follow up posts going into further detail on some of the points raised here. Bookmark me or subscribe and check back later 🙂