Self-Hosted Cloud Storage with Seafile, Tailscale, and a Raspberry Pi

| Comments

I am a fan of Dropbox-style file sync services. I’m not a fan of letting someone else have the keys to access my encrypted data. Back in 2013, I tested every open-source self-hosted cloud-storage solution I could get my hands on.

At the time, Seafile was the only Dropbox-style option that could meet my needs. Other software might work today, but Seafile hasn’t failed me in 7 or 8 years.

In 2013, my Seafile server lived in a virtual machine on a physical server I already had colocated in a data center. In 2018, my last colocated server started having hardware issues, so I started moving services to the cloud. I wound up subscribing to Prometeus.net’s Seafile service in Romania.

Some things have changed since then, and I’ve decided it is time to bring Seafile back in house.

The parts list

I completely forgot to list the parts I used when putting together my little Raspberry Pi server. Sure, I mentioned all the parts in various places, but it would be easier for you if I made a list. Wouldn’t it?!

This isn’t quite what I ordered. I borrowed parts from the Pi-KVM setup that Brian gave me. Aside from the case being transparent, this sure looks like that’s the kit from my Pi-KVM. I kept the 32 GB microSD card with my KVM and used a random 8 GB microSD card in this Seafile build.

Aside from those two small differences, this seems to be exactly what I’m using. The 4 GB Pi is definitely overkill. You can absolutely save yourself $20 and use a 2 GB model. You can even use an older Pi. Seafile and Tailscale aren’t terribly heavy!

You should MOST DEFINITELY shop around for a hard drive. When I bought the 14 TB drive it was on sale for $230. There’s always a USB hard drive on sale somewhere. Just keep your eyes open!

Why Seafile?

In 2013, Seafile was the only piece of software I could find that was both encrypted on at the client and could scale to tens of thousands of files. My hope was to sync my entire home directory. At the time, Seafile couldn’t handle that many files in a single library well. I also decided it would be cumbersome to literally sync my actual home directory, but I did manage to sync every important subdirectory into its own Seafile library.

Seafile encrypts my data before it leaves my local machines, and the server doesn’t have the keys to unlock my files. If you’re paranoid, though, you need to be careful. If you access an encrypted library in Seafile’s web interface, your keys are stored in memory on the server for about an hour.

This means that if someone hacks into my Seafile server, the attacker won’t have the ability to read any of my data. If a thief steals my server, they won’t have access to my data.

I want Dropbox-style file sync between my desktop, laptop, and a few other machines. I want a centralized server in a remote location storing an encrypted copy of my data. Seafile also stores historical snapshots of my data on the server, so if I accidentally delete or corrupt all my files, I can always download them again.

Seafile is at the heart of my backup strategy.

Why am I bringing Seafile back in house?

When I signed up at Prometeus.net, the bulk of my data was in the RAW photos from my DSLR. At the time, they consumed less than half the space in Prometeus’s 400 GB plan. Today I’m at around 380 GB, and Prometeus doesn’t have a larger tier.

I also have nearly three terabytes of video, and that sometimes grows by hundreds of gigabytes in a month. Most of it is GoPro footage from my FPV drones. The video is stored on a RAID 10 on my NAS virtual machine. I don’t have a backup plan for it. If my NAS dies, my GoPro footage will be gone.

I’m not terribly concerned about this. I’m probably never going to look at the older footage. Even so, if I’m addressing my lack of storage, then I may as well include this data in my plans.

Why not use Google Drive or Dropbox?

Let’s just forget my paranoia and assume I’m not worried about Dropbox peeking at my private data. Let’s ignore the fact that Dropbox stopped working on some Linux file systems. We can also ignore the fact that Google doesn’t even have a file sync client for Linux.

I was mostly looking at price. Google Drive is $100 per year for 2 TB, and Dropbox is $120 per year for 2 TB. I’m paying $43 per year for 400 GB of Seafile storage from Prometeus. Prometeus was quite a bit cheaper in 2018, but Google One and Dropbox have adjusted their pricing since then.

Neither service offers a large enough plan for my needs, but I’m just going to assume I could buy 4 TB of storage for double the price of 2 TB. I’m looking to sync a little over 3 TB, so a 4 TB plan makes sense to me.

I’d be paying $240 per year to Dropbox or $200 per year to Google. Wait until you see what my do-it-yourself setup cost.

I wouldn’t have even considered hosting Seafile myself again without Tailscale

Tailscale is fantastic. Tailscale is a mesh VPN service built on top of Wireguard. You install the Tailscale client on every one of your machines, and each computer will connect directly to every other computer on your Tailscale network using Wireguard. Tailscale manages all the authentication and encryption keys for you.

One of the things I hated about hosting my own Seafile server on the public Internet was security updates. I had to constantly make sure my operating system was up to date. If Seafile or Nginx had a serious security patch, I had to race to update it as soon as possible.

Tailscale is hiding my Seafile server from the public. My Raspberry Pi server will be sitting behind Brian’s firewall, and I blocked every port on the Ethernet interface except for Tailscale’s port. I can only ssh in through the encrypted Tailscale network interface, and I can only access the Seafile services on that interface.

I won’t have the entire internet banging away at my Seafile server. The only computers with access will be computers that I control. It will be so much less stressful!

Not only that, but I’ll be able to share my Seafile server with my wife using Tailscale’s machine-sharing feature.

Use the unstable release of Tailscale!

The stable release of Tailscale in their Raspbian repositories is version 1.2. I switched my Pi to the unstable repository, and that installed version 1.5.4. This doubled my network performance over Tailscale!

I wasn’t smart enough to investigate this until after the initial upload of my 3.3 terabytes of data. This would have saved me considerable time!

Why am I using a Raspberry Pi?

I got this idea shortly after Brian gave me a full Pi-KVM setup for Christmas. I immediately plugged the whole setup into my virtual machine host to test it out. As soon as I saw that it was working, I installed Tailscale on the Pi-KVM. That got the wheels turning.

The next week, I ordered a 2 GB Raspberry Pi 4 and a 14 TB Seagate USB hard drive. The hard drive was on sale for $230, and I overpaid a bit at $54 for the Pi with a power supply from Amazon. I figured it was worth it for the 2-day shipping.

Don’t just buy the hard drive I bought. There’s always an external USB hard drive on sale somewhere!

The Pi-KVM setup was using a 4 GB Raspberry Pi 4, but the entire setup was using only about 200 megabytes of RAM. I swapped the 2 GB Pi into the Pi-KVM setup, and I stole the 4 GB Pi for the Seafile project. Even the 2 GB Pi is overkill for the Seafile server, but I figured that I’m more likely to find a use for the extra RAM on the Seafile server.

I could have saved a bit more money. There’s no reason for this to be a Raspberry Pi 4. Any old Pi would do the job. I ordered a Pi 4 to swap into the Pi-KVM because some of the accessories are USB-C, and older Pi models don’t have USB-C ports.

At full price, my 14 TB Pi Seafile server would be just a bit over $300. With the sale on the hard drive, I paid a little under $300.

Why are you only using a single hard drive?!

I have to admit that I was extremely tempted to buy a second hard drive to set up a RAID 1 array. It was easy enough to talk myself out of it.

Nearly doubling the price of the project wasn’t exciting to me. Price per available terabyte would still compare quite favorably to Google One or Dropbox. There’s nearly 10 TB that I’m not even using, though. Using a second hard drive would mean it would take 3 years of use to match Google One’s pricing instead of 18 months. Still reasonable, but not as interesting.

Recently I’ve started saying that I have a redundant array of inexpensive computers. There’s a copy of my data on the Seafile server. There’s a copy of my data on my desktop. There’s a copy of some of my data on my NAS. There’s a copy of my data on my laptop.

Any one of these machines counts as my backup. If that cheap 14 TB drive in my new Seafile Pi server fails, I can replace it and reupload my data. Sure, losing out on Seafile’s sync services for a few days will be an inconvenience, but it will be a minor one. These days I can always use Tailscale to access files on another machine in an emergency like this.

If I did buy another 14 TB Seagate drive, I would install it in my NAS instead of building a mirror on the Seafile server. That additional drive could be another sync point for a Seafile client, or I could do an rsync backup of the Seafile server. Either option would be a better value to me than mirroring the Seafile server’s storage drive.

You should have an off-site backup

My Seafile server has been off-site backup since 2013. At first, it lived in a data center 20 miles south of my house. Then it lived in some random data center in Romania. My new Raspberry Pi Seafile server is going to live 6 miles away at Brian Moses’s house.

The server is still in my house today, but I’m treating it as if it was already living somewhere else. Everything on the local interface is already firewalled off, and I am uploading my data to Seafile using Tailscale.

Don’t worry about my data. I still have my account at Prometeus.net, and they still have a rather recent copy of my data. If my house burns down, I might lose a few days’ worth of writing.

I told Brian he needs to colocate a Raspberry Pi server at my house. We should be making full use of the buddy system!

How are things working out so far?

Everything is slower than I expected, but this is kind of my own fault. I did an iperf test of the Pi 4’s gigabit Ethernet and saw 940 megabits per second. I ran cryptsetup’s benchmark and saw that the Pi could manage roughly 100 megabytes per second while encrypting the disks.

Tailscale wound up being the slowest piece of the puzzle. Tailscale doesn’t use the Linux kernel’s Wireguard implementation. It uses a Go implementation. The Go implementation of Wireguard is slower than the kernel on Intel, and I wouldn’t be surprised if the performance gap is bigger on Arm. This isn’t a big deal.

Over Tailscale, iperf averages around 65 megabits per second. Much of the time, my Seafile upload has been staying pretty close to this number.

Not always, though. There’s a lot of encrypting and decrypting going on. Tailscale is decrypting AES, then Nginx decrypting SSL. That’s two extra layers of encryption on top of data that was pre-encrypted by the Seafile client on my desktop. Then the kernel is encrypting the blocks that are written to disk.

Writing to a USB hard drive is also a rather CPU-intensive task.

During the first part of my upload, all four of the poor little Pi’s CPU cores were maxed out, and I was averaging somewhere around 35 megabits per second. I’m assuming this is because of the quantity of smaller files that were being synced one at a time.

I have nearly two terabytes left to sync. I haven’t looked at the average speed, but we’ve been up over 50 megabits per second the entire time I’ve spent writing the last four paragraphs. We’re down to RAW photos and huge GoPro videos, so I’m not too surprised they’re going faster.

My Internet upload and download speeds are both 200 megabit, and Brian has 1 gigabit up and down. This would sync just as quickly if the server were already at his house.

Are you going to CNC or 3D-print an enclosure?

I have to say that I was really tempted to design something! The biggest problem is that USB hard drives are significantly cheaper than SATA drives even though they’re usually plain old SATA disks on the inside.

If I were buying a bare 3.5” disk and a stand-alone SATA-to-USB adapter, then designing an enclosure would have been a no-brainer. Since I’m buying a USB hard drive, the SATA-to-USB adapter is already included, and the whole thing is wrapped up in a nice enclosure.

I am using a Pi enclosure from Amazon. It is the one Brian gave me with the Pi-KVM. I DO want to design a custom case for that one! I just used some 3M Dual Lock to attach the Pi case to the Seagate hard drive. I also used some Velcro cable ties and a couple of pieces of sticky-back Velcro to manage the USB cables.

