The biggest issue is the Zcashd release/depreciation schedule is so often which leads to constantly needing to update any ARM code that may be compatible.
That’s where I was hoping the zip proposal could look more like an “idea box” that the zcash team could open to review the proposals.
I have limited knowledge. I just try things in my free time. What you mention here is most probably needed but beyond my competences and makes me feel like proposing a zip is not for me…
I don’t think a ZIP is relevant in this case as there are not consensus changes as this is an engineering build issue. Funding development of it via a Foundation grant, for example, would be a good idea.
You need to run the Pi with a 64 bit OS so you can run the ARMv8 build and there are no officially supported ones (i.e. Raspian definitely won’t work). I used this Debian release GitHub - bamarni/pi64: A 64-bit OS for the Raspberry Pi 3 which works nicely. I also had to do the ARM cross-compile on Debian (I also used Stretch) as cross-compiling on a newer Ubuntu release led to dependency errors.
It’s currently syncing the testnet, albeit slowly, and will try to send a Sapling tx once that is complete.
I had some issues with the initial sync with running out of memory and eventually just copied over the datadir from a synced testnet. I deliberately tried to avoid using swap for performance reasons but on starting zcashd I got stuck on loading block index for ages before it crashed so I added a small swap file (on a USB thumb drive as that’s what I had lying around) and it worked nicely. I think the 2GB of say an Odroid C2 might be the sweet spot (not sure about the initial sync but you might just need to be really patient if you don’t want to copy over as I did). Once it is running though, it is doing so on testnet with no issues.
I plan to try this on the mainnet next on a Pi3B+. I’ll add some swap via a SSD this time to see if I can overcome those initial sync issues.
Results from a Pi 3B+ were pretty similar. I was able to install the Ubuntu 18.04.2 preinstalled server image from Ubuntu 18.04.6 LTS (Bionic Beaver) (64 bit ARM) and the cross-compiled build. I added a 2GB swap file on a SSD - you can get away with a smaller file but you’ll need some swap to get over the initial loading block index when starting zcashd.
Same issue with syncing mainnet and resorted to copying the datadir from an existing node (all 22GB of it). I think this is realistically the only way to do it (or download a hosted version).
Once it is synced though it works great (on mainnet) and fully shielded Sapling transactions typically take of the order of 20-30 seconds depending on the number of outputs.
I don’t have an ARM machine but if you are quite confident your changes to build.sh could be beneficial to everyone, you are welcome to file a pull request on the Zcash GitHub.