GithubHelp home page GithubHelp logo

skot / bitaxe Goto Github PK

View Code? Open in Web Editor NEW
849.0 80.0 126.0 92.72 MB

Open source ASIC Bitcoin miner hardware

License: GNU General Public License v3.0

bitcoin hardware kicad mining bm1387 bm1397 bitaxe bm1366

bitaxe's Introduction

Open Source is Intrinsic to Bitcoin

The bitaxeUltra

bitaxe is a fully open source hardware Bitcoin ASIC miner. Ultra is the 3rd major revision of the bitaxe that now includes the BM1366 ASIC from the S19XP

bitaxeUltra assembled

Goals

  • Standalone: can mine directly to your pool over WiFi. No External computer needed.
  • Embedded: low cost, low maintenance, high availability, high reliability, low power.
  • ASIC: based on the very, very efficient BM1366 from Bitmain.
  • Versatile: solo/pool mining, autotune power/heat/efficiency.
  • Open Source: All design files are provided.

Features

  • ESP32-S3-WROOM-1 wifi microcontroller on board
  • TI TPS40305 buck regulator steps down the 5V input to power the BM1366
  • Maxim DS4432U+ current DAC digitally adjusts the BM1366 core voltage from 0.04V to 2.4V
  • TI INA260 power meter measures the input voltage and current of the miner
  • Microchip EMC2101 PWM controls the fan and monitors tach output. BM1366 doesn't support die temp, but we have it placed super close to the ASIC so we can use the internal temp feature.
  • 0.91" SSD1306 OLED I2C Display Module

BM1366

  • The BM1366 is a undocumented SHA256 mining ASIC from Bitmain. It's used in the Antminer S19XP and the S19k Pro
  • Bitmain claims the BM1366 has 0.021J/GH efficiency
  • The BM1366 is available (new) for around $15 each in small quantities.
  • The BM1366 has a different footprint and pinout from the BM1397 and BM1387 in previous bitaxe.
  • The BM1366 appears to roll more than just the nonce on the chip. This is great news, because it allows much longer serial chains of ASICs and new work doesn't need to be sent as often.

Current Status

  • Bitaxe Ultra 204 hardware has been verified and is working nicely!
  • Be sure to check the issues for known bugs, reworks and errata.
  • This is an advanced build! You can do it, but if you're not looking for a project, it might be best to buy one pre-assembled from one of the many sellers.

Hardware

  • Order PCBs from your favorite PCB shop, like JLCPCB, SeeedStudio, or PCBWay
    • Gerbers are in the Manufacturing Files dir. PCBs are 4-layer, 6mil trace/space and 0.3mm hole compatible. 1oz outer / 0.5oz inner layer thickness works well.
    • Make sure to order stencils too. These are the "paste" layers in the gerbers folder. one for top and one for bottom.
  • All PCB parts except the ASIC are available from DigiKey and others. You can find Digikey part numbers on the DK tab of the BOM
  • BM1366 ASIC from NBTC on AliExpress. I got the "AG" variant. Not really sure what the difference is -- "AL" works also.
  • 40x40mm heatsink and 5V fan from a random AliExpress seller. The fans are crap, but the heatsinks are good. make sure to use a good quality thermal compound between the heatsink and ASIC!
  • Upgrade your fan with the Noctua NF-A4x20 5V 4-Pin fan for a much more pleasant experience.
  • Supports 0.91" SSD1306-based I2C OLED Module. Example Amazon seller
  • KiCad 7 design files

Software

  • The ESP-Miner firmware used for the BM1397-based bitaxe has been adapted for the BM1366 and the current main branch can support both.

Cooling

  • You must have active cooling on the bitaxe.
  • The Bitaxe has a connector for a 5V fan. 40x40mm fans work nicely with the suggested heatsink
  • The fan connector uses the 4-pin standard:
    • 2 pins are for 5V power
    • pin 3 is fan speed sensing
    • pin 4 is fan speed control (PWM)

