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!