Pages:
Author

Topic: Hacking the S7 - improving efficiency through minor hardware manipulation - page 4. (Read 26494 times)

full member
Activity: 279
Merit: 107
t
Well for a start, what is the voltage into and out of the big power inductor? One side should be fed from the PCIe plug through MOSFETS and will be a chopped 12v, the output side needs to 10v or more depending what the PIC is setup for. (Sidehack confirm?) Somewhere in this thread the output is mentioned.

Anyhow, if the low side of the inductor is less than that, probably dead PIC and the regulator/depot is working off of preset defaults. If the voltage is zero the I'd guess the FET's failed open but typically they fail as a short.

I suppose if you have a PICkit programmer you can follow the heart of this thread and try to readout what the PIC has stored in it. After saving that (possibly corrupt) file might as well see if the PIC can accept a reprogram for lower voltage better eff...

I have tried x5 psu's bit get the same situation/problem....I do not Know if i need a PIC programmer, as i do not know id]s my pic is withing ing the the correct parameters (Voltage).

I do have various pic programmers from over the years for old |NTL/Virgin pics, plus xbox  etc....

I just need to the pic first, do my faults (AS ABOVE), relate to a dodgy chip ?

Can anyone confirm this, i've read and read/saved 70 odd replies, ans still do not know which pic it is it is ' i have a Willem/Nexus programmers..lol and i have a Pic Programmer somewhere, not sure where it is but remember putting in the 6 pin chips...MUST off been to to with 'Ful package TV' YEARS ago 15 years ago at least...

Thanks guys, i will keep searching..
legendary
Activity: 3752
Merit: 2667
Evil beware: We have waffles!
Well for a start, what is the voltage into and out of the big power inductor? One side should be fed from the PCIe plug through MOSFETS and will be a chopped 12v, the output side needs to 10v or more depending what the PIC is setup for. (Sidehack confirm?) Somewhere in this thread the output is mentioned.

Anyhow, if the low side of the inductor is less than that, probably dead PIC and the regulator/dpot is working off of preset defaults. If the voltage is zero the I'd guess the FET's failed open but typically they fail as a short.

I suppose if you have a PICkit programmer you can follow the heart of this thread and try to readout what the PIC has stored in it. After saving that (possibly corrupt) file might as well see if the PIC can accept a reprogram for lower voltage better eff...
full member
Activity: 279
Merit: 107
He's already talked to me. I told him yesterday what's said in this and other threads - when the PIC is shot, the board boots up to about 9.3 volts instead of over 10 volts. Without a bus sniffer or a good scope to check the I2C lines into the DPOT that's the best way to know if it's working or not.

