Post
Topic
Board Mining support
Re: Bitmain AntMiner U1 Tips & Tricks
by
fractalbc
on 01/01/2014, 06:45:19 UTC
20 minutes and I have it running on my BAMT GPU linux box.  So I decided to try this on one of my BAMT devices with 4 GPU's running mining Scrypt (NO I'm not mining Scrypt with these, just using the same Linux device).

I logged in on my BAMT device and did this exactly:

git clone https://github.com/bitmaintech/cgminer
cd cgminer
sudo apt-get install libusb-1.0
sudo apt-get install libudev-dev
./autogen.sh
./configure --enable-bmsc
make -j 6

and then did (as in the example from the .PDF)
./cgminer --bmsc-options 115200:20 -o 50.31.149.57:3333 -u ktzhan_3 -p 123 --bmsc-freq 0781
Two things.

First of all, the "--bmsc-options 115200:20 " is MANDATORY.  I was not using it and having it on the command line made all the difference in the world.

Next, what processor / OS are you running?  i.e. does "uname -p" say  "i386" or "x86_64"?

The same exact sequence on an intel i3 running ubuntu 12.04 x86_64 gives a compiler warning that it will crash because of a memory overflow and really does.  Fixing the memcpy from trying to copy 5 bytes into a 4 byte uint32 stops the crash and lets the program run.  Your compiler / OS / processor may be more forgiving of the driver trying to stuff 5 bytes into a 4 bytes entity.

FWIW, what I did to make it work on an i3 running ubuntu 12.04 was

--- a/driver-bmsc.c
+++ b/driver-bmsc.c
@@ -1276,7 +1276,7 @@ static int64_t bmsc_scanwork(struct thr_info *thr)
                goto out;
        }

-       memcpy((char *)&nonce, nonce_bin, sizeof(nonce_bin));
+       memcpy((char *)&nonce, nonce_bin, sizeof(nonce));
        nonce = htobe32(nonce);
        curr_hw_errors = bmsc->hw_errors;
        submit_nonce(thr, work, nonce);

which is essentially to only copy 4 of the 5 bytes returned by the driver before the byte swap.  Only 4 bytes are used by the code so this is a safe change.