Author

Topic: Bitcoin generation on ARM hardware (Read 3464 times)

full member
Activity: 263
Merit: 100
YGOLD is a Defi platform
March 01, 2011, 10:29:17 PM
#12
My intent is more academic than practical. and the "look what I can do" factor. haha.

I am using the default sheevaplug distro of ubuntu.

What exactly is a pool? Is it just multiple machines mining for the same owners address?
Yes, and when a machine finds a block the 50BTC is distributed among the machines that submitted work. Overall the payout's the same, but in a pool you get payment over time instead of the 50BTC you'd get every time you find a block.
newbie
Activity: 9
Merit: 0
February 28, 2011, 09:34:53 PM
#11
My intent is more academic than practical. and the "look what I can do" factor. haha.

I am using the default sheevaplug distro of ubuntu.

What exactly is a pool? Is it just multiple machines mining for the same owners address?
newbie
Activity: 40
Merit: 0
February 28, 2011, 07:53:44 AM
#10
I haven't tried with the bitcoin client on my BB-xM, but it should work there in headless mode. Are you using the SheevaPlug distribution, since I haven't messed with that much at all.

As for performance, my OMAP3 Cortex-A8 is getting about 270khash/sec unoptimized underclocked @ 800MHz, and looking at fixing the NEON code I have in my fork of jgarzik's miner at some point which should make things better.

However, the SheevaPlug is a Kirkwood (arm5te), and my Pogoplug is pushing 200kbit/sec. Not fast, nor is there any NEON to try SIMD tricks with...but the power usage for such light miners will allow for a trickle if you're in a pool.
newbie
Activity: 25
Merit: 0
February 28, 2011, 07:18:46 AM
#9
Can I give you a harsh response?
An arm for mining? You know you are not getting any single penny out of it, don't you? Even with pooled mining...
newbie
Activity: 9
Merit: 0
February 27, 2011, 11:43:04 PM
#8
Well, I've managed to compile the needed boost libs and get bitcoind compiled as well, however it is throwing an exception:
Quote
bitcoin server starting


************************
EXCEPTION: 11DbException
DbEnv::open: Invalid argument
bitcoin in AppInit()

terminate called after throwing an instance of 'DbException'
  what():  DbEnv::open: Invalid argument
Any thoughts on this one? I think im using version 4.7 of the db lib if i remember correctly, maybe its a version difference issue? unless im just starting it wrong without the right arguments or something.
legendary
Activity: 1078
Merit: 1005
February 27, 2011, 05:19:57 PM
#7
This is the makefile I used to build on the N900:

Code:
INCLUDEPATHS= \
 -I"/usr/local/include/wx-2.9" \
 -I"/home/user/src/db-4.8.30/build_unix" \
 -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9"

# for wxWidgets 2.9.1, add -l Xxf86vm
WXLIBS= \
 -Wl,-Bstatic \
   -l wx_gtk2ud-2.9 \
 -Wl,-Bdynamic \
   -l gtk-x11-2.0 \
   -l SM

# for boost 1.37, add -mt to the boost libraries
LIBS= \
 -Wl,-Bstatic \
   -l boost_system \
   -l boost_filesystem \
   -l boost_program_options \
   -l boost_thread \
   -L /home/user/src/db-4.8.30/build_unix \
   -l db_cxx \
   -l ssl \
   -l crypto \
 -Wl,-Bdynamic \
   -l gthread-2.0 \
   -l z \
   -l dl

DEFS=-D__WXGTK__ -DNOPCH
DEBUGFLAGS=-g -D__WXDEBUG__
CFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h \
    script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h

OBJS= \
    obj/util.o \
    obj/script.o \
    obj/db.o \
    obj/net.o \
    obj/irc.o \
    obj/main.o \
    obj/rpc.o \
    obj/init.o \
    cryptopp/obj/sha.o \
    cryptopp/obj/cpu.o


all: bitcoin


obj/%.o: %.cpp $(HEADERS)
        g++ -c $(CFLAGS) -DGUI -o $@ $<

cryptopp/obj/%.o: cryptopp/%.cpp
        g++ -c $(CFLAGS) -O3 -o $@ $<

obj/sha256.o: sha256.cpp
        g++ -c $(CFLAGS) -O3 -o $@ $<

bitcoin: $(OBJS) obj/ui.o obj/uibase.o obj/sha256.o
        g++ $(CFLAGS) -o $@ $^ $(WXLIBS) $(LIBS)


obj/nogui/%.o: %.cpp $(HEADERS)
        g++ -c $(CFLAGS) -o $@ $<

bitcoind: $(OBJS:obj/%=obj/nogui/%) obj/sha256.o
        g++ $(CFLAGS) -o $@ $^ $(LIBS)


clean:
        -rm -f obj/*.o
        -rm -f obj/nogui/*.o
        -rm -f cryptopp/obj/*.o
        -rm -f headers.h.gch

I had to build boost, db-48.30 and libevent from source as they weren't available in the N900 repositories.
newbie
Activity: 9
Merit: 0
February 27, 2011, 04:32:07 PM
#6
well I compile stuff, i just don't have much experience with ARM specifics. What's the thought? take out the intel stuff without replacing it with something arm specific then? Seems easy enough.

I'll look into that ribuck Smiley

**edit**

took out all the amd/intel stuff and replaced it with nothing to see if that will work. seems I need to actually compile some of boost.
Quote
g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -DUSE_SSL -I"/usr/local/include/wx-2.9" -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9" -O3 -o obj/sha256.o sha256.cpp
g++ -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -DUSE_SSL -I"/usr/local/include/wx-2.9" -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9" -o bitcoind obj/nogui/util.o obj/nogui/script.o obj/nogui/db.o obj/nogui/net.o obj/nogui/irc.o obj/nogui/main.o obj/nogui/rpc.o obj/nogui/init.o cryptopp/obj/sha.o cryptopp/obj/cpu.o obj/sha256.o -Wl,-Bstatic -l boost_system-mt -l boost_filesystem-mt -l boost_program_options-mt -l boost_thread-mt -l db_cxx -l ssl -l crypto -Wl,-Bdynamic -l gthread-2.0 -l z -l dl
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
/usr/bin/ld: cryptopp/obj/sha.o: Relocations in generic ELF (EM: 3)
cryptopp/obj/sha.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [bitcoind] Error 1
donator
Activity: 826
Merit: 1060
February 27, 2011, 04:28:48 PM
#5
Any idea on where to look for what to replace them with?

You could maybe ask doublec. He's the only person I know who has compiled bitcoind for an ARM device:
https://bitcointalksearch.org/topic/bitcoind-running-on-the-n900-smartphone-2125
hero member
Activity: 588
Merit: 500
February 27, 2011, 04:22:58 PM
#4
Any idea on where to look for what to replace them with? That's kindof what I was thinking too, but I figured i'd post here so the community was aware of the issue.

I suspect that you don't compile much stuff? This sort of thing would be in the makefile.

Oh, you'll have to take out the -DFOURWAYSSE2 as well, since you can't run that without... SSE2!
newbie
Activity: 9
Merit: 0
February 27, 2011, 04:20:18 PM
#3
Any idea on where to look for what to replace them with? That's kindof what I was thinking too, but I figured i'd post here so the community was aware of the issue.
hero member
Activity: 588
Merit: 500
February 27, 2011, 04:15:36 PM
#2
Um, take out the -msse2 and -mamdfam10 switches and replace them with something more appropriate? You aren't on an Intel chip there Smiley
newbie
Activity: 9
Merit: 0
February 27, 2011, 04:11:50 PM
#1
So I've got a SheevaPlug And I'm wanting to set it up for bitcoin generation. I downloaded the latest sourcecode, installed various dependencies, and i ran "make -f makefile.unix bitcoind" and after it compiled 8 .o files it left me with this error:

Quote
g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -D__WXGTK__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -I"/usr/local/include/wx-2.9" -I"/usr/local/lib/wx/include/gtk2-unicode-debug-static-2.9" -msse2 -O3 -march=amdfam10 -o obj/sha256.o sha256.cpp
cc1plus: error: unrecognized command line option "-msse2"
sha256.cpp:1: error: bad value (amdfam10) for -march= switch
make: *** [obj/sha256.o] Error 1

Anyone know how to fix this one? I'm not real familiar with compiling for ARM yet, though it seems its trying to compile for an AMD compatible processor which the sheevaplug doesn't have.
Jump to: