Bitcoin Forum
November 09, 2024, 02:01:54 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 »  All
  Print  
Author Topic: NanoFury Project - Open Source Design  (Read 75386 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
October 30, 2013, 10:16:50 AM
Last edit: December 28, 2013, 06:50:49 AM by vs3
 #1

NanoFury Open Source Project

I'm opening a thread to discuss my work on the the NanoFury project and general design questions regarding the Bitfury ASIC.

The project home is at: https://github.com/nanofury/NanoFury

Project Summary:
Interface: USB 2.0
Power Requirements: 2.5W when being operated within USB2.0 specs, up to 3.5W when using a powered hub
Performance: Approx 2GH/s when within the USB2.0 specs, up to about 2.5GH with passive cooling
Dimensions: 25x42.5mm
ASIC: 1x Bitfury chip

PCB/CAD software: KiCAD

This is how everything looked while designing it :


And how the real ones ended up:


There are more images and galleries at: http://nanofury.imgur.com/

Project Status

Hardware:
As of version 0.6 of the PCB everything seems to work and be pretty stable. If you're looking to try out the design - start from that version.

Software:
Even though we started with cgminer that one needs a lot more work and has not been checked in into github yet.

Luke-Jr however did wonders and his bfgminer works beautifully! Luke - thanks one more time!!!

As part of the bfgminer's requirements each device needs to report a specific "Product String". I've put up a small test program that can exercise each device and also fix that string. Alternatively, you can tell bfgminer the individual serial numbers and in that case it won't care about that string. (although I think it's much easier to just set the product string Smiley). You can find the test program at https://github.com/nanofury/NanoFury_Init

Overclocking
I guess everyone's favorite topic Smiley

The board does support some overclocking as well as voltage tweaks (e.g. "pencil mod").

In order to meet the USB2.0 requirements bfgminer defaults the bitfury chip to speed of 50 bits which results in about 2.5W and around 2GH or just below.

Most computers would actually tolerate slightly over-spec devices and won't shut the port down. For such cases you can experiment by overriding the number of speed bits and find out where the limits of your hardware are.

Also, keep in mind that no two bitfury chips are the same - each board may perform slightly differently.

And I guess it comes without saying that some cooling will be required. Start with at least a small heatsink to the back of the board.
If you want to go a bit more aggressive - add a heatsink to the bitfury chip and the inductor.
And you can't go wrong by adding some active cooling (like a small fan).

WARNING: THOSE BOARDS WILL RUN HOT! AND I MEAN VERY HOT - 80-85C! HANDLE THEM WITH CARE!!!

If your boards overheat you may see the hashrate dropping significantly (like 0.3-0.6GH instead of 2.4). Sometimes the USB port will start dropping the voltage and instead of 5V it may go down to 4V or even 3.5V. Once it goes below 3.6V this may interfere with the USB communication, so you'll likely lose communication with that board. In such case you will have to unplug the board and plug it back again.


Future plans:

- Converting the design to a two-chip one would be a very easy task. It just needs more power and an extra bitfury chip. On the other hand, power consumption would most likely exceed USB3 specs ... that's unless you have a powered USB hub providing 1-1.2A per port. It will also produce a lot of heat. So a heatsink will be a must.

