I know I'm late for this, but in case someone is still interested in using the unpopulated SATA connector in the 16GB version of the shield: I got it working
However, I'm
not going to test this with Android - I'm too lazy for that
(I guess it should work though, at least with rooted Android - I guess it should be easy to format the drive and mount a few partitions somewhere or so.)
(I'm sorry for any spelling/grammar/wording mistakes, English is not my first language...)
BEFORE TRYING ANYTHING READ THIS COMPLETE POST! I'm not good at telling all the important things in a reasonable order.
Obviously you'll loose your warranty, it's easily possible to break your Shield beyond repair (short circuits etc.), you'll have to expect complete data loss, it's probably possible to brick it by flashing something wrong (make sure you can access the bootloader without any OS interaction (e.g. WITHOUT "adb reboot bootloader") - you'll probably need to reflash everything in case something goes wrong and you'll want to use the bootloader for that). Use common sense: You should probably only do that when you have a bit of experience in soldering tiny stuff and you should certainly not try to do this when you never soldered anything before. (And remember: the worst case scenario is that you'll have to buy a new Nvidia Shield.) (I guess you already know this/thought of that but you know, just in case...)
I wouldn't recommend doing this though - if you want a SATA port get the PRO version. (I did this because I thought I wouldn't need an SATA connector but after some time it turned out that it would be nice.)
(Note: You'll probably need to adjust a few commands.)
The four capacitors above the "J504"-label are rated 10nF (that's probably some standard for SATA - I found capacitors with the same capacity on two different motherboards connected to the SATA connector).
The pins are (left to right, left being the side where the power pins are): [here are the pins of the power connector], GND, B+ (receive), B- (receive), GND, A- (transmit), A+ (transmit), GND.
(naming according to this page:
http://pinoutsguide.com/HD/serialATA_pinout.shtml)
I connected the SATA solder pads to a SATA connector (taken from an old motherboard) using ~4cm long separated insulated wires without any special measures for high frequency signals (when doing something like this again I was told that twisting the differential pairs wouldn't hurt).
(Sidenote: IMHO soldering things
that small is not fun, but I'm not very good at soldering...)
To actually use the SATA connector it's required to tell the kernel that it should be used - you'll need to modify the device tree (or use the device tree for the PRO version, but I was not brave enough for that - more on that later) and flash it. To do that you'll need to decompile the device tree file (in the ROM 3.0.0 which I'm currently using the file is called "tegra210-foster-e-p2530-0930-e02-00.dtb" - you can get it by downloading the recovery images for your device e.g. here:
https://developer.nvidia.com/gameworksdownload) using e.g. "dtc" (device-tree-compiler), a program which is available in the Ubuntu repositories. Decompile the device tree ("dtc -I dtb -O dts tegra210-foster-e-p2530-0930-e02-00.dtb -o tegra210-foster-e-p2530-0930-e02-00.dts") and modify it as required:
In line 2816 (that's in the 'xusb_padctl'-section (or whatever that's called...)) add 'nvidia,enable-sata-port;' before 'linux,phandle = <0x55>;'. In line 3888 (now 3889) (section 'sata@70020000') change 'status = "disabled";' to 'status = "okay";'. In line 3894 (now 3895) (section 'sata@70020000') add 'nvidia,enable-sata-port;' after 'dvdd_sata_pll-supply = <0x5a>;'.
Apart from those differences between the 16GB and the 500GB device tree (called "tegra210-foster-e-hdd-p2530-0932-e02-00.dtb") it seems that a voltage somehow concerning GPIO is set to 3.3V instead of 1.8V at boot - I didn't want to try this and it doesn't seem to be necessary. For a full list of differences you can decompile the device tree from the 16GB and from the 500GB shield and then diff them ("diff tegra210-foster-e-p2530-0930-e02-00.dts tegra210-foster-e-hdd-p2530-0932-e02-00.dts" or so). There's also another dtb file in the PRO recovery ("tegra210-foster-e-hdd-cpc-p2530-0933-e03-00.dtb") but I'm not sure what this is for...
After modifying the dts file compile it using "dtc -I dts -O dtb tegra210-foster-e-p2530-0930-e02-00.dts -o tegra210-foster-e-p2530-0930-e02-00.dtb". Then you can flash (heed the warnings at the beginning!) the dts using "fastboot flash dts tegra210-foster-e-p2530-0930-e02-00.dtb" (you may need administrative privileges for flashing).
I'm not sure whether the default Shield Android kernel has the SATA drivers included - perhaps it would be possible to flash the Shield PRO kernel?
(Sidenote: I compiled the kernel from the official Nvidia Shield sources myself - I wanted to modify a few things. (I'm currently running Ubuntu on it.))
After that I was able to access a HDD (powered using an old ATX PSU) as usual (I mounted/unmounted the drive, checked whether the files were there, checked the S.M.A.R.T.-status, suspended the drive using hdparm and checked it's speed using dd (~70MB for sequential reading is quite ok IMHO since it's an old drive)).
Notes on the two pictures:
On the first picture you can see the original wiring (this is WRONG), but it's the best photo I have from the pins without hot glue over them to prevent that they get loose. (My soldering on the capacitors wasn't good but not as bad as it seems on those photographs either - the flux seems to reflect strangely and the non-optimal photo quality... Ok, I admit it, the soldering isn't good but it works (at the moment).)
On the second picture you can see the current wiring (I simply pulled the contacts out of the connector and swapped them as needed after measuring the SATA OOB COMRESET/COMINIT signals in the wrong place).
EDIT: I tested an SATA III SSD using dd ("sudo dd if=/dev/sda of=/dev/null bs=1M count=1000") and it seems that the maximum sequential read speed I can get is ~190MB/s (~500MB/s are possible in other computers) when I use the "performance" cpu governor. This could be a result of my suboptimal wiring. (When using the "ondemand" or "interactive" governor I sometimes get results as low as ~25MB/s.)