Teardown: Creality Wi-Fi Box

Creality, makers of the Ender series of 3D printers, have released a product called Wi-Fi Box meant to cheaply add network control to your printer. Naturally I had to order one so we could take a peek, but this is certainly not a product review. If you’re looking to control your 3D printer over the network, get yourself a Raspberry Pi and install Gina Häußge’s phenomenal OctoPrint on it. Despite what Creality might want you to believe, their product is little more than a poor imitation of this incredible open source project.

Even if you manage to get it working with your printer, which judging by early indications is a pretty big if, it won’t give you anywhere near the same experience. At best it’ll save you a few dollars compared to going the DIY route, but at the cost of missing out on the vibrant community of plugin developers that have helped establish OctoPrint as the defacto remote 3D printing solution.

That being said, the hardware itself seems pretty interesting. For just $20 USD you get a palm-sized Linux computer with WiFi, Ethernet, a micro SD slot, and a pair of USB ports; all wrapped up in a fairly rugged enclosure. There’s no video output, but that will hardly scare off the veteran penguin wrangler. Tucked in a corner and sipping down only a few watts, one can imagine plenty of tasks this little gadget would be well suited to. Perhaps it could act as a small MQTT broker for all your smart home devices, or a low-power remote weather station. The possibilities are nearly limitless, assuming we can get into the thing anyway.

So what’s inside the Creality Wi-Fi Box, and how hard will it be to bend it to our will? Let’s take one apart and find out.

Surprisingly Elegant

It probably won’t come as a huge surprise given the low purchase price, but there’s not a whole lot to the Wi-Fi Box. Creality wanted to produce this product as cheaply as possible, and it shows. The package doesn’t even include a power supply or the required micro SD card, though oddly enough they did pack in two USB cables. It seems clear that the company didn’t want to invest more than was necessary into what’s ultimately an experimental product. Some users have even reported receiving a Wi-Fi Box for free when purchasing a 3D printer from Creality; with that kind of business model, cost reduction is certainly the name of the game.

The WiFi antenna is glued to the case, and must be disconnected to remove the PCB.

Even so, the device itself doesn’t feel cheap. In fact, quite the opposite. The plastic enclosure is surprisingly thick and rigid, and feels more like the injection molded case for a power tool. It’s probably overkill for a little blinking box that will live an easy life perched next to a 3D printer, but I’m certainly not complaining. It’s also interesting to note that the case is one solid piece of plastic, and not a clamshell. To remove the PCB, you have to pry off the front panel and slide it out.

With the board out of the case and the metal RF shields removed, we can see just how little it takes to get the Creality Wi-Fi Box going. The MediaTek MT7688AN SoC features a 580 MHz MIPS CPU as well as integrated controllers for USB, SD, Ethernet, and WiFi, while the Winbond W971GG6SB provides 128 MB of DDR2 SDRAM. The SoC also has a few GPIO pins, which we can clearly see have been broken out to the four status LEDs on the front of the board. Add in magnetics for the Ethernet port and some filtering on the micro USB power supply, and you’ve got yourself a fairly capable Linux system in a compact, energy efficient, and cost effective platform.

Of course, it’s not exactly a speed demon. Even the Raspberry Pi Zero could run circles around this little box. Which ultimately is our first clue as to why Creality didn’t use a customized version of OctoPrint for this product. Hardware that can run it effectively is simply too expensive; to hit their desired price point, they had to come up with their own simplified take on the concept.

Digging In

So at this point we know it’s a 580 MHz Linux box with 128 MB of RAM. Not terribly exciting in 2020, but not exactly a paperweight either. But of course it doesn’t matter how powerful the hardware is if we can’t get access to the OS. The next step is figuring out how badly Creality want to keep us out.

Our first break comes from the fairly conspicuous serial port header on the bottom of the PCB. After hooking up a USB-to-serial adapter and stumbling upon the correct speed of 57,600 baud, we can see the U-Boot and Linux kernel messages go by, and eventually we find ourselves at a login prompt. Unfortunately, we don’t know the password.

