Walletwasabi: ARM/AARCH64 Compatibility

Created on 28 Aug 2019  路  10Comments  路  Source: zkSNACKs/WalletWasabi

Hi,

Wasabi isn't ARM64 or Aarch64 compatible for the moment. I was wondering what would be needed for this to be a reality? Will a release of .NET Core 3.0.0 and an eventual Wasabi upgrade be sufficient or are there other components which will need upgrades?

Thank you for taking the time to evaluate my issue.

questioresearch

Most helpful comment

I tested this on my Pinebook Pro and i can confirm that it is stable on coinjoin/normal wallet usage. HWI is inoperative. Tor needs to be a daemon/service in the host system.

https://github.com/jmacato/WalletWasabi/tree/arm64-branch

All 10 comments

Let me see, there are probably millions of issues with this, but let me check our dependencies if they work or not.

There are instances of Avalonia & .NET Core working on Raspbian but i'm not privy into the grittier details.

Related Reads :

  1. https://blogs.msdn.microsoft.com/david/2017/07/20/setting_up_raspian_and_dotnet_core_2_0_on_a_raspberry_pi/
  2. https://github.com/AvaloniaUI/Avalonia/wiki/Run-an-Avalonia-application-on-Raspberry-Pi

Only supports ARM32 i guess but someone needs to check that (don't have a Pi atm).

@nopara73

Tor certainly works on Aarch64, I have it running on many rock64s for months. The link you attached is about the Tor browser, so it shouldn't apply to Wasabi but maybe that's the dependency and I'm mistaken

  • .net core 3.0 will support aarch64 and I've read on Twitter that Nicolas Dorier will update Nbitcoin when it's full released which should be soon iirc

Thanks for the research!

@jmacato right, certain instances of .net can currently run on arm32 , will try to run Wasabi on a Pi later this week but doubt that it works.

I tested this on my Pinebook Pro and i can confirm that it is stable on coinjoin/normal wallet usage. HWI is inoperative. Tor needs to be a daemon/service in the host system.

https://github.com/jmacato/WalletWasabi/tree/arm64-branch

I managed to build it on a old Raspberry Pi 3 B+ (ARM32 version of .NET Core 3.1), but seems to have failed the test:
WasabiPi_buildsuccess

pi@raspberrypi:~/Desktop/WalletWasabi $ dotnet test
Test run for /home/pi/Desktop/WalletWasabi/WalletWasabi.Tests/bin/Debug/netcoreapp3.1/WalletWasabi.Tests.dll(.NETCoreApp,Version=v3.1)
Microsoft (R) Test Execution Command Line Tool Version 16.3.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:20.63] Exception discovering tests from WalletWasabi.Tests: System.BadImageFormatException: Could not load file or assembly 'WalletWasabi.Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an incorrect format.
File name: 'WalletWasabi.Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, RuntimeAssembly assemblyContext, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, AssemblyLoadContext assemblyLoadContext)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Xunit.Sdk.ReflectionAssemblyInfo..ctor(String assemblyFileName) in C:\Dev\xunit\xunit\src\xunit.execution\Sdk\Reflection\ReflectionAssemblyInfo.cs:line 31
--- End of stack trace from previous location where exception was thrown ---
at ExceptionExtensions.RethrowWithNoStackTraceLoss(Exception ex) in C:\Dev\xunit\xunit\src\common\ExceptionExtensions.cs:line 27
at Xunit.AppDomainManager_NoAppDomain.CreateObjectTObject in C:\Dev\xunit\xunit\src\xunit.runner.utility\AppDomain\AppDomainManager_NoAppDomain.cs:line 30
at Xunit.Xunit2Discoverer..ctor(AppDomainSupport appDomainSupport, ISourceInformationProvider sourceInformationProvider, IAssemblyInfo assemblyInfo, String assemblyFileName, String xunitExecutionAssemblyPath, String configFileName, Boolean shadowCopy, String shadowCopyFolder, IMessageSink diagnosticMessageSink, Boolean verifyAssembliesOnDisk) in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\v2\Xunit2Discoverer.cs:line 102
at Xunit.Xunit2Discoverer..ctor(AppDomainSupport appDomainSupport, ISourceInformationProvider sourceInformationProvider, String assemblyFileName, String configFileName, Boolean shadowCopy, String shadowCopyFolder, IMessageSink diagnosticMessageSink, Boolean verifyAssembliesOnDisk) in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\v2\Xunit2Discoverer.cs:line 62
at Xunit.Xunit2..ctor(AppDomainSupport appDomainSupport, ISourceInformationProvider sourceInformationProvider, String assemblyFileName, String configFileName, Boolean shadowCopy, String shadowCopyFolder, IMessageSink diagnosticMessageSink, Boolean verifyTestAssemblyExists) in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\v2\Xunit2.cs:line 41
at Xunit.XunitFrontController.CreateInnerController() in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\XunitFrontController.cs:line 144
at Xunit.XunitFrontController.EnsureInitialized() in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\XunitFrontController.cs:line 163
at Xunit.XunitFrontController.get_InnerController() in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\XunitFrontController.cs:line 103
at Xunit.XunitFrontController.get_TargetFramework() in C:\Dev\xunit\xunit\src\xunit.runner.utility\Frameworks\XunitFrontController.cs:line 111
at Xunit.Runner.VisualStudio.VsTestRunner.DiscoverTestsInSourceTVisitor in C:\Dev\xunit\xunit\src\xunit.runner.visualstudio\VsTestRunner.cs:line 280
No test is available in /home/pi/Desktop/WalletWasabi/WalletWasabi.Tests/bin/Debug/netcoreapp3.1/WalletWasabi.Tests.dll. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
Additionally, path to test adapters can be specified using /TestAdapterPath command. Example /TestAdapterPath:.

I tested this on my Pinebook Pro and i can confirm that it is stable on coinjoin/normal wallet usage. HWI is inoperative. Tor needs to be a daemon/service in the host system.

https://github.com/jmacato/WalletWasabi/tree/arm64-branch

Hey I'd be keen to get this running on a pinebook pro - you're link seemed to be dead, is there any more info on this?

@humansinstitute please re-check, i've deleted the branch and i've restored it now. Be aware that there's no official support from us for ARM64.

Hey thanks will have a look.
I actually ended up working around this by install wasabi on an old x64 laptop I use as a linux server and sending the app back to the PBP through X11 forwarding :)

Technically it is possible to make it work but we decided on the dev meeting to not support ARM devices as it would bring a maintainability/testing need that our team cannot fulfill.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nopara73 picture nopara73  路  3Comments

RiccardoMasutti picture RiccardoMasutti  路  3Comments

yahiheb picture yahiheb  路  3Comments

molnard picture molnard  路  3Comments

MaxHillebrand picture MaxHillebrand  路  3Comments