I think it is reasonably clean, and it shouldn’t look out of place sitting next to Brian’s Octopi. If the hard drive fails, I don’t have to worry about taking a replacement drive apart to fit the bare SATA drive into some sort of custom case. I’ll just put some Dual Lock on the new drive, plug it in, and get going right away.

I’m also not accidentally voiding the 1-year warranty on my 14 TB Seagate drive.

It is difficult to compare apples to oranges

On one hand, I’m getting 14 TB of Dropbox-style cloud storage for $300. That would cost me $700 per year from Google Drive, right?!

My hardware might fail and need to be replaced. I have to handle updates myself. Brian’s gigabit FiOS connection isn’t going to be as reliable as Google, but at least it is already paid for.

Google and Dropbox both have access to your files. It is policy and not capability that keeps employees from sneaking a peek at your data. I’ve worked in a lot of IT departments, and every one of them had one guy that was proud and excited that he could read everybody’s email. I’d much rather keep my own files to myself.

Seafile storage used on my Raspberry Pi

NOTE: I’m not quite finished uploading in that screenshot, and I’m already using 2.9 terabytes more storage than I currently have available at Prometeus.net.

Saying I have 14 TB of cloud storage feels disingenuous. I’m going to be using 3 TB, and I’ll probably accrue up to one TB of fresh data every year. It would be a long time before a service like Google One would actually cost me $700 per year.

For me, keeping my data on my own hardware has quite a bit of value. My wife and I will be saving a total of $86 per year, and I’m pushing an extra 2 TB or more to Seafile right now for free. I’ll have paid for the hardware in 3 years, and I’m considering my labor to be the cost of keeping my data private and safe.

Don’t forget that hosting my own Seafile server on a Raspberry Pi gives me the opportunity to write this blog post. I will see more clicks from Google. I might make tens of dollars per year on Amazon affiliate sales. I’m also having fun writing this, and I had fun cobbling together this little server.

Setting up Seafile was way too complicated!

I can already see that this blog post is going to be approaching 3,000 words by the time I’m done, so I don’t have room here to document how I got things working. I stumbled quite a few times, but I didn’t document anything. I also cut a few corners, and I wouldn’t want you to follow me there.

The instructions for setting up Seafile on a Raspberry Pi didn’t quite work. Seahub just didn’t want to start, and its log file was empty. I bet I futzed around with that for two hours. I don’t even remember what actually fixed it.

Seafile Libraries on my Raspberry Pi

Then I had to put Nginx in front of Seafile to add SSL. I was hoping to use Let’s Encrypt for my cert, but using Let’s Encrypt for a host with a private IP address looked like it was going to be a real pain in the neck, so I just set up a self-signed cert. This was lazy, but it works.

I don’t have a monitor and keyboard plugged into my Pi. I goofed up the firewall rules twice. That meant I had to power off the Pi, plug the SD card into my computer, fix the rules, and try again. This was slow going.

I didn’t even have to write my own iptables rules, but I did. Tailscale already has documentation describing how to do to set up your firewall using ufw. I could have just copied from their example.

I’d like to write about each of these things. I have an extra Pi, so I can replicate these processes, and I can do them correctly next time.

You don’t have to do this my way!

You can and should set up a Raspberry Pi Seafile server. Maybe you don’t like Seafile, though, and you’d rather use Nextcloud. In either case, you should look at using Tailscale so you can access this little micro server from anywhere in the world.

Maybe you don’t want to use the buddy system. Maybe you want to keep your Seafile or Nextcloud server at home. That’s fine, but I still recommend the buddy system. The best backup is an off-site backup!

There’s plenty of free RAM on my Pi. You could definitely host other services on there. It is almost too bad Bitwarden only charges $10 or $15 per year, because this machine would be a good place to host my Bitwarden server.

Conclusion

This project hasn’t even really hit the ground running yet. My giant collection of GoPro flight videos is still syncing, and the Seafile server is still here in my house. I have confidence in its success, though, because I ran my own Seafile server for quite a few years.

What do you think? Am I making a mistake by going back to hosting my own cloud-storage server? Should I just pay someone instead? Or is this going to be a fantastic value? Are you already using Tailscale for a project like this? Tell me about it in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

Using Tailscale to Share a Single Computer

| Comments

Last month, one of my friends asked me if I’d help him test an upcoming Tailscale VPN feature. I’m always willing to help out a friend, so I said yes, and he talked to the folks at Tailscale into giving out accounts access to their beta channel.

Before long I received an email from Tailscale letting me know that I now had access to the new machine-sharing feature. They were sure to let me know that the user interface is still rough around the edges, and this isn’t truly ready for consumption by the general public.

Sharing a machine with Tailscale

I feel like he was exaggerating a bit. The interface is fine, and machine sharing works exactly as expected. You just click the drop-down menu next to one of your machines, hit the sharing button, and you will be given a link that you can share with another Tailscale user.

They click the link, log in to Tailscale, and the machine you shared will show up on their Tailscale network. It couldn’t be simpler.

Can you restrict access to a specific port?

This seems like the part that needs polishing up.

Tailscale has access controls. I haven’t looked into exactly how these ACLs work, but the default rules show that you can restrict access based on a Tailscale user. It should be possible to restrict third parties access to your machines. I know I’d feel better if I were only opening up my SSH or HTTPS port instead of my entire machine.

It would be nice if this was built into the sharing interface. Tailscale could ask which ports you want to open, and it could build the access controls for you.

Tailscale Access Control

The problem is that access controls are meant to be a paid feature. Basic access controls are part of the $10 per month plan, and identity-based access controls are in the $20 per month plan. I believe that you can access all features using a free account today, but this will be changing in the future.

I’m not sure how they plan to implement this. It would be nice if a free user didn’t have to open up entire machines to their colleagues using Tailscale.

I’m also aware that this can already be accomplished with firewall rules on my end outside of the Tailscale service, but it would be friendlier if I could keep myself safe without leaving the Tailscale interface.

Why on Earth would I want to share a machine?!

I have a use case in mind. I have a virtual machine here at home. It has Jekyll installed, and it has all the right Ruby modules installed to render butterwhat.com and creativitycast.com.

The machine runs local previews of each blog. It also regularly pulls down changes from Gitlab, and if there are changes, it publishes those changes to real sites.

If someone else is writing for one of my sites, it would be nice to be able to share this machine with less technical users. I don’t want to help you get Jekyll up and running with the right modules so you can render the site. I can have a fresh instance up and running for you on my server in less than a minute. Why not just share that machine with you?

Why would I want to keep this on a private network?

I mentioned this use case to my friend that got us into the Tailscale beta. He wanted to know why I wouldn’t just set this up on Github and Netlify. It would be simple, and everything would just work. None of our blog posts are secrets. Who cares if someone manages to find them?

The trouble is that Google cares a lot about this sort of thing. If Google somehow manages to find one of the extra copies of my blogs out there, those copies will be indexed. Once they’re indexed, Google will be unhappy that there’s duplicate content. Google may direct some of my traffic to the oddball extra sites.

This would be a disaster for me. Especially if I didn’t see it right away. My search rankings would tank.

If I keep extra copies of my blogs safely behind Tailscale, Google won’t accidentally find them!

Would I pay for machine sharing? Should my users also have to pay?

I haven’t actually asked anyone at Tailscale which pricing tier they’re planning on including machine sharing in. I’m not exactly sure how much I’d be willing to pay for this feature, but that’s mostly because I don’t actually need to use it at the moment.

I hope machine sharing is included in the free tier, even if it is limited in some way. More importantly, though, I hope receiving machine-sharing links will always be free. I don’t want to manage anyone else’s network, but I most certainly would like to be able to invite others to work with things inside my organization.

I’m not sure I’d enjoy paying $120 per year to share a machine with one collaborator. By the third or fourth accomplice, it starts to seem like a more reasonable price.

What would you use machine sharing for?

I think it is quite awesome. I could safely share my NAS with friends who might want access to my collection of videos or music. I could share my PC so we could do some multiplayer gaming without punching holes in our firewalls. We could share our unused machines to speed up compile jobs with something like distcc.

These are just some of the things I’ve thought of. Tailscale is starting to change the way I think about my network’s topology, and machine sharing is going to add all sorts of new options.

What do you think? Are you using Tailscale heavily? Have you been able to try machine sharing? Do you have an interesting use for machine sharing that hasn’t occurred to me? Tell me about it in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

Laser Cutters vs. CNC Routers vs. 3D Printers

| Comments

My friend Jeremy Cook recently bought himself a red-and-black 60-watt laser cutter from China. I helped choose a nearly identical 80-watt laser for our makerspace 3 or 4 years ago, so I was surprised he didn’t even mention his interest in owning a laser until after he had already unboxed it!

Why on Earth did Jeremy buy a laser cutter? As soon as we started working with our laser at TheLab.ms, I knew for certain that I wanted a CNC router in my garage and not a laser. Jeremy already has a nice CNC router. What is he going to do with the laser?!

We interviewed Chad Dowdell on The Create/Invent Podcast, and a lot of what I discussed with Chad and with Jeremy got me thinking about this quite a lot. Their laser cutters cost about as much as my Shapeoko XXL, but those lasers are supposed to be ready to go out of the box.

There’s no assembly required, and the red-and-black lasers arrive in their industrial-style metal enclosure. It took me a weekend to assemble my Shapeoko, and I had to buy a table—I didn’t have time to build one! I still need some sort of enclosure for my Shapeoko.

I’m not entirely sure who the audience for these words might be. If you own a 3D printer, and you wish you had a more serious machine, I might make you feel better about what you already have. If you’re thinking about adding a laser or a CNC to your garage, but you can’t decide which one you want, maybe this will help you make that decision.

Let’s start with 3D-printing

All these machines are related. You run a model of your object through CAM software to generate g-code, then you send that g-code to the machine. With 3D-printing, they call the CAM software a slicer.

There’s a statement that I had uttered on more than one occasion before owning a CNC router or having access to a laser cutter. I’ve seen people 3D printing things on social media and said, “Why is he using a 3D printer? He has a CNC machine! He can make something much sturdier in half the time!”

I’ve had a 3D printer for more than six years. I’ve had my Shapeoko for nearly two years. I know now that if I can get away with 3D printing something, I’m most definitely going to 3D print it!

3D-printing is so much easier than running the CNC, especially with my new Prusa MK3S. I load my model into PrusaSlicer, hit the button to send the job to the printer, and a few hours later I have my part. I usually just have to peek at the printer to make sure the first layer went down well, and then I can collect my part when it is done.

The CNC is a pain by comparison. I have to go out to the garage. I have to find material. I have to make sure my part will fit somewhere on that material. I have to secure the material to the wasteboard. I have to make sure the correct tool is in the router. I have to zero out the tool. Then I have to keep a close eye on things during the entire operation.

Oh yeah. Then I have to vacuum up all the dust. I might even have to cut away some tabs.

Sure, the CNC cuts through material at least an order of magnitude faster than the 3D printer deposits plastic, but I have to do a lot of the labor myself.

My fully assembled Prusa MK3S arrived at my door ready to print for $1,150. You can get a kit for around $750. Some of my friends own an Ender 3, and those kits can be had for around $200.

CNC routers and fixturing

I knew that I wanted to have a CNC router in my garage. I didn’t really have a choice to make, though. I need to be able to cut carbon fiber plates, and you just can’t do that with a laser cutter.

Even if the decision weren’t made for me, I still would have opted for a CNC rather than a laser. There isn’t much you can do with a laser that I can’t accomplish with my Shapeoko. A laser might be able to engrave better than I can manage to v-carve, but that’s not high on my list of priorities anyway.

Talking to Chad and Jeremy made me realize that the biggest problem with the CNC is fixturing. That’s the act of securing your material to the CNC in such a way that it won’t move out of place while cutting. Sometimes this is easy, sometimes it is tricky. Often-times you have to leave tabs on the edges to keep your part in place, and you’ll have to cut those out of the way later.

Most of what I do with my Shapeoko is prototyping. When I’m in the design phase, I might run the machine a few times a day for 3 or 4 days while trying to get things just right. Then the CNC will sit idle for a week or two while I test my parts.

Chad makes a living selling his custom creations on Etsy. He runs his laser and his CNC all day long. He doesn’t want to spend time securing his materials to the CNC. He doesn’t want to have to cut support tabs out of his cuts. He just wants to make one cut after the next.

The 16” x 16” Shapeoko is around $1,100, the 16” x 32 “ Shapeoko XL is around $1,700, and my 32” x 32” Shapeoko XXL was about $2,200. It took me the better part of a weekend to assemble the machine by myself. I had no idea what I was doing.

The red-and-black 60-watt laser cutters

Let’s start with the things I don’t like about laser cutters. I don’t like the charred edges when you cut wood. I don’t like the inaccuracy when you’re trying to carve to a specific depth. I am aware that you can tune this in for your material, but depth of cut is always precise on a CNC router. In my mind, a laser cutter just barely qualifies as a 2.5-dimension machine. A CNC router is capable of cutting smooth curves on the Z-axis.

Unlike a CNC, you don’t usually have to fixture your parts in a laser. You can just drop your sheet of plywood, acrylic, or cardboard in the machine and start cutting. The most you might need to do is put some weight or magnets on the material. You don’t need support tabs to keep your finished part in place during the cut, because there’s no tool touching the material.

If you want to operate like an assembly line, this is fantastic. You can drop a piece of material in, hit go, pull your cuts out, and repeat. You can do this all day long.

The red-and-black lasers are a tremendous value, assuming you don’t have any serious trouble with whatever winds up getting shipped to your door. Jeremy, Chad, and TheLab.ms all had good luck with theirs. Maybe you’ll have good luck.

Your $2,000 gets you a fully assembled laser cutter that lives in an industrial enclosure. It just needs to be plumbed into coolant and ventilation, and you’re ready to go. You can check out Jeremy’s laser cutter setup video to see how much work is involved here.

The red-and-black laser vs. my Shapeoko XXL

If you squint a little, these two machines are pretty comparable. They’re priced about the same. The cutting area of the laser is somewhere between the Shapeoko XL and XXL, but so is the price.

I had to spend $150 on a sturdy folding table to put my Shapeoko XXL on. You could build your own, but then you’re just trading money for time. The red-and-black laser is its own table.

I’d sure like to have an enclosure for my Shapeoko, and the red-and-black laser comes built into one. That’s awesome.

Here’s the question I don’t have a good answer for: Is installing the ventilation for the laser’s blower fan more or less work than building a Shapeoko from the kit? One of these might involve cutting holes in your home.

Should you buy a Shapeoko or a red-and-black laser?

These two machines are nearly the same price, and there is a ton of overlap in what these machines can do. If you’re only going to buy one machine, which one should you buy?

As much as I’d love to have that free enclosure and stand you get built into the red-and-black laser, I’d still buy my Shapeoko XXL again. There isn’t a doubt in my mind, and I have no desire to add a red-and-black laser to my garage.

The laser can engrave. My Shapeoko XXL can v-carve. The laser can cut. My Shapeoko can cut. My Shapeoko can cut thicker materials more quickly, and it can cut and engrave materials that the laser can’t even touch.

I understand why Jeremy and Chad both want to be able to avoid the labor of locking materials in place for cutting on their CNC routers. If you’re planning to run your machine all day long, maybe the laser cutter is a better choice.

If your goal is to cut and engrave leather, you’ll need a laser. If you want to safely engrave artwork onto the back of something like a MacBook Pro, you’ll need a laser.

If you’re prototyping like I am, or only running your machine for a handful of hours each week, maybe you won’t need to worry about that.

Conclusion

That last heading was almost a conclusion, wasn’t it? I think I lost my bearings a bit while writing this one. What do you think?

If you’re interested in these sorts of machines, there’s almost no reason not to go out and get a 3D printer first. A 3D printer ingests g-code just like laser or CNC. The print head is moved around by stepper motors, just like most CNC routers and laser cutters. You will learn a lot from your $200 to $1,150 investment, and you’ll still find plenty of uses for your 3D printer after you start cutting with a bigger machine.

Did I make the right choice by opting to go with a Shapeoko XXL CNC router? Would you rather have a red-and-black laser cutter? Are you planning on adding one of these machines to your shop? Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

I am the New Co-Host of The Create/Invent Podcast

| Comments

I was bummed out when I heard that Max Maker was leaving The Create/Invent Podcast. Jeremy interviewed me on the next episode. He decided to start recording video podcasts, and he wanted a safe guinea pig to interview for his first attempt at this.

We chatted about the podcast a bit before we started recording the episode. Jeremy seemed excited about podcasting on his own. He recorded a few solo interviews before asking me if I’d like to co-host with him.

It wasn’t as simple as that. I woke up one morning, checked my phone, and misread a message from Jeremy. I read that he wanted to do an episode about TCP. I understood this to be TCP as in TCP/IP. I messaged Jeremy back to ask what he had in mind. What do packets look like? How does NAT work? Why not UDP? That sort of thing.

After he replied, I realized that TCP is short for The Create/Invent Podcast. Duh!

He told me that hosting the podcast is less fun without a partner, and I’m excited about giving this whole podcasting thing a try! Jeremy tells me there was a rather thorough search for a new co-host. I sure hope I’m qualified. I don’t know that I’ve ever seen his feet, but I have a feeling Max Maker has some big shoes to fill!

We recorded my introductory podcast last week, and I feel like things went pretty well.

My first interview was with Chad Dowdell

Chad seems like a good dude, and he was a fantastic guest for my first episode as co-host. Chad had good energy, he’s excited about what he’s doing, and he just seems like all-around good people.

Chad has been using his red and black 60-watt laser cutter for almost a year now. Jeremy just acquired one of his own a few weeks ago, and our local makerspace, TheLab.ms, has had a 80-watt version of the same machine for three years. We had a lot of shared experience with these lasers to discuss, and Jeremy was excited to learn some new tips and tricks that he can immediately start putting to good use.

We talked about Chad’s Etsy store—Chad’s Custom Creations. We talked about how he went from being a junior high school art teacher and part-time maker to making and selling his custom creations full time.

It was a fun time. You should check out the video on YouTube, listen to the episode on SoundCloud, or just find The Create/Invent Podcast in your usual podcast app.

“OK, Google! Play The Create/Invent Podcast!”

I am really excited about this. I remember the first time Jeremy interviewed me on the podcast. When he told me it was live, I walked out the kitchen and asked our Google Home Mini to play The Create/Invent Podcast.

She knew exactly what to do. She played my episode! How cool is that? She knows how to play the latest episode too!

What’s next?

I’m not sure! I’m trying to do some administrative things. Jeremy recently purchased a domain for the podcast, and he was pointing it directly at SoundCloud. I’ve replaced that with a blog, and I’m going to work on putting show notes up there.

I’m going to slowly work my way through our previous episodes and build up tables of contents and show notes. It’ll take a while.

We have some interesting interviews lined up already. I can’t wait to get more practice. I hope I’m doing a good job.

Speaking of good jobs, do you think I’m doing a good job? Do I seem like I know what I’m doing, or do I have a long way to go at this podcasting thing? What do I need to improve? Who do we need to interview on The Create/Invent Podcast?! Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

My FPV Freestyle Miniquad Builds for 2021

| Comments

I link to my FPV freestyle quad blog post from 2018 at least once a month. It bums me out that it is such an old blog post, but it also bums me out that my freestyle builds haven’t changed significantly in two years. I’ve been slowly swapping in new components as parts fail, but the heart of the build is still the same. I’m still using the same motors, batteries, and flight controller.

Other parts have changed, but they haven’t had any real impact on how the quad flies. Other than updates to Betaflight and replacing motors with crunchy bearings, my current builds feel exactly the same as what I was flying in 2018.

I am aware that it isn’t quite 2021 yet. It is getting close, though, and I don’t see any changes coming to my freestyle quads any time soon.

Should we just get the parts list out of the way?

This is the parts list:

The ESC and VTX have been upgraded. They don’t make the Runcam Eagle anymore, so I’ve switched to the Pheonix 2. That’s more of a sideways move. I’ve switched from a Hyperlite Flowride frame to my own Falcon frame design.

My build is getting tubby. I used to be somewhere around 640 grams with a GoPro HERO5 Session and a 1,000 mAh 6S battery. Now I’m up to around 720 grams with a GoPro HERO7 Black and an 1,100 mAh 6S battery.

I love the Hyperlite 1922 kv motors

I chose these motors while I was still running 5S batteries. At the time, my only other choice in a 5S motor that might be ready for 6S were the Hypetrain Stingy motors at 2150 kv. The 1,922 kv seemed like a better compromise. The kv on my Hyperlites is on the low side for 5S, but it was on the higher side for 6S.

When I got these motors in 2018, people would say, “Holy crap! 1,922 kv is so high for 6S!” These days, my friends are starting to run 1,950 and 1,999 kv on 6S. Perceptions changed a bit since I started flying these motors!

I flew and crashed those first eight motors for about 16 months before I started to notice any problems with how my quads were flying. My GoPro footage was still smooth at that point, but I could hear how funny it sounded. The bearings were getting crunchy.

Can you hear those crunchy bearings?!

I’ve never managed to fly a motor for an entire year before. My T-Motor F40 Pro V2 motors would sometimes have the bottom and top parts of a bell separate during a crash. That was a bummer, because when they got stuck like that, they’d take an ESC with them.

Are the Hyperlite motors more durable? Am I just crashing that much less? I know I’m crashing less, but when I do crash these days, it is usually a doozy!

The previous two sets of Hyperlite motors lasted 14 to 16 months, and they’re a few dollars cheaper than T-motor or Hypetrain motors, so I figured they were worth sticking with. I don’t smash into concrete all that often. I usually smash into tree trunks, but sometimes I hit them with quite a lot of force!

Hyperlite makes a budget version of my motor. I have a set, but I haven’t used them on a quad yet. The $14 version of the motors are identical to the $22 motors in every way, except the $14 version has a steel shaft instead of a titanium shaft. That makes them a little heavier and probably a bit less durable.

Don’t buy flight controllers unless they have a DJI plug

I like trying new, interesting things. For a while, I was flying the Helio Spring flight controller. It had an F4 processor running Betaflight, and it also had an F3 processor who’s only job was to filter the gyro. This seemed to work well. It was supposed to be faster than using a single F7 chip, and putting in the Helio board immediately made my quads fly better than they ever had.

Then Helio went out of business. Butterflight and filter upgrades stopped showing up. I knew it was going to be time to upgrade to something new. Were there any F7 boards with nifty new features?

I decided to try the iFlight Succex-D F7 TwinG flight controller. That’s a mouthful. It is an F7 flight controller. It has plenty of UARTs. The layout of the solder pads is quite reasonable. It also includes pads for all 8 motor outputs in addition to the ESC plug. I’m not going to run an octocopter, but having four extra pins to remap is nice!

The gimmick of the TwinG flight controller is that it has a pair of ICM20689 gyros. The second gyro is rotated 90 degrees. Betaflight is able to combine the data from both gyros without adding any latency. In theory, this should provide several decibels of noise reduction for free.

In practice, I’ve heard that it might be better to just force Betaflight to use the better of the two gyros. You’d have to look at Blackbox logs to determine if one gyro is noisy.

Either way, it is handy having two gyros. If you suspect your quad is doing something weird due to a failing gyro, you can switch back and forth between gyros to figure out whether or not that’s really the case.

I was able to get a nice F7 flight controller with an extra gyro, and it didn’t even cost more than other F7 boards. I figured it was a good deal, and I’ve been quite pleased with the hardware.

Then I accidentally fried one of these flight controllers. I repinned a cable to plug one of these into one of my old Tekko32 ESCs, and I literally wired it up backwards. I had trouble buying a replacement!

It turned out that iFlight updated my flight controller. They added a filtered 9-volt regulator and a plug for a DJI air unit. This is fantastic.

The Tekko32 was an awesome ESC. It had tons of capacitors, and it didn’t introduce much noise into my video feed. The iFlight 50A isn’t nearly as quiet. My video feed looked terrible after the upgrade. Running a giant capacitor right on the pads of the ESC didn’t help at all.

I wired my VTX and camera into the iFlight TwinG’s 9-volt regulator, and now my analog video feed is perfectly clear. I’m bummed out that iFlight didn’t include a solder pad for the 9-volt line. I had to plug a connector into the DJI port just to use the single 9-volt wire!

This is a good enough reason for me to buy DJI-compatible flight controllers. More and more DJI-compatible options are showing up every day. Not only can you use it to supply filtered power to your VTX, but you’ll be ready to plug in a DJI air unit when you decide it is time to upgrade to digital!

One of my freestyle quads still has the older non-DJI version of the iFlight TwinG. I wound up using an LC filter to clean up that quad’s video. This might be working even better, but not by much.

The iFlight 50A 4-in-1 ESC

This is one of my favorite upgrades, but it is an upgrade I don’t even notice while flying. My Tekko32 ESCs served me well for years. I have fried a few, though, so I figured maybe it was time to fly something beefier. Not only that, but the pinout on the Tekko32’s plug isn’t compatible with my iFlight flight controller. Choosing an ESC that matches the pinout of my flight controller is easier and lazier!

I think my selection process was interesting. Everybody loves the nearly bullet-proof T-Motor F55A ESC. They cost $75.

I checked out iFlight’s blheli32 ESC offerings. They have a 60A ESC with metal MOSFETs for $80. I’d pay $5 extra for metal MOSFETs, but do I really need a 55A or 60A ESC? The 35A Tekko32 held up pretty well.

I decided to try iFlight’s 50A ESC. They’re only about $50! I figured that if I fry it quickly, I should try something better.

A couple of weeks after installing the iFlight Succex 50A ESC, I was coming past a tree doing a Vanny roll. I got a little too close to the ground and crashed upside down. I turtled the quad over, the camera went to static, and I saw Betaflight reboot right before I completely lost video. Uh-oh!

I had crashed in a 3”– to 4”-deep puddle. While I was upside down, the GoPro was completely submerged. I turtled over with half my motors completely submerged—that sounded so weird in the GoPro footage! Flipping over put the entire quad under water. The only thing exposed was the GoPro.

I let it dry out for a day or two, and everything worked just fine! I flew that same build for quite a few months after being submerged. The motors have been replaced, but not due to the water. The VTX and Runcam Eagle were still working when I upgraded them too.

When the next Tekko32 exploded, it was easy to decide which ESC I would replace it with.

The TBS Unify Pro32 HV is amazing

I’ve had poor experiences with TBS VTX modules in the past. A guy we flew with 3 or 4 years ago used to fly a TBS VTX, and he used to knock everyone out of the air when he plugged that thing in. TBS VTXes are supposed to be good at this, but his wasn’t.

His was also the first one we had to unlock, and unlocking TBS VTXes has been a nightmare. Not because it is particularly difficult, but because I only do it about once a year.

My AKK VTXes have served me well for years, but now they are getting old. I know they’ve been flown with disconnected antennas. They’ve sat around stuck in trees a lot while cranking out 800mW. I know that VTXes degrade over time. Are my AKK VTXes just getting old, or were they always terrible? Who knows!

I helped Brian assemble his FPV Cycle Toothpick 3, and we used a TBS Nano VTX that maxes out at 400mW. We were able to fly that little guy out to spots without any breakup that would get sketchy for me with my AKK VTX cranked all the way up. Brian is cheating a bit. His Toothpick has very little carbon fiber to block radio signals. Even so, it was impressive.

Do I really need to put $50 VTX modules in all my quads? I started with one quad to see how much of a difference it would make. When I got home from testing that first 1,000mW TBS VTX, I ordered another. It was such a nice upgrade!

My AKK VTXes are old, and it is a really old design. I hear good things about several other modern VTXes, but I haven’t tried any of them. I’ve tried the big TBS VTX, and it works great for me, so I’m sticking with it.

Ethix S3 props

I fly a 6” frame. I rarely fly 6” props, but I like having the option. 6” props can give me a bit more efficiency and bite when I need it, and the larger wheelbase should make the quad a bit more stable. My frame is only about an inch wider than a 5” freestyle frame, so it doesn’t make hitting tight gaps all the much harder.

My favorite prop is the Ethix S3. Their efficiency is reasonable, but their top speed is quite low. I fly them because they handle propwash extremely well, and they give you amazing throttle control.

When I first tried the Ethix S3, I was disappointed with how much punch my quad had at full throttle. I wound up flying the Ethix S4 props for a few months. They seemed fantastic. When I ran out of S4 props, I figured I should try the S3 props again before ordering more props.

I’m so glad I did, and I remember exactly what convinced me to switch back to the Ethix S3 props. I did a few power loops of a small valet parking structure. I was able to line up my quad just below the ceiling on almost every single loop. It felt effortless.

NOTE: I’m having trouble finding a quick snippet of video that really shows you why I like Ethix S3 and P3 props, so here’s some smooth freestyle with a crash into a small hill.

Extremely gentle, light props like the Ethix S3 help make up for a lack of skill. The difference between the S3 and S4 isn’t huge, but the S3 definitely make me look like a better pilot. The S3 props have a pitch of 3.1”, while the S4 have a pitch of 3.7”.

I tried Alex Vanover’s Azure 4.5” pitch props. He wouldn’t tell me what the pitch was before I flew them, and I didn’t think to ask after I landed. I had to look it up myself!

They felt fantastic. I had plenty of throttle control. I knew I had more top speed than usual. I felt like I could manage my throttle on the low end about as well as I could with Ethix S4 props, but I bet I was getting an extra 10 mph at full throttle.

Alex is a fantastic pilot. I am envious of his throttle management. I wouldn’t be surprised if he could fly RaceKraft 5051 props on my quad smoother than I can fly Ethix S3 props.

If you need to cheat like I do to get that smooth throttle control, you need to try the Ethix S3 props.

If you like the Ethix S4 props, you absolutely need to try the Vanover props.

Is it peanut butter jelly time?!

I’m in the middle of writing this post, and I just opened a box of props. Half the props are Ethix S3, the other have are Ethix P3 props in their signature peanut butter and grape jelly colors.

When I ordered the P3 props, I was assuming that I wouldn’t be able to notice the difference. They’re 0.1” longer than the S3 props, but they have 0.1” less pitch. Longer props are more efficient and more powerful, but some or all of that might be negated by the drop in pitch. I expected it would be a wash.

After holding them in my hand, I’m less certain of my assumption.

This is why I split my order in half. I really wanted to try the P3 props, but how mad would I be if I ordered 40 sets of S3 props after liking the P3 props even more?!

It may or may not be peanut butter jelly time. I’ll figure that out over the next couple of weeks.

My Falcon frame

My Falcon frame is open-source. It is hosted on Gitlab, though I don’t think my latest changes have been pushed up yet—I don’t like uploading changes that I haven’t tested in the real world!

I assumed I’d never bother designing a 5” freestyle frame. Designing the Kestrel was fun, because it is at least somewhat unique. What new idea could I bring to a 5” freestyle quad?!

I didn’t like the idea of flying someone else’s frame when I have sheets of carbon fiber and a CNC out in the garage, so I needed some new idea. I decided to see if I could design a 5” frame that only used one screw per arm.

The first frame that I cut with one screw per arm and a Kestrel dog bone is pretty loose. It is my own fault. I’ve cut Kestrels that didn’t even fit together without some filing, and I wound up overcompensating on my tolerance variable in OpenSCAD. I doubt the arms move in flight, but you don’t need all that much muscle to pivot them around in your hands.

I decided to try the same thing with one additional screw in the center of the dog bone. This worked even better than I’d hoped. The arms don’t pivot at all, because the dog bone just won’t move. The tolerances are also tighter. I don’t like having a screw right under my stack, though.

I have a new idea that would take 1,500 words to explain. Assuming it works out, the dog bone is going away. I’ve worked out a way to hold the two bottom plates together with pieces of carbon fiber. They look kind of like fractal dog bones. I’ll need two of these pieces. Each piece will also lock two arms together to prevent them from pivoting on their single mounting screw.

I’m pretty excited about this. I have some concerns, but I’m pretty confident that it will work. I haven’t seen this sort of setup used anywhere else yet.

Why the Runcam Phoenix 2?!

I used to fly the full-size Runcam Eagle, and I’ve been flying the Eagle Micro since it became available. The Eagle has the biggest CMOS sensor and the biggest lens with the widest aperture of any FPV camera. They don’t make this camera any longer.

My Micro Eagles are starting to fail. I decided to order a Phoenix 2 to try out. Runcam said it was the replacement for the Eagle, and popular cameras from Foxeer and Caddx use the same sensor. It is cheaper than the Eagle, and I like Runcam’s build quality, so I figured it was worth a short.

A week after installing my Phoenix 2, Joshua Bardwell announced his edition of the Phoenix 2, and it has UART camera control! I have one of each. You should buy the Bardwell edition. Not having to plug in a joystick to set up your camera is so luxurious. I wish I had procrastinated seven more days. I wouldn’t be stuck with a non-UART version in one of my builds!

Then Runcam started selling the Micro Eagle 2. I don’t know what this camera is, but it sure doesn’t look like a replacement for the original Eagle. It has a tiny lens and a small sensor. I’m sure the sensor is more modern, so it doesn’t need to be as big, but it doesn’t look like a better camera than the Phoenix to me.

Why bother with a GPS module?!

They’re cheap. They’re light. Having a speedometer on your OSD is fun!

Return to home works, but I have not trained myself to use it. I’ve always said I could flip that switch when someone plugs in and stomps all over my video signal, but I’m not smart enough to do that.

I’m still using the tubbier HGLRC modules. I already have them, and my quads are wired with the correct cable. My Kestrel uses a tiny 5-gram GPS module. It is less than half the weight of the HGLRC setup.

If I lose enough GPS modules, I will start switching my fleet over to the 5-gram modules.

Conclusion

Not much has really changed significantly since 2019. My quads have gotten heavier mostly due to battery and GoPro upgrades. My props are quite a bit less aggressive. I used to fly HQ 5.1x4.1x3 and HQ 5.1x4.6x3 props. The Ethix props are less aggressive, a good bit lighter, and so much more responsive. If I swapped props and put my GoPro Session back on, it would be just like I was flying my old builds. So much of the key hardware is the same.

What do you think? Are you still flying roughly the same freestyle build you were flying two years ago? Am I missing out on any exciting upgrades? Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

I Bought a Sony ZV-1 Vlogging Camera

| Comments

I’ve been tempted by the Sony ZV-1 since its release. My aging Canon 6D is capable of capturing some impressive video. Canon’s color science is great, and I have some fantastic, sharp lenses. Unfortunately, the ancient Canon 6D isn’t capable of doing autofocus while recording video.

The full-frame Canon 6D is also big and heavy, so it is a terrible vlogging camera. The Sony ZV-1 excels at vlogging, and I’ve been excited about that, but it isn’t the reason I decided to pull the trigger this week.

I’ve been invited to be a cohost on a podcast, and that seemed like the perfect excuse to look into an upgrade from my Logitech C920 webcam. I already have an HDMI-to-USB adapter. All I needed was a good video camera to plug into it.

I’ve only had the camera for three days. I haven’t published any content with it. I’m mostly just getting familiar with the ZV-1, testing its capabilities, and figuring out how to fit it into my color-grading workflow.

Using the Sony ZV-1 as a webcam

There are some better webcams than my Logitech C920, but they’re rather minor upgrades. I knew that if I wanted to be able to stream live video, I was going to have to connect a real camera using its HDMI port. I picked up a $15 HDMI-to-USB dongle a few months back because I heard it worked well out of the box with Linux. It does, and it has no trouble capturing clean 1080p video at 30 frames per second.

I immediately used this dongle to connect my Canon 6D. I believe the 6D can only drive the HDMI port at 480p, and I have to zoom in quite a bit in OBS Studio to eliminate some black borders, so the actual resolution is quite low.

Even so, the Canon 6D as a webcam looks so much better than the Logitech webcam. Canon’s color science is so pleasing, and the 6D’s dynamic range is fantastic. I can’t talk to the camera and manually focus at the same time, and I don’t know how to keep from moving out of focus. I don’t seem to have a sample of video from the Canon 6D over HDMI.

The Sony ZV-1 has none of these limitations. It can output 4K or 1080p via HDMI, and there are no odd borders or OSD elements to crop out of the footage. It outputs a nice, clean, usable signal.

Not only does the ZV-1 autofocus while being used as a webcam, but it has eye-tracking autofocus, and it is amazing. It keeps me perfectly focused. I can hold something up in front of me, and it is almost instantly in focus. It doesn’t have to hunt around. When I pull the item out of frame, it immediately locks focus back on my eyes. It is the bee’s knees.

Will I stop using the Osmo Pocket for vlogging?

I’ve been doing a bad job even remembering to vlog. Let’s just assume that I will start doing a good job at that again! I’ve only had the ZV-1 for two days, so I thought it would be fun to write down how I think things are going to go. We can come back to this in a month and find out if my predictions are correct.

Aside from the Osmo Pocket having a gimbal, the Sony ZV-1 is a better video camera in almost every way: faster and more accurate autofocus, a better lens, a bigger sensor, and maybe even a better microphone.

If you’re going to talk to the Sony camera, you’d going to need some sort of small tripod. I have a small, sturdy tripod and a rather compact selfie stick tripod. I prefer the selfie stick, because it can extend to around 4’. It isn’t stable that high, but it is stable enough at 18” to 24” or so.

Osmo Pocket mic wind noise test at 15 mph with 10 mph headwind

The Sony is already twice the size of the Osmo Pocket, and either of these tripods is also bigger than the Osmo Pocket. Why carry the Sony ZV-1 and a tripod when I could just carry the Osmo Pocket? I’m sure you know why, but is it worth overfilling my pockets?

The Sony ZV-1 is the better camera by far, but I like to pack light when I ride my electric unicycle. I have my phone in one pocket and the Osmo Pocket in the other. That’s all I usually need, and the Osmo Pocket’s noise reduction paired with a foam doodad over the mic lets me ride and talk to the camera at 15 mph without any significant wind noise.

Can the Sony ZV-1 do that? I will surely find out soon enough, but even if it can handle the job, I’m going to need more pockets or a backpack!

I can’t wear my sunglasses while vlogging!

This bummed me out yesterday. We were out flying FPV miniquads, and I decided to pull out the ZV-1 to record some test footage. I turned it on, flipped the screen around, and I couldn’t see myself at all. I figured I just had the brightness set too low.

Then I remembered that all my sunglasses are polarized. I rotated the camera 90 degrees, and I could see it just fine. I can’t record like that, so this will definitely be a problem. I’m sure there’s a solution.

The ZV-1 is an awkward camera for photography, and Darktable doesn’t read its raw files

UPDATE: The nightly builds of Darktable 3.3 are handling my Sony ZV-1 raw files just fine! I’m surprisingly pleased with the dynamic range.

I had no expectation that the Sony ZV-1 would displace my Canon 6D for photography. My Canon 6D has 11 or 12 stops of dynamic range, its sensor is several times larger, and I have some nice lenses. As far as I can tell, no one has even bothered to test the dynamic range of the Sony ZV-1.

I am infinitely more likely to have to carry my Sony ZV-1, so I am still expecting to use it for some photography. It is going to be awkward for me to use for photography because the ZV-1 doesn’t have a viewfinder!

NOTE: I should probably take a better dynamic range test shot. This is what I have for now!

I have a lot of practice framing shots through the viewfinder. If you’re trying to get a handheld shot using a slow shutter speed, mashing the camera against your face helps steady things a lot! I’m sure I’ll learn to cope with this.

I’ve also noticed that Darktable 3.2 doesn’t support the raw files that the Sony ZV-1 produces. I hear RawTherapee does, and there are a couple of related issues in the Darktable bug tracker, so I’m confident support will be coming. I just have no idea when!

I tried editing a photo with RawTherapee. Either I have no idea how to use RawTherapee, or the ZV-1 raw files aren’t correctly supported. I believe either option could be correct!

Sony’s Android app is terrible!

I searched the Play Store for Sony’s app. The most likely candidate only has 2.3 stars. I figured I must be searching incorrectly, but I wasn’t. The consensus seems to be that Sony’s Android app is garbage.

I tried about a dozen times to use my phone as a remote control for my camera, and I just couldn’t get it to connect.

I’d really like to get this working. When you have the camera and screen pointed at yourself, it is difficult to adjust exposure settings. Even when you’re behind the camera, there’s only one adjustment wheel. I know I’m spoiled by the professional controls on my Canon 6D, and I didn’t expect as many buttons and wheels on such a tiny camera.

I’d also like to be able to start 960-fps shots from my phone. The Sony ZV-1 will only record for 2 or 3 seconds in its three highest frame rate modes. I don’t want to introduce shaking, and I’d like to be clear of whatever dangerous thing I might be filming when I hit go!

I have hot shoe remote triggers. I can safely click a button at precisely the right time if need be, but having to carry a clunky remote trigger will be disappointing.

The 960 frames-per-second mode is a gimmick

I knew this before buying that camera, but you know I just had to try it out.

I put the ZV-1 on a tripod, pointed it down at Brian’s FPV drone, and hit record. The plan was to arm the quad and take off. Two seconds just isn’t enough time for him to get that done.

That’s not the only problem. Sony achieves these high frame rates by only partially reading the sensor for each frame. 960 frames has half as many pixels as 480 frames, which has half as many pixels as 240 frames. All three modes have a 2- to 3-second recording limit.

I’m not saying it is completely useless. I took a quick test video while I was roasting coffee, and I think it looks pretty cool!

Why not a Sony A6000-series camera?

The most obvious answer is that the Sony ZV-1 costs less. About $100 less than the a6100 with a kit lens, and an a6500 or a6600 with a kit lens would be about double the price.

I wanted to link to the a6100 and a6500 on Amazon, but most of the listings are either just the body or they include a 55-210 mm lens, so they’re not easily comparable to the ZV-1.

Paying more would be fine, especially if I’m getting a photography upgrade out of the deal. I’m excited about the idea of ditching Canon and moving into Sony’s lens ecosystem. The problem is that Sony’s lenses are so much more expensive! I could write 2,000 words about lenses, but lets just say I’m not excited about buying expensive lenses today, and the best Sony APS-C cameras are quite a sideways move for me as far as photography goes anyway.

The ZV-1 is definitely more vlogger friendly than Sony’s DSLR bodies. The older Sony APS-C cameras overheat if they record video too long, and their screens don’t flip around at all. These problems get resolved as the models get newer.

The ZV-1 has optical image stabilization like the Sony a6500 and newer APS-C cameras, which is nice. The ZV-1’s eye-tracking autofocus is available on the Sony a6100 and a6400. That’s one of the killer features for me, and you can get it on a Sony camera that only costs $100 to $200 more than my Sony ZV-1.

There’s also size and weight. The Sony ZV-1 weighs about 300 grams. The Sony a6100 weighs 400 grams, and that’s just the body. The lens will add weight, and the ZV-1 is thinner even with its built-in lens than the a6100 with no lens. That also gets worse when you add even the thinnest lens.

I’ve carried the ZV-1 in my pocket already. It isn’t the tightest fit, but I certainly know it is in my pocket. I would be acutely aware of an APS-C camera in my front pocket!

The built-in mic on the ZV-1 should beat all the Sony APS-C cameras. It certainly isn’t perfect, and I should be using an external mic anyway. That said, I know I won’t always carry an external mic. From what I’ve seen so far, I expect the built-in mic on my ZV-1 to be more than serviceable if all I have are pockets to carry my gear. The custom wind screen is the icing on that cake.

The integrated ND filter is a fantastic idea!

The Sony ZV-1 has an integrated 3-stop ND filter. I suppose that would make it an ND8. I’m not sure why they don’t just say that.

If you want to keep your shutter speed low in the sun, you’re going to need an ND filter. I was expecting to buy some sort of lens adapter and a variable ND filter before discovering that this feature is already built in!

This is where I noticed an odd quirk. Sony’s interface lets you change the function of many of the buttons. I swapped the bokeh button with the ND filter function. I expected this to toggle the ND filter on or off at the press of a button.

This is not how it works. Pressing the button opens a menu, and I have to use the wheel to select one of the three ND filter options. Am I the only one who thinks this is goofy?

I can toggle product showcase focus mode on or off with a single touch of a button. Why can’t I do this with the ND filter?!

What’s the plan, Pat?!

The immediate plan is to get ready to be able to podcast, and I think I’m already there. What comes next?

I’ve been saying for a long time that I need to get better at vlogging. You have to practice to get better, and I haven’t been practicing. You have to record video, publish a vlog, then think about what you can improve upon for the next one. If you go back and read my blog posts from ten years ago, you will think you’re reading content from someone who has never written anything in their life, and you’d be right. That stuff is embarrassing now!

I need to vlog some of my adventures. I need to vlog when I go out to fly. I absolutely need to vlog about my Gotway Tesla. YouTube seems hungry for EUC content.

Part of the trouble is that the adventures aren’t as common in 2020. I’ll just have to do my best to create some fun, right?!

What do you think? Is the Sony ZV-1 the ultimate vlogging camera? Will I still use my Osmo Pocket at all? Will I still feel the same about the Sony ZV-1 after using it for a month or two? Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

Gotway Tesla V2 Electric Unicycle: The First 500 Miles

| Comments

