| Black Erupter USB | |
Black Erupter USB | This is the first 'mod' - an all-black (except for the LED - couldn't source a suitable IR LED, which would have shown it hashing only on camera) Block Erupter USB
| Black Erupter USB plugged in |
Thermal indicator patches | Putting a bit of color back in there using thermochromic sheet material (range is approximately 25-50°C) - top left is a still, the other 3 show starting up, the back side, and powering down respectively.
| |
| Ambient temperature was a bit on the high side, but still surprising to see the BE100 and power regulator heat up as quickly as they do without even hashing yet.
| |
| Block Erupter USBleep | |
Perfboard Erupters? | "Familiar shape - but perfboard? Surely he didn't?" - I surely didn't.
I did, however, use a bunch of old component tech to cobble together a pulse detector/stretcher with audiovisual output - matching the Block Erupter USB shape. Why? Because I can, of course - and because detecting the Block Erupter USB's signal of finding a golden nonce (or error) on hardware is a bit tricky; the LED is activated by pulling a pin on the 74HC574 low, and messing with the circuitry itself made the Block Erupter USB throw HW error after HW error. A non-invasive light pulse detection circuit is easily made using a single chip, something programmable, or by digging around in boxes of old parts and finding a 4047 (all that's needed to stretch a pulse, itself caught by a photodetector) and a 555 for audio signaling. Add a few pots to adjust sensitivity, pulse duration, pitch and volume, and off you go. The power supply however can be drawn from the Block Erupter USB on the appropriate pads.
Demonstrations with audio (you'll want to lower your volume - 'Here Be Beepdragons'): Pulse stretcher (optical, audible, and TTL out), calibration and preference [youtu.be] Block Erupter USB mining away with pulse stretched slaved [youtu.be]
( While this is pretty silly - though amusing if applied to dozens of Block Erupter USBs, perhaps - the output pulse is also fed out through one of the header pins, making it suitable for use as e.g. a flash slave trigger, lightning detector, non-invasive power meter monitoring, etc. )
| Pulse detector/stretcher |
| Block Erupter full teardown | |
Block Erupter USB bottom with soldermask | But how do you know which of those pads to use? Well, other people have already done some of the work in figuring out those pads when they worked on overclocking - a simple multimeter will do for figuring out voltages and continuity. http://wtfmoogle.com/?p=3334 Some have taken a quick look at parts. http://codinginmysleep.com/asicminer-block-erupter-teardown/ Others already attempted to figure out the Block Erupter USB schematic - but abandoned their efforts. http://openschemes.com/2013/09/15/reversing-the-usb-block-erupter-part-1/
Turns out, if anybody's ever done a teardown of one, I can't find it. That's okay, I don't mind hypothetically duplicating effort.
On the left and right a sight that should be somewhat familiar - the bottom of a Block Erupter USB, showing zero components but a bunch of solder mask that's inhibiting thermal transfer to the heat sink and so was sometimes removed by those overclocking, resulting in more or less the image on the right.
| Block Erupter USB bottom without soldermask |
Block Erupter USB top without components | But what's the top look like under all those components? Like a world of fluxy hurt, at first, shown on the left. But on the right, after clean-up and sanding, it looks like a fairly neat board.
There's just one problem with this board - and no, it's not that it - it's that those vias on the top go to the bottom but don't appear to go anywhere else.
| Block Erupter USB top without soldermask |
Shining a light through a Block Erupter USB | Shining a light on it - quite literally - makes it clear that we're dealing with a multi-layer PCB.
| |
Block Erupter USB layer 2 | Specifically, it's a 4-layer PCB - which is a bit surprising, as 4-layer PCBs are a fair bit more expensive than 2-layer ones. It does make it easier to route, however, and can also help with power distribution and keeping clean signals. After not-so-careful further sanding (destroyed a few traces - that's okay, took plenty of pictures inbetween), on the left is layer 2 (as seen from the top), and on the right is layer 3 (as seen from the bottom).
And with that, redrawing the PCB becomes a breeze. But first, the schematic. And for that, I need to start with a <u>BOM</u>
| Block Erupter USB layer 3 |
Block Erupter USB informal BOM courtesy of wakuangji.cn | Now, the BOM for a Block Erupter USB is actually available - albeit with a bit of Chinese, missing values and a few outdated package sizes, as shown on the left.
But I did go through the trouble of de-soldering all those components (which is to say I put the board on a hot plate and just picked them off as the tin melted), so why not go for a more visual BOM? Why not indeed, and presented on the right. ( Values measured using handy-dandy M328 type 'Transistor Tester' )
The part selection was done at Digikey, and you can grab a cart of all the components minus the BE100 right here: digikey.com/short/7nd4rq. Yes, the total is $13.92 - much higher than what most would pay for a completely assembled Block Erupter USB at this point. ASICMiner was able to buy in bulk through more direct suppliers - if you order multiples of these components you will find Digikey gives a bit of a discount as well; the list 'as is' will already suggest you get 10 of the small capacitors instead of 6 to get a better total price. For a flat list of the BOM:
1 x 931K-ND / CONN PLUG USB A-TYPE SMD / USB A connector / X1 1 x SRR7032-4R7MCT-ND / FIXED IND 4.7UH 2A 42 MOHM SMD / 4.7uH inductor / L1 1 x 300-8244-1-ND / OSC XO 12.000MHZ HCMOS TTL SMD / 12MHz tri-state oscillator / Q1 1 x 535-11280-1-ND / CRYSTAL 11.0592MHZ 18PF SMD / 11.0592MHz crystal / Q2 1 x 785-1155-1-ND / IC REG BUCK SYNC ADJ 3A 8SOIC / AOZ 1021 3A buck regulator / IC5</br > 1 x MM74HC574MTCXCT-ND / IC D-TYPE POS TRG SNGL 20TSSOP / Octal D-type flip-flop / IC4 1 x ATTINY2313A-MU-ND / IC MCU 8BIT 2KB FLASH 20QFN / Atmel ATtiny 2313A / IC3 1 x 336-1160-1-ND / IC USB-TO-UART BRIDGE 28VQFN / Silicon Labs CP2102 USB-UART bridge / IC2 4 x 587-1356-1-ND / CAP CER 22UF 10V Y5V 1206 / 22uF ceramic capacitor / C1,C2,C11,C12 2 x 311-1462-1-ND / CAP CER 10UF 6.3V Y5V 0805 / 10uF ceramic capacitor / C5,C10 6 x 1276-1007-1-ND / CAP CER 0.1UF 50V Y5V 0805 / 100nF ceramic capacitor / C3,C4,C6,C7,C8,C9 2 x P7.50KCCT-ND / RES SMD 7.5K OHM 1% 1/8W 0805 / 7.5kOhm resistor / R3,R4 2 x P4.70KCCT-ND / RES SMD 4.7K OHM 1% 1/8W 0805 / 4.7kOhm resistor / R5,R6 1 x P2.40KCCT-ND / RES SMD 2.4K OHM 1% 1/8W 0805 / 2.4kOhm resistor / R2 1 x P750CCT-ND / RES SMD 750 OHM 1% 1/8W 0805 / 750 Ohm resistor / R1 1 x P560CCT-ND / RES SMD 560 OHM 1% 1/8W 0805 / 560 Ohm resistor / R7 1 x 754-1939-1-ND / LED 2.0X1.2MM GREEN SMD / LED, green, Vf ~= 2.6V / LED 1 x na / na / ASICMiner BE100 / IC1
ATTENTION: Ordering the ATtiny won't do you much good without also having the firmware that goes onto it - which, as far as I know, was not released, and dumping is probited by the set lock bits. So if you wanted to build a Block Erupter USB yourself, you would first need to source a Block Erupter USB to get that chip, even if you manage to salvage BE100 chips off of e.g. a Block Erupter Cube.
| Block Erupter USB visual BOM |
Innards of a crystal (minus tuning fork) | If you're new to electronics, you might have looked at that BOM and thought "Okay, how do you figure that 12MHz component is an 'oscillator' while the other one a 'crystal'? They look much the same to me." Right you are - on the outside, they are very similar (and for cheap ones, there's no package difference at all). But on the inside, they're quite different.
Note: Chronology in this post is going out the window for a bit - these parts are salvaged from a later mod which died.
On the left are the innards of the 11.0592MHz crystal, minus the tuning fork. The tuning fork is just a bit of crystal that's cut to an exact size and shape to resonate at the desired frequency. This value has to do with serial communication rates, by the way: 11.0592 divides nicely down to 115k2 baud, which you may recognize as the standard communication baud rate when mining with a Block Erupter USB. On the right are the innards of the 12MHz oscillator, minus the tuning fork. While the packages are very similar, you can see there's an extra bit of circuitry in there. That circuitry keeps the crystal oscillating, whereas a crystal typically requires two external capacitors or a pulse 'pinging' it and can vary a slight bit based on electrical and ambient conditions. Suffice it to say that the oscillator tends to be more stable.
While we're tearing things down anyway, let's have a closer look at these components.
| Innards of an oscillator (minus tuning fork) |
Oscillator silicon | On the left that tiny, tiny little bit of silicon that's inside the oscillator. Untouched by packaging, these come out nice and pristine. On the right, an even closer look at that bit of silicon.
| Oscillator silicon close-up |
Chips shaved down to bond wires | For the other chips, the ideal method would be to dissolve the package with some fuming nitric acid - but that's some really nasty stuff, and the next closest thing works only when heated and will then happily start dissolving the silicon as well. So instead, they're just sanded down, roughly at first until the bond wires (the tiny little gold wires that connect the silicon to the package pins) become visible - as shown on the left - and then continued using a finer grit until either the package material breaks away from the silicon or the silicon gets ruined.
| |
LED (off) | Completely forgot about the LED. Using the one from the Black Erupter USB here instead. Left is unlit, right is lit (I know, obvious.)
| LED (on) |
AOZ1021 silicon | First up, the AOZ1021 buck regulator - and a piece of lint - showing the 3 distinct silicon chips inside the package. Sanded further down past the silicon, the underlying geometry becomes visible.
| AOZ1021 carrier |
74HC574 silicon | Next, the 74HC574 octal D-type flip flop (NXP). The package image on the right shows just exactly how tiny that little chip actually is. Now you know why companies are trying to get away from relatively large packages like these.. it's a lot of wasted space.
| 74HC574 carrier |
CP2102 silicon | The Silicon Labs CP2102 USB-UART bridge. Very pretty! The packaging on this chip broke away somewhat cleanly, which makes me think there may have been a slight cavity (not uncommon, sometimes by design) above the silion. These packages aren't as pretty when sanded down to the pins, as it's just one rectangle in the middle of the chip on a metal carrier that tends to extend to the corners, and the pins on the edges. So instead, have a close-up of the reddish array of the image on the left. At the top is some of the logic bits and you can see that this is a much, much smaller node than that used in the oscillator.
| CP2102 silicon close-up |
ATtiny2313 silicon (partial) | The Atmel ATtiny2313. Very pretty, but the packaging on this chip was being a right pain in the behind, as evidenced by bits of the packaging stubbornly holding on to the silicon. Further sanding scratched up the silicon, so let me show you that metal carrier for this one on the right.
| ATtiny2313 carrier |
ASICMiner BE100 close to silicon | Finally, the ASICMiner BE100. On the left, inspection after sanding down a good bit further. Patterns of the silicon underneath the packaging material can start to be seen. On the right, after a bit more sanding, bits of the packaging material started to chip away. Rather than sanding further, I proceeded with a plastic tool to try and pry away the bits of packaging while damaging the silicon as little as possible.
| ASICMiner BE100 corner of silicon exposed |
ASICMiner BE100 silicon | In the shot on the left, you can somewhat recognize the hash engine layout pattern you may have seen from other chips. The details of a Bitcoin Mining ASIC are rather boring, being a repeat of the same structure over and over and over, unless it has a somewhat unique distribution (a la BitFury's first two chips), the only thing that tends to stand out is the <abrr title="Phase-locked loop">PLL[/abbr] - which I can only presume is what the little corner piece is.
I could find no identifying markings like those found on the Butterfly Labs, KnCMiner, BitFury and other chips.
The people at zeptobars.ru could surely do a better job - and it's unfortunate that they have not done further decaps of Bitcoin mining chips beyond the first BitFury (BF756C55) and the first Avalon (A3256).
| ASICMiner BE100 silicon (PLL) |
| Block Erupter USB heatsinking | |
Left over parts and new bolts | Slight detour. As I'm now left with a spare heat spreader, silpad and crudely decapped chip eye candy, let's put those to good use. The spare heat spreader was black, and I actually like that a bit better than one of the reds I have, so that was the first thing to swap. The next bit is to get the red heat spreader back onto the same Block Erupter USB - but on the other side. This means flipping it over, beveling the edges with a file, and using some longer screws so that they can just pass through one and end up in the other. Important note: You can't just use screws/bolts 'as is' to do this, as both heatspreaders are threaded, making it physically impossible to tighten one to the other - the screws have to turn free at the heatspreader near the head. While you can buy specialized screws and bolts for this, sticking the screw in a dremel and then running it against the edge of a file will do in a jiffy, as shown on the bottom screw.
A small chip heat sink - of the same type you'll see people sell on e-bay for cooling Block Erupter USBs, usually with a heat sink for every chip, even though the thermal pictures show that it's just the BE100 and the AOZ1021 that get particularly warm out the top - filed down a little bit makes for a perfect fit between the chip and the two heatspreaders without crushing the inductor. There's bits of plastic between the heads of the screws and the heatspreader - these are basic ring shapes with a cut to the center so that the screws won't scratch up the heatspreader, while you can tug the spacers out quite readily leaving a clean finish.
The relatively small amount of heat generated out the top of the BE100 can now dissipate more readily and the components are a bit more shielded by the other heatspreader. It's a bit bare, though, and tossing that decapped BE100 is a bit of a waste...
| Double-decker Block Erupter USB |
ASICMiner BE100 shield | With the left over decapped BE100 mounted, slight drop of polyurethane on top to keep it from scratching up any further than I already did, and it's not quite as bare looking.
| ASICMiner BE100 shield |
| Block Erupter USB original layout | |
Block Erupter USB with components | Alright, shiny, but back on track. I know what the PCB looks like, I know what the components are and where they go - in case you forgot what a Block Erupter USB looks like, to the left your eyes go - so I can get started on drafting it up.
| |
Typical schematic symbol | While it's tempting to go with existing libraries for components - and you probably should use those eventually - when trying to figure things out from a board it's not very helpful when a schematic symbol looks nothing like the part; on the left, an existing symbol for the CP2102 (USB-UART). On the right, a version that matches the physical layout of the pins. Much easier to work with as there's no mental exercise in figuring out which pin was where on the package, etc.
Of course you do still need to know what pin is what on the components - and while the passives and LED are easy enough, for the chips you'll have to go to the datasheets:
There's no official datasheet for ASICMiner's BE100 that I could find, but I can infer some of the functions as I draw the schematic.
| Physical schematic symbol |
Block Erupter USB base schematic layout | Once each component is drawn (both symbol and package), sticking with the physical layout tends to be easiest again - placing each roughly where they are on the board and within the function each fulfills, as shown on the left.
After that, the tedious task of following each trace on the board from one pin to another (and another and another, through a via to yet another) begins, but eventually you end up with something like the schematic on the right.
Throwback: And that's how you know which pad does what - for the Block Erupter USBleep, that's just the 5V source off of the USB port and GND (ground). It's also how pins on the BE100 can be inferred; they connect to known pins on other components. There will be pins that remain unknowns without further information (that missing firmware on the ATtiny, for example), but in the end it doesn't matter much.
| Block Erupter USB base schematic wired |
Block Erupter USB top layer routed | Once the schematic is drawn, you can then move on to the actual PCB. Setting a photo as the background or by carefully measuring where each component goes and placing the components, then routing each trace as faithful to the original as possible, and you could send out for a PCB to be made. ( red = various planes, including Vio and GND, and signals / magenta = GND plane and signals / green = Vcore plane and signals / blue = GND plane and a single 5V trace which then continues on the magenta plane all the way up to the debug/programming header. )
But that's kind of boring, isn't it? While I've got a schematic and a basic PCB, I might as well dive in there and try and mod that.
| Block Erupter USB four layers routed |
Alternate Block Erupter USB schematic | One thing that can be done is ditching much of the debug/programming header on the board - that's a major source of the 4-layer requirement. Sure, it helps with stability and power distribution as well, but if at all possible let's see if it can't be avoided. There's certainly a few places on the board where components are connected together via an inner plane, but connected together via outer planes - despite there being nothing in the way to prevent that. Voltages can still go out to a header of sorts (SMD pads, no PTH), but the serial data and reset line? Those can go somewhere else on the board - though I did route the serial ones out to some vias near the edge, makes it easier to probe with a heatspreader on.
In addition, let's throw a trimpot onto the design and make the oscillator pads a little easier to solder to so that overclocking is less of a hassle.
Now, I ended up not ordering this board. Instead, I did this...
| Two-layer Block Erupter USB |
| Floppyrupter USB | |
AgIC-printed boards | A hackerspace in Germany has an AgIC - which is to say, they have AgIC cartridges, which contain a silver-based conductive ink, and a compatible printer. They also have transparent sheets. 1+1=3; Though it actually took 4 prints to finally get one that 1. wasn't printed on the wrong side, 2&3 bridged or had gaps and 4. had at least a few that weren't crumpled too much.
Soldering onto these inks is another issue altogether - most suggestions for connecting components involve a conductive glue or 3M's z-conductive tape or other such solutions. You certainly can't just use 60/40 and forget about any of that non-leaded RoHS-sticker-approved solder which needs an even higher temperature, as it will destroy both the ink and the plastic. Instead, you have to go down in temperature, which lands you at e.g. tin-bismuth solder; won't last, but it will melt at low temperatures and solidify over a small region. It has pretty much the consistency of any other solder paste but doesn't flow as nicely. The vias are more problematic - and I suspect were the eventual failure here - connecting one side to the other via a silver ink pen (not AgIC's - I used a CAIG CircuitWriter, but I've heard good things about the CircuitSribe ballpoint pen as well) as the tin-bismuth just wouldn't take through the small holes.
( A proper flat flex board would be much better - but also much more expensive for one-offs. Other DIY-like methods include using copper tape, and getting standard FR4 boards and dissolving the board material leaving only the (relatively flexible) copper+plating behind, then introducing that to a flexible substrate. )
| Tin-Bismuth solder paste |
Flexible board | This one doesn't use the trimpot, as I had already settled on underclocking this using a 11.0592MHz oscillator (yes, that value again - could not get 10MHz to work at all) and a 470 Ohm resistor (Vcore ~= 0.957V, but the traces have a bit of resistance - more than a proper PCB - as well) proved to be reasonably stable.
| Powered on, but quite dead, in oil |
Go, go, floppyrupter | At 11.0592MHz, hashing speed should have been around 310Mh/s, but in reality it hovered just around 290Mh/s running in my Block Erupter USB Three Days of Mining lottery contest, mostly on account of hardware errors (imagine that).
As you can see in the graph, it went 'dead' for a little while - but that's just because I had to make a little video (click right image to view) - after which it hashed away again for a while before dying for good; which did provide the parts for the chip teardowns, at least.
| [youtu.be] Boioioioiiiiiing |