So i have no way of checking my standard Fluke Multimeter (I'm an Industrial sparky by trade, so from 12v to 11Kv, any card like this would just go in the bin or sent away to the likes of you guys for repair, but fom reading 100's of threds it is ONLY a oltage measurement i need to check, i have saved the parameters of expecte voltage.

I have read so many threads and had a few bottles i'm going Dizzy....

ONE thing that i think i am correct on is that it can not be a faulty pic (which i can't find or test..lol),  the reason being-

1. I have all boards showing with no missing xxxxxx or any -----------, all 0000's.
2. The temps are showing and are low as expected (not mining) BUT it does show on my pool (so I/O board, Beagle Board /BB ok)
3. All 3 chains of 45 Asics are showing healthy.
4, Fans are running at a presumed speed since i have NO Outut/Gh's Huh Pool requesting for power...

I'm going back to search on how to check the chip and where it is located and can i can i test it with a standard fluke Multimeter, I know the parameters.

Cheers guy's for putting up with me.
 
Drag
legendary
Activity: 3374
Merit: 1859
Curmudgeonly hardware guy
He's already talked to me. I told him yesterday what's said in this and other threads - when the PIC is shot, the board boots up to about 9.3 volts instead of over 10 volts. Without a bus sniffer or a good scope to check the I2C lines into the DPOT that's the best way to know if it's working or not.
legendary
Activity: 3752
Merit: 2667
Evil beware: We have waffles!
Well, PM Sidehack about it. You seem pretty on-target with your questions so I think you can learn much about the s7 power from him. Specifically, information on checking voltages (and changing them). Tell him I referred you to him Wink
full member
Activity: 279
Merit: 107
Jeez i just read ALL that as a newbie and i'm more confused  Huh

ALL i want to do is check th e pic Voltage controller is worker on a dead S7 !!!!

Do i need to re -read...or can someone help me on how to check it or even where it is, i KNOW its not on he side of the board with capacitors......

If anyone can help it would be GREATLY appreciated..

Drag
newbie
Activity: 38
Merit: 0
Has anyone figured out the HEX files for the Antminer S9?
I wonder if this same procedure could be done to the S9.  Smiley
I'd assume it can/could be done with pre-batch-16 miners that are using the old firmware. Batch-16 and higher with the auto-tune pretty sure this will not work.

I have the same question. Has anyone done it?
My Pickit3 should be here on Tuesday. I am going to play with some S7s to make sure I have the steps down.
I use a "PIC" in my daily work for years with Allen Bradley PLCs. From what I have read here the steps sound almost identical.
Go online, save a copy of the current "program" in memory, edit the "program", or load a new "program".
With the AB software you then had another step to save to eeprom and done.

This all sounds simple and thanks to sidehack for the work with the pictures and hex files. There will be a tip on the way.
I think all I need are the hex values for the S9. I should be able to look at what is there to begin with and work backwards from that value.

I have another S9 with a hashboard which has stopped showing up at all. I have inspected the locations noted in the thread Simple S9 repair/overclock guide: https://bitcointalksearch.org/topic/simple-s9-repairoverclock-guide-1661115
So, I hope the voltage change will help.

Suggestions are appreciated.

BTW I know Sidehack did the work and collected information  for this S7 / LN thread, but thanks to all who contribute. Hearing input from others either performing the "hack", or have knowledge regarding the components is very helpful as well.

Thanks to all who contribute.

I'm working on fixing a softbricked hashboard on the s9, being able to read the firmware off of a good board and write it to one with bad data might be the ticket. I have the 3200 block code for the autotune version, but I need to wait for my pickit to arrive before I can read the code from the pre autotune version as they didn't include it in the firmware.

Hopefully if I can read a good copy from a working pre autotune board I can write it back to the post autotune softbricked boards.
legendary
Activity: 2464
Merit: 1710
Electrical engineer. Mining since 2014.
Is it the missing DPOT?
I located the PIC which is PIC16F1704 by Microchip in these pictures of the hash board,
but I could not find a DPOT.
https://c2.staticflickr.com/8/7454/27832785916_635bd20eef_o.jpg
https://c2.staticflickr.com/8/7393/27832763046_597dbe45c0_o.jpg
(Pictures (C) dogiecoin.com)
legendary
Activity: 3374
Merit: 1859
Curmudgeonly hardware guy
I highly doubt the S7 hack will work on an S9. Not sure how they alter the voltage but it's a different method, the parts required for the S7 hack to work aren't there.
hero member
Activity: 700
Merit: 501
https://bitcointalk.org/index.php?topic=905210.msg
Has anyone figured out the HEX files for the Antminer S9?
I wonder if this same procedure could be done to the S9.  Smiley
I'd assume it can/could be done with pre-batch-16 miners that are using the old firmware. Batch-16 and higher with the auto-tune pretty sure this will not work.

I have the same question. Has anyone done it?
My Pickit3 should be here on Tuesday. I am going to play with some S7s to make sure I have the steps down.
I use a "PIC" in my daily work for years with Allen Bradley PLCs. From what I have read here the steps sound almost identical.
Go online, save a copy of the current "program" in memory, edit the "program", or load a new "program".
With the AB software you then had another step to save to eeprom and done.

This all sounds simple and thanks to sidehack for the work with the pictures and hex files. There will be a tip on the way.
I think all I need are the hex values for the S9. I should be able to look at what is there to begin with and work backwards from that value.

I have another S9 with a hashboard which has stopped showing up at all. I have inspected the locations noted in the thread Simple S9 repair/overclock guide: https://bitcointalksearch.org/topic/simple-s9-repairoverclock-guide-1661115
So, I hope the voltage change will help.

Suggestions are appreciated.

BTW I know Sidehack did the work and collected information  for this S7 / LN thread, but thanks to all who contribute. Hearing input from others either performing the "hack", or have knowledge regarding the components is very helpful as well.

Thanks to all who contribute.
sr. member
Activity: 277
Merit: 250
Anyone looking for a couple bone stock S7's to hack?

I thought I'd post here to see if anyone needs a couple to hack, instead of posting them on eBay.

I have 1 - S7 B9 and one S7 B11 for sale. I'm asking $425 USD each or $800 USD for the pair.
Able to accept BTC, ETH-HF or Peercoin as payment... or if in the USA, a good ol bank cashiers check from a US BANK.(There will be a short hold time to clear the check)
Continental USA SHIPPING INCLUDED!
International Shipping Available but at cost.
Unit(s) will be shipped the day after payment has cleared - Tracking number(s) will be provided.

They come with the original packaging and box!

Both are in good running condition. Always disassembled every couple months and cleaned to keep the operating temps low.

No abnormal noise, no dead chips, no burnt connectors.

They have not been hacked, and only have been overclocked for about a week of run time after the warentee expired to analyze cost vs profit vs risk of failure. It turned out that with my electrical cost, it was not beneficial to OC so for the most of their 1 year of running, they were stock clocked.

They will be shipped with the defaults set and labeled with the batch number.

If interested, either contact me via private message, or contact me via email at big.banana.tech &^%_AT_%^&_gmail_!^#_DOT_#^!com

I ship only via FedEX or UPS - your choice.

Thank you

Dave Schmidt
Kewaskum, WI 53040
USA



legendary
Activity: 3752
Merit: 2667
Evil beware: We have waffles!
Has anyone figured out the HEX files for the Antminer S9?
I wonder if this same procedure could be done to the S9.  Smiley
I'd assume it can/could be done with pre-batch-16 miners that are using the old firmware. Batch-16 and higher with the auto-tune pretty sure this will not work.
legendary
Activity: 2464
Merit: 1710
Electrical engineer. Mining since 2014.
Has anyone figured out the HEX files for the Antminer S9?
I wonder if this same procedure could be done to the S9.  Smiley
legendary
Activity: 1736
Merit: 1006

so i made a script..
tell me if you guys have any issues.. or think of ways to make it better.


Is there a way to add something which will prevent a reboot if "N" reboots attempted in "M" minutes? If the s7 fails to achieve boards over 55 degrees then a reboot is a good practice. If the s7 fails to achieve boards over 55 degrees after 5 reboots in 20 minutes then a "do not reboot" is a good practice. This is because too many consecutive reboot loops without hashing is a waste of power. If the 5th reboot does not start hasing then there is a good chance the 6th reboot will not either.  Or additionally a "do not reboot for "H" hours after "N" consecutive reboot loops" would take that notion a step further.

I'm not sure this is possible just throwing it out there.

it is possible but i never really ran into this.


if you set the pwm to what you think it should be, when you start the script it will only reboot when it needs to.

the only reason it would reboot 5 times in a row is if you set the pwm to 80 and you needed like 50 or 40.. its set to drop in 5 increments.

also its just rebooting cgminer, not the whole miner.. so its not really using any extra power.. you lose maybe 10 seconds of mining.



newbie
Activity: 32
Merit: 0

so i made a script..
tell me if you guys have any issues.. or think of ways to make it better.


Is there a way to add something which will prevent a reboot if "N" reboots attempted in "M" minutes? If the s7 fails to achieve boards over 55 degrees then a reboot is a good practice. If the s7 fails to achieve boards over 55 degrees after 5 reboots in 20 minutes then a "do not reboot" is a good practice. This is because too many consecutive reboot loops without hashing is a waste of power. If the 5th reboot does not start hasing then there is a good chance the 6th reboot will not either.  Or additionally a "do not reboot for "H" hours after "N" consecutive reboot loops" would take that notion a step further.

I'm not sure this is possible just throwing it out there.
legendary
Activity: 1736
Merit: 1006
i made a few changes to my script.. on one of my s7s it would start beeping and show 0 hash.. so i made the script reboot cgminer when that happens.. i dunno tho if it was internet or the pool.

sweet. I'm not very good at reading the code but you are saying that the script will restart the miner when it shows 0 hash and starts beeping or will it restart cgminer when either of those situations happen. meaning it would restart when beeping for any reason (internet loss, too hot, other beep reason).

Yep
newbie
Activity: 32
Merit: 0
i made a few changes to my script.. on one of my s7s it would start beeping and show 0 hash.. so i made the script reboot cgminer when that happens.. i dunno tho if it was internet or the pool.

sweet. I'm not very good at reading the code but you are saying that the script will restart the miner when it shows 0 hash and starts beeping or will it restart cgminer when either of those situations happen. meaning it would restart when beeping for any reason (internet loss, too hot, other beep reason).
legendary
Activity: 1736
Merit: 1006
i made a few changes to my script.. on one of my s7s it would start beeping and show 0 hash.. so i made the script reboot cgminer when that happens.. i dunno tho if it was internet or the pool.
just copy this in a file called hashcheck.sh in the /config folder of the s7 with permissions of 0744 in winscp. ssh in and run /config/hashcheck.sh &

to calculate the minhash value take the avg speed and times it by .75 this worked for me.
and set pwm to whatever you have your fan running at.. might need to be higher like 40 or 50.

Code:
#!/bin/sh

######adjust here
restart=21600 # 6 hours in seconds
minhash=290000 #min hash rate 2900.00 ghs without the decimal.
minfan=20 #min fan speed
maxfan=100 #max fan speed
mintemp=60 #min avg temp
maxtemp=65 #max avg temp
pwm=30 #starting pwm speed
#######

echo $(date) "| hashcheck monitor started. reboot every $restart seconds or if lower than $minhash "  > /config/hashcheck.txt
echo $(date) "| tempcheck monitor started."  >> /config/hashcheck.txt
restartcount=0

/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
sed -i "/bitmain-fan-pwm/c\"bitmain-fan-pwm\" : \"$pwm\"," /config/cgminer.conf  && \
/etc/init.d/cgminer.sh start > /dev/null
sleep 120

while true
do


T=$(cgminer-api stats | grep 'temp_avg] =>' | cut -c 18-)
T1=$(cgminer-api stats | grep 'temp1] =>' | cut -c 15-)
T2=$(cgminer-api stats | grep 'temp2] =>' | cut -c 15-)
T3=$(cgminer-api stats | grep 'temp3] =>' | cut -c 15-)
E=$(cgminer-api summary | grep 'Elapsed]' | cut -c 17-)
S=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16- | tr -d '.')
HASH=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)

