To continue our series on Bitmain’s Antminer L3+, we enter the troubleshooting phase. Over the last few months I’ve posted about various ways to extend the life of your miner and still maximize the efficiency. Well, sometimes we push a little too hard and see early failures and other times these units just get old and tired and start breaking. The question is what to do when it’s not doing what you think it should. Confusing? Don’t worry, I’ll walk you through creating a quick and easy (and cheap) way to test your L3+ hash boards.
I’ll start with saying Bitmain’s Support has been very helpful in getting me the firmware needed for this. There’s always going to be a slight language and time barrier, but they really did hook me up for this so I wanted to give them a big shout out. I haven’t been through their Antminer Maintenance Training Academy, which is generally a prerequisite for some of the support they gave me, but nonetheless they’ve really gone out of there way to help.
Bitmain created a maintenance firmware load that allows for running diagnostics on a unit without re-flashing the firmware that’s already flashed onboard the L3+ control module. This is exceptional for two reasons, one is obvious, we don’t have to re-flash and redo all our settings again. But two, we can test our units in place, and no special test fixture is required. It does help however to have a separate control board and I/O board for this, but it’s not required.
What you’ll need…
- L3+ Control Board (I believe any version after 2.0)
- L3+ I/O Board
- USB to TTL module (Amazon has many to choose from)
- Male to Female jumper wires
- USB extension cable – male to female
- Fan emulators for L3+ Control Board (if you don’t use standard fans)
- Laptop/Desktop with a terminal emulator (I used SerialTools from the Mac App Store)
- Bitmain diagnostic firmware on an SDCard
Obviously you’ll also need some hash boards and a power supply, but that’s the whole point of building this so I’m guessing you’ve got those. I ultimately went the route of setting up a separate test fixture as I had the luxury of having a spare L3+ control board and I/O board.
Setting up the Diagnostic Firmware
You’ll need to get an SDCard that’s at least 8GB, clean and formatted FAT32 with only one partition for the entire device, and download the firmware here. The firmware image must be burned properly to the SDCard as there are several partitions that get created within the image. If you simply copy the image to a FAT32 formatted card you’ll be out of luck. I used the open source balenaEtcher which is a great free tool. Once installed, all you need to do is unzip the image to your hard drive theb open balenaEtcher. Once opened, it’s very simple:
- Select Flash from file -> select the unzipped firmware file (20170415-LTC-zhiju.img)
- Select Target (this will be you SDCard)
- Select Flash!
And that’s it folks, a few minutes later you’ll have an SDCard that’s ready to roll and you’re already halfway there.
Setting up the L3+ control board for USB to TTL
Your next step is to add the USB to TTL adapter to your L3+ control board. This requires attaching three wires (TXD, RXD, and GND) to your control board. I highly recommend soldering the wires directly instead of the “cram and hold” method as that can lead to shorts and intermittent connectivity which will affect your results.
I used three male to female jumper wires for this as the female socket plugged directly onto the USB to TTL adapter and the male end fits into the L3+ control board sockets making for simple soldering.
For reference it will be easier to install the wires on the primary side (side that has the headers and most the larger components) of the L3+ control board and solder on the secondary side. There’s much more room to solder and less opportunity to damage anything. You just have to remember that you’ll need to bend the wires when you sandwich the I/O board on so plan for that when soldering (don’t mind the extra wires in the bottom right, that’s for another project involving an LCD.)
Attach power, USB cable, and computer
Once you have the control board and I/O board connected, attach the power header, your hash board to be tested on Chain 0 (I do one board at a time), and your USB cable to your computer. Open the terminal software on your computer and setup the USB serial port for 115200 baud rate, 8 bits, no parity, 1 stop bit, and RTS/CTS. Now select to connect (and if available select auto-reconnect as well.)
Insert the SDCard before powering up your unit and insure it’s inserted all the way by listening for the click that it snapped in fully.
Also if you’re running this outside of the chassis then insure you have fans cooling the hash boards or else you’ll create a whole new set of problems.
Now power on the unit and you should immediately be greeted by the following:
Once the system goes through its self-diagnostics it will enter a login screen, wait until it automatically logs in then you will reach the end of the boot up sequence when you see the following:
— get_works: wc_add_step = 1
At this point the system is ready to start testing any hash boards attached. In order to start the test you simply press the IP_Sig button on the L3+ I/O board. This will initiate a check for attached hash boards first, which is determined by the following:
— check_chaincheck_chain: plug_0_value = 1, plug_1_value = 0, plug_2_value = 0, plug_3_value = 0
As you can see from above, a value of “1” means the hash board is installed/recognized. The next steps simply read the hash board’s PIC, set the voltage, and set the frequency (stock 384MHz.)
After checking the hash board temperature the next step is running tests on individual chips (all 72.) I believe it accomplishes this by simply reading and writing to the memory. I believe the key thing here is that GAP_ERR, WORK_CRC_ERR, and CMD_CRC_ERR should all be “0” for each line.
After each ASIC has been tested the results will be published at the end:
Congratulations, you’ve run your first set of diagnostics on your hash boards and it should have only cost about $20 in parts and hopefully not too much labor. You will have to scroll through the terminal output to fully understand and appreciate what the test firmware is doing and understand a little bit about memory and registers, hexadecimal stuff, blah blah blah.
While this doesn’t point to anything directly at times, it can start to narrow down what you’re running into. I had one hash board that I believed the 14V boost circuit was bad on, turns out I had a bad temp sensor IC that intermittently read incorrectly so it was tough to track down.
Give it a shot and as always please give me feedback or experiences so I can improve this for others.