SAFE Network App for ARM?

Looks like ARMv7 builds have arrived today.
Not sure if I had anything to do with it.

[edit]
Looking at the contributor @chriso succeeding days earlier than me
and way more elaborate, I guess not.
[/edit]

I’ll request them to add an aarch64 ARM build.
https://github.com/maidsafe/safe_network/issues/182

2 Likes

Hi All,

I’ve been working on providing the builds for ARM. I’ve submitted a PR to resolve the issue raised by @folaht , so the Aarch64 build will be available shortly.

Since some people were asking, I just wanted to provide some info on these builds.

They’ve been built using the cross project, which very nicely uses Docker containers to wrap all the tedious configuration for cross compilation. In terms of testing, the sn_node ARM builds pass a large subset of the tests defined in the safe_network repo. Of the tests that didn’t pass, most of the failures were actually due to the configuration of the containers used by cross in the test run. We’ll definitely be able to fix those. The other tests that didn’t pass were ‘prop’ tests that are very CPU intensive and were just taking a very long time to run with the limited container resources.

There have been no tests on actual ARM hardware yet, but in the coming days, I’m going to test and run the builds on a Raspberry Pi 4.

If you please feedback any findings or issues with the builds in this thread, I’ll be happy to assist in any way I can. I’ll be checking the forum regularly from now on and look forward to hearing from anyone who’s interested.

Cheers,

Chris

19 Likes

:partying_face: :partying_face: :partying_face:

Thank you for looking after us Pi users. :slight_smile:

8 Likes

Is there any point in me testing these build on Odroid ARM7. I hav some time over the next couple of days if so.

Great to see this :relaxed:

1 Like

And if someone can provide simple instructions, I can test this on Oracle cloud, Arm Ampere (v8.2 I think)

Beautiful Chris! Thanks for hard work!

5 Likes

Sure thing, it would help us a lot. So running baby fleming may bee too much for odroid, but we have not tried it yet. As we cut out more inefficiencies then it’s worth a try.

5 Likes

couldn’t resist…
downloaded binaries from https://github.com/jacderida/safe_network/releases/tag/v0.7.26

