Bitcoin Forum
April 19, 2024, 12:59:54 PM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 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 »
  Print  
Author Topic: FPGA development board "Icarus" - DisContinued/ important announcement  (Read 207221 times)
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 08, 2012, 07:23:56 AM
 #401

If you change the serial protocol a bit, it might work with the SimpleRS232 interface that MPBM provides. This would also fix some other flaws that I've spotted in the interface you're currently using.
Alternatively the SimpleRS232 interface module could be adapted to fit the current bitstream, but I'd really go for the other way round.
Changing the FPGA firmware is much mode difficult and time-consuming than just modifying the mining software.
Sure, doing it from the software side is certainly easier, but fixing it on the FPGA side would also fix some other issues at the same time and allow for a generic interface:
  • Possible desyncs if a byte gets lost on RS232
  • Not knowing which work a nonce belongs to that's sent shortly after (or during) work upload
  • Wasting mining time by needing a new job after finding a nonce for no good reason? (at least if I understood the protocol specification right)
  • No generic way of figuring out the actual hash rate (why don't you split the work into even and odd nonces instead of low and high half?)

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
1713531594
Hero Member
*
Offline Offline

Posts: 1713531594

View Profile Personal Message (Offline)

Ignore
1713531594
Reply with quote  #2

1713531594
Report to moderator
Make sure you back up your wallet regularly! Unlike a bank account, nobody can help you if you lose access to your BTC.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713531594
Hero Member
*
Offline Offline

Posts: 1713531594

View Profile Personal Message (Offline)

Ignore
1713531594
Reply with quote  #2

1713531594
Report to moderator
1713531594
Hero Member
*
Offline Offline

Posts: 1713531594

View Profile Personal Message (Offline)

Ignore
1713531594
Reply with quote  #2

1713531594
Report to moderator
1713531594
Hero Member
*
Offline Offline

Posts: 1713531594

View Profile Personal Message (Offline)

Ignore
1713531594
Reply with quote  #2

1713531594
Report to moderator
xiangfu
Full Member
***
Offline Offline

Activity: 120
Merit: 100


View Profile
February 08, 2012, 09:51:22 AM
 #402

Hi all

I setup the miner.py under TP-Link wr1043nd home router. there is the steps:
  http://en.qi-hardware.com/wiki/Icarus#Using_TP-link.2Ftl-wr1043nd_as_host

it is using Openwrt. since the python package is too big for the flash. so I cut down a lot of the python stuff. only works fine with miner.py.
and for now it only support monitor only one worker.

if you also want try. please let me know if it doesn't work.

thanks
xiangfu
ngzhang (OP)
Hero Member
*****
Offline Offline

Activity: 592
Merit: 501


We will stand and fight.


View Profile
February 08, 2012, 10:04:19 AM
Last edit: February 08, 2012, 10:22:43 AM by ngzhang
 #403

If you change the serial protocol a bit, it might work with the SimpleRS232 interface that MPBM provides. This would also fix some other flaws that I've spotted in the interface you're currently using.
Alternatively the SimpleRS232 interface module could be adapted to fit the current bitstream, but I'd really go for the other way round.
Changing the FPGA firmware is much mode difficult and time-consuming than just modifying the mining software.
Sure, doing it from the software side is certainly easier, but fixing it on the FPGA side would also fix some other issues at the same time and allow for a generic interface:
  • Possible desyncs if a byte gets lost on RS232
  • Not knowing which work a nonce belongs to that's sent shortly after (or during) work upload
  • Wasting mining time by needing a new job after finding a nonce for no good reason? (at least if I understood the protocol specification right)
  • No generic way of figuring out the actual hash rate (why don't you split the work into even and odd nonces instead of low and high half?)

hi. i review these issue, and :
1, if a byte lost during the communication, it will generate some wrong data, but at the next work push, it will return to normal. it uses only a simple 512bits shift register to receive work.  Grin
2, it's a problem.  but not a frequent occurrences. it can be fix by a workID model, as the V1 firmware, but this function generates lots of BUGs... so i return to a simple protocol.  Embarrassed
3, this "behavior" is changed in a under-test firmware. the FPGA will continue working until nonce_to.  Grin

check it here: https://github.com/ngzhang/Icarus/tree/master/Downloads/bitsteam/V4

4, at first, i set the time-out manually, so i just used this work split method, i think it's easier.  Embarrassed

regards.

BTW:

and a script with watch dog timer is pushed to github, check it here:
https://github.com/ngzhang/Icarus/tree/master/miner_software/queue_ver_with_auto_restart

TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 08, 2012, 01:58:09 PM
 #404

hi. i review these issue, and :
1, if a byte lost during the communication, it will generate some wrong data, but at the next work push, it will return to normal. it uses only a simple 512bits shift register to receive work.  Grin
How does it know when the next 512bit packet will start? By means of a timeout? I see no other way to determine packet boundaries once a desync has happened with the current protocol. It would wait for the missing byte, and then steal the first byte of the next packet, and so on.

2, it's a problem.  but not a frequent occurrences. it can be fix by a workID model, as the V1 firmware, but this function generates lots of BUGs... so i return to a simple protocol.  Embarrassed
No need for identifying work, the only thing you need is some feedback on when exactly work was accepted. You could for example add a leading byte to the nonce response that identifies the packet type (nonce found or work accepted, possibly some more in the future). Every nonce sent before the work accepted packet would belong to the old work, every nonce sent after that would belong to the new work.

3, this "behavior" is changed in a under-test firmware. the FPGA will continue working until nonce_to.  Grin
Sounds good. Would be perfect if you also made sure that nonces won't get lost because of that by having a small nonce queue.
Having a work queue would also help in using the full keyspace (and thus reducing pool load), but that's not quite as important.

4, at first, i set the time-out manually, so i just used this work split method, i think it's easier.  Embarrassed
Well, it doesn't really matter if the fixed bit (per FPGA) is the first or last one right? Tying the LSB value to the FPGA ID is much better from a software point of view (it just behaves like one faster FPGA).

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
pieppiep
Hero Member
*****
Offline Offline

Activity: 1596
Merit: 502


View Profile
February 08, 2012, 02:19:40 PM
 #405

How does it know when the next 512bit packet will start? By means of a timeout? I see no other way to determine packet boundaries once a desync has happened with the current protocol. It would wait for the missing byte, and then steal the first byte of the next packet, and so on.
For easier example I change 512bit to 32bit Smiley

FPGA buffer starts at some value 0x?HuhHuh?

New value is 0x12345678

Computer sends a byte 0x12
FPGA buffer is now 0x?Huh??12
Computer sends a byte 0x34
FPGA buffer is now 0x????1234
Computer sends a byte 0x56
FPGA buffer is now 0x??123456
Computer sends a byte 0x78
FPGA buffer is now 0x12345678

New value is 0x87654321

Computer sends a byte 0x87
FPGA buffer is now 0x34567887
Computer sends a byte 0x65 but FPGA doesn't receive
FPGA buffer is still 0x34567887
Computer sends a byte 0x43
FPGA buffer is now 0x56788743
Computer sends a byte 0x21
FPGA buffer is now 0x78874321

FPGA calculates with wrong value

New value is 0xCAFEBABE

Computer sends a byte 0xCA
FPGA buffer is now 0x874321CA
Computer sends a byte 0xFE but FPGA doesn't receive
FPGA buffer is still 0x4321CAFE
Computer sends a byte 0xBA
FPGA buffer is now 0x21CAFEBA
Computer sends a byte 0xBE
FPGA buffer is now 0xCAFEBABE

FPGA calculates with correct value
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 08, 2012, 02:47:03 PM
 #406

Ah so this is just a shift register without latches? So the FPGA works on corrupt data (instead of the old work) while work is being uploaded?
Is the nonce counter being reset whenever a byte is received, or how is that handled?

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
pieppiep
Hero Member
*****
Offline Offline

Activity: 1596
Merit: 502


View Profile
February 08, 2012, 03:02:14 PM
 #407

I do think so.
This is what I base my answer on,
1, if a byte lost during the communication, it will generate some wrong data, but at the next work push, it will return to normal. it uses only a simple 512bits shift register to receive work.  Grin
So if the rs232 is at 115k2 you waste 512 / 115200 of a second, 4.444444ms which is at 200MH/s a total of 888,889 hashes each time you send new work.
ngzhang (OP)
Hero Member
*****
Offline Offline

Activity: 592
Merit: 501


We will stand and fight.


View Profile
February 08, 2012, 03:05:29 PM
 #408

Ah so this is just a shift register without latches? So the FPGA works on corrupt data (instead of the old work) while work is being uploaded?
Is the nonce counter being reset whenever a byte is received, or how is that handled?

haha, yes, i use the simplest way as described above. there are no byte counter or some other useless stuff. just a 64 bytes wide shift register.
and the nonce counter will reset when a byte is received, as a very barbarous way.  Grin
it's really doesn't matter if the FPGA generates some wrong data, or not calculate all nonce range. the work push need only 5.6ms for 512bit data transform, so i think the loss is acceptable.


I do think so.
This is what I base my answer on,
1, if a byte lost during the communication, it will generate some wrong data, but at the next work push, it will return to normal. it uses only a simple 512bits shift register to receive work.  Grin
So if the rs232 is at 115k2 you waste 512 / 115200 of a second, 4.444444ms which is at 200MH/s a total of 888,889 hashes each time you send new work.

cause a 1/2000 speed loss. Embarrassed
andrehorta
Legendary
*
Offline Offline

Activity: 1261
Merit: 1000


View Profile WWW
February 08, 2012, 11:43:11 PM
 #409

Can you post a video?

It´s necessary to connect the boards (Icarus) on PC? To connect to the internet? Or Icarus has connection to internet?
TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 09, 2012, 12:16:39 AM
Last edit: February 09, 2012, 12:59:46 AM by TheSeven
 #410

Can you post a video?

It´s necessary to connect the boards (Icarus) on PC? To connect to the internet? Or Icarus has connection to internet?

Yes, you do need to connect these boards to a PC which runs the mining software. The board play's the graphics card's role in mining.


BTW, I'm happy to announce that (experimental) Icarus board support was added to the Modular Python Bitcoin Miner some minutes ago Grin

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
hardpick
Sr. Member
****
Offline Offline

Activity: 265
Merit: 250


Football President


View Profile WWW
February 09, 2012, 02:26:40 AM
 #411

i am lost to what software i should be now using
for more reliable mining under windows 7

bitsteam  v4 and queue_ver_with_auto_restart
is this correct?
ngzhang (OP)
Hero Member
*****
Offline Offline

Activity: 592
Merit: 501


We will stand and fight.


View Profile
February 09, 2012, 03:25:16 AM
 #412

it's ok
xiangfu
Full Member
***
Offline Offline

Activity: 120
Merit: 100


View Profile
February 09, 2012, 03:45:50 AM
 #413

things get eaiser, I create a openwrt package for the router:
  http://downloads.qi-hardware.com/people/xiangfu/icarus/icarus-miner_20120209_all.ipk

wiki page have updated:
  http://en.qi-hardware.com/wiki/Icarus#Using_TP-link.2Ftl-wr1043nd_as_host

xiangfu

I setup the miner.py under TP-Link wr1043nd home router. there is the steps:
  http://en.qi-hardware.com/wiki/Icarus#Using_TP-link.2Ftl-wr1043nd_as_host

it is using Openwrt. since the python package is too big for the flash. so I cut down a lot of the python stuff. only works fine with miner.py.
and for now it only support monitor only one worker.

if you also want try. please let me know if it doesn't work.
ngzhang (OP)
Hero Member
*****
Offline Offline

Activity: 592
Merit: 501


We will stand and fight.


View Profile
February 09, 2012, 05:14:56 PM
 #414

i suggest every one switch to Modular Python Bitcoin Miner
https://bitcointalk.org/index.php?topic=62823.0
coblee
Donator
Legendary
*
Offline Offline

Activity: 1653
Merit: 1286


Creator of Litecoin. Cryptocurrency enthusiast.


View Profile
February 09, 2012, 05:58:07 PM
 #415

i suggest every one switch to Modular Python Bitcoin Miner
https://bitcointalk.org/index.php?topic=62823.0

Yes, it's really good.

server
Legendary
*
Offline Offline

Activity: 892
Merit: 1002


1 BTC =1 BTC


View Profile
February 09, 2012, 06:58:28 PM
 #416

i suggest every one switch to Modular Python Bitcoin Miner
https://bitcointalk.org/index.php?topic=62823.0

Ok, but... I get this with curses installed...

Quote
C:\TheSeven>miner.py
Traceback (most recent call last):
  File "C:\TheSeven\miner.py", line 331, in <module>
    exec("import " + configfile + " as config")
  File "<string>", line 1, in <module>
  File "C:\TheSeven\default_config.py", line 9, in <module>
    import frontend.theseven.cursesui
  File "C:\TheSeven\frontend\theseven\cursesui.py", line 32, in <module>
    import curses
  File "C:\Python27\lib\curses\__init__.py", line 15, in <module>
    from _curses import *
ImportError: No module named _curses

TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 09, 2012, 09:12:37 PM
 #417

Quote
C:\TheSeven>miner.py
Traceback (most recent call last):
  File "C:\TheSeven\miner.py", line 331, in <module>
    exec("import " + configfile + " as config")
  File "<string>", line 1, in <module>
  File "C:\TheSeven\default_config.py", line 9, in <module>
    import frontend.theseven.cursesui
  File "C:\TheSeven\frontend\theseven\cursesui.py", line 32, in <module>
    import curses
  File "C:\Python27\lib\curses\__init__.py", line 15, in <module>
    from _curses import *
ImportError: No module named _curses
Which one of the curses for windows modules are you using?
It has been reported that the second one listed in README.txt works fine, not sure about the other one. If it doesn't, I'll probably remove it.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
server
Legendary
*
Offline Offline

Activity: 892
Merit: 1002


1 BTC =1 BTC


View Profile
February 09, 2012, 11:39:52 PM
 #418

Which one of the curses for windows modules are you using?
It has been reported that the second one listed in README.txt works fine, not sure about the other one. If it doesn't, I'll probably remove it.

I tried both.
I'm using w server 2008 x64 and python 2.7. but nevermind... I will try something else

Code:
C:\TheSeven>miner.py
Traceback (most recent call last):
  File "C:\TheSeven\miner.py", line 331, in <module>
    exec("import " + configfile + " as config")
  File "<string>", line 1, in <module>
  File "C:\TheSeven\default_config.py", line 9, in <module>
    import frontend.theseven.cursesui
  File "C:\TheSeven\frontend\theseven\cursesui.py", line 32, in <module>
    import curses
ImportError: No module named curses

C:\TheSeven>miner.py
Traceback (most recent call last):
  File "C:\TheSeven\miner.py", line 331, in <module>
    exec("import " + configfile + " as config")
  File "<string>", line 1, in <module>
  File "C:\TheSeven\default_config.py", line 9, in <module>
    import frontend.theseven.cursesui
  File "C:\TheSeven\frontend\theseven\cursesui.py", line 32, in <module>
    import curses
  File "C:\Python27\lib\curses\__init__.py", line 7, in <module>
    from _WCurses import *
ImportError: No module named _WCurses

C:\TheSeven>

TheSeven
Hero Member
*****
Offline Offline

Activity: 504
Merit: 500


FPGA Mining LLC


View Profile WWW
February 10, 2012, 12:14:49 AM
 #419

Did you install the curses module for the correct python installation? There are separate packages for each combination of python version and architecture (32/64bit), and this needs to match with the python version you're running the miner on.

My tip jar: 13kwqR7B4WcSAJCYJH1eXQcxG5vVUwKAqY
Defkin
Member
**
Offline Offline

Activity: 80
Merit: 10


View Profile
February 10, 2012, 07:18:33 AM
 #420



Very nice.....thank you TheSeven Smiley

Just need to change the blue font so i can read it, something to do over the weekend, lol

Pages: « 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 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!