My first impressions of the Casa Bitcoin Node

Author

When Casa announced their plug-and-play Bitcoin and Lightning node, I immediately pre-ordered one for myself. It was an impulse buy — I certainly didn’t need a Bitcoin node nor would I call myself an avid early adopter or tinkerer.

Motivation

My prior experience with running a Bitcoin full node had been mediocre. I didn’t have 210+ GB of disk space to spare on my main PC, so I thought about using a spare notebook instead. But even there I would have to wait hours every time I wanted to use it while it downloaded all the latest blocks I had missed while the notebook was offline.

The Casa Node promised to change that: a small box that would sit unobtrusively next to my router in the living room, always in sync and ready to make and receive payments. My main motivation behind testing the Casa node was to see if there was a magical experience to be had. A product that would make running a full node accessible to regular people, without home servers that are always online, or the time to wait for their home computer node to catch up.

Unboxing

Around two months after my initial order, I received a letter. Instead of my Casa Node, it was a notice from my local customs office. I don’t remember exactly what the problem was (wish I had taken a photo of their letter) but I was able to resolve it by sending them copies of the order history and payment receipt (within seven days, after which they would have simply returned the packet to the US). I later learned that another customer from Germany experienced a similar issue. I cannot confirm if it was Casa’s fault, as I’ve personally had similar problems with German customs in the past.

With that issue resolved and the node in my hands, I sat down and got to the setup.

The contents of the packet:

  1. the node itself
  2. a power adapter
  3. various extensions to fit the power adapter into all international electrical outlets
  4. a wall mount (thanks Matt Odell!)
  5. a hard drive cable

It also came with a small booklet:

And finally, the node:

I was really surprised to see a cable of which BOTH ends have to be plugged into the same device. Couldn’t you connect the parts internally? I assume it was impossible with the Rasberry Pi computer inside, but might be nice for future iterations.

The last step was to connect the node with the power outlet as well as my router.

Booting up

When the node was up and running, I followed the handbook and visited “casa-node.local” in my browser, which didn’t work. https://keys.casa/node-help/ had the following to say about my issue:

Unfortunately, the Casa Node didn’t show up in Angry IP, either. I restarted both my router and the node but to no avail. Luckily I have a backup internet connection with a different router, so I connected the node there. That solved the problem. The node now showed up in Angry IP, and I was able to call the GUI using the IP address shown.

I noticed a neat little feature compared to some other wallets that I set up. Casa made writing down the 24 words easier by allowing me to go back and forth between the words. So I always remembered three words at once and wrote them down together instead of one by one, which sped up the process a lot.

That part of the setup was well designed and easy to follow. When it was done, I finally saw my long-awaited dashboard:

Syncing Bitcoin

I was glad to see that the Bitcoin node was already 99% pre-synced, so I expected it to catch up to the chain tip in no time. Unfortunately, I was in for a rather long wait. Nothing seemed to change for around 20 hours, and the GUI was alternating between “Syncing 99%” and “Starting” as status for my Bitcoin node (I restarted it a few times, hoping it would do something).

I talked about this to Nick Neuman, Casa’s head of product:

There are so many blocks, that even at 99% you could actually still have ~5,500 blocks to validate before you’re caught up, which could take quite a while to sync on a Pi. We are probably going to change this from “99%” to something more descriptive.

Around 20 hours into the wait, I was able to successfully open the “Manage Node” menu (which didn’t seem to load before) and it showed me the current block height.

Now whenever I refreshed the page, there was some kind of confirmation that it was doing something behind the scenes. That made the rest of the waiting much easier because I knew I was slowly moving towards the chain tip. Eventually, the Bitcoin node was synced to 100%.

It later turned out that my impatient restarting of the node might have delayed the catchup-process even further. As Nick explains:

Each time you restart, Bitcoin needs to verify it’s memory cache of the latest blocks (called “Rolling Forward”), and this can take 30 min to an hour. We’re working on giving more detail about the rolling forward phase so it’s less confusing and hopefully results in less wait time for users.

Here’s a video where Greg Maxwell explains what’s happening during that time and why they made the decision to add that into bitcoin core: https://www.youtube.com/watch?v=nSRoEeqYtJA&feature=youtu.be&t=824

Basically it’s a memory management tradeoff for making the node software more “crash-proof”.

Syncing Lightning

I expected the LN node to sync much faster than the Bitcoin node, because, what tons of data could there be to download? Here is Nick again:

It’s syncing the state of the Lightning network so it can see all of the current nodes, channels, etc. In all of my test units it’s usually taken about 3 hours to sync LN. So the fact that yours has been going for 24hrs means something got stuck or there is an issue.

Unfortunately, I was stuck at this screen for the next 48 hours.

The Bitcoin node now worked fine, but Lightning seemed to be permanently stuck at 11%. Nick offered me to connect a monitor + keyboard to the node so that we could do troubleshooting together, I didn’t have that easily available and so I decided to take a break of a few days from getting the node to run.

My problem wasn’t with the waiting; it was that the node wasn’t transparent and didn’t show me what I was waiting for. As a result, I grew frustrated because I couldn’t see if I was moving closer to my goal. The frustration disappeared for the Bitcoin node once it started showing the current block height. But with Lightning, nothing moved for 48 hours — a frustrating experience.

The next morning, the fourth day after first unboxing the node, I decided to check the dashboard again, without expecting it to look any different than the past two mornings. But to my surprise, the LN node had finally switched from “Syncing — 11%” to “Active — Online.”

I had already sent a bit of BTC to my node wallet, so I added them to my Lightning node’s wallet and tried to make a test payment.

