She’s amazing. Also fascinating life story, came out as transgender at 10, was raised Jewish but she is now a Quaker
Love that she did it, although I’m surprised they didn’t sue her for contempt of business model (i.e. Some copyright BS)
If you mean Apple, it wouldn’t really make sense for them to do that. Apple primarily generates income from hardware sales, so they wouldn’t care if people run other software on the hardware they already bought.
Edited to say: this doesn’t really apply for the iPhone/iPad as the application ecosystem is locked down. macOS isn’t though so users will do whatever they want anyway. There are even tiling window managers for macOS!
They don’t lock down macOS but it still has an App Store where Apple makes 30% on sales
Please fix the typo in the surname in the title of the post.
ok
thanks
Reverse-engineering the M1 GPU with zero public docs is insane. Huge respect for managing to get an open-source driver working on Linux from scratch.
I’ve always wondered how the fuck people do that? Absolute wizards.
Insane levels of dedication. And probably autism
Insane levels of medication. And probably flautism (fixed it for you)
Oh no, my opinion is that medication for those of us with the “dig-in 'tisms” like this actually impedes our hyper focus performance.
I admire people like this because even though there’s like 3 pieces of hardware I wish I could fix like this, I’ve got no clue where to start. And except for one, most are simpler devices than the M1 GPU.
Depending on what you want to do you need a lot of time, dedication, tools and probably money.
Well, one is a GPU like this one that only has 2D support and it’s apparently perpetually stuck as experimental. The second one is a trackpad / numpad combo that someone else got working but because the code never got upstreamed it broke. The last one is an internal microphone that might have support in the kernel but it might be missing quirk flags or a small change in how it works.
That sounds like reading a lot of documentation and testing stuff out when no dox is available.
And probably you first need to learn about each device how they function on an os level…
Truly doing the lords work here.
Immense respect!
It’s an amazing accomplishment, but if anybody is wondering why it’s not flat-out impossible, she very likely was snooping on how it was controlled by existing drivers, either by looking at the software side, which honestly, I’m less familiar with, or by using something like a logic analyzer, which can be used to record signals being sent to the hardware directly. So, if she did it that way, she didn’t reuse the code of the existing driver, but analyzed the output. I’ve had to debug some drivers in the past with a logic analyzer, and just that was a lot of work.
If she did it without existing drivers, then it would have been an absolute slog, I think bordering on impossible. You’d have to guess every signal. GPUs may be more specialized than CPUs, meaning that their instruction set will be smaller, but that would be insane.
lol I randomly searched for a page from collabora about how they reverse engineer GPU drivers (since I’ve seen that they’ve done that for other GPUs) and the very first page I went to was written by this person. Apparently this was a side project while she did fairly similar work on Mali GPUs at Collabora.
Anyways, here’s what she said about the process:
Typically, for Linux or Android driver reverse-engineering, a small wrap library will be written to inject into a test application via LD_PRELOAD that hooks key system calls like ioctl and mmap in order to analyze user-kernel interactions. Once the “submit command buffer” call is issued, the library can dump all (mapped) shared memory for offline analysis…
it took some elbow grease to identify the three critical calls: memory allocation, command buffer creation, and command buffer submission…
With those obstacles cleared, we can finally get to the shader binaries, black boxes in themselves. However, the process from here on out is standard: start with the simplest fragment or compute shader possible, make a small change in the input source code, and compare the output binaries. Iterating on this process is tedious but will quickly reveal key structures, including opcode numbers.
From https://alyssarosenzweig.ca/blog/asahi-gpu-part-1.html , there’s a lot more details about the subsequent parts of the process in the next articles but they’re harder to summarize
clearly she is on the spectrum…

