TheSeven (OP)
|
|
February 06, 2012, 04:10:15 PM Last edit: March 26, 2012, 01:19:53 PM by TheSeven |
|
Modular Python Bitcoin Miner
The Modular Python Bitcoin Miner is a very flexible mining software written in Python, aiming to unify the frontend of FPGA-based mining hardware. Features- Runs on Python 2.6+ / 3.0+
- Very flexible, to allow for all kinds of weird mining hardware and future mining pool protocols
- Multi-pool support (load balancing or failover, configurable)
- Multi-worker support
- Worker hotplug support
- Web interface
- All UI functions available through JSON API
- Can easily handle clusters of tens of gigahashes, dependinding on the board type
Supported devices- Simple RS232-based interface, as a starting point for interface developers
- X6500 FPGA mining board (no need for D2XX driver!)
- Icarus board
- ZTEX boards
- Butterfly Labs (BFL) BitFORCE Single
- ...more to follow!
- Feel free to implement your own one!
- Board vendors: Contact TheSeven with an offer (e.g. a board for testing) if you want your board to be added!
Screenshots News- 2012-03-26: v0.1.0beta released
- 2012-03-22: Testing branch almost ready to be released for production use
- 2012-03-21: Added ztex board support to testing branch
- 2012-02-09: Added experimental support for Icarus board
- 2012-02-06: Initial public beta release (v0.0.4beta)
Documentation / Howtos Download / Source code IRC channel Donations- Donations to 13NuRX6rdE4Do4vddzhfKK7FqmGSTMcjYh are gratefully accepted
- Or, even better, donate a small share of your mining power to the MPBM authors by leaving the demo pool entries in the default configuration file enabled
[/list]
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
TheSeven (OP)
|
|
February 06, 2012, 04:10:37 PM |
|
<placeholder>
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
shad
|
|
February 06, 2012, 06:27:52 PM |
|
so without the D2xx-drivers we could get this thing running on OpenWRT?
|
15dUzJEUkxgjrtcvDSdsEDkXu7E7RCbNN3
|
|
|
TheSeven (OP)
|
|
February 06, 2012, 06:42:53 PM |
|
so without the D2xx-drivers we could get this thing running on OpenWRT?
That depends on: - Availability of /dev/bus/usb
- Availability of libusb
- Availability of python
- Available RAM etc.
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
O_Shovah
Sr. Member
Offline
Activity: 410
Merit: 252
Watercooling the world of mining
|
|
February 06, 2012, 08:01:02 PM |
|
Is there a more detailed description for setting the scripts up avaidable ?
I tried running it on my linux maschine but i keep getting errors for a common file. I guess my Pm to you dindn't reach you. Seems to be unreliable lately.
|
|
|
|
thirdlight
|
|
February 06, 2012, 08:36:05 PM |
|
I'm using windows xp & getting 2012-02-06 20:23:21.406000: Traceback (most recent call last): 2012-02-06 20:23:21.406000: File "miner.py", line 331, in <module> 2012-02-06 20:23:21.406000: miner.run() 2012-02-06 20:23:21.406000: File "miner.py", line 171, in run 2012-02-06 20:23:21.406000: self.adjustfetchers() 2012-02-06 20:23:21.406000: File "miner.py", line 180, in adjustfetchers 2012-02-06 20:23:21.406000: self.spawnfetcher() 2012-02-06 20:23:21.406000: File "miner.py", line 192, in spawnfetcher 2012-02-06 20:23:21.406000: excessmhashes = p.mhashes - ((now - p.starttime).total_seconds() + queuedelay) * p.hashrate 2012-02-06 20:23:21.406000: AttributeError: 'datetime.timedelta' object has no attribute 'total_seconds' in the log. The terminal window is blank. Am I missing something? Thanks
|
|
|
|
torusJKL
|
|
February 06, 2012, 08:49:52 PM |
|
Looks great. Thanks for sharing.
|
|
|
|
TheSeven (OP)
|
|
February 06, 2012, 08:59:11 PM |
|
I'm using windows xp & getting 2012-02-06 20:23:21.406000: Traceback (most recent call last): [...] 2012-02-06 20:23:21.406000: excessmhashes = p.mhashes - ((now - p.starttime).total_seconds() + queuedelay) * p.hashrate 2012-02-06 20:23:21.406000: AttributeError: 'datetime.timedelta' object has no attribute 'total_seconds' in the log. That sounds like you're using Python <2.7 to me. Only 2.7 and 3.x is supported. @O_Shovah: I've responded to your PM now... Looks like common.py is missing for some reason? (I have no idea why...)
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
kronosvl
|
|
February 06, 2012, 09:40:27 PM |
|
Sub'd
same here, specially openWRT oportunity
|
|
|
|
thirdlight
|
|
February 06, 2012, 09:47:54 PM |
|
That sounds like you're using Python <2.7 to me. Only 2.7 and 3.x is supported.
Yes, 2.6.7 as standard for X6500. I tried 2.7, log has: 2012-02-06 21:45:41.750000: Exception in thread X6500 hotplug controller_main: 2012-02-06 21:45:41.750000: Traceback (most recent call last): 2012-02-06 21:45:41.750000: File "c:\python27\lib\threading.py", line 552, in __bootstrap_inner 2012-02-06 21:45:41.750000: self.run() 2012-02-06 21:45:41.750000: File "c:\python27\lib\threading.py", line 505, in run 2012-02-06 21:45:41.750000: self.__target(*self.__args, **self.__kwargs) 2012-02-06 21:45:41.750000: File "C:\mpbm\worker\fpgamining\x6500hotplug.py", line 127, in main 2012-02-06 21:45:41.750000: if not self.useftd2xx or self.takeover: import usb 2012-02-06 21:45:41.750000: ImportError: No module named usb How do I get usb module? Thanks
|
|
|
|
TheSeven (OP)
|
|
February 06, 2012, 09:59:57 PM |
|
That sounds like you're using Python <2.7 to me. Only 2.7 and 3.x is supported.
Yes, 2.6.7 as standard for X6500. I tried 2.7, log has: 2012-02-06 21:45:41.750000: Exception in thread X6500 hotplug controller_main: 2012-02-06 21:45:41.750000: Traceback (most recent call last): 2012-02-06 21:45:41.750000: File "c:\python27\lib\threading.py", line 552, in __bootstrap_inner 2012-02-06 21:45:41.750000: self.run() 2012-02-06 21:45:41.750000: File "c:\python27\lib\threading.py", line 505, in run 2012-02-06 21:45:41.750000: self.__target(*self.__args, **self.__kwargs) 2012-02-06 21:45:41.750000: File "C:\mpbm\worker\fpgamining\x6500hotplug.py", line 127, in main 2012-02-06 21:45:41.750000: if not self.useftd2xx or self.takeover: import usb 2012-02-06 21:45:41.750000: ImportError: No module named usb How do I get usb module? Thanks http://sourceforge.net/projects/pyusb/files/PyUSB%201.0/1.0.0-alpha-2/pyusb-1.0.0a2.zip/downloadyou can just unpack the "usb" directory from that zip file into the mpbm directory, or install it system-wide using setup.py
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
bitcowok
Newbie
Offline
Activity: 48
Merit: 0
|
|
February 07, 2012, 02:48:53 AM |
|
Hi. Looking really good! Couple problems with v0.0.4alpha that I can see: 1) curses line characters are all messed up in my locale (en_AU.UTF-8) (let me know if you want a screenshot) 2) I'm getting "Invalid long polling URL for Slushies: http://api.bitcoin.cz:8410" Thanks for this work, i'm loving the idea of one program to run ALL the FPGA's.
|
|
|
|
coblee
Donator
Legendary
Offline
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
|
|
February 07, 2012, 04:27:10 AM |
|
I'm getting this error: 2012-02-06 20:25:26.472938: X6500 board AH00WOWD: No backend available 2012-02-06 20:25:26.475037: X6500 board AH00WI18: dlsym(RTLD_DEFAULT, usb_find_busses): symbol not found
|
|
|
|
LazarusLong
Newbie
Offline
Activity: 16
Merit: 0
|
|
February 07, 2012, 08:27:54 AM |
|
I was working on a port with libftdi to replace the d2xx lib - it did not work, some bits in the data streams differ. Great work! I really need this stuff on openwrt...
|
|
|
|
thirdlight
|
|
February 07, 2012, 08:37:58 AM |
|
you can just unpack the "usb" directory from that zip file ... Thanks, TheSeven. I bet you underestimated the level of hand-holding some users need! Now getting: 2012-02-07 08:34:53.468000: Caught exception: No backend available Not getting quite as far as coblee, as no board serial detected?
|
|
|
|
coblee
Donator
Legendary
Offline
Activity: 1654
Merit: 1351
Creator of Litecoin. Cryptocurrency enthusiast.
|
|
February 07, 2012, 09:25:38 AM |
|
Well, I put the serial in the config.py myself: # Single X6500 worker { \ # Worker module "type": worker.fpgamining.x6500.X6500Worker, \ # Worker module parameters, in this case board serial number (default: take first available) "deviceid": "AH00WOWD", \ }, \
# Single X6500 worker { \ # Worker module "type": worker.fpgamining.x6500.X6500Worker, \ # Worker module parameters, in this case board serial number (default: take first available) "deviceid": "AH00WI18", \ }, \
|
|
|
|
TheSeven (OP)
|
|
February 07, 2012, 12:07:40 PM |
|
Hi. Looking really good! Couple problems with v0.0.4alpha that I can see: 1) curses line characters are all messed up in my locale (en_AU.UTF-8) (let me know if you want a screenshot) 2) I'm getting "Invalid long polling URL for Slushies: http://api.bitcoin.cz:8410" Thanks for this work, i'm loving the idea of one program to run ALL the FPGA's. 1) might be curses not properly detecting your terminal type. Running it inside a screen session sometimes helps with this. If you're using PuTTY as a terminal, make sure to set its charset to UTF-8. 2) MPBM probably expects a trailing slash here... I'll fix that later today. I'm getting this error: 2012-02-06 20:25:26.472938: X6500 board AH00WOWD: No backend available 2012-02-06 20:25:26.475037: X6500 board AH00WI18: dlsym(RTLD_DEFAULT, usb_find_busses): symbol not found
you can just unpack the "usb" directory from that zip file ... Thanks, TheSeven. I bet you underestimated the level of hand-holding some users need! Now getting: 2012-02-07 08:34:53.468000: Caught exception: No backend available Not getting quite as far as coblee, as no board serial detected? Sounds like you don't have libusb installed or a weird version of it. Well, I put the serial in the config.py myself: # Single X6500 worker { \ # Worker module "type": worker.fpgamining.x6500.X6500Worker, \ # Worker module parameters, in this case board serial number (default: take first available) "deviceid": "AH00WOWD", \ }, \
# Single X6500 worker { \ # Worker module "type": worker.fpgamining.x6500.X6500Worker, \ # Worker module parameters, in this case board serial number (default: take first available) "deviceid": "AH00WI18", \ }, \
If that works, autodetecting should have worked as well.
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
TheSeven (OP)
|
|
February 07, 2012, 12:25:01 PM |
|
Fixed
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
TheSeven (OP)
|
|
February 07, 2012, 12:41:33 PM |
|
I'm using windows xp & getting 2012-02-06 20:23:21.406000: Traceback (most recent call last): [...] 2012-02-06 20:23:21.406000: excessmhashes = p.mhashes - ((now - p.starttime).total_seconds() + queuedelay) * p.hashrate 2012-02-06 20:23:21.406000: AttributeError: 'datetime.timedelta' object has no attribute 'total_seconds' in the log. MPBM should now be compatible with Python 2.6 as well. Thanks to LazarusLong for providing the patch
|
My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
|
|
|
thirdlight
|
|
February 07, 2012, 04:58:53 PM |
|
I've had mpbm working using "useftd2xx":"true" and python 2.6.7.
It saw all the boards, but couldn't "open" all of them.
Seemed to be getting shares, pool reported widely varying hashrate. The terminal window has a message about "window too small" so no stats to relay.
Froze around an hour later, no reason in the log.
I like that it manages (or tries to) all the boards at once - much neater than multiple windows. I will persevere.
|
|
|
|
|