diff --git a/MacMiner/MacMiner-Info.plist b/MacMiner/MacMiner-Info.plist index 8287425..5c77f2c 100644 --- a/MacMiner/MacMiner-Info.plist +++ b/MacMiner/MacMiner-Info.plist @@ -17,11 +17,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.5.22 + 1.5.24 CFBundleSignature ???? CFBundleVersion - 1522 + 1524 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/bfgminer/bin/bfgminer b/bfgminer/bin/bfgminer index d15c602..6342606 100755 Binary files a/bfgminer/bin/bfgminer and b/bfgminer/bin/bfgminer differ diff --git a/bfgminer/bin/bfgminer-rpc b/bfgminer/bin/bfgminer-rpc index bc383b3..4839b5a 100755 Binary files a/bfgminer/bin/bfgminer-rpc and b/bfgminer/bin/bfgminer-rpc differ diff --git a/bfgminer/bin/bitforce-firmware-flash b/bfgminer/bin/bitforce-firmware-flash index 62358ef..2d46ace 100755 Binary files a/bfgminer/bin/bitforce-firmware-flash and b/bfgminer/bin/bitforce-firmware-flash differ diff --git a/bfgminer/lib/libbase58.0.dylib b/bfgminer/lib/libbase58.0.dylib index 7680034..48ab07b 100755 Binary files a/bfgminer/lib/libbase58.0.dylib and b/bfgminer/lib/libbase58.0.dylib differ diff --git a/bfgminer/lib/libbase58.la b/bfgminer/lib/libbase58.la index 373fa07..5f6616e 100755 --- a/bfgminer/lib/libbase58.la +++ b/bfgminer/lib/libbase58.la @@ -25,7 +25,7 @@ weak_library_names='' # Version information for libbase58. current=0 age=0 -revision=0 +revision=1 # Is this an already installed library? installed=yes diff --git a/bfgminer/lib/libblkmaker-0.1.0.dylib b/bfgminer/lib/libblkmaker-0.1.0.dylib index 7bd4010..69a7f10 100755 Binary files a/bfgminer/lib/libblkmaker-0.1.0.dylib and b/bfgminer/lib/libblkmaker-0.1.0.dylib differ diff --git a/bfgminer/lib/libblkmaker-0.1.6.dylib b/bfgminer/lib/libblkmaker-0.1.6.dylib index 576ddea..2c4d502 100755 Binary files a/bfgminer/lib/libblkmaker-0.1.6.dylib and b/bfgminer/lib/libblkmaker-0.1.6.dylib differ diff --git a/bfgminer/lib/libblkmaker-0.1.la b/bfgminer/lib/libblkmaker-0.1.la index fcff9c5..a6c3983 100755 --- a/bfgminer/lib/libblkmaker-0.1.la +++ b/bfgminer/lib/libblkmaker-0.1.la @@ -17,7 +17,7 @@ old_library='' inherited_linker_flags=' ' # Libraries that this one depends upon. -dependency_libs=' -L/Users/admin/Downloads/bfgminer-4.10.0/libbase58/.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libbase58.la' +dependency_libs=' -L/Users/admin/Downloads/bfgminer-5.0.0/libbase58/.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libbase58.la' # Names of additional weak libraries provided by this library weak_library_names='' diff --git a/bfgminer/lib/libblkmaker_jansson-0.1.0.dylib b/bfgminer/lib/libblkmaker_jansson-0.1.0.dylib index 7b457f6..5a77f3a 100755 Binary files a/bfgminer/lib/libblkmaker_jansson-0.1.0.dylib and b/bfgminer/lib/libblkmaker_jansson-0.1.0.dylib differ diff --git a/bfgminer/lib/libblkmaker_jansson-0.1.6.dylib b/bfgminer/lib/libblkmaker_jansson-0.1.6.dylib index 3920c3f..2101530 100755 Binary files a/bfgminer/lib/libblkmaker_jansson-0.1.6.dylib and b/bfgminer/lib/libblkmaker_jansson-0.1.6.dylib differ diff --git a/bfgminer/lib/libblkmaker_jansson-0.1.la b/bfgminer/lib/libblkmaker_jansson-0.1.la index 1ce1031..e10f876 100755 --- a/bfgminer/lib/libblkmaker_jansson-0.1.la +++ b/bfgminer/lib/libblkmaker_jansson-0.1.la @@ -17,7 +17,7 @@ old_library='' inherited_linker_flags=' ' # Libraries that this one depends upon. -dependency_libs=' -L.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libblkmaker-0.1.la -L/Users/admin/Downloads/bfgminer-4.10.0/libbase58/.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libbase58.la -L/Applications/MacMiner.app/Contents/Resources/jansson/lib /Applications/MacMiner.app/Contents/Resources/jansson/lib/libjansson.la' +dependency_libs=' -L.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libblkmaker-0.1.la -L/Users/admin/Downloads/bfgminer-5.0.0/libbase58/.libs /Applications/MacMiner.app/Contents/Resources/bfgminer/lib/libbase58.la -L/Applications/MacMiner.app/Contents/Resources/jansson/lib /Applications/MacMiner.app/Contents/Resources/jansson/lib/libjansson.la' # Names of additional weak libraries provided by this library weak_library_names='' diff --git a/bfgminer/lib/libevent-2.0.5.dylib b/bfgminer/lib/libevent-2.0.5.dylib index 69e2908..a283dde 100755 Binary files a/bfgminer/lib/libevent-2.0.5.dylib and b/bfgminer/lib/libevent-2.0.5.dylib differ diff --git a/bfgminer/lib/libevent.a b/bfgminer/lib/libevent.a index 79a063e..886c2c4 100644 Binary files a/bfgminer/lib/libevent.a and b/bfgminer/lib/libevent.a differ diff --git a/bfgminer/lib/libevent_core-2.0.5.dylib b/bfgminer/lib/libevent_core-2.0.5.dylib index c68c949..b6f6105 100755 Binary files a/bfgminer/lib/libevent_core-2.0.5.dylib and b/bfgminer/lib/libevent_core-2.0.5.dylib differ diff --git a/bfgminer/lib/libevent_core.a b/bfgminer/lib/libevent_core.a index e42f31b..07f2e9e 100644 Binary files a/bfgminer/lib/libevent_core.a and b/bfgminer/lib/libevent_core.a differ diff --git a/bfgminer/lib/libevent_extra-2.0.5.dylib b/bfgminer/lib/libevent_extra-2.0.5.dylib index 287121a..3cdd2bb 100755 Binary files a/bfgminer/lib/libevent_extra-2.0.5.dylib and b/bfgminer/lib/libevent_extra-2.0.5.dylib differ diff --git a/bfgminer/lib/libevent_extra.a b/bfgminer/lib/libevent_extra.a index 62a59cd..0f383a7 100644 Binary files a/bfgminer/lib/libevent_extra.a and b/bfgminer/lib/libevent_extra.a differ diff --git a/bfgminer/lib/libevent_openssl-2.0.5.dylib b/bfgminer/lib/libevent_openssl-2.0.5.dylib index bb6bde3..75077a6 100755 Binary files a/bfgminer/lib/libevent_openssl-2.0.5.dylib and b/bfgminer/lib/libevent_openssl-2.0.5.dylib differ diff --git a/bfgminer/lib/libevent_openssl.a b/bfgminer/lib/libevent_openssl.a index 5b44d66..90fd4f2 100644 Binary files a/bfgminer/lib/libevent_openssl.a and b/bfgminer/lib/libevent_openssl.a differ diff --git a/bfgminer/lib/libevent_pthreads-2.0.5.dylib b/bfgminer/lib/libevent_pthreads-2.0.5.dylib index 54901ad..69d9174 100755 Binary files a/bfgminer/lib/libevent_pthreads-2.0.5.dylib and b/bfgminer/lib/libevent_pthreads-2.0.5.dylib differ diff --git a/bfgminer/lib/libevent_pthreads.a b/bfgminer/lib/libevent_pthreads.a index ae10e67..4f841f7 100644 Binary files a/bfgminer/lib/libevent_pthreads.a and b/bfgminer/lib/libevent_pthreads.a differ diff --git a/bfgminer/lib/libjansson.4.dylib b/bfgminer/lib/libjansson.4.dylib index bd0f009..6321a97 100755 Binary files a/bfgminer/lib/libjansson.4.dylib and b/bfgminer/lib/libjansson.4.dylib differ diff --git a/bfgminer/lib/libjansson.a b/bfgminer/lib/libjansson.a index c7286a3..3b8f3ee 100644 Binary files a/bfgminer/lib/libjansson.a and b/bfgminer/lib/libjansson.a differ diff --git a/bfgminer/lib/libmicrohttpd.10.dylib b/bfgminer/lib/libmicrohttpd.10.dylib index 3f3d604..b4e95ad 100755 Binary files a/bfgminer/lib/libmicrohttpd.10.dylib and b/bfgminer/lib/libmicrohttpd.10.dylib differ diff --git a/bfgminer/lib/libmicrohttpd.a b/bfgminer/lib/libmicrohttpd.a index 858fed9..d91840e 100644 Binary files a/bfgminer/lib/libmicrohttpd.a and b/bfgminer/lib/libmicrohttpd.a differ diff --git a/bfgminer/lib/libusb-1.0.2.dylib b/bfgminer/lib/libusb-1.0.2.dylib index 8c9b31c..c411f3e 100755 Binary files a/bfgminer/lib/libusb-1.0.2.dylib and b/bfgminer/lib/libusb-1.0.2.dylib differ diff --git a/bfgminer/lib/libusb-1.0.a b/bfgminer/lib/libusb-1.0.a index 4f3555d..d115176 100644 Binary files a/bfgminer/lib/libusb-1.0.a and b/bfgminer/lib/libusb-1.0.a differ diff --git a/bfgminer/lib/pkgconfig/libbase58.pc b/bfgminer/lib/pkgconfig/libbase58.pc index 7cf742c..3482a78 100644 --- a/bfgminer/lib/pkgconfig/libbase58.pc +++ b/bfgminer/lib/pkgconfig/libbase58.pc @@ -5,6 +5,6 @@ includedir=${prefix}/include Name: libbase58 Description: Library for Bitcoin's base58 encoding. -Version: 0.1 +Version: 0.1.3 Libs: -L${libdir} -lbase58 Cflags: -I${includedir} diff --git a/bfgminer/share/bfgminer/opencl/diablo.cl b/bfgminer/share/bfgminer/opencl/diablo.cl index fa049c8..4870dcd 100644 --- a/bfgminer/share/bfgminer/opencl/diablo.cl +++ b/bfgminer/share/bfgminer/opencl/diablo.cl @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -// kernel-interface: diablo +// kernel-interface: diablo SHA256d #ifdef VECTORS4 typedef uint4 z; diff --git a/bfgminer/share/bfgminer/opencl/diakgcn.cl b/bfgminer/share/bfgminer/opencl/diakgcn.cl index 428209b..9be4e42 100644 --- a/bfgminer/share/bfgminer/opencl/diakgcn.cl +++ b/bfgminer/share/bfgminer/opencl/diakgcn.cl @@ -3,7 +3,7 @@ // Parts and / or ideas for this kernel are based upon the public-domain poclbm project, the phatk kernel by Phateus and the DiabloMiner kernel by DiabloD3. // The kernel was rewritten by me (Diapolo) and is still public-domain! -// kernel-interface: diakgcn +// kernel-interface: diakgcn SHA256d #ifdef VECTORS4 typedef uint4 u; diff --git a/bfgminer/share/bfgminer/opencl/keccak.cl b/bfgminer/share/bfgminer/opencl/keccak.cl new file mode 100644 index 0000000..cadb11d --- /dev/null +++ b/bfgminer/share/bfgminer/opencl/keccak.cl @@ -0,0 +1,133 @@ +/* + * Scrypt-jane public domain, OpenCL implementation of scrypt(keccak,chacha,SCRYPTN,1,1) 2013 mtrlt + */ + +// kernel-interface: fullheader Keccak + +#define ARGS_25(x) x ## 0, x ## 1, x ## 2, x ## 3, x ## 4, x ## 5, x ## 6, x ## 7, x ## 8, x ## 9, x ## 10, x ## 11, x ## 12, x ## 13, x ## 14, x ## 15, x ## 16, x ## 17, x ## 18, x ## 19, x ## 20, x ## 21, x ## 22, x ## 23, x ## 24 + +__constant uint2 keccak_round_constants[24] = { + (uint2)(0x00000001,0x00000000), (uint2)(0x00008082,0x00000000), + (uint2)(0x0000808a,0x80000000), (uint2)(0x80008000,0x80000000), + (uint2)(0x0000808b,0x00000000), (uint2)(0x80000001,0x00000000), + (uint2)(0x80008081,0x80000000), (uint2)(0x00008009,0x80000000), + (uint2)(0x0000008a,0x00000000), (uint2)(0x00000088,0x00000000), + (uint2)(0x80008009,0x00000000), (uint2)(0x8000000a,0x00000000), + (uint2)(0x8000808b,0x00000000), (uint2)(0x0000008b,0x80000000), + (uint2)(0x00008089,0x80000000), (uint2)(0x00008003,0x80000000), + (uint2)(0x00008002,0x80000000), (uint2)(0x00000080,0x80000000), + (uint2)(0x0000800a,0x00000000), (uint2)(0x8000000a,0x80000000), + (uint2)(0x80008081,0x80000000), (uint2)(0x00008080,0x80000000), + (uint2)(0x80000001,0x00000000), (uint2)(0x80008008,0x80000000) +}; + +uint2 ROTL64_1(const uint2 x, const uint y) +{ + return (uint2)((x.x<>(32-y)),(x.y<>(32-y))); +} +uint2 ROTL64_2(const uint2 x, const uint y) +{ + return (uint2)((x.y<>(32-y)),(x.x<>(32-y))); +} + +#define RND(i) \ +do{ \ + m0 = *s0 ^ *s5 ^ *s10 ^ *s15 ^ *s20 ^ ROTL64_1(*s2 ^ *s7 ^ *s12 ^ *s17 ^ *s22, 1);\ + m1 = *s1 ^ *s6 ^ *s11 ^ *s16 ^ *s21 ^ ROTL64_1(*s3 ^ *s8 ^ *s13 ^ *s18 ^ *s23, 1);\ + m2 = *s2 ^ *s7 ^ *s12 ^ *s17 ^ *s22 ^ ROTL64_1(*s4 ^ *s9 ^ *s14 ^ *s19 ^ *s24, 1);\ + m3 = *s3 ^ *s8 ^ *s13 ^ *s18 ^ *s23 ^ ROTL64_1(*s0 ^ *s5 ^ *s10 ^ *s15 ^ *s20, 1);\ + m4 = *s4 ^ *s9 ^ *s14 ^ *s19 ^ *s24 ^ ROTL64_1(*s1 ^ *s6 ^ *s11 ^ *s16 ^ *s21, 1);\ +\ + m5 = *s1^m0;\ +\ + *s0 ^= m4;\ + *s1 = ROTL64_2(*s6^m0, 12);\ + *s6 = ROTL64_1(*s9^m3, 20);\ + *s9 = ROTL64_2(*s22^m1, 29);\ + *s22 = ROTL64_2(*s14^m3, 7);\ + *s14 = ROTL64_1(*s20^m4, 18);\ + *s20 = ROTL64_2(*s2^m1, 30);\ + *s2 = ROTL64_2(*s12^m1, 11);\ + *s12 = ROTL64_1(*s13^m2, 25);\ + *s13 = ROTL64_1(*s19^m3, 8);\ + *s19 = ROTL64_2(*s23^m2, 24);\ + *s23 = ROTL64_2(*s15^m4, 9);\ + *s15 = ROTL64_1(*s4^m3, 27);\ + *s4 = ROTL64_1(*s24^m3, 14);\ + *s24 = ROTL64_1(*s21^m0, 2);\ + *s21 = ROTL64_2(*s8^m2, 23);\ + *s8 = ROTL64_2(*s16^m0, 13);\ + *s16 = ROTL64_2(*s5^m4, 4);\ + *s5 = ROTL64_1(*s3^m2, 28);\ + *s3 = ROTL64_1(*s18^m2, 21);\ + *s18 = ROTL64_1(*s17^m1, 15);\ + *s17 = ROTL64_1(*s11^m0, 10);\ + *s11 = ROTL64_1(*s7^m1, 6);\ + *s7 = ROTL64_1(*s10^m4, 3);\ + *s10 = ROTL64_1( m5, 1);\ + \ + m5 = *s0; m6 = *s1; *s0 = bitselect(*s0^*s2,*s0,*s1); *s1 = bitselect(*s1^*s3,*s1,*s2); *s2 = bitselect(*s2^*s4,*s2,*s3); *s3 = bitselect(*s3^m5,*s3,*s4); *s4 = bitselect(*s4^m6,*s4,m5);\ + m5 = *s5; m6 = *s6; *s5 = bitselect(*s5^*s7,*s5,*s6); *s6 = bitselect(*s6^*s8,*s6,*s7); *s7 = bitselect(*s7^*s9,*s7,*s8); *s8 = bitselect(*s8^m5,*s8,*s9); *s9 = bitselect(*s9^m6,*s9,m5);\ + m5 = *s10; m6 = *s11; *s10 = bitselect(*s10^*s12,*s10,*s11); *s11 = bitselect(*s11^*s13,*s11,*s12); *s12 = bitselect(*s12^*s14,*s12,*s13); *s13 = bitselect(*s13^m5,*s13,*s14); *s14 = bitselect(*s14^m6,*s14,m5);\ + m5 = *s15; m6 = *s16; *s15 = bitselect(*s15^*s17,*s15,*s16); *s16 = bitselect(*s16^*s18,*s16,*s17); *s17 = bitselect(*s17^*s19,*s17,*s18); *s18 = bitselect(*s18^m5,*s18,*s19); *s19 = bitselect(*s19^m6,*s19,m5);\ + m5 = *s20; m6 = *s21; *s20 = bitselect(*s20^*s22,*s20,*s21); *s21 = bitselect(*s21^*s23,*s21,*s22); *s22 = bitselect(*s22^*s24,*s22,*s23); *s23 = bitselect(*s23^m5,*s23,*s24); *s24 = bitselect(*s24^m6,*s24,m5);\ +\ + *s0 ^= keccak_round_constants[i]; \ +}while(0) + +void keccak_block_noabsorb(ARGS_25(uint2* s)) +{ + uint2 m0,m1,m2,m3,m4,m5,m6; +#pragma unroll + for (uint i = 0; i < 24; ++i) + RND(i); +} + +__attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) +__kernel void search( +#ifndef GOFFSET + const uint base, +#endif + __global const uint2*restrict in, __global uint*restrict output) +{ +#ifdef GOFFSET + const uint base = 0; +#endif + uint2 ARGS_25(state); + + state0 = in[0]; + state1 = in[1]; + state2 = in[2]; + state3 = in[3]; + state4 = in[4]; + state5 = in[5]; + state6 = in[6]; + state7 = in[7]; + state8 = in[8]; + state9 = (uint2)(in[9].x, base + get_global_id(0)); + state10 = (uint2)(1,0); + state11 = 0; + state12 = 0; + state13 = 0; + state14 = 0; + state15 = 0; + state16 = (uint2)(0,0x80000000U); + state17 = 0; + state18 = 0; + state19 = 0; + state20 = 0; + state21 = 0; + state22 = 0; + state23 = 0; + state24 = 0; + + keccak_block_noabsorb(ARGS_25(&state)); + +#define FOUND (0x0F) +#define SETFOUND(Xnonce) output[output[FOUND]++] = Xnonce + + if ((state3.y & 0xFFFFFFF0U) == 0) + { + SETFOUND(base + get_global_id(0)); + } +} diff --git a/bfgminer/share/bfgminer/opencl/phatk.cl b/bfgminer/share/bfgminer/opencl/phatk.cl index 61421a6..a40bb2f 100644 --- a/bfgminer/share/bfgminer/opencl/phatk.cl +++ b/bfgminer/share/bfgminer/opencl/phatk.cl @@ -2,7 +2,7 @@ // I have therefore decided to keep it public-domain. // Modified version copyright 2011-2012 Con Kolivas -// kernel-interface: phatk +// kernel-interface: phatk SHA256d #ifdef VECTORS4 typedef uint4 u; diff --git a/bfgminer/share/bfgminer/opencl/poclbm.cl b/bfgminer/share/bfgminer/opencl/poclbm.cl index c4c86ad..53158ef 100644 --- a/bfgminer/share/bfgminer/opencl/poclbm.cl +++ b/bfgminer/share/bfgminer/opencl/poclbm.cl @@ -5,7 +5,7 @@ // This file is taken and modified from the public-domain poclbm project, and // we have therefore decided to keep it public-domain in Phoenix. -// kernel-interface: poclbm +// kernel-interface: poclbm SHA256d #ifdef VECTORS4 typedef uint4 u; diff --git a/bfgminer/share/bfgminer/opencl/psw.cl b/bfgminer/share/bfgminer/opencl/psw.cl index c429db3..7be2fda 100644 --- a/bfgminer/share/bfgminer/opencl/psw.cl +++ b/bfgminer/share/bfgminer/opencl/psw.cl @@ -29,7 +29,7 @@ * online backup system. */ -// kernel-interface: scrypt +// kernel-interface: scrypt scrypt __constant uint ES[2] = { 0x00FF00FF, 0xFF00FF00 }; __constant uint K[] = { @@ -697,13 +697,13 @@ void salsa(uint4 B[8]) #define Coord(x,y,z) x+y*(x ## SIZE)+z*(y ## SIZE)*(x ## SIZE) #define CO Coord(z,x,y) -void scrypt_core(uint4 X[8], __global uint4*restrict lookup) +void scrypt_core(const uint gid, uint4 X[8], __global uint4 * restrict lookup) { shittify(X); const uint zSIZE = 8; const uint ySIZE = (1024/LOOKUP_GAP+(1024%LOOKUP_GAP>0)); const uint xSIZE = CONCURRENT_THREADS; - uint x = get_global_id(0)%xSIZE; + const uint x = gid % xSIZE; for(uint y=0; y<1024/LOOKUP_GAP; ++y) { @@ -754,11 +754,19 @@ void scrypt_core(uint4 X[8], __global uint4*restrict lookup) #define SETFOUND(Xnonce) output[output[SCRYPT_FOUND]++] = Xnonce __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) -__kernel void search(__global const uint4 * restrict input, +__kernel void search( +#ifndef GOFFSET + const uint base, +#endif + __global const uint4 * restrict input, volatile __global uint*restrict output, __global uint4*restrict padcache, const uint4 midstate0, const uint4 midstate16, const uint target) { - uint gid = get_global_id(0); + const uint gid = get_global_id(0) +#ifndef GOFFSET + + base +#endif + ; uint4 X[8]; uint4 tstate0, tstate1, ostate0, ostate1, tmp0, tmp1; uint4 data = (uint4)(input[4].x,input[4].y,input[4].z,gid); @@ -783,7 +791,7 @@ const uint4 midstate0, const uint4 midstate16, const uint target) SHA256(&pad0,&pad1, data, (uint4)(i+1,K[84],0,0), (uint4)(0,0,0,0), (uint4)(0,0,0, K[87])); SHA256(X+i*2,X+i*2+1, pad0, pad1, (uint4)(K[84], 0U, 0U, 0U), (uint4)(0U, 0U, 0U, K[88])); } - scrypt_core(X,padcache); + scrypt_core(gid, X, padcache); SHA256(&tmp0,&tmp1, X[0], X[1], X[2], X[3]); SHA256(&tmp0,&tmp1, X[4], X[5], X[6], X[7]); SHA256_fixed(&tmp0,&tmp1); diff --git a/bfgminer/share/bfgminer/opencl/scrypt.cl b/bfgminer/share/bfgminer/opencl/scrypt.cl index 40004da..4d8bb76 100644 --- a/bfgminer/share/bfgminer/opencl/scrypt.cl +++ b/bfgminer/share/bfgminer/opencl/scrypt.cl @@ -31,7 +31,7 @@ * online backup system. */ -// kernel-interface: scrypt +// kernel-interface: scrypt scrypt __constant uint ES[2] = { 0x00FF00FF, 0xFF00FF00 }; __constant uint K[] = { @@ -760,13 +760,13 @@ void salsa(uint4 B[8]) #define Coord(x,y,z) x+y*(x ## SIZE)+z*(y ## SIZE)*(x ## SIZE) #define CO Coord(z,x,y) -void scrypt_core(uint4 X[8], __global uint4*restrict lookup) +void scrypt_core(const uint gid, uint4 X[8], __global uint4 * restrict lookup) { shittify(X); const uint zSIZE = 8; const uint ySIZE = (1024/LOOKUP_GAP+(1024%LOOKUP_GAP>0)); const uint xSIZE = CONCURRENT_THREADS; - uint x = get_global_id(0)%xSIZE; + const uint x = gid % xSIZE; for(uint y=0; y<1024/LOOKUP_GAP; ++y) { @@ -817,11 +817,19 @@ void scrypt_core(uint4 X[8], __global uint4*restrict lookup) #define SETFOUND(Xnonce) output[output[SCRYPT_FOUND]++] = Xnonce __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) -__kernel void search(__global const uint4 * restrict input, +__kernel void search( +#ifndef GOFFSET + const uint base, +#endif + __global const uint4 * restrict input, volatile __global uint*restrict output, __global uint4*restrict padcache, const uint4 midstate0, const uint4 midstate16, const uint target) { - uint gid = get_global_id(0); + const uint gid = get_global_id(0) +#ifndef GOFFSET + + base +#endif + ; uint4 X[8]; uint4 tstate0, tstate1, ostate0, ostate1, tmp0, tmp1; uint4 data = (uint4)(input[4].x,input[4].y,input[4].z,gid); @@ -846,7 +854,7 @@ const uint4 midstate0, const uint4 midstate16, const uint target) SHA256(&pad0,&pad1, data, (uint4)(i+1,K[84],0,0), (uint4)(0,0,0,0), (uint4)(0,0,0, K[87])); SHA256(X+i*2,X+i*2+1, pad0, pad1, (uint4)(K[84], 0U, 0U, 0U), (uint4)(0U, 0U, 0U, K[88])); } - scrypt_core(X,padcache); + scrypt_core(gid, X, padcache); SHA256(&tmp0,&tmp1, X[0], X[1], X[2], X[3]); SHA256(&tmp0,&tmp1, X[4], X[5], X[6], X[7]); SHA256_fixed(&tmp0,&tmp1); diff --git a/bfgminer/share/bfgminer/opencl/zuikkis.cl b/bfgminer/share/bfgminer/opencl/zuikkis.cl index 5b02c62..59b6192 100644 --- a/bfgminer/share/bfgminer/opencl/zuikkis.cl +++ b/bfgminer/share/bfgminer/opencl/zuikkis.cl @@ -28,7 +28,7 @@ * online backup system. */ -// kernel-interface: scrypt +// kernel-interface: scrypt scrypt __constant uint ES[2] = { 0x00FF00FF, 0xFF00FF00 }; __constant uint K[] = { @@ -748,13 +748,13 @@ void salsa(uint4 B[8]) #define Coord(x,y,z) x+y*(x ## SIZE)+z*(y ## SIZE)*(x ## SIZE) #define CO Coord(z,x,y) -void scrypt_core(uint4 X[8], __global uint4*restrict lookup) +void scrypt_core(const uint gid, uint4 X[8], __global uint4 * restrict lookup) { shittify(X); const uint zSIZE = 8; const uint ySIZE = (1024/LOOKUP_GAP+(1024%LOOKUP_GAP>0)); const uint xSIZE = CONCURRENT_THREADS; - uint x = get_global_id(0)%xSIZE; + const uint x = gid % xSIZE; for(uint y=0; y<1024/LOOKUP_GAP; ++y) { @@ -792,11 +792,19 @@ void scrypt_core(uint4 X[8], __global uint4*restrict lookup) #define SETFOUND(Xnonce) output[output[SCRYPT_FOUND]++] = Xnonce __attribute__((reqd_work_group_size(WORKSIZE, 1, 1))) -__kernel void search(__global const uint4 * restrict input, +__kernel void search( +#ifndef GOFFSET + const uint base, +#endif + __global const uint4 * restrict input, volatile __global uint*restrict output, __global uint4*restrict padcache, const uint4 midstate0, const uint4 midstate16, const uint target) { - uint gid = get_global_id(0); + const uint gid = get_global_id(0) +#ifndef GOFFSET + + base +#endif + ; uint4 X[8]; uint4 tstate0, tstate1, ostate0, ostate1, tmp0, tmp1; uint4 data = (uint4)(input[4].x,input[4].y,input[4].z,gid); @@ -820,7 +828,7 @@ const uint4 midstate0, const uint4 midstate16, const uint target) SHA256(&pad0,&pad1, data, (uint4)(i+1,K[84],0,0), (uint4)(0,0,0,0), (uint4)(0,0,0, K[87])); SHA256(X+i*2,X+i*2+1, pad0, pad1, (uint4)(K[84], 0U, 0U, 0U), (uint4)(0U, 0U, 0U, K[88])); } - scrypt_core(X,padcache); + scrypt_core(gid, X, padcache); SHA256(&tmp0,&tmp1, X[0], X[1], X[2], X[3]); SHA256(&tmp0,&tmp1, X[4], X[5], X[6], X[7]); SHA256_fixed(&tmp0,&tmp1); diff --git a/bfgminer/share/doc/bfgminer/AUTHORS b/bfgminer/share/doc/bfgminer/AUTHORS index 948b26a..aa24f8a 100644 --- a/bfgminer/share/doc/bfgminer/AUTHORS +++ b/bfgminer/share/doc/bfgminer/AUTHORS @@ -2,6 +2,8 @@ CURRENT MAINTAINERS: Luke Dashjr 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh Nate Woolls 1JnZoFeCVYJgaKbKwDUxSkTZWWpBmwWTgV +Pelle Nilsson +Vitalii Demianets Debian packaging: Dmitry Smirnov @@ -53,7 +55,10 @@ Jason Snell Jean-Luc Cooke Jonathan Lynch Josh Lehan +Kiyoaki Matsugae +Lauri Kasanen Lingchao Xu +Luke Mitchell Mark Crichton Martin Danielsen Michael Kedzierski @@ -73,13 +78,15 @@ pooler Raulo Red_Wolf_2 Ricardo Iván Vieitez Parra +Ronny Van Keer Rusty Russell +Серёга slax0r Teemu Suikki Thorsten Gilling +Tim Bartletts Tydus Ufasoft -Vitalii Demianets Vladimir Strinski Zefir Kurtisi ZeusMiner Team diff --git a/bfgminer/share/doc/bfgminer/NEWS b/bfgminer/share/doc/bfgminer/NEWS index 13816fd..e77ba0b 100644 --- a/bfgminer/share/doc/bfgminer/NEWS +++ b/bfgminer/share/doc/bfgminer/NEWS @@ -1,3 +1,271 @@ +BFGMiner Version 5.0.0 - November 29, 2014 + +- opencl: Fail gracefully if clGetProgramInfo/CL_PROGRAM_NUM_DEVICES returns +zero +- opencl: Remember results of global offset testing +- opencl: Only save kernel binary when we built from source +- opencl: Only try to patch BFI_INT when compiling a kernel from source +- opencl: Major refactor, splitting up opencl_load_kernel into many new +functions +- titan: Initialise variables to satisfy compilers +- Bugfix: opencl: Correctly handle non-goffset kernels +- Fixing column spacing of non-curses device output +- Bugfix: opencl: free memory if clState creation fails +- Titan: Do not do actual configuration job in API thread context. Instead, send +commands to the worker thread to do the actual job. +- Titan: bugfix: dies are not configured if die#0 is OFF +- Titan: unused function argument +- Titan: unused variables +- Update knc-asic: Titan FPGA image with spi->i2c commands removed and fixed +some lock-up scenarios +- Titan code rework: Use one bfgminer processor per die (instead of core) +- minion: Reinitialise chips if they don't seem to be progressing +- minion: Read temperature sensor +- minion: TUI clock speed control +- minion: Include "Frequency" in RPC status +- minion: Add "clock" setting +- minion: Set configuration parameters we care about +- minion: Reset chip at initialization +- minion: Configure PLL to 900 MHz at startup +- minion: Report hashes done as accurately as we can +- minion: Core enable/disable control +- minion: Implement queue flushing +- minion: Implement basic mining +- lowl-spi: linux_spi_txrx2 to include device protocol dumping +- minion: Detection code for the Prospero X1 +- Actually add version.c file +- Only rebuild a minimal version.c file when git commit changes +- Bugfix: Use HASH_ADD_KEYPTR for const char *, not HASH_ADD_STR +- Bugfix: Re-lock stgd_lock when we don't have a malgo-specific pool to use +- scrypt: Disable OpenCL by default +- opencl: Remove support for "OCL1" kernel define (indicated OpenCL 1.1+) +- opencl: Autodetect whether global offset actually works +- opencl: Add no-goffset support to scrypt kernels +- opencl: Determine kernel support for goffset by code analysis +- opencl: Add "goffset" setting to override detection of support for global work +offsets +- util: seek_data_cb: Check validity of offset +- Allow libcurl to rewind the upload buffer +- cpu: Set the priority of miner threads to idle on Windows +- cpu: Use _SC_NPROCESSORS_CONF instead of _SC_NPROCESSORS_ONLN +- cpu: Do not set thread affinity on single-processor systems +- Adding additional boolean keywords enable and disable +- AUTHORS: Move Pelle and Vitalii to "Current Maintainers" since they actively +maintain the Titan driver +- AUTHORS: Add Ronny Van Keer (Keccak C implementation) +- Titan: supply its own rolling hashrate implementation +- A driver can supply its own rolling hashrate function (in case generic +rolling hashrate implementation does not work) +- Bugfix: configure: kncasic does not actually need i2c-tools +- Keccak: Simplify keccak_hash_data +- keccak: Adapt opencl intensity interpretation to have approximately the same +desktop interactivity affect as SHA256d +- Keccak: Include support in various builds +- Travis: Update with Keccak +- opencl/keccak: Add non-goffset support +- opencl/keccak: Unroll all the hash rounds properly +- opencl: Add Keccak support via "fullheader" kernel interface +- keccak: Adapt for BFGMiner +- Keccak: Import algorithm code as-is +- opencl: Add a simple "fullheader" kernel interface +- Update stratum mining.capabilities method to use a single Object for all +parameters +- Bugfix: Correct USE_SHA256D macro name to ensure SHA256d is always preferred +as default algorithm +- cpu: Generic scanhash that can support any PoW algorithm +- RPC: Include Hash Method in minecoin for new algorithms +- opencl: Teach findnonce to behave based on kernel interface rather than mining +algorithm +- opencl: Get min_nonce_diff from struct mining_algorithm +- Move malgo-specific code to dedicated source files +- opencl: Simplify kernel-specific data handling +- Update knc-asic: Fix issue with detect_die crashing due to errors in response +- titan: Init last_nonce on die reconfiguration to avoid lots of "unknown work" +messages +- Bugfix: titan: Extra garbage was sent on SPI with new commands +- titan: Remove temporary log messages for manual report checks +- titan: Wrong variable used in new per-die iteration +- titan: Do manual core checks in parallel with normal ones +- titan: Fix: Only one die was checked after flush in last commit +- titan: Manually check all cores for reports after flush +- opencl: Remove redundant checks for USE_OPENCL +- cpu: Remove redundant checks for USE_CPUMINING +- opencl: Only attempt to BFI_INT patch SHA256d kernels +- Significantly rewrite configure script to handle driver dependencies cleaner +- Make SHA256d mining optional +- Bugfix: cointerra: Can handle nonces down to pdiff 1 +- kncasic: Initialise first_cgpu to silence false warning +- Bugfix: Clarify goffset decision code, and refuse to compile kernels in +situations where they won't work +- Bugfix: opencl: Output buffer must be readable by kernel since it is used with +a count/position iterator +- Bugfix: opencl: Skip NULL kernel interface entry +- DevAPI: hashes_done: Simplify and improve precision of max_nonce calculation +- opencl: Avoid duplicating kernel_interfaces mapping in select_kernel +- opencl: Avoid duplicating kernel_interfaces mapping in +opencl_scanhash_get_kernel +- cpu: Drivers should not be doing fulltest on their own, so remove it +- cpu: Pass full work struct to scanhash functions +- kncasic: Split up each ASIC channel to its own device +- kncasic: Use consistent naming for KNC_MAX_DIES_PER_CORE +- kncasic: Refactoring: coreid is not used, remove it +- kncasic: Refactoring: put all device architecture defines in one place (knc-asic.h) +- kncasic: Add lock to protect concurrent accesses to knc_state +- kncasic: Fix auto +- Build system fixes for kncasic driver +- configure: Deduplicate Linux i2c-dev.h checks for KnCMiner drivers +- Travis: Update for kncasic driver +- kncasic: Only show the relevant die for RPC stats +- kncasic: Use proc_repr for logging +- kncasic: Split up logical processors +- kncasic: Silence warning about unhandled enumeration values +- Bugfix: kncasic: Proper format specifications +- kncasic: Remove unused code +- kncasic: Minimal changes to get it compiling +- kncasic: Import gen 2 driver from cgminer commit +bc153552be8591250cb3214bf5202501d4a39922 +- titan: Move thread_reportin() call to poll function +- titan: reportin every process_report to avoid falsely tripping the watchdog +- titan: Remove unused variables +- Bump knc-asic submodule +- titan: Increase FPGA to ASIC SPI frequency to 6 MHz +- titan: Use new get_work_status prototype and print FPGA CRC error counters to +log +- Titan flush optimization fix: Don't send get_info commands when FPGA is +speaking to ASIC +- titan: All dies use same nonce working range +- Titan flush optimization bugfix: FPGA status was checked once per poll instead +of once per ASIC +- Titan flush optimization: Bugfix: Flush time measurement only worked with one +ASIC +- Titan flush optimization: Point knc-asic submodule to include new FPGA image +- Titan flush optimization: Remove temporary debug messages +- Titan flush optimization: Keep works in local queue until slot number is +reused +- Titan flush optimization: Point knc-asic submodule to needed revision +- Titan flush optimization: Measure new flush time +- Titan flush optimization: Send works to all dies after flush +- Titan flush optimization: First rough implementation +- Titan: Less clobber on the screen: group some "failure" messages +- Bugfix: Prefer not using work created just to ensure a specific algorithm is +queued, so strategies work as much as possible +- Stratum: Enable mining.set_goal to change parameters on the current goal +- cpu: Fail gracefully if unsupported mining algo gets into scanhash +- opencl: Fail gracefully if unsupported mining algo gets into +opencl_scanhash_get_kernel +- SSM: Send goal malgo to goal-enabled clients +- Allow pools with #change_goal_malgo attribute to change the mining algorithm +used by their assigned goal +- Gracefully fail when no pool can be found to generate specific-algo work +- Remove opt_scrypt +- dualminer: Replace opt_scrypt with a per-device "scrypt" option +- dualminer: Make dual_mode a per-device option as it should be +- opencl: Nearly complete migration to per-work mining algorithms +- pool_actively_desired: If we are the highest priority, workable pool for a +given algorithm, we are needed +- Ignore opt_queue for unused mining algorithms +- Set name and aliases on mining algorithms +- When hotplug is enabled and a mining algorithm is configured for the first +time, schedule a rescan of hardware to pick up anything now applicable that may +not have been before +- Try to keep enough work queued for each mining algorithm in use +- Move select_loadbalance and select_failover logic into their own functions +- Keep track of how much work is staged per-algorithm +- Keep track of how many goals reference each mining algorithm +- Abstract goal_set_malgo function +- Build a mining_algorithms list +- get_work: Restore previous getwork rollntime behaviour +- get_work: Only return work items compatible with processor (degrades getwork +rollntime support) +- opencl: Support for per-work mining algorithms +- Build without POW_SCRYPT at all +- opencl: Defer loading kernel until it is needed +- opencl: Split initCl into opencl_create_clState and opencl_load_kernel +- SSM: Implement mining.capabilities including proxying mining.set_goal +- Replace mining.goal.subscribe with mining.capabilities +- Stratum: Avoid resetting the goal if the old and new name match +- Allow specifying goal options as eg, --pool-goal name:malgo=scrypt +- cpu: Support for per-work mining algorithms +- Replace cgpu.min_nonce_diff with drv.drv_min_nonce_diff(cgpu, malgo) +- proxy: Avoid assumptions about mining algorithm at initialisation +- Core only: Partially move most of opt_scrypt to mining_goal +- opencl: Reintroduce independent intensity setting internally +- Move MAX_*_INTENSITY stuff to driver-opencl.h +- proxy: Minimise minimum difficulty for proxy clients +- Enable --generate-to option (was --coinbase-addr) to work with non-default +goals +- Save pool goals in written config files +- README: Update documentation for multiple blockchain support +- RPC: Add "Difficulty Accepted" to "coin" command +- RPC: Add "Mining Goal" to "pools" command +- RPC: Accept an additional argument for "addpool" to indicate mining goal by +name +- Stratum: Support for mining.set_goal("goal name") - currently just resetting +the user-configured goal +- Teach longpoll logic about multiple mining goals +- RPC: Include non-default goals in reply to "coin" command +- Ignore generation address/script on pools using non-default mining goals +- Only include block display lines for active goals +- Move income to block display line, and show extra block display lines for each +additional mining goal +- New --pool-goal option to set a distinct named goal per-pool +- Parameterise most references to global mining_goal_info +- Move block_time to be per block_info +- Show "?" for income if block height is unknown +- Move block height tracking onto block_info +- Calculate current_fullhash only when needed (for RPC 'coins') +- Replace current_block_id with blkchain->currentblk[->block_id] +- Move current_hash to goal->current_goal_detail +- Clean up struct block_info names +- Use full prevblock hash as block key (also gets rid of dead code) +- Move global variables related to the blockchain or mining goals on to global +structs + + +BFGMiner Version 4.10.1 - November 29, 2014 + +- Upgraded Windows libcurl from 7.38.0 to 7.39.0 +- Bugfix: bytes_free: Set buf to NULL so the bytes_t is reusable +- Bugfix: minergate: Avoid malloc(0) if stats file has too few values +- Bugfix: modminer: Avoid leaking devname when detecting claimed devices +- Bugfix: free memory allocated for config file loading/writing +- Bugfix: nanofury: Avoid NULL pointer dereference on init failure +- Bugfix: varint_decode: Correctly decode multibyte numbers +- cpu: Fix processor count detection with HW_NCPU +- cpu: SCHED_IDLE and SCHED_BATCH can only be used with sched_priority 0 +- cpu: fix sched_setaffinity parameter : sizeof(cpu_set_t) +- Bugfix: opencl: Correctly accept negative intensities and set dynamic +intensity without changing current value +- Since longpoll connections are never reused, explicitly forbid reuse so +libcurl cleans them up immediately +- Bugfix: Correct already-in-use getcbaddr message +- Demote some Bitfury debug log messages to only with device protocol dumping +- Update bundled libbase58 to 0.1.3 +- README.ASIC: Minor cleanups to Zeusminer section +- README.ASIC: Explain Zeusminer options +- Makefile: Specify .cl files explicitly, and only include scrypt ones when +configured with scrypt support +- Bugfix: DevAPI: hashes_done: Explicitly cast to uint64_t for big calculations +(LLVM was allowing overflow) +- Bugfix: titan: First core in each die got too big nonce area to work on +- Travis: Build MinGW64 with ncurses +- Bugfix: Declare manual_enable_pool in miner.h, for api.c use +- Bugfix: bitfury: Use long long and llabs to avoid under/over flows misbehaving +- Bugfix: Highlight all active pools, in pool listing +- Set quota to 1 when enabling a failover-only pool, and disable failover-only +when setting quota +- Bugfix: pool_actively_desired: Detect failover-only conditions for loadbalance +and balance strategies +- Bugfix: Only display pools as Failover state when it is effectively so +- Make sure KEY_EVENT from wincon is ignored (it conflicts with ncurses) +- README.ASIC: Add details for BFx2 USB +- Titan: Submit stale shares while doing flushes +- README.ASIC: Remove CFLAGS hack not needed for KnCMiner Titan build +- Bugfix: Need unicode_micro in non-Unicode curses builds +- Remove unused variables from curses-less builds +- Bugfix: Cannot duplicate userpass option or we end up with it processed double + + BFGMiner Version 4.10.0 - October 21, 2014 - Upgraded Windows libjansson from 2.6 to 2.7 diff --git a/bfgminer/share/doc/bfgminer/README b/bfgminer/share/doc/bfgminer/README index e8de367..1b90895 100644 --- a/bfgminer/share/doc/bfgminer/README +++ b/bfgminer/share/doc/bfgminer/README @@ -2,9 +2,8 @@ BFGMiner: St. Barbara's Faithfully Glorified Mining Initiative Naturally Exceeding Rivals or Basically a Freaking Good Miner -This is a multi-threaded multi-pool ASIC, FPGA, GPU and CPU miner with dynamic -clocking, monitoring, and fanspeed support for bitcoin. Do not use on multiple -block chains at the same time! +This is a multi-threaded, multi-blockchain, multi-pool ASIC, FPGA, GPU and CPU +miner with dynamic clocking, monitoring, and fanspeed support for bitcoin. This code is provided entirely free of charge by the programmer in his spare time so donations would be greatly appreciated. Please consider donating to the @@ -46,6 +45,10 @@ Multiple pools: bfgminer -o http://pool1:port -u pool1username -p pool1password -o http://pool2:port -u pool2usernmae -p pool2password +Multiple blockchains: + +bfgminer -o http://pool1:port -u pool1username -p pool1password --pool-goal default -o http://pool2:port -u pool2usernmae -p pool2password --pool-goal freicoin + Single pool with a standard http proxy: bfgminer -o http://pool:port -x http://proxy:port -u username -p password @@ -140,44 +143,49 @@ BFGMiner driver configuration options: Include udev rules for ambiguous devices which may not be miners --disable-avalon Compile support for Avalon (default enabled) + --disable-avalonmm Compile support for Avalon2/3 (default enabled) --enable-bfsb Compile support for BFSB (default disabled) - --disable-bfx Compile support for BFx2 (default if libusb) + --disable-bfx Compile support for BFx2 (default enabled) --disable-bifury Compile support for Bi*Fury (default enabled) --disable-bigpic Compile support for Big Picture Mining USB (default enabled) --disable-bitforce Compile support for BitForce (default enabled) --disable-bitfury Compile support for Bitfury (default enabled) - --enable-cpumining Build with CPU mining support (default disabled) + --disable-cointerra Compile support for CoinTerra (default enabled) + --enable-cpumining Compile support for CPU mining (default disabled) --disable-drillbit Compile support for DrillBit (default enabled) --disable-dualminer Compile support for DualMiner (default enabled) - --disable-gridseed Compile support for GridSeed (default enabled with - scrypt) + --disable-gridseed Compile support for GridSeed (default enabled) --disable-hashbuster Compile support for HashBuster Nano (default enabled) - --disable-hashbusterusb Compile support for HashBuster Micro (default if - libusb) + --disable-hashbusterusb Compile support for HashBuster Micro (default + enabled) --disable-hashfast Compile support for HashFast (default enabled) --disable-icarus Compile support for Icarus (default enabled) --enable-jingtian Compile support for JingTian (default disabled) --disable-klondike Compile support for Klondike (default enabled) --enable-knc Compile support for KnC (default disabled) + --enable-kncasic Compile support for KnC gen 2 (default disabled) --disable-littlefury Compile support for LittleFury (default enabled) --enable-metabank Compile support for Metabank (default disabled) + --enable-minergate Compile support for Spondoolies minergate interface + (default disabled) + --enable-minion Compile support for Minion (default disabled) --disable-modminer Compile support for ModMiner (default enabled) --disable-nanofury Compile support for NanoFury (default enabled) --enable-opencl Compile support for OpenCL (default disabled) --disable-adl Build without ADL monitoring (default enabled) --disable-rockminer Compile support for RockMiner (default enabled) --enable-titan Compile support for KnC Titan (default disabled) - --disable-twinfury Compile support for Twinfury USB miner (default - enabled) - --disable-x6500 Compile support for X6500 (default if libusb) - --disable-zeusminer Compile support for ZeusMiner (default enabled with - scrypt) - --disable-ztex Compile support for ZTEX (default if libusb) + --disable-twinfury Compile support for Twinfury (default enabled) + --disable-x6500 Compile support for X6500 (default enabled) + --disable-zeusminer Compile support for ZeusMiner (default enabled) + --disable-ztex Compile support for ZTEX (default enabled) BFGMiner algorithm configuration option: - --enable-scrypt Compile support for scrypt mining (default disabled) + --enable-keccak Compile support for Keccak (default disabled) + --disable-sha256d Compile support for SHA256d (default enabled) + --enable-scrypt Compile support for scrypt (default disabled) BFGMiner dependency configuration options: --without-curses Compile support for curses TUI (default enabled) @@ -252,7 +260,6 @@ Options for both config file and command line: --cmd-idle Execute a command when a device is allowed to be idle (rest or wait) --cmd-sick Execute a command when a device is declared sick --cmd-dead Execute a command when a device is declared dead ---coinbase-addr Set coinbase payout address for solo mining --coinbase-check-addr A list of address to check against in coinbase payout list received from the previous-defined pool, separated by ',' --coinbase-check-total The least total payout amount expected in coinbase received from the previous-defined pool --coinbase-check-percent The least benefit percentage expected for the sum of addr(s) listed in --cbaddr argument for previous-defined pool @@ -268,6 +275,7 @@ Options for both config file and command line: --expiry-lp Upper bound on how many seconds after getting work we consider a share from it stale (with longpoll active) (default: 3600) --failover-only Don't leak work to backup pools when primary pool is lagging --failover-switch-delay Delay in seconds before switching back to a failed pool (default: 300) +--generate-to Set an address to generate to for solo mining --force-dev-init Always initialize devices when possible (such as bitstream uploads to some FPGAs) --kernel-path Specify a path to where bitstream and kernel files are --load-balance Change multipool strategy from failover to quota based balance @@ -289,6 +297,7 @@ Options for both config file and command line: --noncelog Create log of all nonces found --pass|-p Password for bitcoin JSON-RPC server --per-device-stats Force verbose mode and output per-device statistics +--pool-goal Named goal for the previous-defined pool --pool-priority Priority for just the previous-defined pool --pool-proxy|-x Proxy URI to use for connecting to just the previous-defined pool --protocol-dump|-P Verbose dump of protocol-level activities @@ -467,14 +476,16 @@ the range of current share difficulties, whether block notification is working work. The block display shows: -Block: ...1b89f8d3 #217364 Diff:7.67M (54.93Th/s) Started: [17:17:22] +Block #217364: ...1b89f8d3 Diff:7.67M (54.93T) Started: [17:17:22] I:12.99mBTC/hr -This shows a short stretch of the current block, the next block's height and -difficulty (including the network hashrate that difficulty represents), and when -the search for the new block started. +This shows a short stretch of the next block's height, the current block, +difficulty (including the network hashrate that difficulty represents), when the +search for the new block started, and finally expected Income, calculated by +actual shares submitted in 100% PPS value (assumes Bitcoin, does not account for +altcoin conversions!). The BFGMiner status line shows: - ST:1 F:0 NB:1 AS:0 BW:[ 75/241 B/s] E:2.42 I:12.99mBTC/hr BS:2.71k + ST:1 F:0 NB:1 AS:0 BW:[ 75/241 B/s] E:2.42 BS:2.71k ST is STaged work items (ready to use). F is network Failure occasions (server down or slow to provide work) @@ -483,8 +494,6 @@ AS is Active Submissions (shares in the process of submitting) BW is BandWidth usage on the network (received/sent) E is Efficiency defined as number of shares accepted (multiplied by their difficulty) per 2 KB of bandwidth -I is expected Income, calculated by actual shares submitted in 100% PPS value - (assumes Bitcoin, does not account for altcoin conversions!) BS is the all time Best Share difficulty you've found The totals line shows the following: @@ -557,10 +566,11 @@ SOLO MINING BFGMiner supports solo mining with any GBT-compatible bitcoin node (such as bitcoind). To use this mode, you need to specify the URL of your bitcoind node -using the usual pool options (--url, --userpass, etc), and the --coinbase-addr +using the usual pool options (--url, --userpass, etc), and the --generate-to option to specify the Bitcoin address you wish to receive the block rewards mined. When you run Bitcoin Core on the same computer as your miner, the pool -itself will be automatically configured for you. +itself will be automatically configured for you (on the default goal). Please be +aware that solo mining via GBT is at this time only supported for Bitcoin. IMPORTANT: If you are solo mining with more than one instance of BFGMiner (or any other software) per payout address, you must also specify data using the @@ -577,7 +587,20 @@ rejected; this does not indicate that it has stopped mining. Example solo mining usage: bfgminer -o http://localhost:8332 -u username -p password \ - --coinbase-addr 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh \ + --generate-to 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh \ + --coinbase-sig "rig1: This is Joe's block!" + +If you want to solo mine on multiple GBT-compatible Bitcoin blockchains, you can +specify --generate-to multiple times with a goal name prefix followed by a +colon. Note that at this time, the coinbase sig is always shared across all +goals/pools. + +Example multi-blockchain solo mining usage: + +bfgminer -o http://localhost:8332 -u username -p password \ + --generate-to 1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh \ + -o http://localhost:7221 -u user2 -p password --pool-goal mychain \ + --generate-to mychain:1QATWksNFGeUJCWBrN4g6hGM178Lovm7Wh \ --coinbase-sig "rig1: This is Joe's block!" diff --git a/bfgminer/share/doc/bfgminer/README.ASIC b/bfgminer/share/doc/bfgminer/README.ASIC index fed50ea..eef5911 100644 --- a/bfgminer/share/doc/bfgminer/README.ASIC +++ b/bfgminer/share/doc/bfgminer/README.ASIC @@ -89,6 +89,21 @@ For example: sudo bfgminer -S bfsb:auto +BFx2 +---- + +You will need to install the WinUSB driver instead of the default FTDI serial +driver. The easiest way to do this is using Zadig: http://zadig.akeo.ie/ + +Note that since it's impossible to tell the BFx2 apart from various other +devices (including BFL/Cairnsmore1 miners and even many non-mining devices!), +you must run with the -S bfx:all option (or 'bfx:all' at the M+ menu). + +I do not know what this will do with other devices; it may start fires, +launch nuclear missiles (please don't run BFGMiner on computers with +missile controls), etc. + + BI*FURY ------- @@ -217,7 +232,7 @@ Build instructions: git clone git@github.com:KnCMiner/bfgminer.git cd bfgminer ./autogen.sh -./configure --enable-scrypt --enable-titan --disable-other-drivers CFLAGS="-Iuthash/src" +./configure --enable-scrypt --enable-titan --disable-other-drivers make sudo /etc/init.d/bfgminer.sh restart screen -r @@ -316,6 +331,28 @@ So for example, an entry would look like this: gridseed@6D85278F5650:clock=875 +ZEUSMINER +--------- + +Zeusminers do not support autodetection, so you will need to use --scan to probe +for them: + +-S zeusminer:\\.\COM3 + +You should also configure the driver for your specific device: + + --set zeusminer:clock=N Clock frequency (default: 328) + --set zeusminer:chips=N Number of chips per device + Blizzard : 6 Cyclone : 96 + Hurricane X2: 48 (2*24) Hurricane X3: 64 (2*32) + Thunder X2: 96 (4*24) Thunder X3: 128 (4*32) +Note: if you set this option incorrectly, the device may underperform and/or + misreport hashrate. + +For example: + +bfgminer --scrypt -o stratum+tcp://pool:port -u user -p pass -S zeusminer:\\.\COM3 --set zeusminer:clock=328 --set zeusminer:chips=128 + --- This code is provided entirely free of charge by the programmer in his spare diff --git a/bfgminer/share/doc/bfgminer/README.RPC b/bfgminer/share/doc/bfgminer/README.RPC index 7f19a7b..a4db08e 100644 --- a/bfgminer/share/doc/bfgminer/README.RPC +++ b/bfgminer/share/doc/bfgminer/README.RPC @@ -213,12 +213,12 @@ The list of requests - a (*) means it requires privileged access - and replies: stating the results of enabling pool N The Msg includes the pool URL - addpool|URL,USR,PASS (*) + addpool|URL,USR,PASS[,GOAL] (*) none There is no reply section just the STATUS section stating the results of attempting to add pool N The Msg includes the pool URL Use '\\' to get a '\' and '\,' to include a comma - inside URL, USR or PASS + inside URL, USR, PASS, or GOAL poolpriority|N,... (*) none There is no reply section just the STATUS section @@ -449,6 +449,16 @@ https://www.npmjs.org/package/miner-rpc Feature Changelog for external applications using the API: +API V3.3 (BFGMiner v5.0.0) + +Modified API command: + 'addpool' - accept an additional argument to indicate mining goal by name + 'coin' - return multiple elements, when there are multiple mining goals + defined; add 'Difficulty Accepted' + 'pools' - add 'Mining Goal' + +--------- + API V3.2 (BFGMiner v4.1.0) Modified API command: diff --git a/bfgminer/share/doc/bfgminer/README.scrypt b/bfgminer/share/doc/bfgminer/README.scrypt index 97bdbaa..f609e6b 100644 --- a/bfgminer/share/doc/bfgminer/README.scrypt +++ b/bfgminer/share/doc/bfgminer/README.scrypt @@ -8,8 +8,12 @@ Scrypt mining for GPU is completely different to sha256 used for bitcoin mining. It has very different requirements to bitcoin mining and is a lot more complicated to get working well. Note that it is a ram dependent workload, and requires you to have enough system ram as well as fast enough -GPU ram. If you have less system ram than your GPU has, it may not be possible -to mine at any reasonable rate. +GPU ram. + +Since scrypt ASICs are widely available, GPUs are not used by default. If you +want to use them, use the -S opencl:auto option. Note that scrypt ASICs are +documented in README.ASIC rather than this file, which only deals with GPU +mining. There are 5 main parameters to tuning scrypt, all of which are optional for further fine tuning. When you start scrypt mining with the --scrypt option, diff --git a/cgminer/bin/cgminer b/cgminer/bin/cgminer index 95f5e7a..92aab29 100755 Binary files a/cgminer/bin/cgminer and b/cgminer/bin/cgminer differ diff --git a/cgminer/lib/libjansson.4.dylib b/cgminer/lib/libjansson.4.dylib index 1c6d0a3..ef88b0d 100755 Binary files a/cgminer/lib/libjansson.4.dylib and b/cgminer/lib/libjansson.4.dylib differ diff --git a/cgminer/lib/libjansson.a b/cgminer/lib/libjansson.a index d96fc89..d3aba50 100644 Binary files a/cgminer/lib/libjansson.a and b/cgminer/lib/libjansson.a differ diff --git a/cgminer/lib/libusb-1.0.0.dylib b/cgminer/lib/libusb-1.0.0.dylib index b96c858..b4b5a06 100755 Binary files a/cgminer/lib/libusb-1.0.0.dylib and b/cgminer/lib/libusb-1.0.0.dylib differ diff --git a/cgminer/lib/libusb-1.0.2.dylib b/cgminer/lib/libusb-1.0.2.dylib index 6635c2c..a17f0fb 100755 Binary files a/cgminer/lib/libusb-1.0.2.dylib and b/cgminer/lib/libusb-1.0.2.dylib differ diff --git a/cgminer/lib/libusb-1.0.a b/cgminer/lib/libusb-1.0.a index 90d1ec7..f617d77 100644 Binary files a/cgminer/lib/libusb-1.0.a and b/cgminer/lib/libusb-1.0.a differ