A few years ago, I joked about FLOSS activists refusing to use closed-source firmware devices needing to build an open source washing machine. Since then, I came to think that it’s not such a crazy idea — and indeed, it is not such an outlandish idea to this day to have WiFi-connected washing machines (and driers, and dishwashers), since at the very least allow you to remote monitor when the cycle you started completes, without needing hacks and extra hardware.
But of course, as far as I am aware, none of the white goods out there use open source firmware. Some of them may be better supported by Home Assistant, but I have yet to see anything coming from a full-fledged manufacturer being based off ESPhome, or coming with full GPLv2 sources. So could we make an open source washing machine?
I think the answer is “Yes, but I’m not likely to be the one doing it.” — And I say that because somehow this topic is the one that has gotten the most click on Google for my blog last year!
First of all, short of going all-in in the industry of white goods, which should be quite the expensive enterprise, the best option I can think of for getting an open source washing machine would be to reverse engineer a commonly-available model and provide a retrofit control board with an open source firmware. Which is not far from what I did with my HVAC.
The problem with reverse engineering a washing machine is that while I’m sure there’s engineering textbooks describing how their rough operation is overall, the specific of each model are likely going to be quite different from each other — and particularly for the cheaper, and thus more appealing, models, their presence in stock might be quite limited in time. Getting a working control board that works for a single specific model would have quite a limited (though not zero) use, and depending on what your objective is, it might only be a partial solution. Let me explain what I mean.
Making an Open Source washing machine is not something that you would do because you plan to make a lot of money out of it — virtually nobody cares about open source washing machines. This is without wading into the political mess of the housing crisis, and pointing out who buys most of the washing machines for people. An open source washing machine is either a labour of love, research, or passion.
You could go ahead and reverse engineer a single washing machine, and build a control board for it, and then you would have an open source washing machine. But I don’t think that’s enough from the philosophical point of view. Building a basic framework for an open source washing machine could be a good outcome of that, though: just like thermostats for HVAC systems, a washing machine control board is not a lot more than a bunch of sensors and switches, and their behaviour is not going to be significantly different between machines: pump in the water, warm it to temperature, start the motor to set speed, etc…
So if your objective is to learn how a washing machine work, and describe a minimal enough framework for the next person to reverse engineer their own, and build upon the same framework, you can definitely start with doing the work on a single machine — though it does get a bit complicated if you want to both observe the original behaviour, and tinker with your custom implementation. For those, you’re usually better off having two identical machines, keeping one as close to stock as possible (minus probably a ton of probes.)
This is not too far from what I did with my HVAC controller — except for the fact that thankfully I didn’t need to destroy anything, and instead I just bench-tested the original controller against a Python-based simulator. And even then, since I stopped at supporting my use case, I know there’s a lot more users of a project that was based off my design, but adapted for a more modern HVAC protocol.
But if your objective is to convince the world that there’s a market for open source washing machines (I do not believe there is, but you may want to try that), you would need to be able to provide more than one working machine. Which is where things get more complicated. I have been thinking about it for more than a few passing moments, and I believe the best option for that would be to have the ability to buy a few dozens machines of the same exact model as a lot, sacrifice two or three for reverse engineering and prototyping, and then retrofitting the rest. Which is a capital-intensive proposition — particularly because, unless there’s some fantastic breakthrough during the process, nobody is going to be willing to overpay for an aftermarket modification of a washing machine that gives next to no upsides.
Buying white goods at lower-than-market price is not impossible, particularly as a lot job. Builders and aparthotels do that all the time, and depending on what you feel your primary objective and plans are, you may be able to get a second hand lot from an hotel refurbishing. The machines are likely going to be filthy but they should be at least cheap enough to reverse engineer, particularly when starting to build a framework.
And I think by this point, it starts to get obvious why, even though reverse engineering is effectively my pastime, I’m not going to be the one bringing you an open source washing machine: doing something like this is an expensive project. Nevermind the fact that going through it alone is unlikely to bring an acceptable result, as I don’t I’d have all of the knowledge to come up with the correct sequence of operations reliably, there’s the non-insignificant investment in the actual white goods to reverse engineer, plus there’s need for space to store the hardware, open it up and have it all probed up and ready to test with.
And if your intention were to make this a commercial operation, you’ll have even more costs. Starting with buying and storing enough unmodified machine that is worth making a production batch, of course, but i believe this might be the least of your worries. The much larger problem is figuring out how to be able to sell something like this in the first place: can you actually buy a machine from, say, Bosch, and resell it with an aftermarket controller? Do you need to remove the Bosch logo, or do you need to keep it? What’s the regulatory landscape around safety, energy efficiency, and warranty handling? Are there patents applicable to the technique that were implemented, or reverse-engineered?
Basically, what I’m saying is that it is a real possibility for the world to have an open source washing machine. I even think that it would be a good thing to have, because while I’m sure there’s some literature out there on how most basic washing machines work, I don’t believe there is enough describing how the various modes differ in a modern washing machine, which make it easier for manufacturers to, for example, throw bullshit “AI” branding on features that may be as simple as “get a load cell to weigh how much laundry you have, and only pump as much water as needed according to a look up table.”
I also need to make it clear that up to now i’m just talking about figuring out how to get a custom, open source controller — but I have said nothing about how you would operate said controller. And that’s because, quite honestly, is not something I have an instinctive feeling for. I’d probably be adding an USB port and use an Xbox controller to navigate the menu — mostly because I find using touch controls on white goods horribly annoying, and I’m not sure that a single rotary encoder is enough to control even the few settings that we actually do use in our (slightly over engineered) washing machine.
So once again, I believe that we could get open source washing machines, and other household white goods. And it is even possible that doing so would have benefits for consumers and humanity as a whole, kinda like the open source firmware for the TS-100 soldering iron got us the Pinecil. Opening up the ability to experiment with washing cycles to more people might even lead us to some interesting breakthroughs, who knows?
So maybe Free Software advocacy groups could band together, and find enough people to actually build proof of concept of working Free Software washing machines, dryers, dish washer and whatever else. And maybe this could allow spinning up new, independent equipment manufacturers of the future, that many of our governments keep begging to show up with little actual effort applied.