Announcing Tomato64
Hi, my name is Lance Fredrickson. My project, Tomato64, is a port of Tomato Firmware to the x86_64 architecture. I’ve been spending nearly all of my free time working on it for the past 10 months, and I think it’s ready to share with the world.
I’m a longtime user and contributor to Tomato Firmware Some of my past works include dnssec integration, tinc mesh vpn integration, and others you can see in the About page. I’m also the developer of Tomatoware, a project that creates toolchains for native c/c++ compilation on Tomato routers. Tomato64 is my most ambitious project yet and I hope that it will be able to benefit a lot of people.
A few years ago my neighborhood got wired up with fiber to the home. While I was super excited to gain availability to 1Gbe+ speeds (up to 10GbE) I realized that current Tomato Firmware supported devices aren’t powerful enough to keep up. Even at 1Gbe speeds you have enable CTF (Cut-Through Forwarding) to get that throughput, but then you lose functionality to several features that make Tomato… well, Tomato. I didn’t want to leave my favorite router OS behind, so I had to do something.
Enter Tomato64. Working on this project has been a lot of work, but it has also been very fun. I’ve also grown to feel very possessive of it, even thinking I’d just keep it for myself. I decided to share it with some community members and received amazing feedback, I’ve realized that this project is bigger than me and it can only reach its apex through sharing and collaboration.
The x86_64 architecture is perhaps the most open and supported platform. If you want you can run Tomato64 on an old computer with a couple of Ethernet nics. In fact that’s exactly how I’ve been developing Tomato64 as you can see in the screenshot below. There are also lots of great low-power x86_64 “Soft Router” options out there too, particularly from aliexpress but many you can find on Amazon. Lots of different options and configurations to pick from.
There’s still many improvements to be made, and of course continued development and releases to come. I hope you’re as enthusiastic about Tomato64 as I am, thanks for your support!
Hi Lance,
I’ve been using Tomato since the WRT54G days. I recently gave up on my R7000 and switched to opnSense and thought that was the end game for my home networking; until I ran into quirk after quirk with opnSense and just wanted something easier/familiar/just worked — which is exactly when I found your project. Thank-you for all of your hard work, it has been amazing thus far.
All the best,
-Matt
@Matt
haha, my experience exactly too!
however went the pfsense route… (I know the drama of both ‘sense’ projects though)
pfsense has had idiotic things like not registering the DHCP name of something in the DNS resolver (it has a checkbox, but does nothing) and this has been a longstanding issue for 11 years now.)
I enjoyed Tomato on my r7000 a Lot, limited as that device was.
glad to see new life, performant life too for this ‘OS’ on any pick of my devices now 😀
Tomato is very good, I tried to install it, and found that the WAN port could not be switched. Because it is installed with PVE, its management port cannot be used as a WAN. Hope to improve it, thanks.
Things can sometimes be a little tricky when running in a VM. In Proxmox you can change which interface the management port listens on. The ordering that you assign network devices to the VM effect the order they show up in Tomato as well. I use a mixture of passthrough ports for all my interfaces except the last lan interface, which I pass as a Proxmox bridge with my final port attached to it. On this final lan port I have the Proxmox management listening on. I also utilize a method in Tomato to rename the interfaces and place them in the correct ordering as the physical layout of the ports. These two wiki links should hopefully be helpful.
https://github.com/tomato64/tomato64/wiki/Notes-for-running-in-a-VM-(Forbidden-Router)
https://github.com/tomato64/tomato64/wiki/Changing-the-network-interface-names