First, I tried to get Autopilot to run. The idea, I believe, is that it opens channels with other nodes that have a lot of liquidity, so you can make payments on LN without connecting directly to your target. I clicked “enable Autopilot,” at which point the node had to restart. This usually took 15 minutes or longer for me before the Lightning dashboard was ready again. Once Autopilot was enabled, I realized I still needed to set “Channel Settings” and define a max value per channel and number of channels that I allowed it to open. You guessed it, to save the settings I needed to restart again — another 15 min wait.

A few hours later, Autopilot had seemingly still not opened any channels. While I was just attempting to open a channel manually, I noticed that the number of open channels had magically changed from 0 to 6. It seems like Autopilot had silently done his job — it just hadn’t told me about it. While I was writing this post, Casa released a software update that addresses this issue and gives more transparency to what Autopilot is doing.

My first Lightning payment

All in all, it took me four days between unboxing the node and reaching my goal, to make an LN payment. I decided Satoshi’s place would be my establishment of choice:

And it worked! After a very cumbersome process, everything had finally fallen into place, and since that, I’ve had no problems in operating the node. It was caught up and online each of the following days and generally working as intended.

While I had great support from Casa team members and other helpful people in their telegram chat, all of my problems during the setup (except getting it to run on my primary Internet connection) eventually solved themselves. It just took a lot of waiting. And I don’t wanna lie; the waiting can be frustrating if you don’t know what’s going on behind the scenes.

The good news is that this could be easily solved by adding a live feed of what the node is doing at any given moment. As a nontechnical person, I just wasn’t used to the slowness of a Raspberry Pi computer. The problem here wasn’t that things didn’t work — they largely worked fine — it was that as an inexperienced customer I had no idea what to expect, what was happening behind the scenes or long how I had to wait — and the node didn’t readily tell me.

Conclusion about the Casa Node

I knew what I had coming for me when I signed up for the first batch of an experimental piece of hardware. I’m not a tinkerer, and I get impatient when software (and hardware) doesn’t do what I want it to. But I still got the node to run, and now it largely works as promised. I successfully paid someone on LN. I struggled a little bit to get there, but the cool thing is that software can be updated and I expect Casa to make the setup process much easier for new customers going forward.

Running a Bitcoin full node is a huge pain for people like me. As a product targetting that niche, I currently see the Casa Node a bit between a rock and a hard place. For nontechnical people like me, it feels a bit slow and underpowered compared to the consumer hardware we are used to. It also has a relatively steep price point at $300. Bitcoin aficionados, on the other end of the spectrum, might have a home server or PC that can stomach running full nodes (which my PC couldn’t) while giving them options and control that the Casa GUI removes by design.

As a concept, I still think it’s a great idea and that plug-and-play nodes like Casa are here to stay. I will continue to use it now that it’s set up because it’s legitimately useful. I can make and receive Bitcoin and LN payments without the wait time of an out-of-sync full node. But it will also benefit from more iteration and a more clearly defined target user. Overall it was a slightly frustrating, but ultimately rewarding experience and I hope this review helps potential buyers to get an idea of what the Casa Node looks like, as well as giving the Casa team some ideas for improvement.

What I learned about full nodes in the process

Running my own Casa node made me engage deeper with how full nodes work in general, which gave me some important insights on the way.

While I initially thought that the bottleneck for running Bitcoin Core on my main PC was disk space and bandwidth was secondary, I learned how to prune the blockchain so it never requires more than 550 MB at once (thanks StopAndDecrypt and James Prestwich). Bandwidth, on the other hand, cannot be pruned: at the current block weight, and 8 connections to other peers, it requires you to download (and upload, if you want don’t to be a leecher) 30 GB per month.

And this is if you don’t allow incoming connections (and seed old blocks to other nodes). I’m lucky to have an uncapped connection at home, but most people in the world have to deal with a capped bandwidth. Bitcoin blocks are already too large for them, and this is not something that plug-and-play nodes can change either. Keep that in mind when you hear people questioning the importance of small blocks.

How my experience compares to other customers

Lastly, I talked to several people who received the Casa node at the same time as me. All of them but one reported having a very smooth experience, which makes my prolonged sync periods seem like an unlucky outlier in retrospect.

Only Matt Odell reported that his node arrived with a corrupt chain. Casa was very kind to send him a new one and even allowed him to keep the old node as well, so he could sync it from scratch. Re-syncing the chain takes around one month on a Rasberry Pi. Other than that Matt suggested to me that the node could have used “a little more processing power, RAM, and ideally an SSD to make the experience much better”.

Arjun Balaji shared with me the following:

My experience purchasing a Casa node was nothing but spectacular. The set up instructions only had a few steps, like an Apple product. IP configuration was automatic, and the sync took less than 10hrs over night. While I’m worried the node’s specs might be underpowered to last several years and the build quality was a bit underwhelming, it is a great option for users who want an “easy” way to run a node and get onboarded with the LN. Other, lower-priced options are also entering the market and will offer competitive choices for consumers.

The last word I will give to Nick Neuman, who has been a great help in writing this review and answering all of my questions about the node.

The feedback from our early Casa Node users has been incredible, and we’re utilizing it heavily to quickly improve the product. We’re grateful to have such an awesome community growing around the Casa Node and Lightning Network!

We built this first device in a crazy-short amount of time to get customers up and running ASAP. We’ve got a lot of updates in the works — both software and hardware — to make the Casa experience even better in 2019. Here’s to being #reckless!

Share this post

Share on twitter
Twitter
Share on facebook
Facebook
Share on linkedin
LinkedIn
Share on reddit
Reddit
Share on email
Email

Leave a Reply

Further reading