- Use the design for a zero-chip board to serve as an adapter to be used with the existing 8-chip and 16-chip boards (such as punin's and buzzdave's ) for those that would prefer to run the mining software on a PC (and those that for whatever reason don't have or don't want to use an M-board).
It would be a USB-to-HCard adapter.
There are several designs of H-card clones that use 8 chips (including buzzdave and tytus's new 8-chip boards) so that may be a good fit for pre-starter kits.

bfgminer already has the necessary support and will discover the more than one-chip-per-port situation.

Some history:

I got initially the idea of the NanoFury as I didn't like having to buy a Raspberry Pi in order to use Bitfury's chips. I wanted something that I can just plug in my laptop. I even joined some of the Avalon and BFL preorders (what a disaster after a disaster!). Then I discovered bitfury's thread ([ANN] Bitfury is looking for alpha-testers of first chips! FREE MONEY HERE!) and things started getting interesting ... but no chips though...

And what happened next is all tytus' fault! I got a message that he'll be sending me few sample chips! And a few days later I got them! And I promptly lost sleep Smiley

Unfortunately to this day there is no documentation for bifury's chip. I started digging trough the forums and collecting various bits from here and putting the pieces together. I've put all of those notes in a wiki article - which uses the "docuwiki" format, and github wants the "mediawiki" format, so on my to-do list is to start reworking that. If there are any volunteers to help with that or know how to easily convert it - please PM me.
Thanks to z3phyreo who is porting that documentation we already have some of it available here: https://github.com/nanofury/NanoFury/wiki/The-missing-bitfury-chip-documentation .

My very first idea was to make it an Arduino shield. But that would've been an overkill for most people.

So, for the pre- v0 of the board I picked Microchip's MCP2210 chip - it seemed like a good candidate. Except that after wasting a week combing through the documentation I could not find a way to bitbang the SPI pins, which is a must for bitfury's RESET sequence. Which lead me to abandoning that chip.

So, version 0 of the board was made around the FT232R chip. I picked that one specifically as it claimed that it has a built-in 3.3V regulator, and that it operates at down to 1.8V - just perfect for interfacing with bitfury's chip which also works at 1.8V. It is also a very popular chip - especially among hobbyists. I probably have a dozen boards with it around - various rs232/serial and custom adapters.
The FT232R chip however is really an asynchronous interface, so the SPI required quite a lot of work. And worst of all - it is very slow when doing bitbang kind of operations - I couldn't reliably squeeze out more than 1-2kHz out of it. I had almost given up when I noticed that it can work as a pseudo-parallel interface, in which case it would use the /RD and /WR buses and do a send, then receive sequentially. That way I could make the individual pins of the SPI interface be simulated via the 8 data bus pins. I got 50-100kHz that way, and it also took care of the RESET sequence. The CPU however would have to serialize and de-serialize all the communication.
This was a bit of a hack, and a rather ugly solution, and I had spotted another (better!) chip which seemed like a more appropriate candidate!

I started working on v0.1 of the board using Cypress' CY7C65211 chip. Luckily I wasn't too far into that when both Cypress and Digikey (and Avnet a bit later) said that those are on back order...

And while discussing the various solutions and options one of them was:
The next option I looked at was MCP2210. But you can't switch the SPI pins into GPIO. I can tweak the SCK pin (by switching the phase) but I can't do anything about the MOSI one. The only (cheap) solution was going to be to sort of short-circuit it with another GPIO pin via a small resistor like

So that became v0.1 of the board, back with MCP2210. At that time it was unclear how much power does the bitfury chip draw from the 1.8V, so I picked a rather bulky LDO. Meanwhile it got clarified that it is a lot less.

Which became v0.2 of the board. But I had forgotten about those 0402 components - they are tiny!!!! And it was just too much pain to deal with them, and on top of everything else there was plenty of room on the board, so not really necessary to go that small.

In v0.3 of the board I changed everything to 0805 - nice and big! Smiley Actually so big that for some components it was getting too cramped ...

And v0.4 was born with most components back to 0603. While I was waiting for the v0.4 to arrive I noticed that I had overlooked the MCP2210 specs - it didn't like 1.8V signals ... so I had to add a voltage converter. Some of the ideas that were floated used a cheap bipolar transistor, but I wasn't quite sure how the extra currents floating through it would affect the bitfury chip, so I picked the MOSFET option. I had a bunch of them laying around, so I just grabbed the first one and started testing ... and it did not work. I had almost gone back to a plan NPN one when I figured out what was wrong with mine - 1.8V wasn't enough for it to switch - it needed over 2.5V. I dug out one with a gate-source threshold of 1.4V and - bingo!

Which lead to v0.5 of the board. I also decided to ditch the printed USB-a connector for a number of reasons - PCB had to be thicker (read: more expensive), then that connector needed to be gold-plated (read: more money), then the boards needed some special cuts for that connector (read: even more money) also my sample boards seemed a bit flaky in the USB slots and contact wasn't always as good, etc.
So I put a proper USB-A connector which was also a relatively cheap one. Except that I messed up the pin numbers - they were in reverse order.

Which resulted in PCB version 0.6.

Software in the mean time was quite a pain too. Microchip only had a .NET version of that DLL .. so any linux-support hopes were a bit foggy. Luckily I found Kerry Wong's library. Which was meant mostly for linux usage. (Did I mention that I'm more of a Windows fan? Smiley)

