Interfacing with SATA?

I'm working on a project at home and I need to be able to interface with SATA cables.

First, I need to be able to log the data being sent from the SATA bus to the Arduino. I thought about using an SD card or flash drive, but I figured it would be easier to just directly print all incoming data to the serial lines going to my laptop. That should work right? I could have the SATA receiving lines wired to 2 analog input pins and have that print the data straight to the serial interface. Would this work? How would I go about doing that?

The next part seems tricky.. I need to be able to have the Arduino read what's being sent to it from the SATA interface, and then write information back to the source. You can think of it like an if, then statement. If the incoming data from the cable reads a certain string, then the Arduino will send back a string based on that.

Would anyone have any information on how I could go about doing this?

The UART is not rated at 6G/sec.

It's like asking a snail to chase cars on the highway...

Serial Data rate is based on Crystal Oscillator and compared to SATA... the arduino is very slow at serial I/O. You would need some form of SATA co-processor... and the ones that are available would likely not be designed to be interfaced with embedded microcontrollers.

The SATA interface I'm using is either SATA 1 or 2, most likely 1. That's only 1.5GB/s, not 6.

Is it still possible? Like, is there absolutely any possible way to do this?

Like, is there absolutely any possible way to do this?

Use a computer ;) Seriously, from the description of what you want to do, you need a computer. Maybe if you explained it better we could offer more suggestions.

At the moment I need to have the SATA cable connected to the Arduino so that I can log the data being sent over the SATA cable. After analyzing that and checking out the parts that I need, I need to have the Arduino read what's being sent, and depending on what's sent, it needs to output back a string.

For example: The host (SATA) sends a string asking what, for example, DVD is in a drive. The Arduino needs to read this string, and send back that it's a certain DVD.

I found this: and a supplier for it, but I have yet to find a pinout or even a picture of it to know what I'm dealing with or if it will even work.

If I can convert the SATA signal to USB, it'll slow the transfer rate significantly enough that I can interface with it.

Would I be able to go SATA -> USB -> Serial and interface with it over the Arduino Serial interface?

Any such serious endeavour might get better help by the crowd at I say that, because many the guys there have undertaken more serious projects than your average aruinoist and because you probably want to use an AVR processor, the same as in the Arduino. So check them, and their forum out.

It's like asking a snail to chase cars on the highway...

Probably closer to a snail chasing the space shuttle.... :)

The arduino now is about where computers were 30 years ago performance wise. Its a 16mhz 8 bit cpu with 2k of ram.

Forget USB, if you could live with uSB 1.0 performance (slow) on your SATA, the arduino could only perform at 1% of that via its USB.

Use a computer to monitor the SATA traffic and pass info to the arduino when you want it to do something.

It's a serious project, trust me. But thank you, I'll check it out.


the jmicron chips I'v e been looking at as one failed in a usb sata enclosure had an imbedded intel 8051.

The chip set Iwas looking at was the jm20316 i think replaced by the jm 20336, on the controller/interface board there was some flash supporting usb/drive.

Hope that helps. I only know the 8051 in passing along time ago.