if [ $T1 -gt "75" ] || [ $T2 -gt "75" ] || [ $T3 -gt "75" ] && [ $pwm -lt "100" ]; then
pwm=100
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed too hot: setting fan to 100 % $restarthash GH/s $T1 $T2 $T3 DEG $T AVG"  >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
sed -i "/bitmain-fan-pwm/c\"bitmain-fan-pwm\" : \"$pwm\"," /config/cgminer.conf  && \
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
fi

if [ $E -gt $restart ]; then
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| miner scheduled restart $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
/etc/init.d/cgminer.sh start > /dev/null
sleep 60
continue
fi

if [ -z "S$" ] || [ $S -eq "0" ]; then
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed low hash : $restarthash GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
fi


if [ $S -lt $minhash ] && [ $E -gt "120" ]; then
echo $(date) "| rechecking in 120s low hash : $HASH $T1 $T2 $T3 DEG" >> /config/hashcheck.txt
sleep 120
S=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16- | tr -d '.')
E=$(cgminer-api summary | grep 'Elapsed]' | cut -c 17-)
T=$(cgminer-api stats | grep 'temp_avg] =>' | cut -c 18-)
T1=$(cgminer-api stats | grep 'temp1] =>' | cut -c 15-)
T2=$(cgminer-api stats | grep 'temp2] =>' | cut -c 15-)
T3=$(cgminer-api stats | grep 'temp3] =>' | cut -c 15-)
HASH=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
if [ $S -lt $minhash ]; then
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed low hash : $restarthash GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
else
echo $(date) "| recovered: $HASH MH/s $E seconds $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
fi
fi

