I know this is theoretically difficult, but I dare to ask: what are the possible ways to connect an internal 3.5'' SATA HDD to the board (let's say 2TB)? Let's ignore the need for additional power.

I want to make a box like a Network Attached Storage that contains the board and the HDD internally, so the trivial "plug to USB connector" is excluded. How can I do this?

The other alternative is to get a board that has a SATA connector (like Cubieboard), but I am curios if this can be achieved with Raspberri Pi.


3 Answers 3


Sadly, the only way is to use a sata to usb adaptor or a usb enclosure for the drive. I would advise using a powered usb enclosure (from the mains) or a powered usb hub between the raspberry and the drive, otherwise, if the power supplied by the usb ports might not be enough and the drive will drop connection or the pi will reboot.

  • OP says he does not want to use USB.
    – Phil B.
    Commented Aug 27, 2015 at 11:56
  • 1
    This question has been posted around the internet countless times. There's no way around it.
    – vlad b.
    Commented Aug 27, 2015 at 11:58

Well the SATA physical link is built on two differential serial links, i.e. you would need 4 GPIOs. So there is no problem there.

I do not see any particular problem in emulating the commands and messages.

The minimum SATA signalling rate is 1.5 Gbps (1 500 000 000 bits per second). The maximum GPIO signalling rate is circa 30 000 000 bits per seconds. So the GPIOs would appear to be 50 times too slow.

So all you need to do is find a way of overcoming this minor problem.

  • 1
    You forgot the <sarcasm></sarcasm> flags on the last sentence, @joan :)
    – Phil B.
    Commented Aug 27, 2015 at 11:55
  • 1
    @PhilB. <sarcasm>I am never sarcastic.</sarcasm>
    – joan
    Commented Aug 27, 2015 at 12:03

I am not saying this is impossible, but the Pi doesn't even have the USART capabilities needed to support the data stream, let alone the decoding ability.

Existing computer systems use a dedicated controller to interface to SATA. You could design something similar, and write the kernel drivers, but you would still need external hardware.

The conventional approach can't be used because you don't have access to the Pi's bus. USB is the only user option available to the user; is possible the Foundation could integrate a SATA controller.

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