Thanks to the amazing work of the Asahi Team, Steam is running on my arm64 Linux on my Apple M2. Unfortunately, it seems that a recent update broke the ability for Steam to speak to the internet, with logs looking this like:
[2026-03-17 23:11:20] Set status message: Checking for available updates...
[ 0%] Checking for available updates...
[2026-03-17 23:11:20] Set percent complete: -1
[2026-03-17 23:11:20] Manifest download: waiting for download to finish
[2026-03-17 23:11:20] Manifest download: finished
[2026-03-17 23:11:20] Download failed: http error 0 (client-update.fastly.steamstatic.com/steam_client_ubuntu12)
[2026-03-17 23:11:20] Downloading manifest: https://client-update.akamai.steamstatic.com/steam_client_ubuntu12
[2026-03-17 23:11:20] Manifest download: send request
[2026-03-17 23:11:20] Manifest download: waiting for download to finish
[2026-03-17 23:11:20] Manifest download: finished
[2026-03-17 23:11:20] Download failed: http error 0 (client-update.akamai.steamstatic.com/steam_client_ubuntu12)
[2026-03-17 23:11:20] Downloading manifest: https://client-update.steamstatic.com/steam_client_ubuntu12
[2026-03-17 23:11:20] Manifest download: send request
[2026-03-17 23:11:21] Manifest download: waiting for download to finish
[2026-03-17 23:11:21] Manifest download: finished
[2026-03-17 23:11:21] Download failed: http error 0 (client-update.steamstatic.com/steam_client_ubuntu12)
[2026-03-17 23:11:21] DownloadManifest - exhausted list of download hosts
[2026-03-17 23:11:21] failed to load manifest from buffer.
[2026-03-17 23:11:21] Failed to load manifest
[2026-03-17 23:11:21] Error: Download failed: http error 0
[2026-03-17 23:11:21] Saving metrics to disk (/home/jvoisin/.local/share/Steam/package/steam_client_metrics.bin)
[2026-03-17 23:11:21] Verifying installation...
[2026-03-17 23:11:21] Verifying all executable checksums
[2026-03-17 23:11:21] Set percent complete: -1
[2026-03-17 23:11:21] Set status message: Verifying installation...
[----] Verifying installation...
A quick look at journalctl shows that SELinux doesn't like what passt is
trying to do:
Mar 17 23:07:26 chernabog audit[2093303]: AVC avc: denied { execstack } for pid=2093303 comm="passt" scontext=unconfined_u:unconfined_r:passt_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:passt_t:s0-s0:c0.c1023 tclass=process permissive=0
Passt is a piece of software providing user-mode networking for virtual machines, and apparently got stuck in the 90s because it requires an executable stack, sigh.
The easiest way to fix this is to read the ~250-pages long SELinux
notebook use
ausearch and to throw its output to
audit2allow:
# ausearch -c 'passt' --raw | audit2allow -M local-passt
******************** IMPORTANT ***********************
To make this policy package active, execute:
semodule -i local-passt.pp
# cat local-passt.te
module local-passt 1.0;
require {
type passt_t;
class udp_socket getattr;
class process { execmem execstack };
}
#============= passt_t ==============
#!!!! This avc is allowed in the current policy
allow passt_t self:process execstack;
allow passt_t self:process execmem;
#!!!! This avc is allowed in the current policy
allow passt_t self:udp_socket getattr;
# semodule -i local-passt.pp
libsemanage.semanage_direct_install_info: Overriding local-passt module at lower priority 300 with module at priority 400.
#
And that's it, Steam should now be able to reach the information superhighway again.