FPGA-README 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. This README contains extended details about FPGA mining with BFGMiner
  2. ModMiner (MMQ)
  3. --------------
  4. The mining bitstream does not survive a power cycle, so BFGMiner will upload
  5. it, if it needs to, before it starts mining
  6. -
  7. You must make sure you have an appropriate firmware in your MMQ
  8. Read here for official details of changing the firmware:
  9. http://wiki.btcfpga.com/index.php?title=Firmware
  10. The basics of changing the firmware are:
  11. You need two short pieces of conductive wire if your MMQ doesn't have
  12. buttons on the "RESET" and "ISP" pads on the backplane board
  13. Cutting a small (metal) paper-clip in half works well for this
  14. Join the 2 left pads of the "RESET" pad with wire and the led will dim
  15. Without disconnecting the "RESET", join the 2 left pads of the "ISP" pad
  16. with a wire and it will stay dim
  17. Release "RESET" then release "ISP" and is should still be dim
  18. Unplug the USB and when you plug it back in it will show up as a mass
  19. storage device
  20. Linux: (as one single line):
  21. mcopy -i /dev/disk/by-id/usb-NXP_LPC134X_IFLASH_ISP000000000-0:0
  22. modminer091012.bin ::/firmware.bin
  23. Windows: delete the MSD device file firmware.bin and copy in the new one
  24. rename the new file and put it under the same name 'firmware.bin'
  25. Disconnect the USB correctly (so writes are flushed first)
  26. Join and then disconnect "RESET" and then plug the USB back in and it's done
  27. Best to update to one of the latest 2 listed below if you don't already
  28. have one of them in your MMQ
  29. The current latest different firmware are:
  30. Latest for support of normal or TLM bitstream:
  31. http://btcfpga.com/files/firmware/modminer092612-TLM.bin
  32. Latest with only normal bitstream support (Temps/HW Fix):
  33. http://btcfpga.com/files/firmware/modminer091012.bin
  34. The code is currently tested on the modminer091012.bin firmware.
  35. This comment will be updated when others have been tested
  36. -
  37. On many Linux distributions there is an app called modem-manager that
  38. may cause problems when it is enabled, due to opening the MMQ device
  39. and writing to it
  40. The problem will typically present itself by the flashing led on the
  41. backplane going out (no longer flashing) and it takes a power cycle to
  42. re-enable the MMQ firmware - which then can lead to the problem happening
  43. again
  44. You can either disable/uninstall modem-manager if you don't need it or:
  45. a (hack) solution to this is to blacklist the MMQ USB device in
  46. /lib/udev/rules.d/77-mm-usb-device-blacklist.rules
  47. Adding 2 lines like this (just above APC) should help
  48. # MMQ
  49. ATTRS{idVendor}=="ifc9", ATTRS{idProduct}=="0003", ENV{ID_MM_DEVICE_IGNORE}="1"
  50. The change will be lost and need to be re-done, next time you update the
  51. modem-manager software
  52. BitForce (BFL)
  53. --------------
  54. --bfl-range Use nonce range on BitForce devices if supported
  55. This option is only for BitForce devices. Earlier devices such as the single
  56. did not have any way of doing small amounts of work which meant that a lot of
  57. work could be lost across block changes. Some of the Mini Rigs have support
  58. for doing this, so less work is lost across a longpoll. However, it comes at
  59. a cost of 1% in overall hashrate so this feature is disabled by default. It
  60. is only recommended you enable this if you are mining with a Mini Rig on
  61. P2Pool.
  62. BFGMiner also bundles a bitforce-firmware-flash utility on Linux. Using this,
  63. you can change the bitstream firmware on BitForce Singles. It is untested with
  64. other devices. Use at your own risk! Windows users may use Butterfly Labs
  65. EasyMiner to change firmware.
  66. To compile:
  67. make bitforce-firmware-flash
  68. To flash your BFL, specify the BFL port and the flash file e.g.:
  69. sudo ./bitforce-firmware-flash /dev/ttyUSB0 alphaminer_832.bfl
  70. It takes a bit under 3 minutes to flash a BFL and shows a progress % counter
  71. Once it completes, you may also need to wait about 15 seconds,
  72. then power the BFL off and on again
  73. If you get an error at the end of the BFL flash process stating:
  74. "Error reading response from ZBX"
  75. it may have worked successfully anyway.
  76. Test mining on it to be sure if it worked or not.
  77. You need to give BFGMiner about 10 minutes mining with the BFL to be sure of
  78. the Mh/s value reported with the changed firmware - and the MH/s reported
  79. will be less than the firmware speed since you lose work on every block change.
  80. Icarus (ICA)
  81. ------------
  82. There are two hidden options in BFGMiner when Icarus support is compiled in:
  83. --icarus-options <arg> Set specific FPGA board configurations - one set of values for all or comma separated
  84. baud:work_division:fpga_count:quirks
  85. baud The Serial/USB baud rate - 115200 or 57600 only - default 115200
  86. work_division The fraction of work divided up for each FPGA chip - 1, 2, 4 or 8
  87. e.g. 2 means each FPGA does half the nonce range - default 2
  88. fpga_count The actual number of FPGA working - this would normally be the same
  89. as work_division - range is from 1 up to 'work_division'
  90. It defaults to the value of work_division - or 2 if you don't specify
  91. work_division
  92. quirks List of quirks to enable and disable (after a minus sign):
  93. r Reopen device regularly to workaround buggy Icarus USB chipset
  94. (enabled by default)
  95. If you define fewer comma separated values than Icarus devices, the last values will be used
  96. for all extra devices
  97. An example would be: --icarus-options 57600:2:1:-r
  98. This would mean: use 57600 baud, the FPGA board divides the work in half however
  99. only 1 FPGA actually runs on the board, and don't reopen the device (e.g. like
  100. an early CM1 Icarus copy bitstream)
  101. --icarus-timing <arg> Set how the Icarus timing is calculated - one setting/value for all or comma separated
  102. default[=N] Use the default Icarus hash time (2.6316ns)
  103. short Calculate the hash time and stop adjusting it at ~315 difficulty 1 shares (~1hr)
  104. long Re-calculate the hash time continuously
  105. value[=N] Specify the hash time in nanoseconds (e.g. 2.6316) and abort time (e.g. 2.6316=80)
  106. If you define fewer comma separated values than Icarus devices, the last values will be used
  107. for all extra devices
  108. Icarus timing is required for devices that do not exactly match a default Icarus Rev3 in
  109. processing speed
  110. If you have an Icarus Rev3 you should not normally need to use --icarus-timing since the
  111. default values will maximise the Mh/s and display it correctly
  112. Icarus timing is used to determine the number of hashes that have been checked when it aborts
  113. a nonce range (including on a longpoll)
  114. It is also used to determine the elapsed time when it should abort a nonce range to avoid
  115. letting the Icarus go idle, but also to safely maximise that time
  116. 'short' or 'long' mode should only be used on a computer that has enough CPU available to run
  117. BFGMiner without any CPU delays (an active desktop or swapping computer would not be stable enough)
  118. Any CPU delays while calculating the hash time will affect the result
  119. 'short' mode only requires the computer to be stable until it has completed ~315 difficulty 1 shares
  120. 'long' mode requires it to always be stable to ensure accuracy, however, over time it continually
  121. corrects itself
  122. When in 'short' or 'long' mode, it will report the hash time value each time it is re-calculated
  123. In 'short' or 'long' mode, the scan abort time starts at 5 seconds and uses the default 2.6316ns
  124. scan hash time, for the first 5 nonces or one minute (whichever is longer)
  125. In 'default' or 'value' mode the 'constants' are calculated once at the start, based on the default
  126. value or the value specified
  127. The optional additional =N specifies to set the default abort at N 1/10ths of a second, not the
  128. calculated value, which is 112 for 2.6316ns
  129. To determine the hash time value for a non Icarus Rev3 device or an Icarus Rev3 with a different
  130. bitstream to the default one, use 'long' mode and give it at least a few hundred shares, or use
  131. 'short' mode and take note of the final hash time value (Hs) calculated
  132. You can also use the RPC API 'stats' command to see the current hash time (Hs) at any time
  133. The Icarus code currently only works with an FPGA device that supports the same commands as
  134. Icarus Rev3 requires and also is less than ~840Mh/s and greater than 2Mh/s
  135. If an FPGA device does hash faster than ~840Mh/s it should work correctly if you supply the
  136. correct hash time nanoseconds value
  137. The timing code itself will affect the Icarus performance since it increases the delay after
  138. work is completed or aborted until it starts again
  139. The increase is, however, extremely small and the actual increase is reported with the
  140. RPC API 'stats' command (a very slow CPU will make it more noticeable)
  141. Using the 'short' mode will remove this delay after 'short' mode completes
  142. The delay doesn't affect the calculation of the correct hash time
  143. X6500
  144. Since X6500 FPGAs do not use serial ports for communication, the --scan-serial
  145. option instead works with product serial numbers. By default, any devices with
  146. the X6500 USB product id will be used, but some X6500s may have shipped without
  147. this product id being configured. If you have any of these, you will need to
  148. specify their serial numbers explicitly, and also add -S x6500:auto if you
  149. still want to use the autodetection for other properly-configured FPGAs.
  150. The serial number of X6500s is usually found on a label applied to the ATX
  151. power connector slot. If yours is missing, devices seen by the system can be
  152. displayed by starting bfgminer in debug mode. To get a simple list of devices,
  153. with the debug output shown, you can use: bfgminer -D -d? -T