So are we all.
One of us
At age 20, she reverse-engineered the Apple GPU. At age 40, I got the LED to blink on my Arduino.
I mean I have decades of doing all sorts of IT work and this is way beyond my level. Absolutely amazing.
If you can’t get the Arduino lights to blink at this point I can only applaud your persistence
I have such immense respect for people who know how the bits are physically flowing through a machine. I took classes about it but I can’t imagine doing that daily, it’s so tedious.
And imagine doing it without expecting a cent!
It’s the challenge of it though.
thaaaaat’s the shit, when it finally cracks and you laser focus on implementing your solution. better than drugs.
The high of cracking an intractable problem (pre-AI) was just unreal. I’d struggle to sleep, awaiting the morning so I could get back at it.
Nothing groundbreaking but writing my own Huffman compressor in C and seeing the whole thing work knowing where nearly all the real physical bits were going, was seriously satisfying. Recommended exercise ☺️
yeah I remember not being able to get my voltron lion to run in basic when I was in junior high.
You mean you can’t just get Apple’s driver to work on Linux by turning it off and on again enough times?
or even by recompiling the kernel when apples driver is not part of it.
I used a toothpick to get some apple shell unstuck from my gum.
… by yourself !?
Impossible, that’s what we have fish for.
Wins no matter how small are wins!
Don’t compare yourself to others, just enjoy the learning process & satisfaction it hopefully brings you for every single win, no matter the size!
Arduino is a fantastic platform for learning, I still remember a lot of my ‘firsts’ with it, I had no idea what I was doing, we all start somewhere. Have fun!
What a wholesome comment
While I agree partially, want to mention that having someone to compare to is not as bad as it sounds. Its only bad if you think its unreachable and you give up doing anything. Sometimes you need a hero to look up and fight and dream about it, for the motivation. I think looking up to people like Alyssa’s work is inspirational. In a similar way how I look up to those magicians who create emulators… but that is a different topic for another day.
It all adds up ⬆️
I’m 30 and I wiped my own ass. So I’m feeling pretty accomplished.
You must be male
Sometimes I think I’m smart then I hear stories like this and I’m humbled.
She is a hero and a legend. It just makes me think, it’s so sad that we live in a world where the most altruistic, talented, and capable people make less than those that are the best at taking advantage of the system and others for their own greed.
That’s what our economic system suppresses to bring the losers to the top.
Wanna bet someone else profited off her hard work in some fashion without her seeing a dime? I know AI did.
Did you know that the board game “Monopoly” was originally called The Landlord’s Game, meant to showcase how property ownership breaks the capitalist system for the common man?
A capitalist came along, rebranded it “Monopoly”, took all the credit and lived like a king.
Sweat of my brow indeed.
Usename checks out
That’s not a wish, that’s prophecy.
We need more people who know how to reverse engineer
We need more open hardware standards. Late-stage capitalism ruins everything.
It’s so weird how Apple basically explicitly said, “yeah so you can write software for it if you want, we won’t stop you. Also, we will obfuscate everything and provide no documentation.” So it is a very soft fuck you that should likely prevent lawsuits.
I miss Apple, the company that gave you schematics and programming instructions for their computers. Wonder whatever happened to them.
The Apple you miss ended when they got rid of the Woz, I bet.
You observe input and output across the entire API surface with every combination of discrete configuration options possible, then determine the function by which those outputs can be reproduced with the same parameters?
You can probably automate collection of the I/O data. Determining the function probably requires some extra brain juice.
Does it get more fancy than that?
It’s gets more fancy when you try to reverse stuff like Dunuvo
very based
personally grateful as i daily drive asahi linux
posting this comment from an m2 macbook pro running fedora asahi
*acided.
The only reason I’m not buying an M series macbook is because I thought there’s no Linux support, have things changed? Is it all unofficial?
M1 and M2 got unofficial Linux support pretty quickly. M3 still lacks GPU support last I checked and Apple is on M6 now. The oldest devices they sell are M4 and M1 is a year away from losing all support from Apple from what I was told, so yes things have changed but not in a good way. I’ve heard that the Framework 13 Pro might be a decent alternative though
Alyssa reverse-engineered Apple’s M1 GPU with no public documentation and developed an open-source Linux driver.
Be like Alyssa.
I’d rather watch her do that than someone doing triple saltos at the olympics.
This is way more impressive. 10/10
No need to diminish Olympic athletes. They worked very hard to get there. There are plenty of influences you can diminish instead.
Fuck the Olympics. It hasn’t been anything other than a corporate entity intent on making money above all else in almost a hundred years. IOC tramples on the rights of many people every day and the entirety of the organization can burn in hell
They’re also groomed as children - the decision almost always made by their parents before they’re old enough to decide if they actually want to.
Seriously? I’m diminishing Olympic athletes? Go get your moral outrage gatekeeping fix somewhere else please.















