I didnt see some of this posted elsewhere so I thought I would add to this thread. Some may be mentioned elsewhere I did not search for everything I am putting in this post because of the size and scope of what I am contributing. This post also turned out to be much larger than I had originally intended, sorry bout that for anyone who dislikes reading or pays per kb downloaded :/
I would have more info but have to spend more time on things that pay the bills. I have no funding for this research so its kinda on an as available basis and currently I have only had about 30 minutes to look into it. Should that change I can probably do a whole lot more. As I get the time I am going to disassemble the board firmware and try to write compatible C code that would replace the closed proprietary cointerrible CTA firmware that is known to be buggy. This is by no means a trivial task, disassembly has its own problems and is often a little more involved than running IDA to get something that can be recompiled into a working software package.
If this info is helpful I do accept tips, should anyone want to fund my research I can make more time available. 1AhuDugRidP9HksF8s5WrDUziucmctXBNc
The PSU is a power-one PFE-1100-054RA ($350 or so at a few retailers). This breaks down to 1100w max output, reverse airflow psu. It seems to me that the psus are maxed out (and less efficient as a result). The PET-1300-054NA would actually fit and according to power-one anything in the PFE or PET series is swappable. This would give you a bit more available power which might solve some issues with the systems. The 1300w one is a bit more at about $450 though. It is my understanding that the DC/DC circuitry on the board as well as the psu is the reason the 1.6 TH/s units cant do 2TH/s so you may get a slight bump from swapping the psu. It would be an expensive experiment for someone to try though. I also like the NA rather than the RA models as they exhaust the heat rearward instead of to the front. I am unsure exactly why cointerrible got reverse models, but the heat shield could be removed (you must remove it to swap the PSU) and for data center apps the hot/cold sides could be better maintained.
The mcu on the boards themselves is an arm. specifically a TM4C1233H6PGEI. The firmware loaded onto the board along with the tools to load the firmware is located in /opt/GSA_{VERSION}.dfu and at least some debugging symbols appear to be intact. I have a few versions of board firmware that are not yet released specifically from 0.7.53 CTA version 0.5.29 (2014-06-12) and from 0.7.46 CTA version 0.5.29 (2014-06-12). See the end of this post for instructions on extracting the firmware so you dont have to ssh into your box to get it.
The waterblocks/coldplates are basically corsair H60s (which coolIT also was part of developing). Any intel LGA 1150 (and others) compatible block should fit providing you have an X type mounting bracket with slots allowing for about 72mm spacing on the screws. I would avoid any round screw hole and stick with slots like the cointerrible unit ships with to ensure that you can get the screws in exactly the right place. This means people can experiment with alternate blocks, radiators and pumps to see what works best for them. My quick measurements on a running unit (so I couldnt get the calipers in as good as I wanted) showed the exterior dimensions of the block is 2.5 inches or about 64mm and the screws center to center are 2.88 inches or about 72mm. I know for a fact that I did not take good or exact measurements mostly because I was afraid of accidentally touching something with metal calipers and partly because I wanted approximate dimensions to see what would fit. If you do replace the coldplate I strongly suggest that the part that touches the chips be made of copper and that the water channel be cut into that copper plate. Copper allows for better heat transfer into the fluid than aluminum (while aluminum works better in the radiators to get the heat out). The pump appears to use the standard 3 pin connector with the pins in the standard positions.
PSU datasheet
http://www.power-one.com/sites/power-one.com/files/documents/power/datasheet/bcd.00012_ai_pfe1100-12-054xa.pdfMCU datasheet
http://www.ti.com/product/tm4c1233h6pgeThe salvage price for various components in the cointerrible miner puts it at $1k or maybe a bit more if you have a good salvage guy. Soon they will be selling well below this price point and just parting them out could be more profitable than mining with them
insturctions to extract firmware First let me say that if you need these you probably shouldnt be modifying firmware for your device. However sometimes all someone needs is a nudge in the right direction to notice and/or fix something that should have already been fixed. There are plenty of things that can be fixed on these boxes. The beaglebone is a ARM AM335x cpu so anything you build/add/replace must adhere to that platform.
The web stuff is php and one thing that would be easy to extend is the power stepping (and possibly adding the ps_load capability). Cointerrible gives you 0-9 to step through, however the cgminer driver takes 0-255. You appear to be able to do 25MHz steps if you can get finer grained control over this than the crude stepping they give you. ps_load is 0-100 with a hardcoded default of 0. I am unsure exactly what ps_load does exactly. I was unable to observe any real device changes in the brief time I looked at things.
This at least opens the door for more people to fix many of the problems with the non-CTA firmware, and opens the door for a few who can work on the CTA firmware. One is obviously harder than the other. You will need mkimage from uboot to rebuild rdImage back so it can be flashed using the web interface.
mkdir ~/cointerra-firmware
cd ~/cointerra-firmware
wget http://cointerra.com/fw/TerraMiner_0.7.6.tgz
mkdir 0.7.6
cd 0.7.6
tar zxvf ../TerraMiner_0.7.6.tgz
cd upgrade
dd if=rdImage of=rootfs.ext2.gz bs=1 skip=64
gunzip rootfs.ext2.gz
sudo mount -o loop rootfs.ext2 /mnt
ls /mnt
In /opt you will see a few files. Of interest is:
dfu-util and cointool which has symbolic links made for cointool-info and cointool-upgrade
dfu-util can reset the board (0 or 1)
cointool-info can query the board for its info - serial numbers, CTA version, hardware version, etc
cointool-upgrade can load the firmware of your choice, or even downgrade (default script loads anything that is not equal to the version on the board)
GSA_0.4.5.dfu is the firmware itself for the board.
I have not yet looked for a recovery method in case you brick the board. There should be jtag or something to allow you to load a minimal firmware that then lets you load a working one (jtag is slow++ and the MCU natively does usb and other faster stuff). My guess is reviewing the data sheet on the MCU would yield that answer fairly quickly, but alas I have no time. I have not even looked at the board for headers or contacts or silkscreening that would indicate where you can do this. I am guessing there are contacts somewhere that directly connect to pins on the MCU that would enable a reflash for recovery but until this is resolved I personally would not reflash it with anything not from cointerrible.
If you try to be clever and use binwalk on the GSA firmware you will be disappointed. It claims it contains a LZMA compressed data section and the uncompressed size is 9000 yottabytes. This is obviously incorrect, which leads me to think that it is a direct image for the ARM MCU. I have yet to further analyze the file to see if this is true, but occams razor and all that. While its compiled size is only 55k, and it is ARM which generally have 4 byte opcodes usually with the same prefix that does not mean it will be fast, easy or trivial to reverse the firmware, then again maybe it will be. I do know already that they use a PLL to set the asic chip frequency, so there is a potential however weak that one could play with that for overclocking. The PLL is probably controlled via one of the 106 GPIO lines the MCU has. There may also be some speedups that can happen during an audit of the code to see if they do anything in a silly way that is inefficient.