private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) { ComputeDevice G = e.Item.Tag as ComputeDevice; G.Enabled = e.Item.Checked; if (LoadingScreen == null) { Config.RebuildGroups(); } }
private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) { Miner m = e.Item.Tag as Miner; if (m.EnabledDeviceCount() == 0) { e.Item.Checked = false; } else { int i = (int)e.Item.SubItems[2].Tag; m.SupportedAlgorithms[i].Skip = !e.Item.Checked; Config.RebuildGroups(); } }
private void button3_Click(object sender, EventArgs e) { foreach (Miner m in Form1.Miners) { for (int i = 0; i < m.SupportedAlgorithms.Length; i++) { m.SupportedAlgorithms[i].BenchmarkSpeed = 0; } } Config.RebuildGroups(); foreach (ListViewItem lvi in listView1.Items) { lvi.SubItems[3].Text = ""; } }
private void StartupTimer_Tick(object sender, EventArgs e) { StartupTimer.Stop(); StartupTimer = null; // get all CPUs int CPUs = CPUID.GetPhysicalProcessorCount(); // get all cores (including virtual - HT can benefit mining) int ThreadsPerCPU = CPUID.GetVirtualCoresCount() / CPUs; if (!Helpers.InternalCheckIsWow64() && !Config.ConfigData.AutoStartMining) { MessageBox.Show("NiceHash Miner works only on 64 bit version of OS for CPU mining. CPU mining will be disabled.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } if (ThreadsPerCPU * CPUs > 64) { MessageBox.Show("NiceHash Miner does not support more than 64 virtual cores. CPU mining will be disabled.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } int ThreadsPerCPUMask = ThreadsPerCPU; ThreadsPerCPU -= Config.ConfigData.LessThreads; if (ThreadsPerCPU < 1) { MessageBox.Show("LessThreads greater than number of threads per CPU. CPU mining will be disabled.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } Miners = new Miner[CPUs + 4]; if (CPUs == 1) { Miners[0] = new cpuminer(0, ThreadsPerCPU, 0); } else { for (int i = 0; i < CPUs; i++) { Miners[i] = new cpuminer(i, ThreadsPerCPU, CPUID.CreateAffinityMask(i, ThreadsPerCPUMask)); } } LoadingScreen.LoadText.Text = "Querying NVIDIA5.x devices..."; IncreaseLoadCounter(); Miners[CPUs] = new ccminer_sp(); LoadingScreen.LoadText.Text = "Querying NVIDIA3.x devices..."; IncreaseLoadCounter(); Miners[CPUs + 1] = new ccminer_tpruvot(); LoadingScreen.LoadText.Text = "Querying NVIDIA2.1 devices..."; IncreaseLoadCounter(); Miners[CPUs + 2] = new ccminer_tpruvot_sm21(); LoadingScreen.LoadText.Text = "Querying AMD OpenCL devices..."; IncreaseLoadCounter(); Miners[CPUs + 3] = new sgminer(); LoadingScreen.LoadText.Text = "Saving config..."; IncreaseLoadCounter(); for (int i = 0; i < Miners.Length; i++) { if (Config.ConfigData.Groups.Length > i) { Miners[i].ExtraLaunchParameters = Config.ConfigData.Groups[i].ExtraLaunchParameters; Miners[i].UsePassword = Config.ConfigData.Groups[i].UsePassword; if (Config.ConfigData.Groups[i].APIBindPort > 0) { Miners[i].APIPort = Config.ConfigData.Groups[i].APIBindPort; } for (int z = 0; z < Config.ConfigData.Groups[i].Algorithms.Length && z < Miners[i].SupportedAlgorithms.Length; z++) { Miners[i].SupportedAlgorithms[z].BenchmarkSpeed = Config.ConfigData.Groups[i].Algorithms[z].BenchmarkSpeed; Miners[i].SupportedAlgorithms[z].ExtraLaunchParameters = Config.ConfigData.Groups[i].Algorithms[z].ExtraLaunchParameters; Miners[i].SupportedAlgorithms[z].UsePassword = Config.ConfigData.Groups[i].Algorithms[z].UsePassword; Miners[i].SupportedAlgorithms[z].Skip = Config.ConfigData.Groups[i].Algorithms[z].Skip; } } for (int k = 0; k < Miners[i].CDevs.Count; k++) { ComputeDevice D = Miners[i].CDevs[k]; if (Config.ConfigData.Groups.Length > i) { for (int z = 0; z < Config.ConfigData.Groups[i].DisabledDevices.Length; z++) { if (Config.ConfigData.Groups[i].DisabledDevices[z] == k) { D.Enabled = false; break; } } } ListViewItem lvi = new ListViewItem(); lvi.SubItems.Add(D.Vendor); lvi.SubItems.Add(D.Name); lvi.Checked = D.Enabled; lvi.Tag = D; listView1.Items.Add(lvi); } } Config.RebuildGroups(); LoadingScreen.LoadText.Text = "Checking for latest version..."; IncreaseLoadCounter(); MinerStatsCheck = new Timer(); MinerStatsCheck.Tick += MinerStatsCheck_Tick; MinerStatsCheck.Interval = Config.ConfigData.MinerAPIQueryInterval * 1000; SMAMinerCheck = new Timer(); SMAMinerCheck.Tick += SMAMinerCheck_Tick; SMAMinerCheck.Interval = Config.ConfigData.SwitchMinSecondsFixed * 1000 + R.Next(Config.ConfigData.SwitchMinSecondsDynamic * 1000); UpdateCheck = new Timer(); UpdateCheck.Tick += UpdateCheck_Tick; UpdateCheck.Interval = 1000 * 3600; // every 1 hour UpdateCheck.Start(); UpdateCheck_Tick(null, null); LoadingScreen.LoadText.Text = "Getting NiceHash SMA information..."; IncreaseLoadCounter(); SMACheck = new Timer(); SMACheck.Tick += SMACheck_Tick; SMACheck.Interval = 60 * 1000; // every 60 seconds SMACheck.Start(); SMACheck_Tick(null, null); LoadingScreen.LoadText.Text = "Getting Bitcoin exchange rate..."; IncreaseLoadCounter(); BitcoinExchangeCheck = new Timer(); BitcoinExchangeCheck.Tick += BitcoinExchangeCheck_Tick; BitcoinExchangeCheck.Interval = 1000 * 3601; // every 1 hour and 1 second BitcoinExchangeCheck.Start(); BitcoinExchangeCheck_Tick(null, null); LoadingScreen.LoadText.Text = "Getting NiceHash balance..."; IncreaseLoadCounter(); BalanceCheck = new Timer(); BalanceCheck.Tick += BalanceCheck_Tick; BalanceCheck.Interval = 61 * 1000; // every 61 seconds BalanceCheck.Start(); BalanceCheck_Tick(null, null); LoadingScreen.LoadText.Text = "Setting environment variables..."; IncreaseLoadCounter(); SetEnvironmentVariables(); IncreaseLoadCounter(); }
private void StartupTimer_Tick(object sender, EventArgs e) { StartupTimer.Stop(); StartupTimer = null; // get all CPUs CPUs = CPUID.GetPhysicalProcessorCount(); // get all cores (including virtual - HT can benefit mining) int ThreadsPerCPU = CPUID.GetVirtualCoresCount() / CPUs; if (!Helpers.InternalCheckIsWow64() && !Config.ConfigData.AutoStartMining) { MessageBox.Show(International.GetText("form1_msgbox_CPUMining64bitMsg"), International.GetText("Warning_with_Exclamation"), MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } if (ThreadsPerCPU * CPUs > 64) { MessageBox.Show(International.GetText("form1_msgbox_CPUMining64CoresMsg"), International.GetText("Warning_with_Exclamation"), MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } int ThreadsPerCPUMask = ThreadsPerCPU; ThreadsPerCPU -= Config.ConfigData.LessThreads; if (ThreadsPerCPU < 1) { MessageBox.Show(International.GetText("form1_msgbox_CPUMiningLessThreadMsg"), International.GetText("Warning_with_Exclamation"), MessageBoxButtons.OK, MessageBoxIcon.Warning); CPUs = 0; } Globals.Miners = new Miner[CPUs + 4]; if (CPUs == 1) { Globals.Miners[0] = new cpuminer(0, ThreadsPerCPU, 0); } else { for (int i = 0; i < CPUs; i++) { Globals.Miners[i] = new cpuminer(i, ThreadsPerCPU, CPUID.CreateAffinityMask(i, ThreadsPerCPUMask)); } } LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_NVIDIA5X")); Globals.Miners[CPUs] = new ccminer_sp(); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_NVIDIA3X")); Globals.Miners[CPUs + 1] = new ccminer_tpruvot(); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_NVIDIA2X")); Globals.Miners[CPUs + 2] = new ccminer_tpruvot_sm21(); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_AMD")); Globals.Miners[CPUs + 3] = new sgminer(); // Auto uncheck CPU if any GPU is found for (int i = 0; i < CPUs; i++) { try { if ((Globals.Miners[CPUs + 0].CDevs.Count > 0 || Globals.Miners[CPUs + 1].CDevs.Count > 0 || Globals.Miners[CPUs + 2].CDevs.Count > 0 || Globals.Miners[CPUs + 3].CDevs.Count > 0) && i < CPUs) { Globals.Miners[i].CDevs[0].Enabled = false; } } catch { } } LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_SaveConfig")); for (int i = 0; i < Globals.Miners.Length; i++) { if (Config.ConfigData.Groups.Length > i) { Globals.Miners[i].ExtraLaunchParameters = Config.ConfigData.Groups[i].ExtraLaunchParameters; Globals.Miners[i].UsePassword = Config.ConfigData.Groups[i].UsePassword; Globals.Miners[i].MinimumProfit = Config.ConfigData.Groups[i].MinimumProfit; Globals.Miners[i].DaggerHashimotoGenerateDevice = Config.ConfigData.Groups[i].DaggerHashimotoGenerateDevice; if (Config.ConfigData.Groups[i].APIBindPort > 0) { Globals.Miners[i].APIPort = Config.ConfigData.Groups[i].APIBindPort; } for (int z = 0; z < Config.ConfigData.Groups[i].Algorithms.Length && z < Globals.Miners[i].SupportedAlgorithms.Length; z++) { Globals.Miners[i].SupportedAlgorithms[z].BenchmarkSpeed = Config.ConfigData.Groups[i].Algorithms[z].BenchmarkSpeed; Globals.Miners[i].SupportedAlgorithms[z].ExtraLaunchParameters = Config.ConfigData.Groups[i].Algorithms[z].ExtraLaunchParameters; Globals.Miners[i].SupportedAlgorithms[z].UsePassword = Config.ConfigData.Groups[i].Algorithms[z].UsePassword; Globals.Miners[i].SupportedAlgorithms[z].Skip = Config.ConfigData.Groups[i].Algorithms[z].Skip; Globals.Miners[i].SupportedAlgorithms[z].DisabledDevice = new bool[Globals.Miners[i].CDevs.Count]; if (Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices != null) { if (Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices.Length < Globals.Miners[i].CDevs.Count) { for (int j = 0; j < Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices.Length; j++) { Globals.Miners[i].SupportedAlgorithms[z].DisabledDevice[j] = Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices[j]; } for (int j = Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices.Length; j < Globals.Miners[i].CDevs.Count; j++) { Globals.Miners[i].SupportedAlgorithms[z].DisabledDevice[j] = false; } } else { for (int j = 0; j < Globals.Miners[i].CDevs.Count; j++) { Globals.Miners[i].SupportedAlgorithms[z].DisabledDevice[j] = Config.ConfigData.Groups[i].Algorithms[z].DisabledDevices[j]; } } } else { Globals.Miners[i].GetDisabledDevicePerAlgo(); } } } else { Globals.Miners[i].GetDisabledDevicePerAlgo(); } for (int k = 0; k < Globals.Miners[i].CDevs.Count; k++) { ComputeDevice D = Globals.Miners[i].CDevs[k]; if (Config.ConfigData.Groups.Length > i) { D.Enabled = true; for (int z = 0; z < Config.ConfigData.Groups[i].DisabledDevices.Length; z++) { if (Config.ConfigData.Groups[i].DisabledDevices[z] == k) { D.Enabled = false; break; } } } ListViewItem lvi = new ListViewItem(); lvi.SubItems.Add(D.Vendor); lvi.SubItems.Add(D.Name); lvi.Checked = D.Enabled; lvi.Tag = D; listViewDevices.Items.Add(lvi); } } Config.RebuildGroups(); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_CheckLatestVersion")); MinerStatsCheck = new Timer(); MinerStatsCheck.Tick += MinerStatsCheck_Tick; MinerStatsCheck.Interval = Config.ConfigData.MinerAPIQueryInterval * 1000; SMAMinerCheck = new Timer(); SMAMinerCheck.Tick += SMAMinerCheck_Tick; SMAMinerCheck.Interval = Config.ConfigData.SwitchMinSecondsFixed * 1000 + R.Next(Config.ConfigData.SwitchMinSecondsDynamic * 1000); if (Globals.Miners[CPUs + 3].CDevs.Count > 0) { SMAMinerCheck.Interval = (Config.ConfigData.SwitchMinSecondsAMD + Config.ConfigData.SwitchMinSecondsFixed) * 1000 + R.Next(Config.ConfigData.SwitchMinSecondsDynamic * 1000); } UpdateCheck = new Timer(); UpdateCheck.Tick += UpdateCheck_Tick; UpdateCheck.Interval = 1000 * 3600; // every 1 hour UpdateCheck.Start(); UpdateCheck_Tick(null, null); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_GetNiceHashSMA")); SMACheck = new Timer(); SMACheck.Tick += SMACheck_Tick; SMACheck.Interval = 60 * 1000; // every 60 seconds SMACheck.Start(); SMACheck_Tick(null, null); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_GetBTCRate")); BitcoinExchangeCheck = new Timer(); BitcoinExchangeCheck.Tick += BitcoinExchangeCheck_Tick; BitcoinExchangeCheck.Interval = 1000 * 3601; // every 1 hour and 1 second BitcoinExchangeCheck.Start(); BitcoinExchangeCheck_Tick(null, null); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_GetNiceHashBalance")); BalanceCheck = new Timer(); BalanceCheck.Tick += BalanceCheck_Tick; BalanceCheck.Interval = 61 * 1000; // every 61 seconds BalanceCheck.Start(); BalanceCheck_Tick(null, null); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_SetEnvironmentVariable")); SetEnvironmentVariables(); LoadingScreen.IncreaseLoadCounterAndMessage(International.GetText("form1_loadtext_SetWindowsErrorReporting")); Helpers.DisableWindowsErrorReporting(Config.ConfigData.DisableWindowsErrorReporting); LoadingScreen.IncreaseLoadCounter(); if (Config.ConfigData.NVIDIAP0State) { LoadingScreen.SetInfoMsg(International.GetText("form1_loadtext_NVIDIAP0State")); try { ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = "nvidiasetp0state.exe"; psi.Verb = "runas"; psi.UseShellExecute = true; psi.CreateNoWindow = true; Process p = Process.Start(psi); p.WaitForExit(); if (p.ExitCode != 0) { Helpers.ConsolePrint("NICEHASH", "nvidiasetp0state returned error code: " + p.ExitCode.ToString()); } else { Helpers.ConsolePrint("NICEHASH", "nvidiasetp0state all OK"); } } catch (Exception ex) { Helpers.ConsolePrint("NICEHASH", "nvidiasetp0state error: " + ex.Message); } } LoadingScreen.IncreaseLoadCounter(); }
private void InitiateBenchmark() { if (listView1.Items.Count > index) { ListViewItem lvi = listView1.Items[index]; index++; if (!lvi.Checked) { InitiateBenchmark(); return; } Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; lvi.SubItems[3].Text = "Please wait..."; inBenchmark = true; CurrentlyBenchmarking = m; if (m is cpuminer) { Time = Config.ConfigData.BenchmarkTimeLimitsCPU[TimeIndex]; } else if (m is ccminer) { Time = Config.ConfigData.BenchmarkTimeLimitsNVIDIA[TimeIndex]; } else { Time = Config.ConfigData.BenchmarkTimeLimitsAMD[TimeIndex] / 60; // add an aditional minute if second is not 0 if (DateTime.Now.Second != 0) { Time += 1; } } m.BenchmarkStart(i, Time, BenchmarkCompleted, lvi); } else { // average all cpu benchmarks if (Form1.Miners[0] is cpuminer) { Helpers.ConsolePrint("BENCHMARK", "Calculating average CPU speeds:"); double[] Speeds = new double[Form1.Miners[0].SupportedAlgorithms.Length]; int[] MTaken = new int[Form1.Miners[0].SupportedAlgorithms.Length]; foreach (ListViewItem lvi in listView1.Items) { if (lvi.Tag is cpuminer) { Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; if (m.SupportedAlgorithms[i].BenchmarkSpeed > 0) { Speeds[i] += m.SupportedAlgorithms[i].BenchmarkSpeed; MTaken[i]++; } } } for (int i = 0; i < Speeds.Length; i++) { if (MTaken[i] > 0) { Speeds[i] /= MTaken[i]; } Helpers.ConsolePrint("BENCHMARK", Form1.Miners[0].SupportedAlgorithms[i].NiceHashName + " average speed: " + Form1.Miners[0].PrintSpeed(Speeds[i])); foreach (Miner m in Form1.Miners) { if (m is cpuminer) { m.SupportedAlgorithms[i].BenchmarkSpeed = Speeds[i]; } } } } foreach (ListViewItem lvi in listView1.Items) { Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; lvi.SubItems[3].Text = m.PrintSpeed(m.SupportedAlgorithms[i].BenchmarkSpeed); } Config.RebuildGroups(); button1.Enabled = true; button2.Enabled = false; button3.Enabled = true; } }
private void InitiateBenchmark() { if (listView1.Items.Count > index) { ListViewItem lvi = listView1.Items[index]; index++; if (!lvi.Checked) { InitiateBenchmark(); return; } Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; //lvi.SubItems[3].Text = "Please wait..."; inBenchmark = true; CurrentlyBenchmarking = m; if (m is cpuminer) { Time = Config.ConfigData.BenchmarkTimeLimitsCPU[TimeIndex]; lvi.SubItems[3].Text = String.Format(International.GetText("form2_listView_WaitSeconds"), Time); } else if (m is ccminer) { Time = Config.ConfigData.BenchmarkTimeLimitsNVIDIA[TimeIndex]; if (lvi.SubItems[2].Text.Equals("daggerhashimoto")) { lvi.SubItems[3].Text = International.GetText("form2_listView_WaitForEth"); } else { lvi.SubItems[3].Text = String.Format(International.GetText("form2_listView_WaitSeconds"), Time); } } else { Time = Config.ConfigData.BenchmarkTimeLimitsAMD[TimeIndex] / 60; // add an aditional minute if second is not 0 if (DateTime.Now.Second != 0) { Time += 1; } if (lvi.SubItems[2].Text.Equals("daggerhashimoto")) { lvi.SubItems[3].Text = International.GetText("form2_listView_WaitForEth"); } else { lvi.SubItems[3].Text = String.Format(International.GetText("form2_listView_WaitMinutes"), Time); } } m.BenchmarkStart(i, Time, BenchmarkCompleted, lvi); } else { // average all cpu benchmarks if (Globals.Miners[0] is cpuminer) { Helpers.ConsolePrint("BENCHMARK", "Calculating average CPU speeds:"); double[] Speeds = new double[Globals.Miners[0].SupportedAlgorithms.Length]; int[] MTaken = new int[Globals.Miners[0].SupportedAlgorithms.Length]; foreach (ListViewItem lvi in listView1.Items) { if (lvi.Tag is cpuminer) { Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; if (m.SupportedAlgorithms[i].BenchmarkSpeed > 0) { Speeds[i] += m.SupportedAlgorithms[i].BenchmarkSpeed; MTaken[i]++; } } } for (int i = 0; i < Speeds.Length; i++) { if (MTaken[i] > 0) { Speeds[i] /= MTaken[i]; } Helpers.ConsolePrint("BENCHMARK", Globals.Miners[0].SupportedAlgorithms[i].NiceHashName + " average speed: " + Globals.Miners[0].PrintSpeed(Speeds[i])); foreach (Miner m in Globals.Miners) { if (m is cpuminer) { m.SupportedAlgorithms[i].BenchmarkSpeed = Speeds[i]; } } } } foreach (ListViewItem lvi in listView1.Items) { Miner m = lvi.Tag as Miner; int i = (int)lvi.SubItems[2].Tag; lvi.SubItems[3].Text = m.PrintSpeed(m.SupportedAlgorithms[i].BenchmarkSpeed); } Config.RebuildGroups(); buttonStartBenchmark.Enabled = true; buttonStopBenchmark.Enabled = false; buttonReset.Enabled = true; buttonClose.Enabled = true; buttonCheckProfitability.Enabled = true; buttonSubmitHardware.Enabled = true; } }