logo

What a single day with a new laptop can do to a man

One day, one laptop, one big fix 🛠️

LinuxOpen SourceHardwareTuxedo
post_image
27/09/2025
6

The Search Begins

Sometimes the best opportunities come when you least expect them. I had been researching the best laptops that supported Linux for quite some time, checking out options from Starlabs, System76, Tuxedo, Novacustom, and Slimbook whenever I had the chance. The choice wasn't easy. Each had their own appeal, but I ultimately chose the Tuxedo InfinityBook Pro 14 Gen10. The main reason? I simply liked it, and the faster SoC option sealed the deal.

The other laptops often came with a really wanted feature of mine: Coreboot UEFI integration, which hopefully will be soon implemented from Tuxedo itself (see this Reddit discussion). For the past two and a half years, I had happily used a Lenovo Yoga 14ARB7, which started to get a bit janky due to new mobile dev workflows.

After buying the laptop while on holidays back in Sicily, I long awaited a full week after getting back to Brescia to receive it. A sad misadventure was that the shipment label had a wrong name, so the shipment was not possible (according to UPS). I spent the next day between working and trying to contact UPS to fix the problem ASAP. I managed in the afternoon to get in contact and fix the shipment label. Lucky me, the day after it actually came and I had finally the chance to unbox and setup it.

The Aurora Problem

After installing Aurora (Fedora-based Universal Blue image), I noticed I couldn't install the Tuxedo Control Center due to the immutable nature of the distro, and no official packages for TCC and drivers exist for ostree/distro images themselves. I spent the whole afternoon/evening searching for all possible solutions online, and then I found it: BrickMan's repo. I was so happy to finally have the drivers and a fully functional laptop, so I tried to rebase to BrickMan's image, and it errored out...

I looked at issues and PRs and noticed a guy that tried to fix the Aurora 42 image building. It seems the builds were failing for some months now, and the last activity was in July. So I pinged BrickMan in the comments of the PR and unbelievably he answered the morning after! He told us that he had no time to handle that and gave a brief of what was needed to make it work.

There I decided to try myself to bring the final fix with my giga knowledge and Cursor (he did 95% of the work). I cloned the repo and then the real adventure began.

The Technical Challenge

The core issue was building kernel modules on an immutable filesystem. The original build script was trying to compile Tuxedo drivers directly in /usr/src/tuxedo-drivers-4.15.4, which is read-only in Universal Blue images. This caused build failures with cryptic errors about permission denied.

The solution involved several key changes:

1. Writable Build Environment I modified the build script to copy the driver sources to a writable temporary directory (/tmp/tuxedo-drivers-build) before compilation. This simple change allowed the modules to build successfully.

2. Secure Boot Compatibility The bigger challenge was Secure Boot. The built modules were unsigned, which meant they would be rejected by Secure Boot with "Operation not permitted" errors. I implemented a complete MOK (Machine Owner Key) signing solution:

3. Build Optimization I also optimized the GitHub Actions workflow to only build when upstream Aurora images actually change, using skopeo to compare image digests. This saves significant CI resources and reduces unnecessary builds.

4. User Experience The final piece was creating a setup-secureboot.sh script that automates the MOK enrollment process with a hardcoded password ("tuxedo") and provides clear, step-by-step instructions for users.

Victory and Reflection

I cannot believe this actually worked flawlessly at the end. The modules now build correctly, are properly signed for Secure Boot compatibility, and the entire process is automated. Users can simply rebase to the image, run the setup script, and have a fully functional Tuxedo laptop with Aurora.

Working Tuxedo Control Center

The PR includes:

And now I'm writing this post on the fully fledged and functional new Tuxedo laptop, with all the Tuxedo Control Center features working perfectly, including keyboard backlight control, fan management, and all the hardware-specific functionality that makes these laptops special.

This experience reminded me why I love technology and open source. A single day of frustration led to discovering a broken project, understanding the underlying issues, and implementing a complete solution. The beauty of open source is that when something doesn't work, you can dive in and fix it yourself.

The combination of my web development experience, understanding of Linux systems, and the power of modern AI tools like Cursor made what seemed like an impossible task achievable in a single day. Sometimes the best solutions come from the most unexpected places, and sometimes a new laptop is exactly the motivation you need to tackle a challenge you never knew existed.

If you're reading this and have a Tuxedo laptop, keep an eye on the repository - the PR should be merged soon, and you'll be able to enjoy the same seamless experience I'm having right now.

Final setup with working Tuxedo laptop