Power Supply Requirements

  • 5V DC Only! Anything else will damage the Bitaxe. Be careful and double-check your power supply is 5V. Many other voltage power supplies use the same connector.
  • The Bitaxe needs 15W. Be aware that many power supplies cannot deliver 5V at the listed power. It is best to pick an overrated power supply. 25W (5V, 5A) PSUs have been working well for people.
  • The Bitaxe uses a 5.5x2.1mm, center-positive barrel jack.

ESP32 Programming Requirements

  • As of the bitaxeUltra, all ESP32 programming is done through a USB-C cable and connector on the bitaxe. See ESP-Miner for more details.

Building

bitaxe's People

Contributors

bastelpichi avatar benjamin-wilson avatar sjmackenzie avatar skot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitaxe's Issues

JTAG connector problem for ESP32-S3-WROOM-1

Hi! Bitaxe is a great project. Something is wrong about JTAG for ESP32-S3-WROOM-1.
Your JTAG on PCB is: GPIO9(17), GPIO12(20), GPIO13(21), GPIO14(22), GPIO21(23), GPIO47(24)
JTAG for ESP32-S3-WROOM-1 in doc is: IO42(TMS)(35),IO41(TDI)(34),IO40(TDO)(33),IO39(TCK)(32)
See Image

GekkoScience Compac F

Hi Skot,

I wanted to join the conversation in bitcoin forum, but after register they wanted from me pay a fee to post anything :D Because my IP was used for evil or what..
So f**k them, I just wanna show you pictures of my GekkoScience Compac F for reverse engineering, which is BM1397. I played with it (changed an aluminium heatsink for copper, added a fan..). I destroyed one chip, replaced it with another one from aliexpress BM1397 AG...
BTW the heatsink could be soldered directly to the chip BM1397 AG, so you don't need any thermal paste.
So would those pictures be GekkoScience Compac F anything useful for you ?

Ed

Aliexpress links are dead

Alltho added yesterday, gives a 404. Just makes me wonder... (also prices seam very cheap)
EDIT: max branch, my bad

Alternatives for 330uF tantalum capacitor

In need of some alternatives for the part listed as "2388-PCT330/10DM-ND" as they're out of stock on Digi key and will take almost 2 months with £50 shipping for only 10. Is there any capacitors that I can order instead that will work without needing to adjust the pcbs?

TPS40305 feedback resistors are not right

The TPS40305 voltage regulator feedback resistors R14 and R15 are not the right values.

The good news is that this makes the TPS40305 output like 0.64V which is harmless. But you'll never be able to to adjust it up to the 1.5V it needs to be.

I'll add the correct values here soon.

ASIC chip temp not working

The pins I thought were the on-die chip temp sensor don't seem to be working. the EMC2101 will read 127ºC, the max temp all the time.

It's probably best to DNP resistors R7 and R8 to disconnect the EMC2101 from the BM1366 for now. (it will read 0ºC after that)

image

Add a PCB air temp sensor.

Because of #59 we're going to need a new way too measure (or approximate) chip temperature. This probably means adding a PCB air temp sensor as close to the ASIC and heatsink as possible.

a digital I2C temp sensor with the TMP75 is the most straight forward, but if there is a significant cost difference an analog temp sensor could work. We have plenty of ESP32 analog pins available.

I2C SDA cannot be on GPIO46

According to the Espressif Boot Mode Selection doc, GPIO46 being pulled high breaks the serial bootloader.

GPIO46 must also be either left unconnected/floating, or driven Low, in order to enter the serial bootloader.
In normal boot mode (GPIO0 high), GPIO46 is ignored.

Pick another pin for SDA. All GPIO pins can be used for I2C on the ESP32-S3

Noob Question

I came across the project, but not fully understanding if right now its something a every day person can replicate, I was looking at the guide, can buy the stuff from Aliexpress but missing the board, are you planning to make and sell the boards. Just some background would be good, thanks..

NCT218 shouldn't be powered by > 2.75V

The NCT218 (U8) temperature sensor has a supply voltage range of 1.4V to 2.75V. On the R1 max PCB, if you use a ESP32, it will be powered by 3.3V