Now anyone who’s familiar with embedded Linux hacking knows this is where you bring out the modified U-boot environment variables to start the system in single user mode. But try as I might, I could never get into the U-Boot command line. After a solid 30 or 40 attempts to interrupt the bootloader before it loads the kernel, I’ve come to the conclusion that either my timing is exceptionally poor or access to U-Boot has been disabled.

Where does that leave us? Well, right next to the serial port you’ll find the 16 MB Boyamicro 25Q128 SPI flash chip that holds the firmware. You could pull the chip, read its contents, modify the filesystem, and flash it back. If you plan on doing a lot of firmware fiddling, you could even install a socket for the chip to keep the good times rolling.

Luckily, there’s an easier way in. A peek into an official firmware update file from Creality shows the gadget will look for an install.sh Bash script on the micro SD card and run it during startup. Any commands we put into this file will be executed as root, which allows us to easily change the password without breaking out the soldering iron:

#!/bin/sh
echo 'root:hacked' > /tmp/pass
cat /tmp/pass | chpasswd

With this file on the SD card, we’re now able to log into the root account over the serial port and start exploring.

It’s a Router, Jim

When I first heard about this device, I had high hopes that it might actually be running OpenWRT. Unfortunately, what we actually have is a very minimal BusyBox environment that was clearly designed for a wireless router. I know this because it seems all of the router functionality is still intact, it’s just been commented out wherever necessary to keep it from being visible in the web interface or starting automatically.

The commented out pages are still available, they just don’t show in the menu.

Similarly there are many programs and scripts on the system that are totally unnecessary for controlling a 3D printer. From emulating an iTunes server and streaming MP3s to negotiating with 3G modems, the Creality Wi-Fi Box has plenty of hidden features that are locked behind an intentionally limited web interface.

Software Freedom

In summary, we’ve got a fairly well documented SoC, a functioning serial port, an official firmware update file to study, and an easy way to get root access. There’s even an existing MT7688 subtarget for OpenWRT. All the pieces are here, they just need to be put together.

Luckily, we aren’t the ones that have to do it. A developer by the name of George Brooke, AKA [figgyc], has already done the work for us. Even before I was able to finish writing this post about the hardware, he’d identified and fixed a few issues (such as adding support for that Boyamicro 25Q128 flash chip) that were preventing OpenWRT from booting on this board. Utilizing the stock firmware update mechanism, you can install his fork of the popular embedded Linux distribution on the Creality Wi-Fi Box without making any hardware modifications. He hasn’t figured out how to go back to the stock firmware yet, but frankly, who cares?

With OpenWRT installed, the Creality Wi-Fi Box becomes a true general-purpose computer. Thanks to a vast array of packages and an active development community, this simple firmware swap turns a $20 gimmick into a useful tool.

Escaping the Walled Garden

After spending some quality time with the Creality Wi-Fi Box, I can’t help but be reminded of the Recon Sentinel we took a look at a few months back. Both Linux-based devices offer us an easily reusable hardware platform, as little to no attempt was made to limit the user’s ability to install more capable software on them. Even if it’s more likely attributed to happenstance than any genuinely altruistic goals on the part of the developers, we should be so lucky to have more commercial devices that can be easily modified by the end user.

But I wonder if the similarities might ultimately go a bit deeper. The Sentinel was designed to lock the consumer into an expensive service contract, thereby generating far more revenue than the sticker price of the gadget itself did. Could Creality be planning something similar with the Wi-Fi Box? Admittedly we haven’t seen any indication of that yet, but it stands to reason that you don’t give away hardware at or below cost unless you’ve got a plan to make that money back in the future.

A clue may be found in the product announcement for the Wi-Fi Box. It describes the “Creality Cloud”, a service that “offers an energetic and creative community where users can download unlimited STL files for free, share their models, and the most important feature, online slice & print”. While the models offered on the service are free now, it’s not hard to imagine that paid models could be introduced down the line. By using the Wi-Fi Box, Creality may hope customers become dependent on their unique software ecosystem. This could allow the company to create a monetized 3D model repository, something their rivals in the marketplace have thus far largely failed to accomplish. Only time will tell.

