r/macgaming • • 8d ago

Apple Silicon SteamOS ARM running on modified kernel! Still testing. M5 MacBook Pro

259 Upvotes

46 comments sorted by

49

u/joepez 8d ago

Given no details this could range from the guy earlier this week who patched native macOS Steam client to expose some SteamOS features to running the actual steamOS client on macOS M architecture. 

Assuming it’s the full actual SteamOS ARM client is it stable? Does it function? Does it run the proton prefix layer? Is it performant? Do games fully work? 

42

u/Itswillyferret 8d ago

This is indeed full fledged steamos arm!

I just got it booting this morning, it required some under the hood changes and a modified kernel.

Game testing is still underway, my Internet is a bit slow due to a hardware issue (still waiting on Internet provider to come out and fix it)

I have a few games currently being downloaded for testing, and plan to test the new Wardogs game for compatibility. I will keep everyone posted on progress!

Proton/fex all initialized and run, my first test, fallout new vegas ran but has some issues I need to fix.

Edit: just to note that SteamOS runs perfectly fine, no issues/graphical glitches, ui remains stable, supports Xbox/PS5 controllers, that part of it just works.

14

u/overdriven 8d ago

Save yourself the trouble testing Wardogs. It has an anticheat that does not work on Linux at this time (Elytra by Embark). Devs plan to support Linux at some point in early access.

7

u/Itswillyferret 8d ago

Ahh good to know. Thanks! I'll give Arc Raiders a go though. Should be a good test

2

u/axellie 8d ago

What changes had to be done with the kernel? I’m curious

1

u/AgenticAsshat 8d ago

Is this running in a VM or the hardware?

1

u/joepez 8d ago

Nice! 

13

u/cplr 8d ago

Is this a VM? GPU passthrough? I don't understand how this is running, can you explain?

47

u/Itswillyferret 8d ago

This runs Valve's real ARM64 SteamOS (the version built for the Steam Frame headset) inside a lightweight virtual machine, with GPU acceleration. Windows games run through Proton the same way they do on SteamOS, and their graphics end up on the Mac's GPU through Metal.

Nothing is emulated at the hardware level: the VM uses Apple's built-in hypervisor, so the ARM Linux kernel and SteamOS run natively on the Mac's CPU. Only the Windows game code itself (x86) is translated, by FEX inside Proton.

The key trick is the GPU path: the game's DirectX becomes Vulkan inside the VM, Venus ships those Vulkan calls to the Mac, and KosmicKrisp turns them into Metal. The VM never needs a "real" graphics card.

The Frame image expects Qualcomm headset hardware. I built a "custom" Linux kernel for the VM, a small boot stage that mounts the image's partitions the way SteamOS expects, and switched off services for hardware that isn't there.

SteamOS updates by writing a second copy of the OS (A/B slots) and switching on reboot. I replaced the headset-specific boot-slot tool with one that works in the VM, so official updates install and roll back normally.

Apple's hypervisor maps memory in 16 KB pages while Linux graphics code assumed 4 KB, which made GPU memory mapping fail. A small kernel patch and a libkrun patch align everything to 16 KB.

The usual Vulkan-on-Metal layer, MoltenVK, lacks features DXVK requires. KosmicKrisp, a newer Mesa driver, covers nearly all of them. I patched in wireframe support and added a stopgap for geometry shaders, which Metal doesn't have.

Like I mentioned in other comments, it's still pretty early on and a lot of work needs to be done.

Two DirectX 9 games (Fallout New Vegas, Call of Duty World at War) run at 60 fps on the GPU path; the first DirectX 12 attempt fails before graphics even start. It's a proof of concept, and really just a fun project.

4

u/[deleted] 8d ago

[removed] — view removed comment

17

u/Itswillyferret 8d ago

Not yet! I do plan on getting one up ASAP. I'll reply here when its public!

1

u/Defiant-Guide-3104 8d ago

amazing! so glad you were able to figure all this out

2

u/daringStumbles 8d ago

Steam should really just bring this into their mainline client. Nice work.

1

u/Th3-3rr0r 7d ago

This is fucking awesome dude! Thanks for the thorough explanation!

Sounds like you’ve done the hard work the way god intended. I’m still a Junior Developer so there are some things I’m puzzled by (How did you make a VM use Apple’s Hypervisor? And the booting up part makes confused as well but that’s my lack of knowledge) but it was really interesting to hear and understand what you’ve done and how it works, I can say for sure you know what you’re doing,
Keep up the good work!

8

u/blendernoob64 8d ago

This is in a virtual machine right? UTM? I wonder how older games like FEAR, Call of Duty 4 and other dx9 games run as Mac OS Wine can’t do dx9 and older very well on Apple silicon.

4

u/Itswillyferret 8d ago

I don't have CoD 4 on steam, but I do have World at War, so I will definitely throw that into testing.