if [ $T -lt $mintemp ] && [ $pwm -gt $minfan ] && [ $E -gt "120" ]; then
echo $(date) "| rechecking in 120s low temp : $HASH GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
sleep 120
S=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16- | tr -d '.')
E=$(cgminer-api summary | grep 'Elapsed]' | cut -c 17-)
T=$(cgminer-api stats | grep 'temp_avg] =>' | cut -c 18-)
T1=$(cgminer-api stats | grep 'temp1] =>' | cut -c 15-)
T2=$(cgminer-api stats | grep 'temp2] =>' | cut -c 15-)
T3=$(cgminer-api stats | grep 'temp3] =>' | cut -c 15-)
HASH=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
if [ $S -lt $minhash ]; then
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed low hash : $restarthash GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
else
if [ $T -lt $mintemp ] && [ $pwm -gt $minfan ]; then
pwm=$((pwm-2))
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed too cold: setting fan to $pwm % $restarthash GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
sed -i "/bitmain-fan-pwm/c\"bitmain-fan-pwm\" : \"$pwm\"," /config/cgminer.conf  && \
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
else
echo $(date) "| recovered: $HASH GH/s $E seconds $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
fi
fi
fi

if [ $T -gt $maxtemp ] && [ $pwm -lt $maxfan ] && [ $E -gt "120" ]; then
pwm=$((pwm+2))
restartcount=$((restartcount+1))
restarthash=$(cgminer-api | grep 'GHS 5s] => ' | cut -c 16-)
restarttime=$(date)
elapsedtime=$E
echo $(date) "| failed too hot: setting fan to $pwm % $restarthash GH/s $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
/etc/init.d/cgminer.sh stop > /dev/null
sleep 5
sed -i "/bitmain-fan-pwm/c\"bitmain-fan-pwm\" : \"$pwm\"," /config/cgminer.conf  && \
/etc/init.d/cgminer.sh start > /dev/null
echo $(date) "| miner restarted $restartcount times: $restarthash GH/s $T1 $T2 $T3 DEG $T AVG , at $restarttime for $elapsedtime seconds" >> /config/hashcheck.txt
sleep 60
continue
else
echo $(date) "| normal operation: fan at $pwm % $HASH GH/s $E seconds $T1 $T2 $T3 DEG $T AVG" >> /config/hashcheck.txt
fi



sleep 60
done
legendary
Activity: 1736
Merit: 1006
What is it exactly that causes the boards to drop out at the lower voltage? Is it a hardware error issue or is it something else? I have been flashing 660/690 because its what i have found to be universally stable but it really doesnt get them down into the power efficiency level that I want.

no idea but it does seem to be heat and pool specific.

my boards will run 650 on kano's pool pretty stable but the pool i use zpool needs 670.

they also tend to shut off if they drop below 55ish deg.
hero member
Activity: 756
Merit: 560
What is it exactly that causes the boards to drop out at the lower voltage? Is it a hardware error issue or is it something else? I have been flashing 660/690 because its what i have found to be universally stable but it really doesnt get them down into the power efficiency level that I want.
Pages:
Jump to: