Author

Topic: Armory - Discussion Thread - page 126. (Read 521761 times)

legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 23, 2013, 02:38:39 PM
I've been trying to test the cold wallet functionality with a small 0.01 btc transfer, but it keeps not allowing me to send btc to the cold wallet without a fee. I thought if I waited a few days it would work since then there'd be over 120 confirmations on my recently transferred BTC, but it still isn't working. I tried up to 0.06 btc, but it's still not allowing without the transaction fee. The regular bitcoin client allowed me to send both 0.01 btc and 0.05 btc to my armory wallet without any fees. Not sure what the issue is?

It's not the output amount that is the problem (unless it is less than 0.01), it's the age of the coin(s) being spent.  It is an unfortuante that this is so inconsistent and confusing.  But it's not a problem with Armory, it's just the way the network works, and you don't necessarily have control over when you have to pay a fee.  Luckily, the fee only 0.0005 which is about $0.07.

I don't have any recommendation for you, other than you might just have to pay the fee Sad
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 22, 2013, 09:19:40 PM
I can't seem to get the new version of Armory to work.  I just downloaded .88-1 and it sits at Synchronizing with Network 99% 0 blocks forever.  Occasionally bitcoind will crash.

Armory was working fine prior to upgrading. 

Log file?
legendary
Activity: 1260
Merit: 1000
April 22, 2013, 09:18:17 PM
I can't seem to get the new version of Armory to work.  I just downloaded .88-1 and it sits at Synchronizing with Network 99% 0 blocks forever.  Occasionally bitcoind will crash.

Armory was working fine prior to upgrading. 
full member
Activity: 200
Merit: 100
|Quantum|World's First Cloud Management Platform
April 22, 2013, 08:32:01 PM
I've been trying to test the cold wallet functionality with a small 0.01 btc transfer, but it keeps not allowing me to send btc to the cold wallet without a fee. I thought if I waited a few days it would work since then there'd be over 120 confirmations on my recently transferred BTC, but it still isn't working. I tried up to 0.06 btc, but it's still not allowing without the transaction fee. The regular bitcoin client allowed me to send both 0.01 btc and 0.05 btc to my armory wallet without any fees. Not sure what the issue is?
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 22, 2013, 02:33:52 PM
Ack, that's quite a long compile time!  I didn't realize that it couldn't be compiled in the available RPi RAM.  You have A or B pi?   I guess I'll download the Raspbian image and take a shot at it... in a little bit.  At the moment, I gotta focus on some other development activities.

I would highly recommend following the guide here to get a cross-compiler set up for the Pi. Compiling on the Pi itself seems like a form of masochism.

Oh yeah, I actually started doing that in a VM a month ago and totally forgot.  I probably don't even have it anymore.  I'll take another shot at it...  That would certainly make the release process easier, to not have to outsource the compiling to a separate physical device.
hero member
Activity: 496
Merit: 500
April 22, 2013, 02:31:35 PM
Ack, that's quite a long compile time!  I didn't realize that it couldn't be compiled in the available RPi RAM.  You have A or B pi?   I guess I'll download the Raspbian image and take a shot at it... in a little bit.  At the moment, I gotta focus on some other development activities.

I would highly recommend following the guide here to get a cross-compiler set up for the Pi. Compiling on the Pi itself seems like a form of masochism.
legendary
Activity: 980
Merit: 1008
April 22, 2013, 12:51:55 PM
Ack, that's quite a long compile time!  I didn't realize that it couldn't be compiled in the available RPi RAM.  You have A or B pi?   I guess I'll download the Raspbian image and take a shot at it... in a little bit.  At the moment, I gotta focus on some other development activities.
This was on rev A, so 256 MB RAM. I'm not sure if the rev B with 512 MB can do it without a swap file, that 2.3 MB CppBlockUtils_wrap.cxx isn't exactly light weight Smiley. cryptopp's dll.o also took quite a long time to build, compared to the previous files, so I suspect it started swapping there already. I'm sure if the Pi had 1 GB of RAM that compilation wouldn't take more than 10-ish times as long as on an x86 system.

Quote
For the unlocking, there's not much you can do about it.  Armory does a bunch of verification checks when unlocking to make sure there's no corruption.  Although it takes a while, it's saved my bacon in a couple instances (and for other users) when it did actually find something was corrupted.  This will prevent you from using a corrupted wallet and potentially using addresses that were based on a faulty chain calculation. The downside is that there's a lot of EC-multiply operations being performed when you unlock, which does take a while, especially on slower HW.

I suppose you could run with a much smaller keypool on the offline computer, since it doesn't need any lookahead  (because it's not looking anywhere for transactions).  That would speed up unlocking in the short-term.
It's not really a problem per se, since I can see that CPU usage is high (it's shown in the bottom right corner on the panel), so I know it's working. But it can become a usability problem if someone isn't aware that this is what is happening.

You could just show the dialog immediately, without any content, and that "loading" animation showing, and do the calculations in the background, but yeah, I understand if that's not your highest priority right now.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 22, 2013, 12:15:13 PM
Honestly, I was hoping to just eventually release an offline bundle for the RPi.  But I'm not sure if I can support that at this time.  I finally have an RPi, but I haven't really had time to set it up.  Maybe someone could help me figure out what is needed for the offline bundle...?  (and a good way to set it up, like what image to install, etc)
Let me know if you want an image of my setup. It's just Raspbian (the official Raspberry Pi distro) with Armory installed. Nothing else. That way you can just dd the image to an SD card and pop it in to test it.

It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!

How is the speed? Acceptable I hope?
It's acceptable. Although there are some very long delays with 100% CPU usage. Especially when opening the "Print Paper Wallet" dialog. It takes like 15 seconds with 100% CPU usage. Anything related to viewing the root private key and chain code takes a long time (with 100% CPU usage).

Building Armory itself took at least three hours. But this was mainly caused by having to use a swap file, because it ran out of memory.

Ack, that's quite a long compile time!  I didn't realize that it couldn't be compiled in the available RPi RAM.  You have A or B pi?   I guess I'll download the Raspbian image and take a shot at it... in a little bit.  At the moment, I gotta focus on some other development activities. 

For the unlocking, there's not much you can do about it.  Armory does a bunch of verification checks when unlocking to make sure there's no corruption.  Although it takes a while, it's saved my bacon in a couple instances (and for other users) when it did actually find something was corrupted.  This will prevent you from using a corrupted wallet and potentially using addresses that were based on a faulty chain calculation. The downside is that there's a lot of EC-multiply operations being performed when you unlock, which does take a while, especially on slower HW.

I suppose you could run with a much smaller keypool on the offline computer, since it doesn't need any lookahead  (because it's not looking anywhere for transactions).  That would speed up unlocking in the short-term.
legendary
Activity: 980
Merit: 1008
April 22, 2013, 11:12:14 AM
Honestly, I was hoping to just eventually release an offline bundle for the RPi.  But I'm not sure if I can support that at this time.  I finally have an RPi, but I haven't really had time to set it up.  Maybe someone could help me figure out what is needed for the offline bundle...?  (and a good way to set it up, like what image to install, etc)
Let me know if you want an image of my setup. It's just Raspbian (the official Raspberry Pi distro) with Armory installed. Nothing else. That way you can just dd the image to an SD card and pop it in to test it.

It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!

How is the speed? Acceptable I hope?
It's acceptable. Although there are some very long delays with 100% CPU usage. Especially when opening the "Print Paper Wallet" dialog. It takes like 15 seconds with 100% CPU usage. Anything related to viewing the root private key and chain code takes a long time (with 100% CPU usage).

Building Armory itself took at least three hours. But this was mainly caused by having to use a swap file, because it ran out of memory.
legendary
Activity: 1274
Merit: 1000
Personal text my ass....
April 22, 2013, 09:53:09 AM
My Armory just stopped working. It crashes when trying to sync up. Before I start messing around with things, I would like which direction to go in? I do have bitcoin in my wallet. Please advise.



Faulting application name: Armory.exe, version: 0.0.0.0, time stamp: 0x49180193
Faulting module name: MSVCR90.dll, version: 9.0.30729.6871, time stamp: 0x4fee6073
Exception code: 0x40000015
Fault offset: 0x0005beae
Faulting process id: 0x1f84
Faulting application start time: 0x01ce3cad710e53a1
Faulting application path: C:\Program Files (x86)\Armory\Armory Bitcoin Client\Armory.exe
Faulting module path: C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6871_none_50944e7cbcb706e5\MSVCR90.dll
Report Id: 0edbb14d-a8a1-11e2-be93-180373e36d96
Faulting package full name:
Faulting package-relative application ID:

Did you uninstall the previous version before installing the new one?  At least, you can rerun the installer and choose "Repair Installation".

Ok, my problem has been resolved per your instructions. I had to perform an uninstall first and not just a reinstall.  I also like the way it loads the bitcoind daemon for me now. I don't have to run a separate program. Thanks.
hero member
Activity: 784
Merit: 1000
April 22, 2013, 02:47:19 AM
It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!

How is the speed? Acceptable I hope?
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 21, 2013, 09:12:40 PM
I see what's going on.  It fails to set the CpuStr variable because platform.processor() is empty.  I forgot to set a default value.
The reason it fails is because none of the lines in /proc/cpuinfo start with 'model name'. In GetSystemDetails() you look for lines that start with that string to determine the CPU model name. But this is the output of the Pi's cpuinfo:

Code:
pi@raspberrypi ~ $ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)

Quote
I guess that will be fixed in the next release.
Will you consider using cryptopp 5.6.2 at some point too? This release supports GCC 4.7, while 5.6.1 supports only gcc 3.3 - 4.5. And it also fixes the compile issue on the Pi (as mentioned before) where the compiler is detected incorrectly. That would make it easier for people with Raspberry Pis to use Armory as an offline wallet.

Good to know about the CPU "model name".  Oh well.  I really don't need it, I just need to add a default value for that completely informational-not-functional piece of code...

I didn't realize there was a new release of Crypto++ recently.  I will look into it.  There was a bug in the old version that I had to manually fix, but it was so long ago, I don't remember what it was.  I may have to do some git-blaming to figure it out.

Honestly, I was hoping to just eventually release an offline bundle for the RPi.  But I'm not sure if I can support that at this time.  I finally have an RPi, but I haven't really had time to set it up.  Maybe someone could help me figure out what is needed for the offline bundle...?  (and a good way to set it up, like what image to install, etc)
legendary
Activity: 980
Merit: 1008
April 21, 2013, 07:33:40 PM
It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!

I see what's going on.  It fails to set the CpuStr variable because platform.processor() is empty.  I forgot to set a default value.
The reason it fails is because none of the lines in /proc/cpuinfo start with 'model name'. In GetSystemDetails() you look for lines that start with that string to determine the CPU model name. But this is the output of the Pi's cpuinfo:

Code:
pi@raspberrypi ~ $ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 464.48
Features : swp half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7

Hardware : BCM2708
Revision : 0002
Serial : 000000005691db1b

Quote
I guess that will be fixed in the next release.
Will you consider using cryptopp 5.6.2 at some point too? This release supports GCC 4.7, while 5.6.1 supports only gcc 3.3 - 4.5. And it also fixes the compile issue on the Pi (as mentioned before) where the compiler is detected incorrectly. That would make it easier for people with Raspberry Pis to use Armory as an offline wallet.
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 21, 2013, 07:22:36 PM
It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!

I see what's going on.  It fails to set the CpuStr variable because platform.processor() is empty.  I forgot to set a default value.  I guess that will be fixed in the next release. 
legendary
Activity: 1274
Merit: 1000
Personal text my ass....
April 21, 2013, 07:12:21 PM
So my Armory install is broke? I was the OP of the error that was coming up. I'm not really sure what I'm suppose to do. I didn't do any upgrades or make any changes. And I still have bitcoin in my Armory wallet. I don't know what you mean when you say run it with this argument or whatever. Can you be a bit more detailed?

Just uninstall your current Armory and install the new version, 0.88.1.  That error you originally reported has been fixed.

https://bitcoinarmory.com/get-armory/

Then what happens with my wallet?

The installation directory is completely separate from your home directory.  All your wallets and settings will be untouched through a software upgrade.  It's like that by design. The two never mix.

Armory gets installed to:   C:\Program Files (x86)\Armory
Armory home directory:    C:\Users\\AppData\Roaming\Armory


Ok, understood. I'll give it a try.

legendary
Activity: 980
Merit: 1008
April 21, 2013, 07:12:15 PM
It seems to return the correct value for platform.system() at least.

Code:
pi@raspberrypi ~/BitcoinArmory $ python -i
Python 2.7.3 (default, Jan 13 2013, 11:20:46)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print platform.system()
Linux
>>> platform.processor()
''

And putting in the "raise" as you say makes Armory start properly. Yay!
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 21, 2013, 07:10:12 PM
So my Armory install is broke? I was the OP of the error that was coming up. I'm not really sure what I'm suppose to do. I didn't do any upgrades or make any changes. And I still have bitcoin in my Armory wallet. I don't know what you mean when you say run it with this argument or whatever. Can you be a bit more detailed?

Just uninstall your current Armory and install the new version, 0.88.1.  That error you originally reported has been fixed.

https://bitcoinarmory.com/get-armory/

Then what happens with my wallet?

The installation directory is completely separate from your home directory.  All your wallets and settings will be untouched through a software upgrade.  It's like that by design. The two never mix.

Armory gets installed to:   C:\Program Files (x86)\Armory
Armory home directory:    C:\Users\\AppData\Roaming\Armory
legendary
Activity: 1274
Merit: 1000
Personal text my ass....
April 21, 2013, 07:08:01 PM
So my Armory install is broke? I was the OP of the error that was coming up. I'm not really sure what I'm suppose to do. I didn't do any upgrades or make any changes. And I still have bitcoin in my Armory wallet. I don't know what you mean when you say run it with this argument or whatever. Can you be a bit more detailed?

Just uninstall your current Armory and install the new version, 0.88.1.  That error you originally reported has been fixed.

https://bitcoinarmory.com/get-armory/

Then what happens with my wallet?
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
April 21, 2013, 06:45:01 PM
On the RPi, when you run python, what is the return value of "import platform; print platform.system(), platform.processor()" ?

It looks like a completely unnecessary piece of code is causing the problem, though it looks to me that it should work if ".system()" returns "Linux" as I expect.  Either way, that problem can be solved by finding the line:

Code:
SystemSpecs = GetSystemDetails()

Just add a single line before it, saying "raise".  That will cause it to error out and set default/unknown for all those member variables.   If the RPi registers as a different OS than the ones I look for already, that would be good to know!

legendary
Activity: 980
Merit: 1008
April 21, 2013, 06:36:58 PM
I finally was able to build Armory on my Raspberry Pi.

First I was met with the error described in this thread.

Code:
make[2]: Entering directory `/home/pi/Desktop/Armory/BitcoinArmory/cppForSwig/cryptopp'
g++ -DNDEBUG -O -g0 -native -template=no%extdef  -c 3way.cpp
g++: error: unrecognized option ‘-native’
g++: error: unrecognized option ‘-template=no%extdef’
make[2]: *** [3way.o] Error 1
make[2]: Leaving directory `/home/pi/Desktop/Armory/BitcoinArmory/cppForSwig/cryptopp'
mv: cannot stat `libcryptopp.a': No such file or directory
make[1]: *** [libcryptopp.a] Error 1
make[1]: Leaving directory `/home/pi/Desktop/Armory/BitcoinArmory/cppForSwig'
make: *** [all] Error 2

Turns out that cryptopp 5.6.1 (which is included with Armory) has a bug in its Makefile that makes it detect the compiler on a Raspberry Pi as a CC Sun C++ compiler (I have no idea why that happens, but that's what seems to happen). Replacing the Makefile in cppForSwig/cryptopp with the GNUmakefile from cryptopp 5.6.2 fixes this issue.

Next I was getting strange assembler errors from g++ like:

Code:
{standard input}: Assembler messages:
{standard input}:30102: Error: undefined local label `.L4803'
{standard input}:30134: Error: undefined local label `.L4803'
{standard input}:30159: Error: undefined local label `.L4803'
{standard input}:30218: Error: undefined local label `.L4803'
{standard input}:30219: Error: undefined local label `.L4803'
{standard input}:30230: Error: undefined local label `.L4803'
{standard input}:30249: Error: undefined local label `.L4803'
g++: internal compiler error: Killed (program cc1plus)

and

Code:
{standard input}: Assembler messages:
{standard input}:125264: Warning: end of file not at end of a line; newline inserted
{standard input}:125645: Error: unknown pseudo-op: `.lpic43'

and it turns out this was caused by the Pi running out of memory. Creating a 500 MB file in my home dir and mounting it as swap fixed that issue, as described here: http://www.roberteklund.org/projects/raspberry-pi#TOC-Installation1

But now that I try to run Armory, I get the following error. Not sure how to deal with that.

Code:
(ERROR) Traceback (most recent call last):
  File "BitcoinArmory/ArmoryQt.py", line 37, in
    from armoryengine import *
  File "/home/pi/BitcoinArmory/armoryengine.py", line 825, in
    LOGINFO('   CPU ID string         : ' + SystemSpecs.CpuStr)
AttributeError: 'DumbStruct' object has no attribute 'CpuStr'

Error in sys.excepthook:
Traceback (most recent call last):
  File "/home/pi/BitcoinArmory/armoryengine.py", line 639, in logexcept_override
    sys.__excepthook__(type, value, tback)
AttributeError: 'NoneType' object has no attribute '__excepthook__'

Original exception was:
Traceback (most recent call last):
  File "BitcoinArmory/ArmoryQt.py", line 37, in
    from armoryengine import *
  File "/home/pi/BitcoinArmory/armoryengine.py", line 825, in
    LOGINFO('   CPU ID string         : ' + SystemSpecs.CpuStr)
AttributeError: 'DumbStruct' object has no attribute 'CpuStr'
Jump to: