GeoPort: an iOS 17 and iOS 18 location simulator for Windows and Mac
GeoPort: Your Location, Anywhere! The iOS location simulator
At a glance
- What is it?
- GeoPort is a desktop app that sets a virtual GPS position on a connected iPhone. It is built on pymobiledevice3, ships as a per-OS package rather than a Python install, and carries GPL-3.0.
- Who is it for?
- Adopt GeoPort if you need to set a virtual GPS position on a physical iPhone from Windows or macOS and you accept that enabling Developer Mode on iOS 17 may require temporarily removing the device passcode. Do not adopt it as an Android tool or as a cloud service: it needs a USB-connected device, iTunes on Windows, and administrator or sudo rights on iOS 17.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem GeoPort solves, and who it is actually for
A location-based app is hard to test honestly. The iOS Simulator can set a location, but it does not run on a physical handset, and a real device reports its real GPS position. GeoPort exists to close that gap: it sets a virtual position on a connected iPhone so the phone itself reports somewhere else. The README frames the audience twice, once as developers ("Simulate diverse scenarios effortlessly") and once as general users who want to appear in another city. The developer framing is the defensible one. A QA engineer testing region-gated content, a maps integration, or a delivery-radius check needs reproducible coordinates on real hardware, and that is the workflow the app is built around.
The repository also ships a Fuel mode, described as selecting fuel prices across Australia with state-based pricing. That is a niche feature for one country, and it tells you the project is not purely a developer tool. The README does not explain how the fuel data is sourced or whether it updates, so treat it as an extra rather than a reason to install.
How GeoPort talks to the phone: pymobiledevice3, Flask, and a local interface
The README states the stack plainly: GeoPort is built with Python, Flask and pymobiledevice3, with an interface inspired by iFakeLocation. The architecture that follows from that is a local web application. Flask serves the interface, and pymobiledevice3, the Python library for talking to iOS devices over USB, carries the actual location command to the handset. The repository layout backs this up: src/ holds the application code and start is a launcher entry, with BROADCAST and CURRENT_VERSION as supporting files.
This matters for two reasons. First, the USB path is the whole mechanism. There is no cloud relay and no on-device jailbreak described; the desktop process discovers the iPhone, and the phone has to stay connected for the simulated position to hold. Second, because the interface is served locally, the browser is just a front end. The README notes that if you forget to reset your location when you disconnect, you reconnect the device and press "Stop Location". That instruction only makes sense if the position is applied by the desktop side and persists until it is cleared.
Developer Mode is the other half of the mechanism. The README says GeoPort can enable Developer Mode on connected iOS devices, and that if it is not already enabled you will need to temporarily remove the device passcode so GeoPort can do it. The app is documented to warn you when this is required. That is a real change to your device's security posture, even if temporary, and it is the single most consequential thing GeoPort does.
Installing GeoPort and simulating your first location
GeoPort is distributed as a packaged release, not as a Python package you install yourself. The README is explicit that you do not need to install Python for it to work. Go to the releases page, download the package for your operating system, and run the application.
On Windows there is one prerequisite. The README says Windows users need iTunes installed, because GeoPort uses Apple's USB service to discover the iOS device.
# Windows prerequisite, per the README:
# install iTunes so the Apple USB service is presentOnce the app is running, connect the iPhone by USB and let GeoPort discover it. If Developer Mode is not enabled on the device, the app will tell you, and per the README you may need to temporarily remove the passcode to let GeoPort enable it. On iOS 17 the README also states that administrator or sudo permissions are required.
With the device recognized, pick a location in the interface and apply it. The README describes the interaction as setting a location and teleporting within seconds. To undo it, use "Stop Location" before you disconnect. If you disconnect first, the README's remedy is to reconnect the device and press "Stop Location" again.
What you should see is the connected device reporting the chosen coordinates to location-aware apps on the phone. The README does not publish a supported-device list, a coordinate-precision figure, or a maximum session length, so those are things to establish on your own hardware rather than assume.
Where GeoPort breaks down or is the wrong choice
The passcode requirement is the first limitation and the README does not soften it. Enabling Developer Mode on a device that does not have it means temporarily removing the passcode. On a personal phone that may be acceptable for an afternoon. On a managed corporate handset, or any device holding work mail and credentials, it is a policy question you should settle before you plug anything in.
The second limitation is platform scope. The README's keywords are iOS 17 and iOS 18, and the prerequisites section names an iOS device. There is no Android path in the documentation. People searching for GeoPort on Android will not find a supported answer here. Likewise, this is not a cloud or self-hosted service: the phone must be physically connected over USB, and on Windows that means iTunes must be present for device discovery.
The third is documentation thinness around failure. The README does not document rollback beyond the "Stop Location" instruction, does not state what happens if the USB connection drops mid-session, and does not list which iPhone models or iOS point releases are known to work. The repository has an FAQ.md, and the README links to it, but the README itself does not reproduce its contents. If your test matrix depends on a specific iOS build, that is a gap you have to close yourself before committing a team to it.
Finally, release cadence is worth reading correctly. The last push to the repository was on 2026-03-26, and the most recent tagged release listed is v4.0.2 from 2024-12-20. The repository is not archived, but the gap between the last push and the newest release tag is long, and neither the README nor the release list explains what landed in between.
GeoPort versus iFakeLocation, and what the difference actually is
The README names its own lineage: the interface is inspired by iFakeLocation, and GeoPort is described as built for familiarity with the addition of iOS 17 and Windows support. That is the honest comparison. iFakeLocation is the older tool in this space; GeoPort reuses its interaction model and extends the platform coverage.
So the practical difference is not the concept, since both set a virtual position on a connected iOS device. It is the supported surface. GeoPort claims iOS 17 and iOS 18 on both Windows and macOS, and it bundles the Developer Mode enabling step that newer iOS versions made harder to do by hand. The README also credits pymobiledevice3, the library both the location command and device discovery depend on, as a separate project.
If you are already running iFakeLocation on an older iOS version and it works, there is no architectural reason to switch: the underlying approach is the same. The reason to move is a device or OS version that the older tool does not cover. The reason to stay is that iFakeLocation has no Developer Mode passcode step in this description, because the README attributes that requirement to GeoPort's handling of newer iOS.
Licence, upgrade cost, and what maintaining GeoPort involves
GeoPort is licensed GPL-3.0. For most users that is invisible: you download a release and run it. If you plan to redistribute it inside a company, bundle it into a product, or ship a modified build, the copyleft terms apply to the distributed work, and that is a question for your own legal review rather than something the README answers.
The upgrade cost is low by design. Releases are per-operating-system packages, so upgrading means downloading the newer package and running it, with no Python environment to reconcile. That is the same property that makes the tool easy to adopt. The flip side is that you inherit whatever the packaged build contains, and the README gives no changelog beyond pointing at the releases page.
Maintenance is the part to watch. With the last push on 2026-03-26 and the newest listed release v4.0.2 from 2024-12-20, the project is not archived but the release history is sparse. Location simulation on iOS is a moving target: each iOS release can change how Developer Mode is gated, and pymobiledevice3 has to track those changes upstream. A tool in this category is only as current as its last compatibility fix, so check the release notes for your iOS version before you standardize on it.
Editorial conclusion
Adopt GeoPort if you need to set a virtual GPS position on a physical iPhone from Windows or macOS and you accept that enabling Developer Mode on iOS 17 may require temporarily removing the device passcode. Do not adopt it as an Android tool or as a cloud service: it needs a USB-connected device, iTunes on Windows, and administrator or sudo rights on iOS 17. Before relying on it, verify that your iOS version is covered by the current release and read FAQ.md for the reset behaviour.
Frequently asked questions
What is GeoPort?
GeoPort is a desktop application that simulates a location on a connected iOS device, letting an iPhone report a position you choose instead of its real GPS location. The README describes it as built with Python, Flask and pymobiledevice3, with an interface inspired by iFakeLocation.
How do I install GeoPort?
Download the package for your operating system from the releases page and run the application. The README states you do not need to install Python, but Windows users must install iTunes so the Apple USB service can discover the iOS device.
How do I use GeoPort on an iPhone?
Connect the iPhone by USB, let GeoPort discover it, then set the location you want in the interface and apply it. When you are finished, press "Stop Location" before disconnecting; if you forget, the README says to reconnect the device and press it again.
Is GeoPort free?
The repository is published under GPL-3.0 and the releases are downloadable from GitHub, while the README asks for donations to support development. The README does not describe a paid tier or a licence key.
What is a GeoPort alternative?
The README credits iFakeLocation, which inspired GeoPort's interface, and pymobiledevice3, the library that handles communication with the iOS device. GeoPort's stated addition over iFakeLocation is iOS 17 support and Windows support.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/davesc63-geoport)