FreeNAS on Acer Altos easyStore H340
I've been reading more about the Acer easyStore and thinking about the possibility of installing FreeNAS on it instead of the preinstalled Windows Home Server. There's a multitude of problems associated with this but it still might be possible to kludge something together to make it work.
The first of these problems is the lack of a display port, this complicates things a little bit, but not terribly. First of all there would be no troubleshooting available if there were install troubles. However given that FreeNAS is based off of m0n0wall which is in turn based off of FreeBSD and it's designed with hardware compatibility in mind it would be easy enough to simply DD the embedded image to a CF card or some small flash storage and plug it in inside the server and boot it up without having to worry too much about making sure it installs all the right drivers.
This presents yet two more problems, both of which are closely related. Where are we going to plug in the flash that will have the image? It probably won't have a PATA//IDE port but we'd never know until we looked inside. And how can we make sure it boots from the right drive? There's no BIOS to jump into and configure since there's no display port and even no serial port for doing this remotely. The only solution I could come up with is this: Hope that there's a spare SATA port, which there likely isn't since it's designed for 4 drives and SATA ports usually come in pairs and since 4 % 2 == 0 we're sort of back to square one. Now if for some odd reason the motherboard rolled for this appliance just *happened* to have an unused SATA port our problem is pretty much solved. We could simply move cable of the bottom bay (which has the preinstalled drive with WHS) to another port and plug in a small SATA flash storage device which the system would already have been configured to boot from.
Once that's all said and done we could simply just go to the web interface of the FreeNAS install and configure it how we like. Though you could theoretically modify the configuration before hand in a virtual machine. Mount the storage device to a virtual machine, boot and make changes you deem necessary then simply shutdown and plug the storage device into the easyStore. All the new hardware would automatically be detected and all would be well with the setup.
One other thing I've been considering is the possibility of using one of the new Display Link USB video adapters. Although I'm very skeptical of the idea that this would work without drivers installed in a minimally functioning mode such as in the BIOS or on a simple terminal like what FreeNAS presents the user after booting. If it did work though, it would be easy enough to get one of these and use it for troubleshooting or modifying the BIOS settings if that's even possible in what looks to be a very locked down device.
Now lets just say that the DisplayLink device would work in a very simple mode and we could indeed access a BIOS to change boot order, lets assume that the board has a mini PCI-E expansion slot in it for kicks since quite a few Atom boards do (and Acer might have been too lazy to just exclude it's installation on what i assume is a custom board). We could put in a PCI-E SSD like this one and configure the BIOS to boot from that. But I have a feeling that's just wishful thinking and we'd be better off hoping that there would be an extra SATA port. You could also theoretically just use a thumbdrive assuming the BIOS would allow you to boot from a removable USB device. Again probably just wishful thinking.
Acer easyStore vs. My homebrew
If you've read back far enough here you'll remember I was in the process of building my own NAS for media storage and backup. I was recently reading through the RSS feed from engadget and came across the Acer easyStore. While this is a lot more polished in the end than my home-brew NAS box it ended up being a little more expensive as well. The parts I used are as follows:
- Jetway VIA CN700 Mini-ITX $99.99
- Corsair 1GB DDR2 533 $19.99
- Syba IDE-CF adapter $12.99
- A-DATA 2GB CF Card $8.49
- Athena Power 3x3.5" SATA Backplane $61.99
- Apex Mini-ITX Case + 250W PSU $55.99
- Promise SATA II Controller $59.99
- Western Digital Caviar SE16 640GB (QTY:3) $227.96 ($69.99 ea)
Ignoring extraneous things like shipping and sales tax the grand total is $547.39. If you take out the hard drives it was only $319. While the Acer Altos easyStore will be $400 (with one preinstalled 1TB drive). Granted Acer's looks much prettier than mine and depending on the internals it might even have hardware raid where mine doesn't. Though considering it's got Windows Home Server installed i'm doubting very much that it has hardware raid.
When I first started building my NAS box atom processors had only just started to come out let alone be available in mini-itx packages like the one I bought. I could just as easily upgrade the motherboard in mine for somewhere between $80 and $120 which might bring new life to my system, but for what it does now and it's general duties the Via C7 it's got is good enough for me.
I think if I ever decided to get one of the Acer Altos easyStore NAS's I'd just stick an IDE-CF adapter inside (assuming it's got PATA) and load freeNAS onto that and use all 4 bays for storage instead of OS + Storage on the 4th drive.
Best Birthday Present EVAR
So my brother being as awesome as he is decided that I needed to have a gun for my birthday (and christmas and next birthday and so on...). He's been watching this Charles Daly 1911 on an online gun auction site here in Arizona. The guy wanted $350 for it and he decided that was a good deal and that he'd pay to have it refinished and get a few of the internals replaced, a few of them needed it pretty badly anyway.
The very first thing I bought for it was some new grips a la http://www.vzgrips.com/ which are awesome by the way. I also cleaned it thoroughly in the first few days I had it. I discovered that the hole the extractor is in has probably never been cleaned and was filled with crap. So my brother seeing as how he works at a CNC mill agreed to take the slide in and clean it in their ultrasonic bath. What he didn't tell me was that the parts-wash would remove the finish on the slide too. So now it's got this awesome "I've been used in several wars" sort of look to it. Luckily that won't last for too long since it's going to eventually get refinished.
It also looks like I'll be joining my brother at the NRA exhibition in Phoenix, AZ this coming weekend as well as my gunny friend Pete who'll be there with a press pass.
LCD Hello World!
I finally got impatient with my progress on the LCD Shield I'm designing and decided to solder the headers onto the LCD and give it a try on the breadboard, which has turned out to be a good idea. The original pin-mapping I setup in the design wouldn't have worked and I would have been very frustrated at my wasting ~$20 on getting a PCB printed. I got a lot of great help from http://www.alfonsomartone.itb.it/kwztcq.html which almost problem-for-problem outlined the same order of issues I had excluding problems #2, #4 and #8.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #define RS 11 #define RW 2 #define E 3 #define D0 4 #define D1 5 #define D2 6 #define D3 7 #define D4 14 #define D5 15 #define D6 16 #define D7 17 LiquidCrystal lcd(RS,RW,E,D0,D1,D2,D3,D4,D5,D6,D7); |
Above is what the pin-mapping ended up being. I also discovered I had no pots to use for the contrast pin on the LCD at all so that's going to have to be fixed in the future. So for the time being the contrast is a little out of whack. But I was able to get it to print the traditional "Hello World!" string as you can see in the photo. Also you'll note that I used pins 14 through 17 and you're probably scratching your head as to which pins those are. They're actually the row of pins marked as analog in, analog in 0 is 14 and can actually be used as a digital IO pin as well.
Something else that I've also noticed that I'll need to fix is that the rows seem to be written to out of order. Writing order is as follows: Row 1, Row 3, Row 2, Row 4. Which I'm sure I can fix somehow but I don't know exactly why it's doing that just yet.
I should have looked at the dimensions…
Over the weekend I ordered a 20x4 character LCD for my arduino... I should have looked a little more closely in the datasheet at the section about it's dimensions. Needless to say it's a bit larger than I had originally pictured. So the LCD Shield I've been designing has been thrown off a little bit by the size of this beast.
Looking at the picture the LCD is on the left and my arduino + battery backpack is on the right. I wasn't really planning on it being that huge, but anyway it looks like I'm going to have to heavily modify the PCB layout I've already done for it.
GitHub Repositories Feed
I noticed at the bottom of the page on GitHub that there was an API link. I took a look at it and found it to be pretty interesting, it's actually really simple to use. You can export in xml, json and yaml. I thought to myself: "Hey it'd be great if I could put a repositories feed in the sidebar of my blog here!".
So I took a look at the JSON output since it's small and really easy to deserialize in php, so I wrote up a quick little php script on the server I'm hosting my blog at that will spit out an RSS feed of the repositories I've created on GitHub. The code is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?="<?xml version=\"1.0\"?>"?> <rss version="2.0"> <channel> <title>BeMasher's GitHub Repositories</title> <link>http://github.com/bemasher</link> <description>BeMasher's GitHub Repositories</description> <language>en-us</language> <pubDate><?=date("D, d M Y G:i:s e")?></pubDate> <lastBuildDate><?=date("D, d M Y G:i:s e")?></lastBuildDate> <webMaster>bemasher@bemasher.net</webMaster> <ttl>5</ttl> <?php $data = file_get_contents("http://github.com/api/v2/json/repos/show/bemasher"); $data = json_decode($data, true); $today = date("D, d M Y G:i:s e"); foreach($data["repositories"] as $repository) { echo <<<ITEM <item> <title>{$repository["name"]}</title> <link>{$repository["url"]}</link> <description>{$repository["description"]}</description> <pubDate>$today</pubDate> <guid>{$repository["url"]}</guid> </item> ITEM; } ?> </channel> </rss> |
And if you look to the right you can see the RSS Widget in action displaying the output of the script. Cool huh?
GitHub Won
In lieu of my Git vs. Mercurial post I've pretty much decided to stick with GitHub due to it's extreme ease of migrating subversion repositories to it. While I'm sure it's going to take me a little while to get used to the GUI for MSysGit (or find a better client) I've decided to move all of my current version control to GitHub.
You can find all my repositories here: http://github.com/bemasher/. Feel free to follow me on there, I'm always looking to meet other tech-friendly people.
Free Hosting for Git vs. Mercurial
A co-worker and I were talking about version control software and he made an interesting comparison: Git is like MacGuyver and Mercurial is like James Bond. He then proceeded to point me in the direction of GitHub and Bitbucket.
From first impression both seem to have the same basic set of tools and features. Both have built in simple wiki's and issue trackers. Both allow unlimited public repositories limited only by disk space, 150MB for Mercurial and 300MB for GitHub. Mercurial allows one private repository while GitHub allows no private repositories without a paid plan.
Both of them have fatal flaws for Windows users. First off, GitHub is the most enticing because they offer an integrated subversion repository importing, just give it the URL to a SVN repository and you can import all the authors and history of it. Bitbucket however doesn't seem to have this feature, I'll continue looking for a simple way to do this but right now that's a major flaw in Bitbucket because all of my repositories until this point have been on xp-dev a free SVN hosting service I talked about in my Free Subversion Hosting post.
The major fatal flaw in GitHub for Windows users is that there's not really any solid Git clients to use with it at the moment. There's MSysGit which provides a very basic GUI and command line tools which is great but not very integrated or simple to pick up and use. There's a project for porting TortoiseSVN to TortoiseGit, though at the moment it heavily relies on MSysGit except it uses it's own ssh client plink instead of the OpenSSH library that MSysGit uses which means running pageant to manage your keys and importing and creaking a ppk of your private keys for use with GitHub.
Mercurial seems to have a major fix for the main problem with Git's poor selection of Windows clients is a major issue for usefulness in Windows. Mercurial wins this particular aspect of the competition. Mercurial has TortoiseHg which is pretty stable so far.
When it's all said and done Bitbucket and GitHub are more or less equivalent services built on top of two different version control projects.