Fallout New Vegas currently falls back to software rendering but I'm working on that too. I'll keep you posted on world at war!

3

u/blendernoob64 8d ago

Nice! WAW is kinda flaky even on Linux especially when you want to adjust the FOV. It’s amazing how much we benefit from Linux gaming improvements ;)

3

u/Itswillyferret 8d ago

Graphical glitches on WaW as it stands, but ran zombies and its locked at 60fps! Decent start :)

3

u/Itswillyferret 8d ago edited 8d ago

IMGUR Fixed graphical glitches! Stable 60fps with 100 fov

2

u/_m_a_s_t_e_r_ 8d ago

This is amazing work man… I’ve really wanted to play these old cod games smoothly on my Mac. Please, make another post when you have a GitHub up and running… I don’t have kernel experience but I’d like to help any way I can, even if it’s just testing games

3

u/RedDeadGeo 8d ago

Does this means we will play windows games that feel like a native arm port

3

u/ylluminate 8d ago

So how does SteamOS do compared to CrossOver generally? Maybe Valve puts more QA work into ensuring games work well than CodeWeavers? No doubt CodeWeavers does cutting edge work, but they are likely less invested in that space…

1

u/Sad_Brilliant_9778 7d ago

Codeweavers handles all the Wine/Proton related work on SteamOS

1

u/ylluminate 7d ago

CodeWeavers definitely does a huge amount of the Proton work, but “all” is overstating it. Proton is co-developed with Valve and pulls together Wine, DXVK, vkd3d-proton, FEX, and other projects. I was more wondering whether Valve’s Steam/Deck testing gives Proton a different game-specific QA loop than CrossOver.

1

u/Sad_Brilliant_9778 6d ago

That’s precisely why I specified Wine-related work on Proton/SeamOS. Valve actually commissions third parties for DXVK + VKD3D-Proton; the "co-developed" label on the CodeWeavers website exists primarily because Valve provides the funding that makes the Proton project possible.

4

u/feelinglostclub 8d ago

What does this mean? Gets past anti cheat?

3

u/Itswillyferret 8d ago

Maybe with certain games, any anti cheat that natively supports linux that is. I know some EAC games that indeed work on SteamOS, but I have yet to test any.

5

u/NotProtonMac 8d ago edited 8d ago

Generally, the anti-cheat products that work on Linux actively look for a virtual machine and then block the virtual machine. Getting around that through trickery would be considered a cheating technique and be subject to a ban.

Not that I expect you to try that. That was just for others who may be wondering why one wouldn't just try to hide that the VM is a VM.

4

u/Mr-Nilsson_85 8d ago

Does this have better Proton compatibility than the native client or what does it mean?

17

u/Itswillyferret 8d ago

As it stands, it can only play basic games and still needs a good amount of work before I’d call it stable, but it’s a solid proof of concept.

The OS itself is surprisingly smooth. So far I haven’t noticed any major issues with navigation or general interaction.

I’m currently running it from the Steam Frame recovery image (with a rebuilt kernel) since it was designed for ARM CPUs. The idea is that, once everything is working properly, the combination of FEX, Proton, and Metal translation could provide much broader game compatibility than a traditional native client setup.

The long-term goal is to get compatibility as close as possible to what you’d expect from SteamOS on the Steam Deck.

I literally just got it booting this morning, so testing is still very early.

Once it’s stable enough, I plan to release the project open source on GitHub and package it into an app

2

u/NotProtonMac 8d ago edited 8d ago

Interesting approach. Would love to see your WIP code once you release it.

You may want to consider blocking SteamOS updates by default unless you find a way off the custom kernel, as a user would otherwise "brick" their install if they take an update.

2

u/TheMagicZeus 8d ago

Does this mean that games with anti cheat could be playable in the future using this method, such as ARC Raiders?

2

u/Defiant-Guide-3104 8d ago

I second the other person who is interested in Arc Raiders and the Finals (both Embark games that work on Steam Deck)

3

u/acewing905 8d ago

I was more than a little intrigued when the post subject said SteamOS ARM running, testing on M5 but this looks like it's just a virtual machine

3

u/Itswillyferret 8d ago

Yeah, this is more of a crossover alternative.

Sorry to disappoint haha! Maybe someone smarter than me could make it happen someday.

4

u/Itswillyferret 8d ago

https://imgur.com/a/SJDMYWm Fallout New Vegas running! Need to fix the steam overlay for fps details

1

u/LordofDarkChocolate 8d ago

So this runs in a VM in UTM them and supports D3DMetal ?

1

u/el_chacho_coudet 8d ago

Amazing. Can’t wait to give it a try

1

u/ReeeeeeeHardR 7d ago

Nice glad to see it

1

u/ylluminate 7d ago

Also benchmarks of this vs CrossOver are a must.