Posts Tagged ‘envctrl’

Update on Sun E250/E450 environmental monitoring

Wednesday, June 28th, 2006

As regular readers will know I’ve been helping out with a driver to support the environmental monitoring hardware found in Sun’s E250 and E450 servers for a while – mostly reverse engineering and testing of the work done by Eric Brower. However as Eric is a little short on time at the moment, I’ve started to get my hands dirty for the first time and thanks to people doing almost instant testing of the patches I’m releasing, things are progressing really well.

I’m now hosting a Subversion repository for the driver and have also put up a page giving a few details.

Over the last week I’ve ported the driver to the 2.6.17 kernel series which was certainly an experience, given that I’ve never done any real kernel (or C!) development before. I can now understand why people moan about not having a stable kernel API — laziness. All the changes I had to accommodate going from the 2.6.11 to the 2.6.17 series were designed to provide more functionality and/or make life easier – I think it would be insane to slow the progression of Linux simply to keep a few developers happy (most of whom work on proprietary drivers and would like to be able to just write a driver and leave it unmaintained forevermore).

In addition to the porting, I’ve fixed a stack of bugs reported by the guy currently testing things for me (who I know only as ‘Eki’) so compilation with gcc 4.x now works, as does static compilation and static usage – the driver is essentially in two parts where one has to be loaded before the other, which wasn’t happening when it was statically linked. I had to ask on LKML to find the solution to this and was given a lengthy explanation of how to do it by Arjan van de Ven.

It’s great to see the community working so well – without it, this driver certainly wouldn’t exist.

As far as the driver is concerned, the next steps are to implement interrupt handling then clean-up the code a bit. That may take some time, but once that’s done the driver can start its journey towards being merged into Linus’ tree and becoming part of the kernel proper.

While I’m on the topic of Linux kernel development, it’s great to see a lot of work going on at the moment to support Sun’s new sun4v architecture (for the UltraSPARC T1 processor), mostly being done by David Miller. Naturally I will almost certainly never own such an exciting (both in terms of technology and philosophy – the CPU is GPL’d as regular readers here will know) piece of hardware since it’s rather out of my price range, but the side-effect of this work is that improvements are being made to SPARC64 support in general which benefit people like me with older Sun hardware. I don’t know whether Sun are employing David or just providing hardware, but in either case, thanks Sun!

Update on E450 environmental monitoring

Friday, August 26th, 2005

Those who’ve read my blog before might remember that I’m working with a Linux kernel developer to help him write a driver for the environmental monitoring features of the Sun Ultra Enterprise 450 server.

We’ve come a huge distance and Eric said yesterday that we’re approaching being able to release the code for further testing once it’s been cleaned-up a bit. At the moment we can dynamically set fan speeds depending on the temperature – this was the most important and time-consuming feature to implement. Without this driver the fans run at full speed which is a real noise; now the machine probably isn’t any louder than the average desktop machine. We can also tell when fans have failed, determine how many PSUs are fitted and hopefully soon determine their status as well. Eventually we’ll also be able to determine when disks have failed and set the disk LEDs and front panel LEDs appropriately as well as respond to the various keyswitch positions.
This may not sound like much, but when you consider that there was no documentation available from Sun and everything had to be reverse-engineered, it’s a huge task. This has been a work in progress for nearly 3 months so far.

There was however nearly a casualty… my machine. At one point Eric had been poking at it via SSH and had inadvertently stopped all the fans. About an hour later I discovered that the machine was very, very hot and creating that all-too-familiar smell of electrical burning…
Amazingly the machine survived and was up and running a few minutes later – I had to turn it on again to get the fans going. As it was working and had passed a full diagnostic, I wasn’t too concerned about it. However the other day I took the case off and saw how the plastic air-flow guides fitted around each CPU had melted onto their respective heatsinks. Bear in mind that these are designed to withstand temperatures of 70°C and above. I took some photos of the mess today, as I removed the air-flow guides completely. Unfortunately this now means that the cooling isn’t as efficient as it was designed to be and the CPUs are running hotter than they otherwise would, but hopefully I can get some replacements.

I’m very happy with how things are progressing and with any luck I’ll soon be able to put my server into production use using the new driver.

Why I love Free Software

Sunday, June 5th, 2005

Those who read my blog regularly will remember that I recently acquired a Sun Ultra Enterprise 450 server. Now I was going to run Solaris 10 on it because of Linux’s lack of support for the machine’s environmental monitoring (envctrl) hardware which means that all the fans run all the time which is a real noise.

I decided that I couldn’t live with Solaris. As a Debian user, I was used to having a nice easy package management system which makes installing new software and upgrading as easy as a single command. Solaris sort-of has this, but there is a lack of packages which means it isn’t really adequate. I really, really don’t want to get into a state where I’m compiling and managing packages manually (I’ve done it before, I ain’t doing it again). There were some things I liked about Solaris – I was especially impressed with the ease of configuring software RAID using Solaris’ administration tool (I forget what it’s called), but at the end of the day I needed something I could manage easily and Solaris wasn’t it.

So now I had a dilemma. I couldn’t run Linux and I couldn’t run Solaris. Yes there are other Free operating systems which would run on the machine, but they don’t support the environmental monitoring features either. In desperation I sent a message to the sparclinux and debian-sparc lists asking if anyone would care to code the support into the 2.6 kernel in exchange for $100. After some discussion it became apparent that the problem was not a lack of motivation for someone to write the driver: a developer simply needed access to a machine or someone who would test patches. So I’m currently working with Eric Brower and testing the patches he is sending me at least once a day. He’s been working on it for the past week and at the moment we’re debugging the temperature readings. At the rate things are going I expect we’ll have fan control by the end of next week. There’s also someone donating a machine to be hosted by the Aurora Linux guys which Eric will hopefully be able to use for testing at some point.

That’s why I love Free Software. All I had to do was ask and someone has taken on the job of writing a not-unsubstantial driver for the Linux kernel.