I’ve been riding electric unicycles for about 9 months now, and I’ve owned my Gotway Tesla for 6 months now. I put 340 miles on my little InMotion V5F before upgrading to the Tesla, and I recently clicked past 500 miles on my Tesla’s odometer.

Here in Texas, the summer months are rather unbearable outside. My two outdoor hobbies are flying FPV freestyle drones and riding electric unicycles. During the summer, my flying definitely took priority over riding! I’m pretty sure it took 4 months to put the first 300 to 350 miles on the Tesla, then the sprint past the 500-mile mark happened in less than a month.

My Gotway Tesla V2 at the park

What have I learned over the last 500 miles on the Tesla and my nearly 1,000 miles of electric unicycle riding?

I’m old and heavy. I can ride an electric unicycle!

I’m 43 years old, about 6’ tall, and weigh around 200 pounds. You can probably push that to 220 or so when I’m wearing my backpack. I can ride an EUC just fine. You can too!

I’ve fallen once. Don’t think I haven’t been forced off these wheels hundreds of time. When I was learning to ride the V5F, I had to jump off a lot, but I always landed on my feet! I got into a slippery situation with the V5F once, and I was able to jump off rather gracefully.

I’ve had one real fall on the Tesla. It was on my second day with the new wheel. I was still getting the feel for this heavier, less nimble wheel while my friend Brian was following me with his cinewhoop. I was coming around a turn at less than 10 mph when the right pedal got too close to the ground.

My front of my shoe got caught between the pedal, the body of the Tesla, and the ground. That meant I couldn’t jump away. The wrist guard saved my hand, though it did get squished a bit, and it was sore for a week or so. It knocked the wind out of me, but I’m no worse for the wear.

What the heck do you use an electric unicycle for?!

The vast majority of the first 500 miles I’ve ridden on my Tesla have been just for the sake of riding. I often just throw on my helmet and take an afternoon ride. Those rides are usually between 6 and 12 miles long.

I like to take my laptop to the park once or twice a week. I don’t do much work there, though. I wrote two or three sections of this blog post at the park. There are some picnic tables along the bike trail that are fairly secluded. They’re half a mile from any roads and more than a mile from the nearest parking lot.

Sometimes my goal is to get some flying in. There are a couple of good spots near the bike trail. I’ll pack my 5” FPV freestyle quad onto my small backpack, take a few flight batteries, and ride to one of the spots. That’s a lot of fun!

Sometimes I meet up with friends just to ride the bike trails. We’ll usually put in 10 to 15 miles on one of these outings.

I’m waiting patiently for the pandemic to get under control. One of my favorite pizza shops is only a 10-minute ride from here, and I only have to ride about ¼ mile through some neighborhood side streets to get there. There’s a frozen yogurt shop, two burger joints, and a donut shop within roughly the same radius.

I believe there are two coffee shops that I’d be able to ride to, but they may have gone out of business.

I want to be able to take my laptop to the pizza shop. I’d like to be able to pick up a frozen yogurt. Picking up coffee in the middle of my ride would be interesting too!

Gotway Pedal dip is real

After that accident, I manually calibrated the Tesla so that the pedals sit with 2 degrees of uptilt. I figure this helps keep the pedals and my toes farther away from the ground when turning, and I always rode my InMotion wheel with some tilt anyway. It seems to make it easier to accelerate.

I’ve been acutely aware of the possibility that my pedals may dip and scrap the ground ever since. I know I was slowing down even more that necessary for turns, and I’ve always been super cautious.

The Tesla’s pedals sit rather low for a wheel this large. This keeps your center of gravity low, and it should make you more stable at speed. It also means your pedals get closer to the ground in turns.

The only time I’ve scraped a pedal since that fall was when I was doing my best to make the tightest turns possible with the wheel leaning over as far as I could. I wasn’t riding while doing this. I was just testing out in front of the house.

Pedal dip is real. It is also quite manageable.

The Tesla V2 is nearly perfect for my needs

The InMotion V5F was a fantastic starter wheel. I only paid $399 for it, and it has been dropped on the pavement a ridiculous number of times. It weighs less than 25 pounds and is built like a tank. I don’t know that my 42-pound Tesla would have survived this kind of punishment.

I definitely outgrew the InMotion V5F quickly. The range and top speed are quite limited. It was an amazing value, and I’m glad I still have it, but I really did need something bigger.

The Gotway Tesla is right in my Goldilocks zone. Heavier wheels with larger, wider tires are more stable, and the Tesla is quite beefy at 42 pounds. I’ve ridden the 55-pound Gotway MSX Pro and the 77-pound Veteran Sherman.

Riding the Sherman reminds me of driving our 1984 Grand Marquis station wagon when I was 16 years old. It glides over lumpy grass, dirt, and gravel nearly as smoothly as my Tesla rides over smooth pavement, but the Sherman turns like a tank.

There are so many trade-offs to make when choosing a wheel. You don’t just pay more to get a better wheel. When you pay more, you’re going to be adding battery. More battery means more weight.

The most I’ve ever managed to ride in a day so far is about 22 miles. I’ve gotten 34 miles on a single charge with my Tesla, and I still had 15% of my battery remaining. I still have plenty of buffer there.

What about other personal electric vehicles?

The biggest problem with electric unicycles is the steep learning curve. I want to say anyone can ride a bike or a scooter, but most people learned to ride a bike when they were kids. Anyone with a bit of skateboard experience can hop on a OneWheel XR without much trouble.

It takes at least an hour or two of practice just to figure out how to hold on to a wall and stand on an electric unicycle and start moving in a straight line. More realistically, you’ll have to spend 20 minutes practicing on three or four days to get moving.

I’ve recently realized that several of my hobbies have steep learning curves. Making espresso is difficult, and mastering the skill takes years. Learning to fly an FPV drone takes hours or weeks, and mastering the skill also takes years. The same is true with an EUC.

The OneWheel XR isn’t a good fit for me, because it doesn’t have enough range. A OneWheel XR is lighter than my Tesla, but it isn’t as easy to carry. I’ve also heard that the OneWheel starts to feel less stable at around 20 mph. I’ve ridden my Tesla faster than this with no stability issues.

My wife has a Pace Aventon 350 electric bike. It has plenty of range, but you have to take the front wheel off to fit it in the car.

Brian’s Exway X1 Riot Pro skateboard costs a lot less than the other options, and it weighs next to nothing. That’s awesome, but the ride is harsh and it isn’t maneuverable.

If you don’t like putting in the time to learn new skills, an electric unicycle may not be a good fit for you. I’ve found the experience to be rewarding. I have a 40-pound vehicle that can fit on the floor in front of the passenger seat of a Miata, and that vehicle can glide along smoothly at 20 to 25 mph for more than 30 miles.

We are living in the future.

I wish I had a suspension

I ordered my Tesla in May when it was discounted by $200 or $250 at eWheels. That was around the time when preorders for the King Song S18 and InMotion V11 suspension wheels were opening up.

In my mind, the S18 is a Tesla with a suspension, a larger wheel, and a bit more battery for only a few hundred dollars more. When I was ordering the Tesla, I was super tempted to preorder a King Song S18.

I’m glad I didn’t wait. I’ve been riding the Tesla for 6 months, and the first batches of King Song S18 wheels are still being delivered. That would have been a bummer.

I’m also not convinced that the first-generation suspension wheels are ready for prime time. They all look like they ride great, but I keep hearing disappointing news. The S18 might be rather fragile and rickety. The Gotway EX might be pretty good, but it sounds like you’ll get dirt and crud into the suspension components if you ride off-road. The InMotion V11 might be the best of the current bunch, but who knows?

My local trails have me spoiled

I can walk out my door, hop on my Tesla, and ride to a picnic table 5 miles away without ever getting off the wheel. If traffic is light on the trails, I rarely even need to slow down!

This is a blessing and a curse. Being able to ride without ever stopping is a ton of fun, but I’ve missed out on getting practice mounting my wheel!

I felt competent with the little InMotion V5F. I could ride a dozen or so feet with only one foot on the wheel. The Tesla was so much bigger and heavier, so mounting or riding with one foot feels quite different. I’m still not good at lifting a foot off the Tesla while riding!

I blame this on the long rides. When I was learning to ride the V5F, I was tired every mile and needed a break. I probably had to mount the wheels dozens of times in the first 30 miles of real riding!

When the Tesla arrived, I had no problem riding for 4 or 5 miles before needing a break. I bet I got more practice mounting the V5F in the first 50 miles than I’ve gotten on the Tesla in 500 miles.

I know a lot of you don’t have the luxury of living 300 feet from dozens of miles of smooth bike trail. If you have to stop at an intersection every half mile to cross a street, you’re getting way more practice mounting your unicycle than I ever did.

If I started with a heavier wheel like the Tesla, I wouldn’t be complaining about this. I’m just learning to be good at this part of the puzzle more slowly than the rest of you!

I’m not itching for a speed upgrade

Electric unicycles are buttery smooth on pavement. My Tesla is supposed to be able to reach 30 mph. I have a speed alarm set at 20 mph, and the fastest I’ve pushed the wheel so far is 25 mph.

Do you know what’s terrifying about 25 mph? It doesn’t feel much different than riding at 20 mph.

I’m wearing a Bell Super 3R helmet and wrist guards. I’m already worried about what happens to me if I fall at under 20 mph. I understand how much more potential energy I’m carrying at 25 mph. I’ll hit the ground much harder, and I’ll be significantly less likely to jump off and run when something goes wrong at 25 mph.

I know that all I have to do is push a bit harder and the Tesla will take me to 30 mph. I expect it to feel a lot like 25 mph, and that is terrifying!

I like the idea that the power is there. I wouldn’t complain if I had even more power available. Just because it is available doesn’t mean I have to use it. More powerful wheels are safer wheels.

Even if I had Tanner’s Veteran Sherman, I would still try to stick to about 20 mph.

The Tesla eliminated my range anxiety

My first personal electric vehicle (PEV) was a Hover-1 XLS scooter that I got from woot.com. If I remember correctly, the website said it would have a 20-mile range, while the box said it had a 15 mile range.

I decided to test that range one day. After riding about 10 or 12 miles, I was on the bike path about a mile away from any roads. I had 3 out of 10 bars left on the battery meter, so I figured I’d be fine. I wasn’t. It shut itself down on me.

I had to hunch over while wearing my 25-pound drone backpack and push that short scooter nearly a mile on a 95-degree day to get to the road so my wife could pick me up. This was not fun.

I didn’t have much range anxiety with the InMotion V5F. The longest ride I ever did on that little wheel was just under 15 miles. It still had a bit of juice left in the tank, but everyone I was riding with had plenty of range left. They could have kept going, but we had to plot a course back home that wouldn’t be too far for me to make it!

I’ve gotten 34 miles out of a single charge on my Gotway Tesla. I haven’t ridden much more than 20 miles in a single day. I don’t see a day coming any time soon when I’ll need to use the full 34 miles on a single ride. I have quite a bit of room to grow here, and there’s some headroom for me as the cells start to degrade over time.

If you want to ride farther, you need more battery capacity. More capacity is more weight. More weight might be a bummer for you!

I feel like I’m at a comfortable spot. I have more range than I need, and I’m reasonably happy with the heft of my 42-pound wheel. I don’t want to pay more for a heavier wheel. I don’t need the range, and I don’t want to have to lift that weight into the car!

Keep riding, and you will keep getting better!

I took a break through most of October. I probably only rode twice during a four- or five-week period, and I really got rusty!

