Repository navigation
Releases
Porthole 1.2.1
Porthole 1.2.1 (688)
Compatibility reports now carry the log of the run that played the game.
Fixed
- A compatibility report sent after the app was opened again (the game ended, or iOS closed the app) carried only the few seconds of the new start-up instead of the game's run, because the new log is always the newest file. The report now takes the most recent log that mentions the game's launch: this run's, the run before, or the game's own session log.
What this is
Porthole runs Windows games on iPhone and iPad using the Madeira runtime (Wine, FEX, DXMT). It is unofficial, not affiliated with Valve, Microsoft, Apple or any game publisher, and does not bypass any licence check. The IPA is unsigned: you sign and install it yourself (see the README). Source: see docs/SOURCE.md in the repository (the exact versions of everything it is built from are listed there).
Licence: GPL-3.0-or-later with an additional permission for the Apple Metal Shader Converter (LICENSE, LICENSE-EXCEPTION.md); third-party licences and credits are in the app under Settings > About > Licences.
SHA-256 of the IPA: 5a6d06aa00cd05d76c5fab1a0a0380a38c43fcdd4790bf6f845744fb7e0dfaf7
Porthole 1.2.0 "Autumn Tide"
Porthole 1.2.0 "Autumn Tide"
Windows PC games on iPhone and iPad. This release adds keyboard and mouse support, makes the whole app usable with a controller, adds the EA app as a sixth store, speeds up Steam downloads a lot, and moves to a newer game engine.
Early software. Made and tested by one person on a few devices. Plenty of games do not run. Unofficial: not affiliated with or endorsed by Valve, Microsoft, Apple, Epic, GOG, EA or any game publisher. Porthole contains no games and bypasses no licence check.
Highlights
- Keyboard and mouse in games (iPad). A Bluetooth or USB keyboard and a mouse or trackpad work like on a PC: every key with its modifiers, five mouse buttons, the wheel, the game's own cursor in menus, and a locked pointer for looking around. Porthole's own menu opens with a key you choose (F10 by default). The mouse wheel and click-and-drag now scroll every screen of the app.
- The whole app works with a controller. An on-screen keyboard you drive with the D-pad, the same starting place on every screen, and a strip of hints that says what each button does.
- The EA app is the sixth store (with Steam, Epic Games, GOG, itch.io and Amazon Games): sign in on EA's own page, install, update, repair, and play without the EA app.
- Steam is steadier and faster. No more random sign-outs; downloads ran at 160-170 MB/s in a test (up from 12-22); the sizes shown now add up. Demos, betas and playtests show in your library.
- A new look for Home, Stores, game pages, the launch screen, the setup guide, Reports, Settings (now with search) and the performance overlay.
- A newer game engine. Madeira's latest work is merged in (hundreds of upstream changes), so more games can run. Final Fantasy Resonance (and its demo), Celeste and other .NET Framework games now start.
- Reports with logs. A compatibility report is sent with the game's log, cleaned of personal details and kept private, and every report is checked before it shows up, so a game is not listed as broken without a reason.
- More installs: itch.io games that ship as
.7zor.rar, optional Donor memory for big games, gyro aim and turbo buttons, and sharing a game's setup as a file or a line of text.
The full list of changes is in CHANGELOG-1.2.0.txt. Source for this release: tag v1.2.0; the engine is Madeira 5fda6a0 plus patches/0172 to 0176, see docs/SOURCE.md.
Updating from 1.1.x
- This is a new engine (
3af3467-r1). Compatibility badges are tied to the engine, so every game shows Not yet tested until people have played it on 1.2.0. - The IPA now holds the app and four extensions (JIT helper, tunnel, download card and the optional Donor memory one, five App IDs in total). A free Apple account can leave extensions out when signing; see docs/INSTALL.md.
What you need
iOS 18 or later (developed and tested on iOS 26 and 27), a way to sign and install the app yourself (the IPA is unsigned), and a way to switch on JIT. Step by step: docs/INSTALL.md. Check the download with the .sha256 file:
shasum -a 256 -c Porthole-1.2.0-681.ipa.sha256SHA-256 of the IPA: 8b01553c17b4dcb636bbbd3094b652e685e2c6ade56f72f902fde4748825cdb5
Known limits
- Red Dead Redemption 2 is not playable yet: the Rockstar launcher signs in and starts the game, but with Rockstar's newest Social Club the game's own overlay does not load, and it stops with a Social Club error before the main menu.
- Call of Duty: Black Ops III did not start in testing.
- Factorio 2.1.x: its Steam features do not start ("Couldn't initialize Steam API"); the game itself runs.
- Not yet run on a device: Donor memory, gyro aim and turbo, Madeira's tested setups, Share setup, GOG Galaxy services, and
.7z/.rarinstalls. They are written and built; please say if one does not work. - Keyboard and mouse were tried on an iPad with a wireless keyboard and a wired mouse. An iPhone gets a mouse only through AssistiveTouch and has no pointer lock.
- A copy signed without the extra-memory entitlements (a free Apple ID, or inside LiveContainer) has about 3.4 GB of memory; some Unity games can fail there.
Thanks
Porthole is built on Madeira (Wine, FEX and DXMT for iOS) and would not exist without it, and on the work of everyone credited in CREDITS.md: Wine, FEX-Emu, DXMT, StikDebug / StikJIT and idevice, Iridium, and many more. Thank you to everyone who tested builds and sent reports.
Found a problem? Use Report a problem in the app (the log is cleaned and you can read it first) or open an issue.
Porthole 1.1.0: Full Steam Ahead
Porthole 1.1.0 (551)
Full Steam Ahead: much more Steam (versions, DLC, achievements, friends, the Workshop), Amazon Games, Restart game, and fixes for American Truck Simulator, Megabonk and Counter-Strike 2.
Added
- Amazon Games in the Stores tab: sign in on Amazon's own page and install the games you bought or claimed with Prime Gaming. Files come straight from Amazon's servers and are checked against Amazon's signed file list.
- Steam: a Version and DLC row on a game's page. Pick another version Steam offers (a beta or the previous version), type a beta password for a private beta, and turn DLC you own on or off. Only the parts that differ are downloaded.
- Steam: achievements with pictures, descriptions, unlock dates and how many players have them, a progress line ("12 of 50 unlocked") on the game's page, pop-ups when you unlock one in a game, and the full list in the in-game menu (Steam > Achievements).
- Steam: your friends (read only): who is playing what, who is online, and who was last seen when, on a Friends button at the top right of the Home screen, in the Steam list and in the in-game menu, plus a Friends playing row on a game's page. Nothing is sent to Porthole's servers.
- Steam: news and patch notes for a game, and Steam's review score and Steam Deck rating on its page (public Steam pages, no sign-in).
- Steam Workshop (beta): browse, search, subscribe to and download a game's items in the app and inside the running game (in-game menu > Steam). Items are checked for updates when a game's page opens (switch it off with Update mods automatically). Depot items such as American Truck Simulator mods can be subscribed to while a game runs and download when it closes. Tested with Portal 2 and American Truck Simulator.
- Restart game, in the in-game menu and on the Workshop page: closes the game and Porthole, then starts the same game again when you open Porthole (iOS needs one tap on a notification). If a game ignores the close request, Porthole asks whether to stop it.
- A Steam menu in the running game opens when a game asks for Steam's overlay (its own Workshop or Store button), instead of leaving the game stuck until you press Escape.
- Your own VPN can come back as soon as JIT is on (Settings > JIT and tunnel), for networks that block Steam.
- The launch screen says why Steam will not start a game (needs an update, or files marked damaged) and what to do, and says when Steam has not signed in.
- Add a game > Import a game folder says how to choose the folder, and writes what happens to the log.
Changed
- Signing in to Steam starts with the QR code (approved in the Steam mobile app, so Porthole never handles your password). The sign-in screen says Porthole is unofficial and not affiliated with Valve.
- Verify and update files on a Steam game's page really checks every file against Steam now and downloads only what is missing or damaged. Updating a game also keeps the parts of files already on the device that have not changed.
- Megabonk starts without a hand-typed engine line and its controller works in Automatic. Sorting the all-games page by recently played now includes GOG and itch.io games.
- Engine r17 (it was r13 in 1.0.1). Compatibility badges start empty for it.
Fixed
- American Truck Simulator (and other games that create a tiny placeholder window and rely on DirectX to size it) showed as a postage stamp. The window is now resized or made to cover the screen.
- Megabonk, and any Unity game that uses Rewired's Windows.Gaming.Input plugin, saw no controller. The controller is now also offered as a Windows.Gaming.Input gamepad for these games.
- Counter-Strike 2's first-person look stopped at a fixed angle. The game's mouse-input thread needs a system window class that was missing for the game, so it never got raw mouse movement.
- Portal 2 and other single-file Workshop items are recorded the way Steam records them and put where Steam keeps finished downloads, so the game opens maps the app downloaded even where Steam's own download times out.
- A Steam game is no longer started with too little memory room: on a bad start of the app the room for the game's translated code can shrink and the game runs out of memory a minute in. Porthole now stops, says so and offers Close Porthole.
- Workshop single-file items downloaded from a web address (Portal 2 maps) no longer fail with "Steam did not accept the sign-in token".
Known limits
- The Steam Workshop is a beta. Confirmed with Portal 2 and American Truck Simulator; most other games are untested, and older games have not worked so far. It needs a network that lets Steam's content servers through.
- Not yet confirmed on a device: the message when Steam has not signed in, the Version and DLC page (including the beta-password check), and Workshop downloads queued while the app is closed.
- Counter-Strike 2: Valve's anti-cheat needs Steam's own service, which cannot start here, so VAC-secured servers are expected to refuse the game. Offline play and bots are the supported way to play. Porthole does not try to get around the anti-cheat; do not risk a main account on it. The game has also closed unexpectedly after several minutes in some runs.
- Restart game needs one tap on a notification (iOS does not let an app reopen itself).
- Steam chat, invites and friend requests are deliberately not built; the friends list is read only.
- Porthole is unofficial and not affiliated with Valve.
What this is
Porthole runs Windows games on iPhone and iPad using the Madeira runtime (Wine, FEX, DXMT). It is unofficial, not affiliated with Valve, Microsoft, Apple or any game publisher, and does not bypass any licence check. The IPA is unsigned: you sign and install it yourself (see the README). Source: see docs/SOURCE.md in the repository (the exact versions of everything it is built from are listed there).
Licence: GPL-3.0-or-later with an additional permission for the Apple Metal Shader Converter (LICENSE, LICENSE-EXCEPTION.md); third-party licences and credits are in the app under Settings > About > Licences.
SHA-256 of the IPA: 339871111bd03a1e8c1f252dc5a43efdf8a24b1f1f002eccc52c09aebb1e3ee3
Porthole 1.0.1
Porthole 1.0.1 (500)
BeamNG.drive starts and can be played (early support).
Added
- BeamNG.drive (Steam, version 0.39.4.0) starts, shows its menus, loads maps and drives. It needs one extra file that Porthole cannot supply: Ultralight's ICU data, icudt67l.dat, copied into the game's ultralight folder. docs/GAME_FIXES.md says where to get it and where it goes.
- A BeamNG.drive game fix, applied automatically: the game is started with its own switch for the menu engine that does not use Chromium (-forceUltralight), and the memory layout, no-copy image loading and lock settings it needs are set for that launch only.
Changed
- New game engine version (279fd0f-r13): compatibility badges start fresh for it, and older reports stay visible as earlier ones. Most of the engine changes are switched on only for BeamNG.drive's launch; the monitor fix below applies to every game.
- Game fixes that set a file aside now also apply to games started through Steam, and match the file name whatever its capitals; the log says where a fix looked when it found nothing.
Fixed
- Borderless and fullscreen windows: a game that asks Windows for its monitor with a handle the engine does not know now gets the screen's size instead of an error. BeamNG.drive set its window to 0 by 0 in Borderless and showed an empty desktop with sound.
What this is
Porthole runs Windows games on iPhone and iPad using the Madeira runtime (Wine, FEX, DXMT). It is unofficial, not affiliated with Valve, Microsoft, Apple or any game publisher, and does not bypass any licence check. The IPA is unsigned: you sign and install it yourself (see the README). Source: see docs/SOURCE.md in the repository (the exact versions of everything it is built from are listed there).
Licence: GPL-3.0-or-later with an additional permission for the Apple Metal Shader Converter (LICENSE, LICENSE-EXCEPTION.md); third-party licences and credits are in the app under Settings > About > Licences.
SHA-256 of the IPA: 8ddafdb469623a678be4bee4b5dcb61987311b8a50d1bee74a6ed6f451fe60ed
Known issues
- Porthole is early. Plenty of games do not run yet, and some that do need tweaking; the compatibility list shows what people have tried.
- BeamNG.drive support is early and was tested on one iPad Pro (M4) only. A big map takes one to three minutes to load, and anything new to the game compiles its shaders during the load (the game keeps what it compiled, so later loads are faster). Big maps use up to about 5.9 GB, close to the memory limit. Frame rates were 60 to 120 on a small map and 33 to 77 on big ones. The game's own online login fails with a certificate error, some menu fonts are missing, and one launch ended at start with "no graphics adapter found".
- BeamNG.drive needs one file that Porthole does not supply:
ultralight/icudt67l.datin the game's folder (ICU 67.1 data, from the official ICU release). See docs/GAME_FIXES.md. - Subnautica (Epic Games build) closed about a second after its world finished loading on the 1.0.0 engine; it has not been re-tested on this one.
- On a free Apple ID some capabilities are missing (see the install guide); a paid account or a certificate service gives the full set.
- On a connection that blocks Steam's content servers, Steam downloads cannot start.
Install
Sign the IPA and its extensions with your own certificate, then follow the setup guide: docs/INSTALL.md. Check the download first: shasum -a 256 -c Porthole-1.0.1-500.ipa.sha256.
Porthole 1.0.0
Porthole 1.0.0 (480)
Porthole 1.0.0: the first public release.
Added
- Windows PC games on iPhone and iPad, using the Madeira runtime (Wine, FEX and DXMT): a game library with art, play time, per-game settings and on-screen or controller controls.
- Four stores in one Stores tab: sign in to Steam, Epic Games, GOG or itch.io and download the games you own, with one Downloads page, pause and resume, and a lock-screen download card.
- A community compatibility list: badges from reports by other people, counted per device model and engine version, and a short report of your own in under a minute.
- An in-game side-panel menu with power modes, frame generation, controller choice and an optional performance overlay, plus short guides and a first-game tour.
- Updates from inside the app with your own certificate, checked against the maintainer's release signature, with every earlier version available to go back to.
- JIT switched on from inside the app (on iOS 27 or later the pairing file is made on the device), and an optional private link so it needs no computer.
What this is
Porthole runs Windows games on iPhone and iPad using the Madeira runtime (Wine, FEX, DXMT). It is unofficial, not affiliated with Valve, Microsoft, Apple or any game publisher, and does not bypass any licence check. The IPA is unsigned: you sign and install it yourself (see the README). Source: see docs/SOURCE.md in the repository (the exact versions of everything it is built from are listed there).
Licence: GPL-3.0-or-later with an additional permission for the Apple Metal Shader Converter (LICENSE, LICENSE-EXCEPTION.md); third-party licences and credits are in the app under Settings > About > Licences.
SHA-256 of the IPA: e8e8e6d808059ab006e1cf510abbe8bf4cf366da7f43d2b672778b1d970a94a2
Known issues
- Porthole is early. Plenty of games do not run yet, and some that do need tweaking; the compatibility list shows what people have tried.
- Subnautica (Epic Games build) closes about a second after its world finishes loading on this engine.
- On a free Apple ID some capabilities are missing (see the install guide); a paid account or a certificate service gives the full set.
- On a connection that blocks Steam's content servers, Steam downloads cannot start.
Install
Sign the IPA and its extensions with your own certificate, then follow the setup guide: docs/INSTALL.md. Check the download first: shasum -a 256 -c Porthole-1.0.0-480.ipa.sha256.