I've searched high and low for something to get me on the right track, it's making me think it might not be possible.

Basically, I want to create a cheap SSD using Arduino (or another microcontroller if it is too weak). I know I would have to implement the SATA protocol on the device and an OS driver for the disk drive. Assuming I could jump those two hurdles, what else would bar me from implementing a rudimentary SSD? I'm not even talking about full production quality, just a SATA wire coming from a mother board plugged into a socket on a breadboard. Do I need flash storage or would I need another kind of chip to handle the data needs?

  • 4
    Do you understand what SSD is standing for? Maybe you mean just some kind of SATA-connected storage?
    – Eugene Sh.
    Feb 27 '15 at 16:14
  • 2
    The legacy SATA 1.0 throughput of 1.5 GB/s is going to be a huge problem without dedicated hardware - I don't think you stand a chance on any Arduino.
    – Adam Lawrence
    Feb 27 '15 at 16:16
  • Is the SATA standard really not documented anywhere on the entire internet?
    – John U
    Feb 27 '15 at 16:34
  • 1
    If you want to do this just for fun, implement USB Mass Storage on a Leonardo backed by an SD card or SPI flash. It will be painfully slow, but the concept will be there. Outside of the Arduino realm, I expect you could find an existing project to do this with the STM32F4 Discovery board (which is cheaper anyway). Feb 27 '15 at 19:48
  • This is such an awesome quest, Creating a storage device from scratch to be used from a computer. I really hope you succeed and please post updates if you make it :) May 18 '18 at 18:56

The good news is that SATA drivers are fairly generic so you don't have to write the OS side. The bad news is everything else.

just a SATA wire coming from a mother board plugged into a socket on a breadboard

Let me stop you there. The minimum data rate for SATA is sufficiently high that you need a PCB. If you try and do this with wires or breadboards it will simply not get through; it will be lost to parasitic capacitance.

(Many years ago as a student I tried to do something vaguely similar with a wire-wrap board. At just 20MHz you could see a clean signal go in one side and a noisy unreadable mess come out the other side. Actually seeing it on a scope drove home the importance of shielding.)

Do I need flash storage or would I need another kind of chip to handle the data needs

Where would you put the data otherwise? It might be an entertaining first step to create a read-only drive with constant contents, but it's not very useful.

You need a chip with a SATA interface. This will almost certainly be an ARM and almost certainly not in DIP. I can't remember at the moment whether SATA master and slave "PHY" interfaces are different or whether it's all defined in software, someone else can answer that.

  • Sweet thanks for the info. I guess the Arduino is a very "beginner's" setup so I would want to get a more advanced controller for such an undertaking. Thanks for the info. Feb 27 '15 at 23:56
  • 1
    @pjc50 - He could implement a Write Only Memory - perhaps an emulation of the Signetics 9C46XN / 25120 Feb 28 '15 at 14:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.