Mounting the wheel was more challenging than it should have been. Every time I hit a bump in the road or rode over a twig, I’d get shaky and nervous. I had to negotiate turns with a ton of caution, and I felt squirrelly every time someone was walking towards me on the bike trail. My top speed was quite low, and I wasn’t bumping into my speed alarm at all. In some ways, it was like starting from scratch!

I don’t know if it was the next ride or the ride after that, but it didn’t take much practice for riding the EUC to feel natural again. I was regularly bumping into my 20-mph speed alarm, I was carving, and I was going off-road again.

I invested in a nice helmet

I’m not convinced that you need to spend $224 on a helmet, but I did it anyway, and I am quite pleased with the results!

My $70 motorcycle helmet seemed like a great idea. It was cheap. It has a retractable sun visor. Its main visor keeps the wind out of my face. If it can protect someone riding a motorcycle, it should protect me well enough, right?

It is heavy. It is hot. It has terrible visibility. The wind noise is awful.

You absolutely must have a chin guard on your helmet. I decided I wanted a mountain bike helmet. There are plenty of reasonable-looking helmets on Amazon for around $60 to $80, but none of those helmets had much in the way of ventilation.

The Bell Super 3R is well made, it is light, it has a huge opening to see through in the front, and it has tons of vent holes. I don’t understand why it is so much quieter than my motorcycle helmet at speed, but it is. It was worth every penny.

When I ride, I wear wrist guards and a helmet. I’ve been saying I should wear knee and elbow pads if I plan to go over 15 mph, but I haven’t been doing that. You should wear knee and elbow pads. Don’t follow my lead here.

Here’s to the next 500 miles!

I expect the next 500 miles to go by quickly. We’re entering the best riding months of the year here in Texas. Summer here is hot. The heat makes me stay home or ride home early. The only thing that will keep me from riding between now and April is rain!

What do you think? Do you ride an electric unicycle, OneWheel XR, electric skateboard, or e-bike? Are you using yours for fun, real transportation, or both? Does your personal electric vehicle (PEV) have significant mileage on it? Tell me about it in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

Tailscale on My GL.iNet Mango OpenWrt Router

| Comments

Last month, I discovered GL.iNet and their line of routers. They have a lineup of hardware that starts with a $20 travel router up to $400 industrial routers, and they have all sorts of options in between. The best part is that every one of their routers ships with OpenWrt!

I knew I had to order one to replace my aging RAVPower Filehub Plus. The GL.iNet Mango was both the cheapest and smallest of their offerings, so I figured I would give it a shot.

I’ve been doing my best to install Tailscale on all my machines. When the Mango arrived, I wondered if I could get Tailscale running on it?

There were some problems!

The MIPS build of Tailscale was broken. It wasn’t compiled with floating point emulation, so it wouldn’t run on any common OpenWRT routers with MIPS processors. This made me put this idea on hold for a while.

Tailscale for MIPS ships with two binaries: tailscale and tailscaled. They add up to a combined total of 24 megabytes. My Mango router only has 16 megabytes of flash. That’s the total. There’s no room to properly install Tailscale on this thing!

I knew a working build would be available soon, but it was no longer at the top of my list of projects. I didn’t think to check back for a working Tailscale binary until last week!

I’ve discovered that you really only need the tailscaled binary to get connected and running, but that’s still more than 14 megabytes.

Memory is tight, too. This little guy only has 128 megabytes of RAM. Tailscale on my desktop has an RSS of about 20 megabytes. I figured it would fit, but I was still worried.

Hey Pat! Why aren’t you just following Will Angley’s awesome instructions?!

The simple answer is that Will’s excellent Tailscale on OpenWrt/LEDE guide didn’t exist when I started this journey. Even if it had, it wouldn’t have helped me too much. Will’s router has significantly more flash storage than mine. He seems to have more than 70 megabytes free, whereas I have quite a bit less than 3 megabytes free.

If you have a newer, bigger, fancier, more expensive OpenWrt router, you should absolutely follow Will’s guide! It is fantastic.

What I’ve done is rather quick and dirty.

I had to install a kernel module

Tailscale uses tun network device, and this isn’t install by default with OpenWrt. You can install it from the LuCI GUI interface, or you can install it from the command line:

opkg update
opkg install kmod-tun

The module should be loaded automatically after it is installed, and it should be available each time you reboot.

My first test

I copied the Tailscale binaries to my Mango’s temp directory. I wasn’t confident this would work. Tailscale was probably going to need 20 megabytes of RAM just to run, and I was eating up another 24 megabytes by storing the binaries in memory.

I was worried over nothing. It worked just fine! I was connected, pinging, and connecting to my other machines using ssh within a few minutes!

Will Angley’s blog post says that you need the tailscale binary to find the URL to authorize your new device. It didn’t even occur to me to use it. I was just watching the output of tailscaled, and I saw a line mentioning the authentication URL. I just copied it from there.

A more permanent solution

It would be awesome if I could build a Tailscale package for OpenWrt, but neither my Mango or my house’s aging OpenWrt router have enough storage for something this large. If I’m going to put Tailscale on the router, I’m going to have to get creative.

I thought about fetching the Tailscale binary from the Internet and dropping it in the temp directory each time the router boots up. Depending on how you look at it, this may have been a cleaner way to go, but I didn’t want to waste 15% of my poor little router’s RAM like this!

I decided it would be best to make use of the Mango’s USB port and put the Tailscale binaries on a random USB flash drive.

Could I have chosen a more gigantor flash drive?

On my first attempt, I tried using one of Brian Moses’s little flash drives that have his face on them. It seemed to work just fine.

I formatted the flash drive with an ext3 filesystem, copied the Tailscale binaries to the drive, and I plugged the drive into the Mango. OpenWrt automatically mounted the drive, and I had no trouble manually firing up Tailscale.

I added some Tailscale commands to the router’s startup script, then restarted the router. It wouldn’t mount the flash drive. In fact, the Linux kernel didn’t even see that there was a device plugged in. If I pulled out the drive and plugged it back in, it would mount right away.

Turns out that the Mango just didn’t like Brian’s drive. I used another random flash drive, and it mounts automatically when the Mango boots up.

My commands in rc.local did run on every boot, but Tailscale wouldn’t start. This is the line I added to my /etc/rc.local file:

1
(sleep 10; /mnt/sda1/tailscale/tailscaled -state /mnt/sda1/tailscale/tailscale.state > /dev/null 2>&1) &

The USB drive I’m using is comically large. If I were smart, I would have ordered the GL.iNet Creta instead of the Mango. It is only a few dollars more, but it includes a microSD slot.

I was thinking that I wanted the smallest, lightest, cheapest OpenWrt router I could find to carry in my laptop bag. It didn’t even occur to me to put Tailscale on it until after I opened the box!

Debugging solved the problem

This was a weird problem. Tailscale seemed to exit immediately when run by rc.local, but if I pasted in the same command, it ran just fine. I redirected Tailscale’s output to /tmp/tailscale.log, rebooted the router, and it started up flawlessly!

I was expecting to have to troubleshoot something I found in the log file. Nope. It was even easier than that!

Tailscale was just mad that stdout or stderr wasn’t pointed at anything. I redirected it to /dev/null, and Tailscale connects just fine when the router reboots!

Routing a subnet over Tailscale

To tell you the truth, I would have been happy to stop here. I don’t really need Tailscale on this router, but being able to ssh in and configure it remotely via Tailscale seems like it could come in handy.

I’ve come this far, though. I may as well figure out how to get Tailscale to route to my Mango’s subnet, right?!

It was extremely easy. I just followed the directions on the Tailscale site.

Once you have routing configured, I do not believe you need the tailscale binary any longer. If you happen to have just barely enough room on your router’s flash storage to fit the tailscaled binary, leaving the tailscale binary out might be a good option!

What the heck am I going to do with this?!

In the old days, I used to set up dynamic DNS on all my OpenWrt routers, disable password authentication on ssh, and open up the ssh port to the world. If I ever left anything at home, this would come in handy. If my one of my parents were having trouble, I could ssh to their router to check things out, too.

This is a much better solution to the same problem. It doesn’t rely on DNS. It doesn’t rely on the router being plugged into a real network. The router could be plugged in behind a NAT. It could be connected to my phone via WiFi or USB. Either way, I will be able to ssh in or hit the router’s web interface.

If you’re more nefarious than me, I’m sure you could come up with a creative use for a Linux box with Tailscale that only weighs a few ounces, is powered via USB, and costs only $20.

The GL.iNet 300M Mango vs. my home router

The Mango is an inexpensive, low-end travel router. Aside from its lack of 802.11ac and a few gigabit Ethernet ports, it is quite comparable to the router in my network cupboard at home. They both have the same amount of CPU, RAM, and flash.

My home router was already old when I bought it. I only intended to use it to add 802.11ac to our old apartment, but it can do NAT at around 450 megabits per second, so it is doing a find job on our FiOS connection. If you’re curious, it is an oddly shaped D-Link DIR-860L, and it doesn’t fit well in my cupboard!

My D-Link OpenWrt router has nearly 8 megabytes of storage free, while the GL.iNet Mango has less than 2 megabytes. Why is that?!

The Mango is built on top of OpenWrt/LEDE and the LuCI GUI, but they also have their own interface sitting in front of LuCI. I’m sure that takes up a bit of space, but surely not the entire 6 megabyte difference.

The Mango also has a button that allows you to reinstall the factory firmware. I assume that firmware image is sitting on an unused partition somewhere.

Conclusion

This is working quite well. Well enough that I may need to get Tailscale up and running the same way on my home router. Nearly everything in my house that I’d ever want to access remotely is already running Tailscale, but maybe I’ll have a weird reason to want to reach the PS4, Nintendo Switch, or one of the Amazon Fire TV devices remotely someday.

Bell Super 3R MIPS: Do You Really Need a $200 Helmet?

| Comments

I ride an electric unicycle. My Gotway Tesla can reach speeds of about 30 mph. I haven’t gone faster than 25 mph, but that’s still pretty fargin’ fast! When I fall, there is a good chance I am going to land right on my beautiful face. I could smash my jaw and lose a bunch of teeth.

That’s expensive. It would hurt a lot! We don’t want that to happen.

Do you need to spend over $200 on a Bell Super 3R helmet with a chin guard? Not everyone does, but here in Texas, I decided that I absolutely had to!

I didn’t see any helmets with chin guards at my local bicycle shop, and all the lesser downhill mountain bike helmets on Amazon seem to have a complete lack of ventilation.

My first helmet

Shortly after acquiring my Hover-1 XLS scooter, I ordered a simple bike helmet. It is a piece of styrofoam that straps to your head. I paid $18 for it, and I bet it was the cheapest bike helmet available on Amazon!

I was still using it right up until my Bell helmet arrived. If I’m not going to be on the street, and I’m not going to be going fast, I’ve been hoping that this cheap helmet would be enough to keep me relatively safe.

We’ll talk about why I’ve still been using it soon, but I do have to say that every time I wear the cheap helmet, I worry about what might happen to my face!

I also have a real motorcycle helmet!

I ordered a YEMA DOT-certified helmet the same day I ordered my Gotway Tesla. I figured that if there was a chance I’d be going 30 mph while standing up, that I had better have appropriate protection. Why did I choose a motorcycle helmet?

At first, I was looking at motocross helmets. When the weather here is under 50 degrees, I was finding that my eyes would water quite a bit when riding at 15 mph on my old InMotion V5F. That’s only going to be worse on the much faster Tesla, so I was also looking at goggles to go along with the motocross helmets.