Eventually, after many many hours of fiddling with it (thanks Val!) we finally got something working on Windows and I started debugging. As it turned out that there was a bug in the library, which I fixed in the nanofury fork (https://github.com/nanofury/MCP2210-Library).

And as they say - the rest is history Smiley



Acknowledgments and other information:

* This project was inspired to a great extent by BKKCoins' Klondike K1 Nano Open Source Board and I'm very grateful for all his work and I'll continue to support that project down the road as I can!

* I've reused the same physical dimensions to as much as possible (including heatsink holes size and position) with the goal that if necessary both projects may share the same plastic hosing and/or heatsink.

* Several people contributed to the development of this project and I'd like to say Thank You one more time for the dedicated work! You can find more details on the github page.


Usage
I guess for most people that's the most important question Smiley

First - start by downloading KiCad: http://www.kicad-pcb.org

Get the project files, and open the project from within KiCAD.

When you open either the schematic or PCB documents KiCAD may want to start with its own libraries. Remove them from the list - the NanoFury project includes a lib folder with all libraries that you may need. Just add all files from the NanoFury/NF1/kicad/lib folder. (this also would prevent the issue when KiCAD wants to use its own library for a given component instead of the one from the project which may result in bad schematic or PCB)

From within KiCAD then you can print the schematic documents and generate all files needed by the PCB and factories.

And that's all - it is really that simple! Smiley

I guess many of you will have questions, so feel free to post on this thread and I'll try to get back to you as soon as possible.


Donations

If you found this project helpful and wanted to donate some bitcoins please send them to 1AHvViTD5wohPywNYHi8NZ8uPhbY9dZXCY. All donations are much appreciated! Smiley

If you end up using the NanoFury designs for manufacturing of any boards for sale/resale or otherwise for profit -  I'd like to ask that you consider adding a few bucks "design donation" to the first few hundred boards (or as much or many as you feel appropriate) to help recoup some of the several thousand dollars that went into the development of this project (not mentioning the countless man-hours of work).


Finally:

And most importantly - HAVE FUN! And Happy Mining! Smiley

vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
October 30, 2013, 10:17:00 AM
 #2

reserved

Bicknellski
Hero Member
*****
Offline Offline

Activity: 924
Merit: 1000



View Profile
October 30, 2013, 10:26:09 AM
 #3

Nice work.

How much would you like us to kick back to you if we fab out your NF's... or should I PM you?

Dogie trust abuse, spam, bullying, conspiracy posts & insults to forum members. Ask the mods or admins to move Dogie's spam or off topic stalking posts to the link above.
vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
October 30, 2013, 10:44:20 AM
 #4

Nice work.

How much would you like us to kick back to you if we fab out your NF's... or should I PM you?

Well, you probably won't be the first or only one asking that question, so I guess it is appropriate to be here.


The answer is - As much as you want or feel appropriate Smiley

Ideally a few bucks on the first several hundred boards would be fine, and in the bitcoin reality that may shrink even further with time.

After all I didn't want to bog any manufacturer with fees - that's why I left it open source. If the designs worked for you - then feel free to cut a bit or as much as you like for us Smiley

And of course - feel free to PM me and we can chat a bit more.

Dexter770221
Legendary
*
Offline Offline

Activity: 1029
Merit: 1000


View Profile
October 30, 2013, 12:03:18 PM
 #5

Let the god bless you with the kids....

Under development Modular UPGRADEABLE Miner (MUM). Looking for investors.
Changing one PCB with screwdriver and you have brand new miner in hand... Plug&Play, scalable from one module to thousands.
Bicknellski
Hero Member
*****
Offline Offline

Activity: 924
Merit: 1000



View Profile
October 30, 2013, 12:26:28 PM
 #6

Nice work.

How much would you like us to kick back to you if we fab out your NF's... or should I PM you?

Well, you probably won't be the first or only one asking that question, so I guess it is appropriate to be here.


The answer is - As much as you want or feel appropriate Smiley

Ideally a few bucks on the first several hundred boards would be fine, and in the bitcoin reality that may shrink even further with time.

After all I didn't want to bog any manufacturer with fees - that's why I left it open source. If the designs worked for you - then feel free to cut a bit or as much as you like for us Smiley

And of course - feel free to PM me and we can chat a bit more.

Will do thanks for the information.

Dogie trust abuse, spam, bullying, conspiracy posts & insults to forum members. Ask the mods or admins to move Dogie's spam or off topic stalking posts to the link above.
Dexter770221
Legendary
*
Offline Offline

Activity: 1029
Merit: 1000


View Profile
October 30, 2013, 12:30:54 PM
 #7

If I understand correctly inside Bitfury chips is comparator. CMQ is the output. Unused opampas should be connected differently. Minus connected with output and plus to the ground. Shorting output to ground may cause unnecessary current flow.

Under development Modular UPGRADEABLE Miner (MUM). Looking for investors.
Changing one PCB with screwdriver and you have brand new miner in hand... Plug&Play, scalable from one module to thousands.
Beastlymac
Hero Member
*****
Offline Offline

Activity: 630
Merit: 501


Miner Setup And Reviews. WASP Rep.


View Profile
October 30, 2013, 12:31:21 PM
 #8

Great design with great potential.

Message me if you have any problems
vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
October 31, 2013, 01:24:56 AM
 #9

If I understand correctly inside Bitfury chips is comparator. CMQ is the output. Unused opampas should be connected differently. Minus connected with output and plus to the ground. Shorting output to ground may cause unnecessary current flow.

Dexter - bitfury posted some stuff here:
https://bitcointalk.org/index.php?topic=183368.msg2460608#msg2460608

but I haven't had time to translate it (and google translate is a bit useless with technical stuff).

A few posts later however there is a sample schematic that sort of explains the story. Basically the CMQ/CMMINUS/CMPLUS pins are for chips when designed to be in series - like Christmas lights. I remember reading somewhere a reply from bitfury that this stuff is probably not going to be reliable and that's why he recommends those pins to be connected to GND.

I guess tytus & buzzdave decided to give it a shot anyways - and the results are more than obvious : Smiley


cchan
Sr. Member
****
Offline Offline

Activity: 379
Merit: 250


View Profile
October 31, 2013, 01:48:57 AM
 #10

Great work. Thank you so much.
I've contacted with vs3 before. He's a very nice guy. Cheesy
Dexter770221
Legendary
*
Offline Offline

Activity: 1029
Merit: 1000


View Profile
October 31, 2013, 09:49:59 AM
 #11

Thanks for the link. I was learning russian in school 25 years ago Wink I can read but don't understand to much Wink
I think that simply connecting chips in series is a big mistake, pictures above. I've made experiment with 3 uC's connected in series with some additional electronics and it worked beautifully. Unfortunately I don't have Bitfury chips to verify this concept with them. I have concept to supply 40 chips with one DC/DC converter 3,5V 20A.

Under development Modular UPGRADEABLE Miner (MUM). Looking for investors.
Changing one PCB with screwdriver and you have brand new miner in hand... Plug&Play, scalable from one module to thousands.
itod
Legendary
*
Offline Offline

Activity: 1974
Merit: 1077


^ Will code for Bitcoins


View Profile
November 02, 2013, 12:22:40 AM
 #12

Great work. Thank you so much.
I've contacted with vs3 before. He's a very nice guy. Cheesy

+1 on everything. Congrats vs3 on the successful project! Open-sourcing this is so good for the community.

Hope many good tings will come for this project in the future, and many production batches.
chloegeek
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
November 03, 2013, 01:21:54 PM
 #13

Amazing work! I would love to be able to get my hands on one of these. Looks like a lot of energy and care went into the design, am excited to see how it all pans out!

Just wanted to throw in my encouragement!
vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
November 03, 2013, 06:47:04 PM
 #14

Thank you guys for the kind words! It took quite some work indeed! Hopefully this will help others and save them from having to go through the same hassles I went trough.

And to be honest - I think bitfury should've released something like that to begin with.

mjgraham
Full Member
***
Offline Offline

Activity: 188
Merit: 100


View Profile
November 07, 2013, 09:41:55 PM
 #15

Very nice, simple and effective, one question though could more chips be chained directly from the test points you have on the board? I have been working on a simple raspi to 4 chip but after I saw you USB interface I like that better but looking at the software comments it looks to be a 1:1 setup w/o more software work (or not I hope). At any rate pretty awesome and thanks for sharing !

vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
November 08, 2013, 04:13:10 AM
 #16

Very nice, simple and effective, one question though could more chips be chained directly from the test points you have on the board? I have been working on a simple raspi to 4 chip but after I saw you USB interface I like that better but looking at the software comments it looks to be a 1:1 setup w/o more software work (or not I hope). At any rate pretty awesome and thanks for sharing !

Yup - that's exactly what those test points were meant for Smiley
Presuming you've already figured how to provide 0.8V to the other chips all that remains is to hook them on the chain - via those test points.
You'll basically need hook 5 wires: SCK, MOSI, MISO, 1.8V and GND.

Also, among my chats with Luke-JR was the question to add support to bfgminer for "chaining" of such chips - and he's done that too (as this is being used by almost all bitfury designs anyways).
So from that point on all you'll need is just some hardware - no additional software development is necessary. (well... hopefully ... you never know Smiley)

As I mentioned early - my goal was to do the ultimate K.I.S.S. design for those chips Smiley

mjgraham
Full Member
***
Offline Offline

Activity: 188
Merit: 100


View Profile
November 08, 2013, 12:18:38 PM
 #17

Thanks I figured that was pretty much a given anymore on chaining chips and such, good job and thanks again for the hard work!

stan258
Sr. Member
****
Offline Offline

Activity: 440
Merit: 250



View Profile
November 13, 2013, 07:20:34 PM
 #18

I am new to kicad and somewhat lost.  I live next to a pcb fab and assembly facility. I am tryimg to get the Gerber file and bom parts list so they can get me a quote for putting a proto together.  Also if this is financially viable what would be a good donation?
vs3 (OP)
Hero Member
*****
Offline Offline

Activity: 622
Merit: 500


View Profile WWW
November 13, 2013, 07:58:54 PM
 #19

I am new to kicad and somewhat lost.  I live next to a pcb fab and assembly facility. I am tryimg to get the Gerber file and bom parts list so they can get me a quote for putting a proto together.  Also if this is financially viable what would be a good donation?

Stan - on the several questions:

- KiCAD and gerbers: Start by downloading and installing KiCAD. Then open the pcb file - it will probably complain about libraries and stuff but you can ignore that. Then from the menu select Plot - that's how you generate the gerber files. On that window there is also a button for the drill file.
- BOM : Open the schematics and from the menu -> tools -> generate bill of materials. I usually pick a tab-delimited text file which then Excel can easily read.
If you get stuck with those feel free to PM me and I can get those for you.

As for the donation part - a few bucks per board on the first several hundred or as much as you feel appropriate.

stan258
Sr. Member
****
Offline Offline

Activity: 440
Merit: 250



View Profile
November 13, 2013, 08:21:26 PM
Last edit: November 14, 2013, 10:28:17 PM by stan258
 #20

Vs3 thank you. ----- I do have a quote from the facility.  We are going to do a test run of 20.  I will be ordering chips when I get home from the job. 
Pages: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!