ubuntu@instance-20210709-0856:~/.safe/node$ safe node bin-version
safe_network 0.7.26
ubuntu@instance-20210709-0856:~/.safe/node$ safe node run-baby-fleming
Creating '/home/ubuntu/.safe/node/baby-fleming-nodes' folder
Storing nodes' generated data at /home/ubuntu/.safe/node/baby-fleming-nodes
Launching local Safe network...
Launching with node executable from: /home/ubuntu/.safe/node/sn_node
Version: safe_network 0.7.26
Network size: 11 nodes
Using RUST_LOG 'safe_network=debug'
Launching genesis node (#1)...
Connection info directory: /home/ubuntu/.safe/node/node_connection_info.config
Genesis node contact info: ["127.0.0.1:44519"]
Common node args for launching the network: ["-vv", "--idle-timeout-msec", "5500", "--keep-alive-interval-msec", "4000"]
Launching node #2...
Launching node #3...
Launching node #4...
Launching node #5...
Launching node #6...
Launching node #7...
Launching node #8...
Launching node #9...
Launching node #10...
Launching node #11...
Done!

Following that

ubuntu@instance-20210709-0856:~/.safe/node$ safe keys create --test-coins --for-cli

Hangs…not sure where to take it from here…

3 Likes

:smiley: cool

We are just updating cli etc. let’s see if @joshuef and @chriso have some input (although Josh is ODD today (supposed to be)) and Chris finished after midnight last night. So may be a wee while to reply.

:+1: though it’s all helpful

5 Likes

Thanks for the feedback. I’ll see if I can reproduce this on my own Pi later today. I’ll definitely get back to you, but it may not be today. We’ll keep track of the issue.

4 Likes

Just to reiterate what David said, any feedback is appreciated! If you do test it out, let us know how it goes.

5 Likes

Now looks like I can’t do this until at least next week. I’ll get back to you if I have anything to report.

5 Likes

Update on the above.
Installed Cli v0.32.1 from https://github.com/maidsafe/sn_cli/releases/tag/v0.32.1

And I can confirm baby-flemming now starts and works properly with the provided binaries for ARM arch64:

ubuntu@instance-20210709-0856:~$ safe -V
sn_cli 0.32.1
ubuntu@instance-20210709-0856:~$ safe node bin-version
safe_network 0.7.26
ubuntu@instance-20210709-0856:~$ safe node run-baby-fleming
Creating '/home/ubuntu/.safe/node/baby-fleming-nodes' folder
Storing nodes' generated data at /home/ubuntu/.safe/node/baby-fleming-nodes
Launching local Safe network...
Launching with node executable from: /home/ubuntu/.safe/node/sn_node
Version: safe_network 0.7.26
Network size: 11 nodes
Using RUST_LOG 'safe_network=debug'
Launching genesis node (#1)...
Connection info directory: /home/ubuntu/.safe/node/node_connection_info.config
Genesis node contact info: ["127.0.0.1:47999"]
Common node args for launching the network: ["-vv", "--idle-timeout-msec", "5500", "--keep-alive-interval-msec", "4000"]
Launching node #2...
Launching node #3...
Launching node #4...
Launching node #5...
Launching node #6...
Launching node #7...
Launching node #8...
Launching node #9...
Launching node #10...
Launching node #11...
Done!
ubuntu@instance-20210709-0856:~$ safe keys create --test-coins --for-cli
New SafeKey created: "safe://hyryyyybg5brp9jn975na4gfqbqtqxzjuopqzfh1iusmtktcdn6rc4xcpyo"
Key pair generated:
Public Key = 26d848dfa45feec58d18ae0ba2e7dd33835d72f2559d971545831788cd3d8d04
Secret Key = 390c88daa91a1c6e1c0a72bcc6e47bf92a8e2cb0fc55552a9f72cc9d41e48734
Setting new SafeKey to be used by CLI...
New credentials were successfully stored in /home/ubuntu/.safe/cli/credentials
Safe CLI now has write access to the network

ubuntu@instance-20210709-0856:~/.safe$ safe files put braveheart.jpg.gallery.jpg 
FilesContainer created at: "safe://hyryyrbcz9m9skgt8ed3e4r5ugj6qsefpkost3wj797wf6gtauiyipp77prnra"
+  braveheart.jpg.gallery.jpg  safe://hygoygym757et4dydz9kb6noq6pzzxtgbc4m4hsusssferkt84cue3yh19w 

On file get though, I get:

ubuntu@instance-20210709-0856:~/.safe$ safe files get safe://hygoygym757et4dydz9kb6noq6pzzxtgbc4m4hsusssferkt84cue3yh19w
[safe_network::client::connections::listeners] ERROR 2021-07-18T02:17:07.259830475 [/cargo/registry/src/github.com-1ecc6299db9ec823/safe_network-0.7.18/src/client/connections/listeners.rs:45] Error while processing incoming message: MessagingProtocol(FailedToParse("Client message payload as Msgpack: missing field `event`")). Listening for next message... 
[safe_network::client::connections::listeners] ERROR 2021-07-18T02:17:07.281596656 [/cargo/registry/src/github.com-1ecc6299db9ec823/safe_network-0.7.18/src/client/connections/listeners.rs:45] Error while processing incoming message: MessagingProtocol(FailedToParse("Client message payload as Msgpack: missing field `event`")). Listening for next message... 
[safe_network::client::connections::listeners] ERROR 2021-07-18T02:17:07.285522780 [/cargo/registry/src/github.com-1ecc6299db9ec823/safe_network-0.7.18/src/client/connections/listeners.rs:45] Error while processing incoming message: MessagingProtocol(FailedToParse("Client message payload as Msgpack: missing field `event`")). Listening for next message... 

Could it be that my configuration is messed up? (I’ve been installing binaries on top of previous build)

3 Likes

The last safe network version that I got to work was 0.6.1
Try safe node update and see what version that offers.


willie@gagarin:~/.safe/node$ safe node update
Starting logging to stdout
Jul 18 12:23:50.775  INFO sn_node: Checking for updates...
Current version is '0.6.1'
No releases are available for updates

To me this means that whilst the devs are powering ahead, the latest version suitable for use by non-devs is 0.6.1 unless you REALLY know what you are doing

Congratulations on your work so far, Im very keen to join in as soon as I get some time.

4 Likes

Glad you got it going. That error means the CLI build isn’t compatible with your network build. (CLI is updated out of step from main).

I had a script to get this compatability info into the release post on github somewhere… Will try and dig that out and get it applied to CLI repo for more clarity there.

Basically you need to use the safe_network version you’ll find in the Cargo.lock file of the cli code here (But from the sn_cli version you’re building )

5 Likes

Thanks @joshuef , I thinking I’m getting the gist of this.
So, most recent sn_node version compatible with the latest CLI (sn_cli v0.32.1) is the one in safe_network v0.7.18. Pity is, no ARM release for that version.
No drama, I downloaded source and built that version for Aarch64.
So now I have ARM versions:

safe_network v0.7.18
sn_cli v0.32.1

This combo satisfies my very intensive test…(upload and download 1 file)

ubuntu@instance-20210709-0856:~$ safe node run-baby-fleming
Creating '/home/ubuntu/.safe/node/baby-fleming-nodes' folder
Storing nodes' generated data at /home/ubuntu/.safe/node/baby-fleming-nodes
Launching local Safe network...
Launching with node executable from: /home/ubuntu/.safe/node/sn_node
Version: safe_network 0.7.18
Network size: 11 nodes
Using RUST_LOG 'safe_network=debug'
Launching genesis node (#1)...
Connection info directory: /home/ubuntu/.safe/node/node_connection_info.config
Genesis node contact info: ["127.0.0.1:48808"]
Common node args for launching the network: ["-vv", "--idle-timeout-msec", "5500", "--keep-alive-interval-msec", "4000"]
Launching node #2...
Launching node #3...
Launching node #4...
Launching node #5...
Launching node #6...
Launching node #7...
Launching node #8...
Launching node #9...
Launching node #10...
Launching node #11...
Done!
ubuntu@instance-20210709-0856:~$ safe keys create --test-coins --for-cli
New SafeKey created: "safe://hyryyyygaokmifzsouppfmenptntwyqwp4tjy549cohqthq7eo9tup9gsio"
Key pair generated:
Public Key = d8829752ded09b5a55a04d88a3403a8dd4520debec871d1e3ba887e336fcd6ac
Secret Key = c6f49a11ffea2df06b8b6b22a1087745aa3d1cae553094f5ece800e4a01f6df3
Setting new SafeKey to be used by CLI...
New credentials were successfully stored in /home/ubuntu/.safe/cli/credentials
Safe CLI now has write access to the network
ubuntu@instance-20210709-0856:~/.safe$ safe files put braveheart.jpg.gallery.jpg 
FilesContainer created at: "safe://hyryyrbkr6prwhw5p8q8nyquq7r87rmmm7zkq8pfo1di1h9a51r6tght6shnra"
+  braveheart.jpg.gallery.jpg  safe://hygoygym757et4dydz9kb6noq6pzzxtgbc4m4hsusssferkt84cue3yh19w 
ubuntu@instance-20210709-0856:~$ safe files get safe://hyryyrbkr6prwhw5p8q8nyquq7r87rmmm7zkq8pfo1di1h9a51r6tght6shnra
File [1 of 1]: braveheart.jpg.gallery.jpg
File [1 of 1]: braveheart.jpg.gallery.jpg
File [1 of 1]: braveheart.jpg.gallery.jpg
  [00:00:00] [########################################] 35.81KB/100B (11.79KB/s, 0s)  File
⠉ [00:00:00] [########################################] 35.81KB/35.81KB (247.48KB/s, 0s)  Tran  [00:00:00] [########################################] 35.81KB/35.81KB (247.48KB/s, 0s)  Transfer
Done. Retrieved 1 files to .

Why am I doing this? donnow…I suppose I don’t like to leave things halfway…
So @Southside , looks like the cli - node combo above works properly.
I suppose I could try to open this ARM-based, cloud hosted test net to the community? :thinking: @folaht you did this before, right; what does that entail?

3 Likes

You mean join the test net?
I’m currently more busy with just writing how to install the thing than to even play around with it,
but I have these commands written on my dockerfile for the earliest test net and it still seems to connect to several IPs.

safe networks add fleming-testnet https://sn-node.s3.eu-west-2.amazonaws.com/config/node_connection_info.config
safe networks switch fleming-testnet
safe node join

I was actually referring to this thread.

Ah yes, creating your own safe network and advertise it to the world.
I was confused by your second last sentence.

I don’t know if anything has changed, so here’s what I remember:

Requirements

  • A server computer.
  • A global Ipv4 or Ipv6 address.

Steps

  • Use sn_node instead of safe node
    • Start your first node with sn_node --first ..
    • Repeat with more more nodes connected to the first until you reach the minimum amount of required nodes.
  • Open a port on your modem for each node.
  • Create a config file for others wishing to join your network and make it publicly available.
  • Publish your newly created network on this forum.
3 Likes

@stout @folaht As others join, can their addresses be added to the bootstrap list and the config file updated?
IIRC their was 30+ Digital Ocean nodes in the last testnet and that may be too many for one person to set up.