That’s when I started pricing real motorcycle helmets. For less than the price of a motocross helmet and goggles, I could get a real motorcycle helmet with a flip-up windscreen AND a retractable sun visor. That seemed smart!

And it is smart. Kind of. I don’t enjoy riding with the motorcycle helmet as much as I do the Bell Super 3R, but it might be handy in the colder months. We’ll find out in January!

Why did you upgrade to the Bell Super 3R?

When it is 105 degrees outside with a heat index of 115 degrees, it is just too hot to wear a motorcycle helmet. It isn’t bad while you’re moving, but standing still or moving slow is just awful!

Two different people I’ve met on the local bike trails told me to look at this helmet. It is an expensive helmet, so I did more research.

I couldn’t find any inexpensive helmets with tons of ventilation like the Bell Super 3R. There are a ton of $60 to $80 helmets with chin guards that look like they’d work great—possibly better than the Bell! None of them have any ventilation.

I need that ventilation.

The Bell Super 3R might seem overpriced

This helmet seems to have more in common with my $18 bicycle helmet than my $80 motorcycle helmet.

All three helmets protect the top of your head with a big piece of styrofoam. The chin strap on the Bell helmet is beefier than the strap on my bicycle helmet, but they both use the same style of buckle. The motorcycle helmet has a fancy strap that lets you snug up the strap with a little ratchet mechanism, and it has a quick-release pull tab.

The motorcycle helmet is fit snugly on your head with lots of padding in the front, sides, and rear of your neck. The Bell helmet uses an adjustable plastic piece in the back just like the bicycle helmet, but it has two pieces of padding near the front of the chin guard to help keep your jaw from hitting the chin guard in a crash.

The Bell helmet has a removable chin guard

I bet this is where a lot of the expense and engineering have gone. I would prefer it if the helmet were a single-piece design like the motorcycle helmet.

I need the chin guard. I don’t expect to take it off. I’d feel slightly more confident in the helmet if the chin guard were integral to the helmet.

Visibility is much better with the Bell Super 3R

I had a much harder time mounting my wheel with the motorcycle helmet. This wasn’t helped by the fact that I had just upgraded to a bigger, heavier, more powerful wheel at the same time I started trying a very different helmet!

The Bell Super 3R has a much wider and taller opening in the front, and you can even partially see through the chin guard. This is a huge help.

My motorcycle helmet arrived before my new Gotway Tesla V2, so I was able to use it with the new wheel immediately. Learning to mount the much larger wheel was a challenge with the motorcycle helmet, because I couldn’t get a good look at what my feet were doing. With the Bell Super 3R, I have no trouble looking down to see what my feet are up to!

I feel friendlier with the Bell helmet!

In the motorcycle helmet, you can’t really see much of my friendly face. Am I grumpy? Am I smiling? Am I glaring at you? You have no idea. With the visor down, I may as well be the Stig, and even with the visor up, you’ll mostly only notice the helmet. I’m also harder to hear in the motorcycle helmet.

I don’t know what you do when you ride, but I wave at nearly everyone and say hello! I tried to do this with the motorcycle helmet, but it didn’t work well.

People are more likely to wave back, respond, and smile when I’m wearing the Bell Super 3R. Even with the COVID-19 mask under my helmet, people still seem more likely to notice that I’m friendly when wearing the Bell helmet.

Will I ever use the motorcycle helmet again?

I was assuming I would use the motorcycle helmet when I’m going on a ride that mostly involves real roads with traffic, or during the winter when I want to keep the cold wind out of my eyes. I went on a ten mile ride yesterday with my motorcycle helmet. It was the first time I’ve used it since I bought the Bell helmet.

It was so awful! If I look down while I’m riding, I can’t see my EUC at all. It was only 82 degrees outside, but it felt like I was breathing warm air unless I was moving fast. When wearing my COVID-19 mask, I was breathing warm air even over 20 mph.

The motorcycle helmet is heavier. I didn’t notice it much while riding in a straight line, but I could feel the massive weight every time I had to quickly scan left and right repeatedly at intersections.

The worst part for me was the wind noise. It was so loud! Between the wind, the extra material of the YEMA motorcycle helmet, and the lack of vent holes in the motorcycle helmet, I could barely hear my Tesla’s speakers announcing top speeds and battery capacity every few miles.

Maybe I’ll give the motorcycle helmet another shot when the weather gets cooler, but I’m guessing I’ll need to just invest in some goggles for the Bell Super 3R!

You can remove the chin guard from the Bell Super 3R

I did this once when the helmet arrived. It was easy to remove and reattach.

When it is attached, it feels quite solid. I doubt I will ever take it off again.

Conclusion

If you ride an electric unicycle, you need a helmet, and that helmet has to have a chin guard to protect your beautiful face. I am absolutely certain that a $60 mountain bike helmet from Amazon would protect me just as well as the $224 Bell Super 3R, because I’m not trying to break any speed records here. I’m doing my best not to cruise any faster than 20 mph, though I do make occasional sprints up to 25 mph.

If you live in a hot climate, there aren’t many helmets available with chin guards that also have plenty of ventilation. They definitely exist, but they weren’t available at my local bike shop or on Amazon. That’s as far as I looked, because I knew if my Bell helmet didn’t fit right, Amazon would let me return it!

What do you think? Are you using a mountain bike helmet with your electric unicycle? Is it the Bell Super 3R? Do you like your helmet? Do you think you’ve chosen a better helmet than me? Did I miss a cheaper alternative with ventilation on Amazon? Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!

Making My Life Easier With Tailscale

| Comments

For the most part, I haven’t needed access to computers in my house while I’m away. All my files are stored in the cloud using Seafile. Seafile works a lot like Dropbox, so there are replicas of all my files sitting on my laptop. Always having my blog posts and OpenSCAD files with me on my laptop has almost entirely eliminated my need to access anything on my home network while I’m away.

Every now and then, though, I do need access to something at home. Maybe I need to take a peek at OctoPrint to see how a 3D print is going. Maybe I need access to OpenHAB or Home Assistant to check on my home automation.

The lazy thing to do might be to forward some ports to the OctoPrint and OpenHAB servers. This would get the job done, but these web interfaces aren’t really meant to be exposed to the Internet. All it would take is one vulnerability in either one, and someone would have access to everything on my home network. That’s not cool!

I used Wireguard for quite a while

A few years ago, I set up a Wireguard server on my OpenWRT router. It worked great! My aging router was fast enough to encrypt data at around 70 megabits per second. That’s less than half the speed of my 150/150 FiOS connection, but it is still plenty fast enough. My Linux laptop and Android phone had no trouble connecting, and everything worked great.

Tailscale devices

Getting things working with this setup on my Android phone was a bit of a hassle. The Wireguard port on the router wasn’t open to the local network, because I didn’t want my phone and laptop accidentally taking that extra hop over the encrypted link while in the house.

My phone needed to be able to send its battery percentage and charge status back to OpenHAB whether it was in the house or on the VPN. I believe I solved this problem the lazy way by just hard coding the OpenHAB server’s IP address in the OpenHAB app and Tasker.

Why did I stop using Wireguard?

One night, we had an outage. Either the power went out long enough that the UPS ran out of juice, or the Internet was just down and Chris power cycled the router to attempt to bring it back up. I can’t recall exactly what happened.

Something went weird that night. The router started giving the Wireguard interface a higher priority than the FiOS interface. I did some minimal troubleshooting, but it just didn’t want to come up cleanly. I implemented the lazy solution: I hit the disable button on Wireguard, went back to sleep, and figured I’d troubleshoot it another day.

That may have been almost two years ago, and I haven’t looked at it a single time since then. Being able to VPN home was nice, but in practice, I rarely used it.

What is Tailscale?

Tailscale is a service that allows you to connect all your computers to a single mesh network using the Wireguard protocol. Each device running Tailscale gets its own IP address on your Tailscale network, and every single device has its own Wireguard connection directly to every other device.

I enjoy Tailscale’s vision for their product. They want you to run Tailscale on every single network device that you own, and they want you to talk to every device on your network using Tailscale. If you do it their way, all traffic between every device on your network will always be encrypted using Wireguard.

You might think that since everyone at your company sits in the same office that this just doesn’t matter to you. Even so, it will matter to the handful of people that work remotely.

If Alice and Bob are collaborating on a project at Starbucks, Tailscale will make it seem like they’re still in the office. What’s so exciting about that? Most companies have a VPN, so they can already do this.

The neat thing about Tailscale is that Alice and Bob can communicate with each other securely and directly over the local network. They can quickly and easily share large files or Git repositories without the slow Starbucks Internet connection being a bottleneck.

Sure, you could have had most of the advantages of Tailscale for decades as long as your company had competent employees managing your network. Tailscale is a service that can get just about anyone to this point with very little work, and I think that’s awesome!

My Tailscale journey

I’ve been slowly growing in to Tailscale. The first thing I did was set it up on my desktop, laptop, Android phone, and my little Windows 10 tablet. This was the extent of my installation for months, and I really didn’t get a chance to use it very often. I was home before the pandemic, and I’m home even more often these days!

Sometime later, I put my NAS virtual machine on Tailscale. When my new Prusa MK3S 3D printer arrived, I figured it was time to get OctoPrint onto my Tailscale network too!

Tailscale

OctoPrint is the sort of thing that I set up and forget about. Sure, it has some pretty visualizations and webcam options, but at the end of the day all it really needs to do is pipe gcode over a serial port. When it is working, I don’t touch it.

Setting it up and forgetting about it meant that it was still running Ubuntu 16.04, and Tailscale doesn’t officially support this ancient Ubuntu release. It was easy enough to upgrade Ubuntu and install Tailscale.

This is where I am today, and it covers all the devices I currently need access to remotely.

Is Tailscale open-source?

No, but Tailscale has released an open-source client. I haven’t tried it. I’m using the closed-source build direct from Tailscale. It sounds like the code builds cleanly for Linux, and you may be able to make it work on the various BSDs and Windows.

An open-source Tailscale server is not available yet. It definitely looks like an open-source server implementation is on Tailscale’s roadmap.

Tailscale’s server is really only needed to help the client devices find each other and get connected. None of your network traffic passes through the Tailscale servers.

How much does Tailscale cost?

Tailscale is free for a single user and up to 100 devices. At the moment, though, I’m under the impression that many of the paid features are open to everyone. This may change at any time, though, so I wouldn’t rely too heavily on it!

The next tier is for teams, and it costs $10 per user per month. The tier above that bumps the device count to 500 devices, and the price goes up to $20 per user per month.

I’m just looking at Tailscale’s pricing page. I don’t know any more than you do, and I’m really only guessing about what some features in each bullet list actually means. If you need more advanced features than those available in the free plan, you should check out the pricing page.

Conclusion

I am a fan of Wireguard, and I am enjoying Tailscale. I bet it took less than 15 minutes to get Tailscale installed on two devices, and it doesn’t take more than 5 minutes to add another device. If you have no idea what you’re doing, it may take a bit longer, but I bet just about anyone could follow their simple directions.

What do you think? Are you using Tailscale? Do you prefer Zerotier? Would Tailscale solve some of your problems? Are you waiting for a completely open-source Tailscale implementation before you try it out? Wouldn’t Tailscale be a fantastic way for you to access your Home Assistant server remotely? Let me know in the comments, or stop by the Butter, What?! Discord server to chat with me about it!