Improvements to support for BitBurner boards --bitburner-fury-options allows avalon-options to be overridden for BitBurner Fury Boards, facilitating simultanous use of BitBurner XX and BitBurner Fury boards More sensible defaults for BitBurner boards, so cgminer should do something sensible without any command line args
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
diff --git a/ASIC-README b/ASIC-README
index 55b76d8..9ac56c7 100644
--- a/ASIC-README
+++ b/ASIC-README
@@ -102,7 +102,9 @@ ASIC SPECIFIC COMMANDS
--avalon-options <arg> Set avalon options baud:miners:asic:timeout:freq
--avalon-temp <arg> Set avalon target temperature (default: 50)
--bflsc-overheat <arg> Set overheat temperature where BFLSC devices throttle, 0 to disable (default: 90)
---bitburner-voltage <arg> Set BitBurner core voltage, in millivolts
+--bitburner-fury-options <arg> Override avalon-options for BitBurner Fury boards baud:miners:asic:timeout:freq
+--bitburner-fury-voltage <arg> Set BitBurner Fury core voltage, in millivolts
+--bitburner-voltage <arg> Set BitBurner (Avalon) core voltage, in millivolts
--klondike-options <arg> Set klondike options clock:temp1:temp2:fan
@@ -126,7 +128,9 @@ Avalon commands:
--avalon-freq <arg> Set frequency range for avalon-auto, single value or range
--avalon-options <arg> Set avalon options baud:miners:asic:timeout:freq
--avalon-temp <arg> Set avalon target temperature (default: 50)
---bitburner-voltage <arg> Set BitBurner core voltage, in millivolts
+--bitburner-fury-options <arg> Override avalon-options for BitBurner Fury boards baud:miners:asic:timeout:freq
+--bitburner-fury-voltage <arg> Set BitBurner Fury core voltage, in millivolts
+--bitburner-voltage <arg> Set BitBurner (Avalon) core voltage, in millivolts
Avalon auto will enable dynamic overclocking gradually increasing and
diff --git a/README b/README
index 5c73991..832d424 100644
--- a/README
+++ b/README
@@ -220,7 +220,9 @@ ASIC only options:
--avalon-options <arg> Set avalon options baud:miners:asic:timeout:freq
--avalon-temp <arg> Set avalon target temperature (default: 50)
--bflsc-overheat <arg> Set overheat temperature where BFLSC devices throttle, 0 to disable (default: 90)
---bitburner-voltage <arg> Set BitBurner core voltage, in millivolts
+--bitburner-fury-options <arg> Override avalon-options for BitBurner Fury boards baud:miners:asic:timeout:freq
+--bitburner-fury-voltage <arg> Set BitBurner Fury core voltage, in millivolts
+--bitburner-voltage <arg> Set BitBurner (Avalon) core voltage, in millivolts
See ASIC-README for more information regarding these.
diff --git a/cgminer.c b/cgminer.c
index 336377c..1a6a07d 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -166,6 +166,7 @@ char *opt_icarus_timing = NULL;
bool opt_worktime;
#ifdef USE_AVALON
char *opt_avalon_options = NULL;
+char *opt_bitburner_fury_options = NULL;
#endif
#ifdef USE_KLONDIKE
char *opt_klondike_options = NULL;
@@ -1035,6 +1036,13 @@ static char *set_avalon_options(const char *arg)
return NULL;
}
+
+static char *set_bitburner_fury_options(const char *arg)
+{
+ opt_set_charp(arg, &opt_bitburner_fury_options);
+
+ return NULL;
+}
#endif
#ifdef USE_KLONDIKE
@@ -1254,6 +1262,9 @@ static struct opt_table opt_config_table[] = {
OPT_WITH_ARG("--bitburner-fury-voltage",
opt_set_intval, NULL, &opt_bitburner_fury_core_voltage,
"Set BitBurner Fury core voltage, in millivolts"),
+ OPT_WITH_ARG("--bitburner-fury-options",
+ set_bitburner_fury_options, NULL, NULL,
+ "Override avalon-options for BitBurner Fury boards baud:miners:asic:timeout:freq"),
#endif
#ifdef USE_KLONDIKE
OPT_WITH_ARG("--klondike-options",
diff --git a/driver-avalon.c b/driver-avalon.c
index 09e6dfa..dd73316 100644
--- a/driver-avalon.c
+++ b/driver-avalon.c
@@ -53,6 +53,7 @@ int opt_bitburner_fury_core_voltage = BITBURNER_FURY_DEFAULT_CORE_VOLTAGE;
bool opt_avalon_auto;
static int option_offset = -1;
+static int bbf_option_offset = -1;
static int avalon_init_task(struct avalon_task *at,
uint8_t reset, uint8_t ff, uint8_t fan,
@@ -400,7 +401,7 @@ static int avalon_calc_timeout(int frequency)
}
static bool get_options(int this_option_offset, int *baud, int *miner_count,
- int *asic_count, int *timeout, int *frequency)
+ int *asic_count, int *timeout, int *frequency, char *options)
{
char buf[BUFSIZ+1];
char *ptr, *comma, *colon, *colon2, *colon3, *colon4;
@@ -408,10 +409,10 @@ static bool get_options(int this_option_offset, int *baud, int *miner_count,
size_t max;
int i, tmp;
- if (opt_avalon_options == NULL)
+ if (options == NULL)
buf[0] = '\0';
else {
- ptr = opt_avalon_options;
+ ptr = options;
for (i = 0; i < this_option_offset; i++) {
comma = strchr(ptr, ',');
if (comma == NULL)
@@ -754,7 +755,7 @@ static void bitburner_get_version(struct cgpu_info *avalon)
static bool avalon_detect_one(libusb_device *dev, struct usb_find_devices *found)
{
int baud, miner_count, asic_count, timeout, frequency;
- int this_option_offset = ++option_offset;
+ int this_option_offset;
struct avalon_info *info;
struct cgpu_info *avalon;
bool configured;
@@ -768,12 +769,14 @@ static bool avalon_detect_one(libusb_device *dev, struct usb_find_devices *found
timeout = AVALON_DEFAULT_TIMEOUT;
frequency = AVALON_DEFAULT_FREQUENCY;
- configured = get_options(this_option_offset, &baud, &miner_count,
- &asic_count, &timeout, &frequency);
-
if (!usb_init(avalon, dev, found))
goto shin;
+ this_option_offset = usb_ident(avalon) == IDENT_BBF ? ++bbf_option_offset : ++option_offset;
+ configured = get_options(this_option_offset, &baud, &miner_count,
+ &asic_count, &timeout, &frequency,
+ (usb_ident(avalon) == IDENT_BBF && opt_bitburner_fury_options != NULL) ? opt_bitburner_fury_options : opt_avalon_options);
+
/* Even though this is an FTDI type chip, we want to do the parsing
* all ourselves so set it to std usb type */
avalon->usbdev->usb_type = USB_TYPE_STD;
@@ -794,6 +797,18 @@ static bool avalon_detect_one(libusb_device *dev, struct usb_find_devices *found
info->asic_count = asic_count;
info->timeout = timeout;
info->frequency = frequency;
+ } else if (usb_ident(avalon) == IDENT_BTB) {
+ info->baud = AVALON_IO_SPEED;
+ info->miner_count = BITBURNER_XX_DEFAULT_MINER_NUM;
+ info->asic_count = BITBURNER_DEFAULT_ASIC_NUM;
+ info->timeout = AVALON_DEFAULT_TIMEOUT;
+ info->frequency = AVALON_DEFAULT_FREQUENCY;
+ } else if (usb_ident(avalon) == IDENT_BBF) {
+ info->baud = AVALON_IO_SPEED;
+ info->miner_count = BITBURNER_FURY_DEFAULT_MINER_NUM;
+ info->asic_count = BITBURNER_DEFAULT_ASIC_NUM;
+ info->timeout = BITBURNER_FURY_DEFAULT_TIMEOUT;
+ info->frequency = BITBURNER_FURY_DEFAULT_FREQUENCY;
} else {
info->baud = AVALON_IO_SPEED;
info->miner_count = AVALON_DEFAULT_MINER_NUM;
diff --git a/driver-avalon.h b/driver-avalon.h
index e506388..34ea133 100644
--- a/driver-avalon.h
+++ b/driver-avalon.h
@@ -55,6 +55,12 @@
#define AVALON_MAX_MINER_NUM 0x100
#define AVALON_DEFAULT_ASIC_NUM 0xA
+#define BITBURNER_XX_DEFAULT_MINER_NUM 16
+#define BITBURNER_FURY_DEFAULT_MINER_NUM 128
+#define BITBURNER_DEFAULT_ASIC_NUM 10
+#define BITBURNER_FURY_DEFAULT_FREQUENCY 256
+#define BITBURNER_FURY_DEFAULT_TIMEOUT 50
+
#define AVALON_AUTO_CYCLE 1024
#define AVALON_FTDI_READSIZE 510
diff --git a/miner.h b/miner.h
index 915d7f8..2d5f74e 100644
--- a/miner.h
+++ b/miner.h
@@ -999,6 +999,7 @@ extern char *opt_icarus_timing;
extern bool opt_worktime;
#ifdef USE_AVALON
extern char *opt_avalon_options;
+extern char *opt_bitburner_fury_options;
#endif
#ifdef USE_KLONDIKE
extern char *opt_klondike_options;