NCT218 datasheet

the R1 PCB solution is to cut the trace connecting C33 to VCCIO, and then bodge wire that to the the 1.8V TP10 test point.
image

If you're not using an ESP32, this will be fine.

TXB0104 does not like the 1K NRSTI pulldown R1

The TXB0104 datasheet says;

If pullup or pulldown resistors are connected externally to the data I/Os, their values must be kept higher than 50 kΩ to ensure that they do not contend with the output drivers of the TXB0104 device.

This 1K pulldown causes all sorts of oscillations. Probably related to issue #35
image

Fan speed control is inverted

On the bitaxeUltra v1 the EMC2101 FAN_SPEED signal got a 5.6k ohm pull-up in order to set the default fan speed to 100%. This works well.

image

For some strange reason this also inverts the PWM polarity coming out of the EMC2101. The datasheet mentions this;

image

The solution is to change the polarity in the Fan Configuration Register (see datasheet section 5.16) if the bitaxe is an Ultra.

Getting started on this as a complete noob to pcb manufacturing and design.

Hi, I'm from NYC and currently run a repair shop and currently repair ASIC miners and have alot of extra T17 and S17 chips from dead hashboards. I wanted to see if I can create a USB miner out of these chips, but I have no idea how to get started.

I can do all the soldering and what not, but I'm not familiar with how to go about manufacturing a board using your schematics or how to link it to the software. Any advice would be great!

ESP32-C6

Hello Skot, would be not better to use the C6 version of ESP32 instead od dual core S3.
C6 have Wifi 6 implemeted. Which is not faster but should be more reliable if there are many bitaxes connected at once.

C6:
High performance 32-bit RISC-V CPU, up to 160 MHz,[12] implementing RV32IMAC
Low Power 32-bit RISC-V CPU, up to 20 MHz, implementing RV32IMAC
512 KiB SRAM and 320 KiB ROM
IEEE 802.11ax (Wi-Fi 6) on 2.4 GHz, supporting 20 MHz bandwidth in 11ax mode, 20 or 40 MHz bandwidth in 11b/g/n mode
IEEE 802.15.4 (Thread + Zigbee)
Bluetooth 5 (LE)
30 (QFN40) / 22 (QFN32) programmable GPIOs

S3:
Dual-core Xtensa LX7 CPU, up to 240 MHz,[10] and supporting single-precision FPU
Added instructions to accelerate machine learning applications
512 KiB SRAM, 384 KiB ROM, and 16 KiB RTC SRAM
Capable of connecting to external PSRAM and Flash via Quad SPI or Octal SPI, and share the same 32 MiB address space
Ultra-low power RISC-V (RV32IMC) coprocessor clocked at 17.5 MHz approximately
Ultra-low power FSM coprocessor similar to previous ESP32 and ESP32-S2
WiFi 2.4 GHz (IEEE 802.11 b/g/n)[11]
Bluetooth 5 (LE)
44 programmable GPIOs
2 × 12-bit SAR ADCs, up to 20 channels
USB OTG

BI pin floating

on the bitaxeUltra v1 PCB the BM1366 BI pin is connected to TP9, but that's it -- effectively floating.

In the past BI has been connected to the ESP32 and pulled down in firmware. It should at least have a pulldown resistor on the PCB.

This hasn't been causing problems on my first builds, but it definitely could.

core voltage pin headers are too small

The VIN pin headers used for powering the BM1387 core are a little too small and cause a pretty real voltage drop. need to come up with something different.

maybe screw terminals?

NebulaMiner schematic review feedback

From NebulaMiner on bitcointalk.org on 11/25/22:

Here is my Schematic review :

  • I see DS4432U+ OUT0 being used for TPS40305 control, but does the OUT1 being used somewhere ? (if not use, better not creating a signal out of the package to give ambiguity...)
  • where the 5V is generated ? I see +3V3 (U11), 1V8 (U5) and 0V8 (U6) being generated from 5V, and BM1397 VDD (alias of TPS40305 VOUT) being generated from VIN_M (the monitored VIN), but nowhere the 5V beoing generated...
  • on the ESP, I think you inverted TX/RX, please double check it
  • can you add pin header and TP for debug purpose on the 3V3 RX/TX/RST, (additionnaly to J3), and add also I2C SDA/SCL signal on this debug pin header ?
  • can you use an optional (with a serial 0R resistor) signal from a CLK_OUT of the ESP (pin 13/14/34/33/32 up to you) going to the BM1397 CLKI instead of the U1 one. I may want to try later if MCU can generate this clock by SW so we have control on the hashrate of the BM1397...
  • on the BM1397 you pulled down BI (with R4) are you sure it will not being used ? on BM1385 datasheet it is noted as a Busy Input (internal schmit trugger and pull down). Maybe you can link it to a GPIO of the MCU, we will see later if needed. (and add the 3V3 signal to the debug pin header too).
  • for the voltage level translators (U2/U3/U4), I used to use TSX0104 in my previous design, it is easy to use because bidirectionnal. Did you consider them ?
  • for EMC2101, the ALTER#/TACH pin can be configured as input (TACH monitor to mesure Fan RPM) or output (ALERT# signal to trigger an IRQ on MCU when special temp/tach conditons are met). I see more value having an ALERT# signal from it to the MCU to trigger an interrupt for Temperature Critical exceeded (with hysteresis to deassert the signal). The FAN RPM is not very usefull for us. Also EMC2101 porpose a Look-up Table of 8 stages so we can control by hardware FAN speed accoding to BM1397 internal temperature. Maybe what you can do, is link the EMC2101 ALERT#/TACH pin to a MCU GPIO, and the FAN TACH to another MCU GPIO (be careful of voltage level here), and SW will be able to configure EMC2101 in TACH reading for some seconds, by propagating the FAN signal, then switch back to ALERT interrupt for a longer period (1h ?). So most of the time we use Interrupt monitor, and only once in a while do a fAN RPM measurement for UI needs...
  • it would be usedfull to have the BM1397 VDD on a ESP ADC input to measure the BM voltage
  • it would be usefull to have the TPS40305 PGOOD linked to a ESP GPIO to know if Power is Good

Add copper layer ASIC alignment markers

aligning the ASIC for soldering is still hard AF. You can't really use the silkscreen markings because the registration between silk and copper is different for every board run.

Maybe we can use a copper layer mark for alignment?

Collection for ESP coder

Hi Skot,

I suggest making a collection for ESP32 programer / coder, as I see this is the primary delay in your big project.
It would be dangerous to send money to someone unknown, as there are many scammers.But if you know someone trustfully enough, we (all who want to contribute with any amount of money) can pay a bill for him to code a ESP miner for you and so for us too.

Sponsor

​​​Hello
This is Liam from PCBWay.
Deeply impressed by your project which is novel and creative,
I’d like to sponsor your project by providing free PCB prototyping,
All I ask for in return is a slight promotion or review of our quality or service.
Would you be interested in partnering up? Contact me: [email protected]

Replace power connection with 2.1ID 5.5OD barrel connector

Most 5v power supplies available come with a 2.1ID 5.5OD barrel connector. This will reduce the amount of work to get a bitaxe working and provide a little protection against shorting.

When creating the connector large pads should be also made underneath if possible so that the connector can be de-soldered and wires can be soldered directly to the PCB for other projects.

Error loading symbol library BM1397

I'm working on the socket mount to convert this into a chip tester (ItsAllGoodMining & Repair)

When I open the Symbol Editor in Kicad I get the following error

Errors loading symbols:
Error loading symbol library BM1397

Library file
'\Users\skot\Work\Bitcoin\BM1397\cad\BM1397.kicad_sym' not found

I searched the files in the repo, seems this one is missing.

Thanks

Add USB connector

ESP32-S3 has a USB peripheral that is capable of performing USB-JTAG. It enables anyone to program and debug by only connecting it to a computer through USB.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.