Intel Edison: USB Storage Sled

I’ve been spending the last year or so playing with the Intel Arduino products – Namely the Intel Galileo and the Intel Edison. One of my projects the last few months has been Making a LinuxFromScratch Linux Kernel with full build tools, Xwindows, and QEMU running WinXP SP3. Included in this build is a XWindows software FrameBuffer w/ VNC capability; that way I can run a networked gui and do some GUI type work.

Chrome x86 running on Edison under XWindows
Chrome x86 running on Edison under XWindows

The Edison is cool because it’s just powerful enough to run WinXP under QEMU without any software emulation. While I wouldn’t call the Edision a speed demon – it should be good enough to allow printer drivers to function. The onboard storage for the Edison isn’t really big enough to run WinXP from the eMMC flash; so I opted to run a SSD attached to the USB2.0 port of the Edison. Edison runs as the “master”. The end goal of providing “always on” scanner and printer driver capabilities for my old HP all-in-one color laser and the ULS-25E laser cutter.

Windows XP SP3 running on Intel Edison
Windows XP SP3 running on Intel Edison

I also wanted to run a rotational drive .. to act as a swap space for both Linux and for the Winblows PageTable. To do this; I built a Microdrive FLEX to 44pin 2.5″ IDE adapter board and attached it to the Edison via a usb->ATA adapter. I verified all of this works with a usb hub.

With the concept proven; I set about generating a Intel Edison USB Storage Sled. This PCB provides power to the Edision and then connects up a 4port USB hub. This hub then serves the USB->SATA->mPCIe->Intel SSD, a USB->PATA->flexIDE Microdrive, and an extra device port. I set about putting the Sled in a SparkFun Edison Block compatible form factor early in the design phase. Clearly this much stuff on one board prevents me from adhering to the tiny formfactor; so I grew it in the X direction to 4.5″ wide and about 2.1″ tall. This board provides all the power to run the SSD and PATA interfaces. The board is 4 layers; due to USB2.0 routing requirements / impedance matching.

Why the Sparkfun Edison Block formfactor? Well simply put; I wanted to be able to expand the “system” with more features I don’t forsee at the moment. Example: I do not currently need an SDIO card on my Sled – honestly; I’m lazy and don’t want to route the pins. But; if later I need it – I can just buy Sparkfun’s Block and add it to the system.

I’m requesting comments / suggestions / peer reviews for the design; as a result I’m posting it here. The first 3pages of schematics are Licensed to you as Derivative works of Intel and Sparkfun. The last 3 pages and the PCB Layout are currently ALL RIGHTS RESERVED Copyright 2015 by John Zitterkopf. ATM; I’m thinking I’d release the final design under a TAPR/NCL license… but I haven’t committed to that yet.
Prototype Schematics / PCB Layout

In addition to the features above; I’ve designed in some USB Muxes to aid switching the Edison into Device or Host mode (similar to the Intel Edison Arduino board). I’ve also included the Lipo Battery charging circuit to provide a limited UPS type capability to the design incase of small power outages due to lightning or what not. Lastly; I added an I2C eeprom which can be programmed by the Edison for the USB to SATA bridge chip.

Update 8/28/2015:

Here are some pictures of the finished prototype:
Secondary/Edison Side

Primary/mSATA side

Feel free to leave a comment here (which will be reviewed by a human prior to posting) or provide comments in the various threads / project logs below:

4 Replies to “Intel Edison: USB Storage Sled”

  1. Hi John: Awesome work dude! Did you end up with a revision of the PCB that worked for you? If so I would be interested in acquiring one or two! Live long an prosper!

    1. The first version of the board actually worked. The only thing I ended up having to “fix” was adding an EEPROM to the USB->PATA controller. I haven’t considered moving these into production because well – there’s been zero interest until you posted this 😀

      Here’s what I posted to Hackaday.io:

      Posted about 3mths ago:
      It’s been a while; but I have been debugging the design as time permits. Upon initial assembly using a hotskillet reflow in the garage; I had some issues with the Edison high-density connectors. After getting that sorted; the USB hub and PATA chip identified themselves to my netbook. putting a USB memory stick on the DD[4] interface of the hub showed that I could read/write the USB bus.

      The USB hub is seen by the Edison in “host mode” and by J16 (host computer) in device mode. I can download Arduino sketches via J16 when in device mode.

      Initial debug showed several issues.

      1) the PL2571B USB->SATA chip wasn’t being seen on the USB hub. Later tracked down to a bad solder joint on the clock generator’s RE17 22ohm series resistor. After fixing that; the SATA interface shows up as USB Mass Storage. I do not currently have my SSD available at my home work bench; so will retrieve it from the initial test bed tomorrow.

      2) the Cypress AT2LP (USB->PATA) chip is being seen on the usb bus; but because I didn’t wire in an EEPROM. 🙁

      3) U36 was the wrong package; so I can’t power J16 when in host mode.

      4) The U5/UE6/UE7 eeprom connections don’t work because there doesn’t appear to be enough bandwidth in UE6 – a risk I took in the initial design; but in retrospect was flawed to begin with.

      5) J3 – the FTDI USB debug interface to the Edison kernel had some solderablity issues around J3 – I think due to close proximity to un-tented vias near the pins of J3. Was able to workaround the issue using some detail soldering – but will need to be fixed in the final design with tenting of vias – and possibly moving some of them.

      I’m going to try and find the right package for U36 and more importantly figure out how to dead-bug rework a EEPROM to the AT2LP to see if I can get that interface online in the near future.

      The other thing which needs to be done; but is likely beyond my home workbench capabilities is to do a USB dataeye analysis to see if there is any margin in the design.

      A couple of weeks later:
      After attaching a I2C eeprom to the AT2LP; the PATA interface came up.

      mSATA interface is working fine with an Intel and SanDisk mSATA drive.

      Basically; all of the interfaces are working as expected including the USB muxes in the design.

      Been working on FabB of the design; correcting minor issues found. Really all I need to do is add a I2C eeprom to the PATA controller and correct the I2C eeprom on SATA. No sense of urgency here as there seems to be little interest in this design publically.

  2. Hi John!

    This is really amazing!
    I’d like to chime in and order one or two as well!

    If you have some spare time perhaps you could post about a benchmark between this method vs connecting it through the usb using an external chip?

    Cheers

    1. Benchmark between methods? I don’t follow…
      As you know, the Edison doesn’t have a native SATA connection. Onboard storage is via eMMC NAND flash in the Edison Module.
      So This any other storage medium is going to have to occur over USB2.0 port on the Edison connector. Or use a SDCard.
      What would I be benchmarking?

Leave a Reply

Your email address will not be published. Required fields are marked *

*