In the meantime, any hacker or maker looking for a new project would do well to pick up one of these cheap devices. Just make sure to immediately replace its proprietary firmware with an open source alternative that puts you back in control of the hardware you paid for.

41 thoughts on “Teardown: Creality Wi-Fi Box

  1. Ah yes, Mediatek how could we forget thee, beloved motivator of cheap Walmart eBook devices that weren’t quite android back in the day. I might still have one of those… oh heyyyyy did you dump the ROM? LOL

  2. Wow, a Chinese company reusing manufacturing processes and parts, cutting corners and giving you an unworkable piece of garbage that does a better job when doing NOT want it was designed to do? Imagine my shock!

    I will say I’m very concerned for Naomi’s 3DPrintMill, otherwise known as the CR-30. The only reason why they include the little WiFi camera separately is because that cheapo board could never transcode from a camera on it’s own. If this is the effort they put into a product (minus any privacy concerns from being based in China), I’m very concerned with her staking her reputation on such a shoddy company. The Ender 3 may be fairly good, but after sales support from Creality can be downright pathetic. Sure, if it had PRUSA slapped on it it’d be triple the price, but it’s practically guaranteed to be a rock solid, well documented, open source assembled printer.

    1. It seems pretty obvious she’s on the Creality payroll at this point. She pretends to be just an independent fan, but nobody is that loyal to a single company without some $$$ changing hands.

      As for “staking her reputation”, it’s not like this is some new idea. It’s just a cheaper version of the PrinterBelt, and there’s another almost identical machine on Kickstarter right now competing with it. I would be extremely surprised if she had anything more than cursory input on the design of this printer. Claiming it’s her creation is just another aspect of the advertising deal they have with her.

      1. That’s not entirely true (I’m not a simp I swear). On a personal basis, perhaps the heads of Creality can be more trustworthy than the underlings, butbthe underlings manufacture the parts and assemble the printer. My MK3S kit came with testing graphs of the hotend and a certificate of inspection with a name on it, and ironically I met someone in Prusa’s email domain with the same first name. Of course, I don’t expect they’ll remember my name out of the thousands of kits they put together, but the moral is that Prusa’s quality is something to put real weight when making a purchase decision. Creality’s lack of quality and failure to provide for their previous campaign (which is now bleeding onto the CR-30 page) actively warded me away from the printer.

        It’s not a new idea, but she did work with the creators of the belt mill concept and it’s refinements. Karl and Bill (the latter made one of the very first belt printers, the Black Knight) gave her their blessing and advice as she created the CR-30. As for the other printer you’re talking about, I think you’re referring to the iFactory One. I was also very curious about that, but I decided for my own belt mill, should I get one, that an 8 bit board that could be controlled by Octoprint would be better. On the campaign goals, I was very concerned that the printer wouldn’t be open sourced, especially as they were nowhere near the $5 million mark. The Creality print box up above, even with the WiFi camera are no match for Octoprint and are honestly pathetic. Their inclusion in every CR-30 made me want to forcefully opt out, but there was no option to remove the box from the backer kit. And finally, Creality isn’t known for great firmware or slicer support, and what really broke my spirit on it was a spat she got in with Marlin’s lead firmware developer who was previously assisting her with the project. At that point, with 3D printers being so sensitive to slicer profiles and firmware/software, I couldn’t justify the purchase.

  3. Eons ago I bought one of those wacky iOpener gadgets, without a credit card they could bill for their service, hacked away, and had an XP all-in-one that was not completely useless. They went broke because so many of us diverted the hardware from the intended low effort internet gadget your parents would have used (it had a pizza key. Lame.), Modem only, but of course a USB ethernet adapter, and then a WiFi adapter, cured that. You know Creality will similarly also lose $ on these, and that’s the risk of such projects. Bah. Humbug.

    1. You think they are losing money on this? It is realy old hardware, basically junk. I’m guessing for $20 they make good profit, even for those $9 on aliexpress they may not be losing money.

    1. They literally are showing you the code and you can always listen with wireshark if you are really paranoid. It’s crazy all these American bootlickers are out in force.

      China doesn’t need to steal data that way when instead they can just hack Facebook or Twitter or Comcast or your power grid.

      While America actually got caught selling backdoor communications tech through Switzerland.

  4. I was messaged and offered a free box by a young Chinese Woman. I wasn’t sure who she was but she said wanted to thank me for my support in a Creality forum. I really have no use for the box as I print over a long USB connection and don’t ever plan to print wirelessly.

  5. How to create OpenWRT installation? I’ve cloned the repository and want to make an installation but I get a lot of options where I don’t have the faintest idea what to choose.

    1. You have to choose the right target system (Mediatek Ralink mips), subtarget (mt76x8) and target profile (creality wb-01) If you want to install octoprint You’d also have to tick some kernel modules and packages like python since those cannot be installed later on custom firmware. I’ve managed to get openwrt and octoprint 1.5.2 on it. Currently I’m troubleshooting the serial connection with the printer (ender 3 v2) But I think I found the problem (my printer needs ch341 drivers which I forgot to tick while building firmware). I’ll redo the process to see if this solves the connection problem. HEre are the tutorials I followed: https://community.octoprint.org/t/assorted-guides-as-formerly-maintained-on-the-github-wiki/21146/8 and https://community.onion.io/topic/1569/octoprint-3d-print-server-on-omega2/2 and of course lots of google

      1. I created an OpenWRT firmware with the settings you specified. It has done something but I don’t see the device in my network. I hope I did the right thing and not destroy it…

        1. You need to connect with an Ethernet cable first. Then try ssh root@192.168.1.1 to get access to the openwrt installed. You need to edit the config files for network wireless and firewall located in /etc/config to make it wireless

          1. If I plug the Ethernet cable into the router, I can’t find the device in the network. If I connect the Creality Box directly to the laptop via Ethernet, SSH (root@192.168.1.1) works.

            https://imgur.com/a/85TMe7r

            What I read on the OpenWRT forums, I now have to install updates but this is not possible because I connect the Creality Box directly (no connection to the internet). Somehow I have to get this working but I’m happy to be able to use SSH directly and see a sign of life. I was convinced that I had destroyed it

            Thank you jonah1024

          2. You need to edit the network, wireless and firewall config files from /etc/config/ in order to be able to connect to your local wifi network and internet.
            Check this:
            https://forum.openwrt.org/t/connecting-to-wifi-with-ssh/41586

            Add a config interface wwan in network file and config wifi-iface in the wireless file with your router details. Also enable the radio in the wireless file. In the firewall create a config zone with the same option name and accept everything.

            Be careful with the type of wifi security and the bssid/mac of your router in the wireless config file.
            Here is my discord: jonah1024#4040

          1. How did you flash over ssh? just put the tar.gz file you compiled on a SD card and plug it in the box. The stock firmware will run the install and reboot into openwrt. After that you’ll be able to ssh through Ethernet.

          2. Yeah sry that was a bad writting, I flashed through SD card but I meant I can’t connect after flashing, can’t connect through ssh over ethernet. I connect directly with ethernet to the box, change my network settings so it’s not dhcp, disable the firewall, but I get connection timed out on 192.168.1.1. The creality box leds are flashing blue, I guess something its working there but idk what could be wrong

  6. Nice touch with the “keep the good times rolling”!
    During the kickstarter campaign for the CR-6 SE/Max, Creality replied to questions with canned answers that typically ended with that phrase.

  7. I’ve finally managed to install octoprint on this box. I can control the printer and It works pretty well providing the weak cpu. Will do a print test these days to see how it performs.

  8. # netstat -n
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 192.168.1.5:33908 47.89.145.136:1883 ESTABLISHED
    tcp 1 0 192.168.1.5:45689 47.246.22.179:80 CLOSE_WAIT

    Please don’t mess with my print.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.