Thingino Teaches Cheap IP Cameras New Tricks

Wait 5 sec.

I recently found myself in the market for a few IP cameras to keep an eye on my Prusa 3D printers, and quickly found that the options on the market weren’t exactly ideal. Prusa does offer up an official camera, but the price for a pair of them was a bit more than I wanted to spend on the project. Conversely, there’s no shortage of cheap network-connected cameras available online, but they come with expenses of a different sort, namely proprietary software and cloud services I didn’t want or need.Somewhere in the deep and dark recesses of this particular rabbit hole, I came across a Reddit post mentioning how a camera running the community-developed Thingino firmware could be plugged into Prusa’s remote printer monitoring scheme. It wasn’t a project I’d heard of previously, and sure enough, a search of the Hackaday back catalog showed we’d never come across it before.My interest was already piqued, but the discovery that I already owned a supported camera sealed the deal. It was time to explore a new entry in one of my absolute favorite project categories: an open source replacement firmware that turns a cheap consumer device into something more than the sum of its parts.Joining the Thingino ClubThingino is a Linux-based firmware for cameras based on the Ingenic system on a chip (SoC), and as of this writing, boasts support for 166 cameras. There are some interesting entries in the compatibility list, but perhaps the most notable are the dozen or so cameras from Wyze, as they have enjoyed considerable commercial success and can be had cheaply on the second hand market.If like me you happen to have a Wyze Cam 2 collecting dust, you’re in luck. As I soon found out, these devices happen to be supported by what the project calls a “No-Tool Installer.” That is, the installation mechanism for Thingino is the same as it is for official firmware updates: place a file on the micro SD card, power up the camera, and wait.The situation is somewhat more complicated for most of the other devices on the list, however. While firmware images are provided for the devices that are officially supported by Thingino, most of them don’t have such a user-friendly installation procedure.Depending on the camera, installation can be a bit…involved.Depending on the specific camera, you may have to crack open the case and connect a USB-to-serial adapter to the board to get the image flashed. On some models, you’ll even have to pull the flash chip off the board and pop it into an external programmer. The project’s wiki covers how to perform the installation on a per-device basis, so you can get an idea of what’s involved before diving in.Now, I have complete confidence that the average Hackaday reader is more than up to the task of installing Thingino on even the most stubborn of targets. There’s an excellent chance many of you have a USB-to-serial adapter within arm’s reach at this very moment, and a few readers probably even have their CH341A chip programmer connected and warmed up from some other project.Still, there’s a difference between what one is capable of doing and what they actually want to spend their evening working on. So if you’re looking to get in on the action as quickly and as easily as possible, the current recommendation from the community is to pick up the Cinnado D1.That’s what I ended up doing after kicking the tires a bit on the Wyze Cam 2. Amazon had them for $10 each, and they arrived on my doorstep the next day. Put the firmware image on the SD card, stick it in the camera, and you’ll be basking in the glory of open source in just a few minutes.Opening the Toy BoxThe first-time setup for Thingino will be familiar to anyone who’s configured a modern smart gadget: wait until a new WiFi device pops up, connect to it with your phone, and soon you’ll be presented with a configuration page where you can give the camera a name and point it towards your wireless network. To be clear this doesn’t strictly need to be done with a phone, and a laptop or other WiFi-enabled computer could technically get the job done.Once the camera has this basic configuration information, it reboots and connects to your network. From there you’ll be doing most of the setup and operation of the device through the web interface, though more seasoned penguin wranglers can SSH in and get full access to the underlying system.At the most basic level, Thingino offers up RTSP video streams as well periodic still snapshots to any device on the network. If that’s all you need, awesome. You can pretty much stop reading here, point vlc or mpv to the camera’s IP, and be done with it.But if you want to dive a bit deeper, there’s an incredible amount of capability built into this firmware. You can enable on-device motion sensing, and configure what you want the camera to do when something triggers it. For example, you could set it to push the video clip to your FTP server and fire off an MQTT message when something passes by. It supports connecting to VPNs, multiple video streams, OSD customization, day/night detection, timelapse recording, and Home Assistant integration.Although support is limited to just a few chipsets, Thingino even works with USB Ethernet adapters for situations where wireless won’t cut it. At the other extreme, the camera can also be setup to work independently of any network by operating as an access point for client devices to connect to directly.For cameras with pan and tilt motors like the Cinnado D1, you can slew the camera around from the web interface and tweak the speed and acceleration settings to your liking. You can even have it remember specific camera positions and return to them later.There’s truly a dizzying array of features and options in Thingino, and even after playing with the firmware for a week or so now, there are still menu options I haven’t fully explored. It reminds me of the first time I ran DD-WRT on the Linksys WRT54G in that the firmware elevates the device to a whole new level, introducing new capabilities that normally wouldn’t be present on a consumer-grade product.Complete Control, If You Need ItAs impressive as the web interface of Thingino is, that’s really only scratching the surface of what the firmware can do. Underneath it all there’s a full Linux operating system ready to do your bidding, and once connected over SSH you’re free to do whatever you wish. There’s even a sysupgrade tool that lets you pull down the latest firmware release and install it on the live running system, just in case things have been working too smoothly and you’re in the mood for some excitement.It’s this low-level access that brings the story full circle in my case. Remember that I started down this path because I wanted to push images from the camera up to Prusa Connect. While there’s actually official support for Prusa Connect in the Thingino development branch, it hasn’t yet been merged into the mainline. In the meantime, I’ve got a Bash script that runs on the camera and uses curl to push images into Prusa’s API.While the vast majority of users will likely never have to SSH into their Thingino camera and run their own scripts and software from the terminal, the fact that the option is there is what’s important. This project is an excellent example of how you can simultaneously provide everyday usability with the freedom demanded by more advanced users.If you’ve got an old camera that you end up installing Thingino on, or if you’ve already been running it and have thoughts and experiences you’d like to share, let us know in the comments below.