I’ve wanted a huge network-attached storage box for years. Ever since I laid eyes on a small form-factor SnapServer that my employer demoed 10 years ago, I envisioned one of these on my home network. I wanted a single repository for all my media files and other data I wanted to share between my computers. Reality, and the availability of enough cash to fund the dream, kept me from realizing it.
I eventually landed a SnapServer 4100, a nice little 1U-high rack mountable box that could expand to give me just over 360GB of RAID-5 storage. The on-board chipset could theoretically handle drives larger than 127GB, but a glitch in the OS meant that the proper driver to enable the chipset was missing. The OS could theoretically be modified to accept the larger drives but the manufacturer would have to do it—and they had no incentive to steal sales away from their newer, larger-capacity servers. Many people on the ProCooling forums have spent time analyzing and bemoaning the situation but none of them apparently have the chops to dump and disassemble the OS, then patch and recompile it for the benefit of all. (That includes myself, though I’ve often thought about poking around to see what I could do.)
UPDATE 8-26-2011: Phoenix32 and Terry Kennedy over at Procooling clarified what the issue was, despite some contradictory information they got from the people at SnapAppliance several years ago. The SnapServer 4100 used a different ‘Promise’ controller chip than other models at the time. Snap engineers did not believe it could handle LBA48 disks, meaning drives larger than 127GB. Depending on who you talked to, two changes needed to be made: one to the machine’s BIOS, and one to the OS to add the appropriate driver. Add to that the server’s insufficient RAM expandability (which comes into play when the server recovers from a disk error) as well as the unwillingness of SnapAppliance to take sales away from their other units, and people decided it wasn’t worth the expenditure of their time and effort . Thanks, guys, for the information.
I gave up on going that route when I determined that the total expandability of the unit even with such a patch would only be 1 terabyte. I wanted more, much more—ideally I want a RAIDzilla, but I don’t think I’d ever use that much disk space.
I set my sights on piecing together a suitable server. I found a place selling surplus Intel SE7501WV2 motherboards and bought one. It’s more than powerful enough to be the heart of a NAS—it has dual Xeon 3.1 GHz processors, takes up to 12GB RAM, and comes with dual gigabit Ethernet ports. It also features a PCI-X high performance expansion bus that will accept a hardware RAID card. The board has on-board RAID support and originally came in two versions, one with SCSI RAID and the other with IDE RAID. Mine supports SCSI RAID but I knew I wouldn’t use it as the drives are too expensive and available drive sizes are too limited. At first I thought I’d get a generic multi-disk server chassis but realized I really needed the chassis designed for the board. I purchased a used Intel SR2300 from eBay and thought I was in business. It offers seven hot-swap disk bays and dual redundant power supplies. The hot-swap bays and backplane are SCSI to match the motherboard. I had the basic framework to build a server, but the supported drive type was incorrect. I was determined to make it work. Somehow.
I surfed the net hoping to find some conversion info. I just knew that someone else had to have travelled this territory before me and I was right. Mark Hoekstra’s GeekTechnique site detailed how he shoehorned some IDE drives into the chassis while leaving the SCSI backplane intact. After chewing over the possibilities I decided I could convert the SCSI bays to accept SATA drives. I’d cut the SCSI connectors off the backplane and glue some combined SATA/power connectors onto the circuit board. The connectors would include attached cables that would plug into a SATA RAID controller. Power cables would be plugged into some sort of daisy-chain configuration and then go into the power supply. If I was careful I could keep the front panel connections that go through the backplane, as well as keep the combined floppy/CD-ROM drive assembly working. I was getting more excited as I began planning the mods.
After spending time in research I knew that I’d be losing some capabilities. The Intel chassis/motherboard combo’s hot-swap system can detect bad drives and cut their power to allow for a swap without taking the server down. An error status LED for that drive will light to indicate which drive needs to be exchanged. My version would require a power-down to exchange a drive. Ultimately that’s not a big deal as my server use isn’t mission-critical; I can afford a little downtime.
I decided to keep the original backplane as it was and modify a second backplane. Should I ever decide to get rid of the unit I want to provide the original accessories. (Not that anyone would want to go backward, mind you, but still…). I visited eBay and purchased an identical backplane to hack on for $15.00 plus shipping. While I was shopping I also purchased another empty drive carrier. The floppy/CD-ROM assembly could be removed after software installation and another drive put in its place, giving a total of seven drives in the array. I could also mount an eighth drive into the SCSI tape drive bay by using the filler tray. My goal for using the swappable drive bays was maintainability, NOT hot-swapability; if a drive goes bad I don’t want to disassemble the server to change it. Using the tape drive tray for another drive puts me right back to server disassembly, so eventually I’ll end up putting a USB-driven LCD status display in that bay.
Since I’m using the existing backplane as a connector mounting plate the existing SCSI connectors had to go. To make the wiring neat I decided to tap the power off the board’s existing power jack, and run bus wires for each voltage and ground. This would allow me to clip the power wires short and tie them fairly close to the connectors. The SATA cables would be draped along the middle of the board in an effort to keep the existing cooling pass-throughs as open as possible. I knew that I’d lose some air-handling volume because the wiring had to pass from the board’s front side to the back through those holes. However, since the drives I planned to use were more power-efficient and ran cooler by design the loss of air handling capacity shouldn’t be too big a problem.
The biggest problem was in finding the appropriate drive power/data connectors. I installed a hard drive in one of the swappable bays and measured the amount of space between the drive’s back edge and the backplane. It worked out to be .35”. I needed a connector assembly whose body measured slightly less than that thickness. StarTech had a good candidate, but according to the technical drawings they sent me it was too thick. Several other manufacturers had similar products but they were also too thick.
Then I found CPUStuff.com. They had two versions of the cable I needed, a ‘left angle’ version (part number 22SATAL) and a ‘right angle’ version (part number 22SATARS). Both of these have a straight data connector that will pass through the backplane’s cooling slots. The engineering drawings on their product pages told me they would fit on the board with approximately .066” left to fill. Perfect! I’d attach a shim to the connector’s back to fill part of the space and let the glue fill the rest. Each assembly had a half-meter data cable which would work for all but one of the drive bays. I ordered the number of cables I required plus a couple extra, and a SATA cable extender to stretch that one cable to the correct length.
I went back to eBay and found a used 3Ware 9550SX-8 RAID controller with a PCI-X bus. The card can handle a maximum size of 2-terabytes per drive, and came with a backup battery assembly for the card’s cache RAM. I also ordered four hard drives to start. I chose the Hitachi DeskStar 5K3000 HDS5C3020ALA632 (0F12117), which is a 2-terabyte SATA 6.0Gb/s unit with 32MB of cache. It employs “Coolspin” technology which means its speed varies between 5300 and 5900 RPM, and theoretically keeps the drive running cooler. Although the drive is capable of higher throughput than the card, its backward-compatible and if I decide to upgrade later I’m not limited by the drive’s speed.
Getting Down To It: Removing the SCSI Connectors
At first I tried desoldering one of the seven connectors. Each one has 80 pins, and as you can imagine the going was slow. I tried applying ChipQuick to a connector’s pins in an effort to lower the solder’s melting point, then applied heat from a hot air gun. The connector wouldn’t budge. If I’d had a hot air rework station things might have gone better, but lacking that tool, I used a Dremel cut-off wheel and removed each connector in two passes, shown in Picture 1.
After this step I used flush cutters to clip the remaining plastic and pins from the connector side, then used the cutters on the reverse side to eliminate the sharp points. After this I tried once again to desolder a few pins to empty the holes; unfortunately the going was still too slow. I ended up using a Dremel grinding wheel to carefully level each pin even with the PC board. This makes the conductive pad larger if you don’t grind long enough; if you grind too much you go deeper and can sever or short PC traces. I realized that the connectors would need to be glued onto the board where other surface-mounted components were already attached. I surmised that they could be safely removed since they were adjacent to the connectors and probably related to the connector’s functionality so I unsoldered them. After this step I cleaned the board of any debris, then plugged it into the server and did a power-on smoke test. No magic smoke escaped so I went to the next step.
Attaching the New SATA Connectors
I held a data connector against one of the backplane’s air holes and realized I’d need to enlarge the holes just a bit to allow the connectors to pass through. A Dremel cutting tool made this a quick job, and the result is also shown in Picture 2. Next I had to make the connector shims, and I’d purchased some .060” styrene plastic stock at a hobby store for that purpose. I measured a connector’s back side to determine the necessary shim size, and then marked the styrene stock with pencil with those measurements. I used a sharp new razor knife to slice the styrene on a cutting mat. After trimming the edges to eliminate the ridge that formed after each cut, I mixed a quantity of JB Weld and applied a coating to the back side of a power/data connector. After pressing the styrene into the glue I clamped the assembly for eighteen hours and allowed the glue to fully cure.
Next, I pressed the connector onto a drive (which I’d already mounted into a hot-swap tray), spread a good quantity of JB Weld onto the back of the shim and mounted the drive into a drive bay. I had to carefully manage the cables from the connectors in order to prevent damage and avoid getting glue onto them. After waiting the requisite eighteen hours I carefully removed the drive from the bay. I knew the glue bond was solid when I watched the backplane flex a bit when removing the drive! This backplane is around 3/64” thick, so flexing it is a feat. (I should also mention that you don’t want to swap drives often because the connectors aren’t designed for that.)
I moved on to the next connector and repeated the process until all seven were done. I left the wiring loose on the front side of the board while I moved on to the power bus lines.
Laying the Power Bus Lines
I sketched a general layout for where each power bus and the ground bus would go. I’d need two power busses: a +5 volt DC supply for the drive electronics, and a +12 volt DC supply for the drive motors. There were two +12 volt lines going to the board’s power connector since that current draw was so large, so that meant I’d need to run two +12 volt bus wires and divide the drive load between them. There were also two ground wires going to the power connector. I asked an electrical engineer friend if I needed to run two ground busses as well; in his opinion it wasn’t necessary. That made a total of four bus wires to place. I purchased some 14-gauge solid, insulated conductor wire for the busses. I wanted to keep the wire colors the same for consistency, but could only purchase red, black, and white wire. I solved the problem by placing yellow heat-shrink tubing over the white wire.
I envisioned that each line would stretch the width of the backplane and have pre-formed ‘dips’ in them. These dips would allow the line to stand above the backplane to prevent shorts between the bus and any components on the backplane, while allowing wires to be routed underneath them. One end would be fed through a drive vent hole and soldered to the board’s power supply connector. The bus would be glued to the backplane with JB Weld to secure it by putting glue over the preformed ‘dips’ as well as at each end. Gluing the busses at the power connector end is important as the power connector stubs I soldered to are very short; gluing the wires at that end takes stress off the solder connection.
After measuring and cutting each wire, I started by bending the power supply end of a +12 volt line until the wire lay properly in place over its solder point. I then figured out where I wanted each ‘dip’ and bent it into each wire. After I felt satisfied that the wire was formed the way I wanted it, I marked the jacket where I’d remove a small bit of insulation to create space to solder the drive power wires. A razor knife removed those small bits of insulation, and afterward I tinned each section to allow easier soldering.
I mixed a quantity of JB Weld and applied it to each bus wire’s ‘dip.’ I carefully placed the first wire and attached it with tape until the glue dried, then moved on to the next until they were all attached. You’ll notice that the glue points are sloppy. This is a consequence of applying glue with the shaft of a cotton swab minus the cotton tip. It’s difficult to be neat when using that method. Picture 8 shows the completed bus lines with the drive connections soldered on.
The final step was to solder the connector end and verify the connections with a volt-ohm-meter. The final touch was to cut some small pads out of sheet rubber I bought from eBay and glue them to the backplane under each solder point. Contact cement was used to hold each pad in place.
Organizing the Drive Power Wires
I clipped the power connectors off each SATA power cable and fed the wires through the vent holes before feeding the data cables through. I fed the power wires to the places I would attach them and then clipped them a bit longer than needed. After stripping 1/8” of insulation from each wire it was soldered into place. Black RTV silicone was applied over the power connections to insulate them from accidental shorts.
To organize the SATA cables themselves, I resorted to trimming some self-adhesive 1” square cable mounting pads with a Dremel as shown in Picture 11. I carefully peeled the double-stick tape off the back side of two pads and applied JB Weld to glue them onto the backplane. I arranged the SATA cables to lay down the center of the board as a bundle and secured them with cable ties. Keeping the profile of these cables as low as possible is important as there are three powerful case fans about an inch behind the backplane. You don’t want to stop the fans from working (or allow them to chop up your cables). I re-installed the backplane into the chassis, then test-fitted the fans to ensure I had the proper clearance.
LED There Be Light!
After doing all of this surgery I realized I’d forgotten one little detail. The 3Ware 9550SX-8 card has eight dual-pin connections for attaching drive LEDs. I wanted blinking lights! I posted to an Intel communities forum to see if anyone knew where I could get a schematic for the backplane. I thought I could use the existing surface mount LEDs for each drive and I was correct. Forum member Doc_SilverCreek in the forum gave me the following information:
“Sounds like a heck of a project. The LEDs are duel (sic)/ bi colored LED packages hence the 4 legs. Pins 3 & 4 go to a 150 ohm pull up to Vcc. LED’s Pins 1 is the fault LED via an inverter (U3 & U5) and the back plane EPM7064 power driver controller (which likely is not working in your project). LED’s pin 2 in the activitive (sic) LED which runs directly to Pin 77 in the SCSI connector for each slot. Hope this helps.”
So I knew where the LEDs were connected, but how could I connect them to the card yet make it easy to remove the backplane? My idea was to run wires from one side of each LED pair in a drive location to a walled ribbon connector socket glued onto the backside of the board. I’d have to remove the single remaining SCSI connector, seen in the upper-right corner of Picture 12, to make room for a cable connector. I’d also need to create a cable with a ribbon connector plug on one end to dual pin connectors on the other. I found the dual-pin connectors at DigiKey—these are commonly used in PC cases for front panel switches and LEDs. I could’ve recycled some of those but decided it was more trouble than it was worth. Spending under ten dollars for these connectors was definitely the right decision. Since these are non-polarized I could easily flip them if the drive LEDs don’t work when they’re first plugged in.
Since the LEDs are normally connected though 150-ohm resistors to the backplane’s 3.3 volt supply, I guessed the resistor was being used for protection as a current limiter. I wanted to leave those in place. I’d need to solder one end of each wire pair to one end of an LED, and the other wire to the far end of the corresponding resistor. The problem: it was necessary to cut the PC board traces at each end of the LED as well as each end of the resistor to completely isolate the components from the board’s 3.3-volt supply and prevent that voltage from reaching the controller card. I cut the traces with a razor knife, then reconnected the resistor and LED with a piece of 30-gauge wire-wrap wire. After soldering each LED wire lead in place I used a bit of hot glue to tack them down and fed them to the ribbon cable connector. After soldering each pair I mounted the backplane into the chassis and used my volt-ohm-meter to measure the two pins from each LED/resistor and make sure there was 0 volts across them.
The board was complete! All that remained was to install hard drives and load OpenFiler, which I’ll document in a future blog post.
Things I’d Do Differently Now
This project involved a lot of experimentation, from removing connectors to laying bus lines and LED cables. Everything’s functional but not as neat as I like things to be. Knowing what I do now, here’s what I’d do differently if I were tackling this again.
1) Buy a hot air rework station. It would be much easier to remove those stupid connectors with one of these babies. While I was at it, I’d remove as many other IC chips and components as I could to make running the bus wires easier and reduce the backplane’s current draw. That part would have to be done very carefully if I wanted to keep the seventh slot open for the CD/floppy drive. I wouldn’t want to remove any parts necessary for those and the front panel switches/LEDs to function.
2) Lay the LED wires first. There are a lot fewer of these and they’re more flexible in their placement. I could use insulated 30-gauge wire wrap wire and pass them from front-to-back of the board by using the (now empty) SCSI connector holes.
3) Use a syringe to apply the bus wire glue. I’d mix a good amount of the JB Weld and put it into a syringe (minus the needle, of course). I’d have to attach them all at once before the glue hardened in the syringe.
Who knows? Maybe I’ll tackle version 2 this upcoming Winter with the goal of making it functional AND pretty…
A Thanks and Tribute
I would have loved to share the success of this project with Mark Hoekstra, but unfortunately Mark passed away on September 30, 2008 at the young age of 34. I’d like to think that he’d be proud to have inspired another modder to take his accomplishment to the next level. Without the inspiration he provided I wouldn’t have gone this far. Thanks, man—I hope to meet you someday on the other side, wherever that may be.