If you’ve tried to buy a Raspberry Pi recently, you’ll have noticed that that is actually quite
hard to do right now. For example for the 4GB Raspberry Pi 4 that used to sell for around 50
bucks, the cheapest offer that actually has them in stock is starting to demand scalper
prices closer to 100 bucks. So if you want to run OctoPrint and still need a quality power supply
and USB cable, a webcam and SD card, you could end up spending close to 150 bucks. But what if I told
you there is a cheaper way. What if you could run OctoPrint on your old Android phone that you’ve
got sitting around anyway? Or, in fact, you can easily buy a brand-new phone or tablet for what
you’d be paying for a single Raspberry Pi and that is going to already come with a power brick,
USB cable and a much better camera built in than what you’re going to get with any webcam. And
that’s also going to give you a way of controlling OctoPrint without pulling out an
additional device. So today we’re going to try out Octo4a, which lets you run a full OctoPrint setup
including plugin support and everything on pretty much any Android phone and the only thing you need
is a USB adapter like this one for five bucks. You know what else you can get for five bucks?
A custom PCB or professionally 3D printed parts from JLCPCB, who are sponsoring today’s video.
This is the latest PCB that I designed and ordered from them, and as always,
I got it with the option of having all the SMD components already populated, since they charge
no fixed fees for that, and then I soldered in my own through-hole parts and modules
that I can move between projects. But JLCPCB are now also rolling out a 3D printing service
where you can get parts printed in one of two super reasonably-priced engineering resins,
sintered out of PA12 or in full-color Nylon. So whether you’re looking to
add a precision-printed case to your projects or just need some functional parts sintered,
check out JLCPCB’s service at the link in the video description below.
So for today’s test I’m not going to use my daily Pixel 5, because I don’t want that to be tied to
a printer for hours at a time. Instead, I’m going to be using this Xiaomi Poco F2 I had previously,
it’s got an 8-core processor clocking up to almost 3GHz, as well as 8 GB of RAM,
so it’s easily faster than any Raspberry Pi. Unfortunately, it was the second Xiaomi phone that
just randomly died on me. This one simply doesn’t charge anymore, but it’s otherwise technically
fine. Thankfully, though, we can pretty easily work around the broken charge feature on the
Poco F2 Pro, so let’s do that real quick. The back is already off, so all I have to do is to take off
the plastic shroud and unsnap the connectors like little legos, and then solder in a little Li-Ion
charger PCB directly to the battery terminals on the back. If you’re going to attempt something
like this, please make sure you know what you’re doing or ask someone who does, because
shorting out or damaging a lithium cell like this can go catastrophically wrong
pretty easily. So here we go, a “perfectly” usable Xiaomi Poco F2. I mean, I guess you could use it
like that, it’s already abominably unwieldy as-is. As a second phone, for reference as to how old and
how weak of a phone you can still use I’m also going to throw in this Google Samsung
Galaxy Nexus. This thing is from 2011, has a 1.2GHz dual-core processor and 1 GB of RAM.
Performance-wise, it should be roughly comparable with a Raspberry Pi 2, which already isn’t exactly
recommended hardware for running OctoPrint, especially once you start running plugins.
And as a middle ground, I’m also going to chuck in an LG G6, which was already a very affordable
phone brand new, but you can now get them used for next to nothing. 2. something GHz quadcore,
4GB of RAM. This should be about comparable or actually a bit faster than a Raspberry Pi 4.
So, next up, the question is of course, how do you actually connect to your printer, because these
phones don’t exactly have a USB port that you can just plug stuff into. Except that, they do.
So Android phones generally support what is called USB-OTG, USB on-the-go, so with a simple adapter
like this one, you can turn the USB port on the phone into a full-size and fully featured USB host
port. You can actually plug all sorts of stuff into this port, including USB hubs, thumb drives,
Ethernet adapters or webcams if you so desire. So this is really just a simple plug-and-play
operation. You plug in the adapter, you plug in whatever device you want and you’re good.
But you may have noticed a little challenge with that: How do you keep your device charged? Because
as is, you’re taking up the only option of supplying power to the phone - with
the built-in USB port. With the POCO, of course, we have conveniently already worked around that
by completely bypassing the regular charging circuit, but for normal devices, you can get
either a little Y-cable like this for about 5 bucks, which gives you the USB host port,
but it also lets you plug in your regular charger. Make sure the cable you’re getting
actually supports charging the phone, some just supply power to device you’re connecting.
For newer devices with a USB-C port, thanks to laptops not having ports anymore,
you can now pretty easily find these dongle adapter now for about 10 bucks, which again,
give you the host port, a USB-C power delivery charge port, and often also HDMI, which is
probably not going to work on a phone, but you can also get them with a wired ethernet port built in
if you don’t want to rely on WiFi, and those Ethernet ports will work with your Android phone.
Alternatively, you could also use a wireless charging puck and fasten that to the back of your
phone, but I have a feeling that that probably isn’t the best solution.
Since we’re going to be using the phone’s built-in camera as a webcam, we also need some way to mount
it in a convenient location, and you can totally print a mount or use whatever solution you
would have used for a webcam. I took a look through my camera rigging bin and picked out
this superclamp, magic arm and spring-loaded phone mount and now I can position this however I want.
I’m putting all the affiliate links to this stuff in the video description below,
by the way, if you’re interested. Okay, so that’s the hardware covered,
let’s move on to software, and this is actually the easy part. All you’ve got to do is download
the apk for Octo4a from github and install it. An apk is essentially an installer file
for Android. Now, your phone is going to ask you whether you actually want to do this.
The thing is, typically you get your Android apps from the Google Play stores, but
because of the way Octo4a works, it can’t actually be distributed through the Play store. Now, there,
the apps are at least somewhat checked for whether they do malicious stuff or not. If you “sideload”
an apk, you’re not getting any of those checks anymore, and it’s essentially the same as running
some software you downloaded onto your Windows, Mac, Linux, BSD, Solaris or TempleOS computer.
I’ve written a couple of emails with Filip who makes Octo4a, and he seems like a nice guy, but
just in case it turns out that he isn’t - don’t blame me. Octo4a is free open-source software,
so while that’s not a guarantee that the apk is good, too, it’s a very good sign at least.
Once you’ve installed and opened up Octo4a, it’s going to pull a fresh version of all the files
that OctoPrint needs to run as well as OctoPrint itself. There are a couple of things that you
can - and still should - configure before you start diving into OctoPrint. So head over to
the settings tab and hit “download dependencies” - plugins like Octolapse need some extra files to
run, and if you don’t click this thing, you’re going to get an issue when you try to install
Octolapse. Next, head down and configure your camera. I like to use a 1920x1080 resolution
while limiting the fps to 15 - this is going to save a lot of bandwidth and processing power,
but you still get a really crisp image for checking your prints and for timelapses.
One thing that I got sometimes is that when I had the phone in portrait orientation
and then rotated it into landscape while Octo4a was already fully running,
it would actually show a portrait crop of your frame, so
when you set up your phone, orient it correctly, and then turn on the camera server in Octo4a.
If you want, you can also enable “start on boot”, or even turn on SSH access
into the OctoPrint environment, but you’re probably not going to need that.
In any case, you can now open up your favorite browser on your computer, point it to the address
and port Octo4a shows you and you should get the OctoPrint interface we all know and love.
Now, honestly, from here on out, the setup is basically the same as with a regular OctoPrint
install on a Raspberry Pi. Go through the setup assistant, pick a password, etc.
Like I said, it’s a full-featured version, it can run plugins, you can do timelapses, all of that.
So for the rest of the setup, jump over to my latest video on OctoPrint - which I’m
going to link to at the end of this video. For now, there are a couple more details
we’re going to need to address in Android so that Octo4a and OctoPrint actually run reliably. So
the first thing is adjusting energy saving options. Especially newer devices with custom
Android builds like the Xiaomi devices have very aggressive power-saving measures once the screen
turns off, so what can happen is that Octo4a, and with it OctoPrint, just get completely suspended,
which, as you might guess, isn’t great when it’s running a print. Where exactly you’re going to
find those settings is going to depend on your exact device, but make sure to check through
the app list and check the settings for Octo4a, make sure it’s set to “unlimited” battery use and
not to “optimized” or anything like that; then go in through the battery menu point in settings and,
again, make sure to turn off any “adaptive”, “optimized” or “smart” options for the whole
device and also check specifically for Octo4a again, and then if your device has
some manufacturer-specific smart-ass assistant settings menu, that can often also hide some
more power settings that could mess things up. Octo4a also automatically asks you if you want to
change one of the settings to allow it to always run in the background and you should definitely
press “allow” here. The next screen to open up battery settings doesn’t really do anything yet,
but if you dug through the menus and changed everything you could, you should be good here.
But if you then still run into issues with too aggressive power management, you could
try enabling the option to always leave the screen on while the phone is plugged in, which you can do
in Android’s developer options, but keep in mind that if your phone has an OLED screen,
because it’s going to leave the screen on, it’s probably going to have some pretty nasty burn-in
after just a couple weeks of use. At least set it to minimal brightness if you do that.
So what is it like actually using OctoPrint running on a phone? Well, it’s about as expected.
Let’s start with performance. I tested how long it takes to upload a larger 60MB gcode file to get a
general sense of how well things are working, and there are some real differences. The Poco
F2 being the device with the most raw horsepower finishes first at just three seconds until the
upload is complete. The LG G6 and Raspberry Pi 4 come in at 10 and 11 seconds, which is slower,
yes, but still perfectly usable, while the Galaxy Nexus takes 2 minutes and 30 seconds. I mean,
if you’re just using your slicer’s background upload and then have the print auto-start, that’s
probably fine, but unless you’re just printing small, simple parts, that’s probably going to be
pretty painful in the long run. All of this was tested 2m away from a WiFi 5 access
point and after giving the phone and OctoPrint some time to calm down after starting up.
Now, for website load times, all three phones and the Raspberry Pi were almost instantaneous so
I don’t know if there’s some caching going on or if OctoPrint’s interface is just that well
optimized, but you still feel the difference in how long for example the settings menus
take to save and just in general snappy-ness. Now, that might not have disqualified the Galaxy
Nexus yet, but because it’s also running a rather old version of Android - Cyanogenmod
with Android 4.4 - the entire experience was rather buggy, too. I did get the camera
feed working and the printer connected at the same time once, but between the app crashing,
not seeing the printer’s USB interface, or just generally weirding out, it wasn’t fun to use.
But hey, this thing is ten years old. I feel like anything just a bit newer would actually work.
And if we look at the experience you’re getting with the four-and-a-half-year-old LG G6 and the
Poco F2 Pro from last year, it’s pretty much flawless. The only thing that I could find is
that with the Poco, you can’t use these passive adapters, and you have to use a
dongle dock like this with the power plugged in. The G6 works without the power plugged in,
the Poco doesn’t, that might be down to the broken charge circuit, but once you figure that out,
it’s literally just like any other OctoPrint install. The interface is snappy, it’s reliable,
plugins work, and with stuff like OctoLapse now having access to the phones’ main cameras,
you actually get really crispy timelapses through that. It’s a really good experience.
I tried if there would be hiccups when you do stuff in the UI,
or upload files while a print is going, but it’s just really smooth everywhere.
And as a bonus, you can even open up a browser on the phone, point it to localhost:5000
and you get the full OctoPrint interface, or a mobile-friendly one if you use the Touch UI
plugin. You could even use a tablet and just have that be your main printer touchscreen.
I think Octo4a is a really good solution, to the point where honestly,
if you’re just looking to get OctoPrint running, I would rather buy a cheap Android phone now
than mess around with the Pi, printing a case for that, trying different USB cable because
some aren’t reliable and so on. Octo4a works well, it’s pretty easy to set up, in the best case,
you don’t even have to buy anything for it and give a second life to a used device. I like that.
If you like that, too, make sure to support OctoPrint and Octo4a - they’re projects that
give away their work for free, so show them some appreciation if you find them useful.
Of course, I’d also appreciate a thumbs up on the video, but hey,
I’m just the messenger. Thanks for watching, keep on making, and I’ll see you in the next one. Bye!