Box64 Can Now Run the Full Steam Linux Client on ARM Hardware

box64 logo

This is a huge milestone, following the last piece of news in Q4 2022 when better compatibility was achieved. PtitSeb, the developer behind Box86 and Box64, has just managed to fix the issues that previously prevented Box64/Box86 to support the Full Steam client – while it was still possible to use the mini mode. Most of the issues were related to the embedded Chromium browsing engine within Steam that is used to display dynamic content using HTML/CSS styling.

First, let me show you the proof in video, courtesy of PtitSeb:

The same video is available on Peertube.

The demonstration was done on the Phytium D2000 Mini-computer (ARM-based) manufactured in China.

box64 full steam linux client

Just how PtitSeb managed to find a fix, is explained below by PtitSeb himself:

PtitSeb: Main issue with all chrome based programs with box64 is that malloc/free are redirected. Google uses its own malloc operator to make all libs use the same heap. This cannot work with box64 because when it loads the emulated program and all the dependent libraries – and many objects are already allocated with the current malloc function before the new one can be active. So box64 now overrides the malloc operator, and doesn’t allow Chromium (or any other program) to set a custom malloc/free operator. But in the case of Chromium, this is not enough, because even with the malloc operator redirected, some memory was still allocated with the new malloc (some function calls are probably inline within the compiler, for speed of execution, and so does not call “malloc” but just executes its code directly), and were then “free” or “realloc” using regular function. And this doesn’t work. So I have a hack in place to detect if a pointer given to free or realloc is a pointer allocated with the new malloc function, and act accordingly. It is still very hacky for now, and I need to improve its behavior, but the core principle will stay like this. And that allows Chrome / libcef to actually load and run.

The improvements to Box64 necessary to run the Full Steam client are for now in a separate branch, called steam_chrome.

The Full Steam client brings a lot more options to manage the games in your library, as well as interacting with the community… and purchasing games, too! This provides a path for a powerful ARM-based device (think something like the M1/M2 class of chips for the new Macs) to be able to run Steam games in the future.

Will that be sufficient to provide a replacement for the Steam Deck or its derivatives, and make away with the hard dependency on X86 architecture?


Follow us on Twitter or Mastodon to stay up to date with our content as well as the numerous additional info we share every week with our followers!



BoilingSteam lets you access our content for free, but writing articles is a constant investment. We don't use ads or sponsporship, help us make our activities sustainable by donating via Patreon or LiberaPay if you prefer it anonymous. You can follow what we do via our newsletter, our RSS feed, our Mastodon profile or our Twitter feed. We also have Peertube, Youtube and LBRY channels. If you'd like to chat, you can also find us on #boilingsteam:matrix.org. (what is Matrix?)

0 0 votes
Article Rating
Subscribe
Notify of
guest

2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Sebastien Chevalier (ptitSeb)

So, for those of you adventurous that want to try: I created a branch on box64: “steam_chrome” So use it, and after a make && install, launching steam should work as intended. BUT You need both box86 & box64 on the same system (not my fault, complains to Valve about the 32bits/64bits needs) You need a lot of memory. Box64 is very memory hungry with chromium stuff… Target a system with at least 8GB of RAM. 4GB System will probably not work (it’s being worked on). This is experimental, and will probably crashes at some point. Also chrome should work,… Read more »

john

Steam on ARM devices. My mind has blown with the possibilities.