Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iFakeLocation

Spoof the GPS location of an iOS device from your computer — works through the regular USB pairing without jailbreaking.

This fork is based on the original master131/iFakeLocation. On top of the original codebase the following has been done by @efebagri:

  • Redesigned UI — refreshed Bootstrap layout, clearer controls, modal feedback and a dedicated Location Mode card with tabs for single locations vs. routes.
  • Route mode — drop multiple waypoints on the map, pick a travel mode/speed preset and have the device walk/drive/cycle the route with a physics-aware speed profile (corner braking, traffic-light stops, ±15 % random jitter, pause/resume, loop).
  • iOS 17, 18, 26 support — Apple removed the legacy com.apple.dt.simulatelocation lockdown service starting with iOS 17, so this build delegates the modern path to pymobiledevice3 via a managed pymobiledevice3 remote tunneld daemon (tested up to iOS 26.3.1).
  • macOS auto-tunneld — on macOS the tunneld helper is started for you via AppleScript on the first run; a single native password prompt is enough per session.

Requirements

Windows

macOS

  • .NET 6.0 Runtime for macOS 10.13 (High Sierra) or newer. Use the x64 build, even on Apple Silicon — the bundled native libraries are x64.

Linux (Ubuntu)

iOS 17+ / iOS 26 (all platforms)

  • Python 3.12+ and pymobiledevice3 9.x or newer on your PATH.

    Fastest path via uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    uv tool install pymobiledevice3

    Or via pipx:

    pipx install pymobiledevice3

    Verify:

    pymobiledevice3 version       # should print 9.x.x or newer

    If pymobiledevice3 isn't on your PATH, point PYMOBILEDEVICE3_PATH at the absolute path before launching iFakeLocation.

Download

Grab the latest build from the Releases page, or build from source (see below).

Running

macOS

./start.sh

The helper script sets DOTNET_ROOT=$HOME/.dotnet and launches the published binary. On the first run:

  1. iFakeLocation checks whether pymobiledevice3 remote tunneld is already running on http://127.0.0.1:49151.
  2. If not, it spawns the daemon via AppleScript's do shell script with administrator privileges. A native macOS password dialog will appear (shown as coming from osascript) — enter your login password once.
  3. Your browser opens at http://localhost:<port>.

Stopping the app (the Exit button in the UI or Ctrl-C in the terminal) also terminates the tunneld daemon iFakeLocation started. If tunneld was already running before you launched iFakeLocation, it is left alone.

To skip auto-start set IFAKELOC_NO_AUTO_TUNNELD=1 and run sudo pymobiledevice3 remote tunneld yourself in a separate terminal. PYMOBILEDEVICE3_TUNNELD_URL lets you point at a daemon on a different host/port.

Windows

Run iFakeLocation.exe. tunneld auto-start isn't wired up on Windows yet — open an elevated PowerShell and run pymobiledevice3 remote tunneld before launching the app if you need iOS 17+ support. The app will detect the running daemon.

Linux

chmod +x ./iFakeLocation
./iFakeLocation

# or via the dotnet runtime
dotnet ./iFakeLocation.dll

Same tunneld note as Windows — run sudo pymobiledevice3 remote tunneld in a second terminal before launching for iOS 17+.

Using the app

  1. Plug in your iDevice and trust this computer when prompted.
  2. Click Refresh and select the device from the dropdown.
  3. Single Location tab: type an address or place name in the search box and hit Search, or double-click anywhere on the map to drop a pin. Click Set Fake Location.
  4. Route Mode tab: double-click to add waypoints, drag to adjust, right-click to delete. Pick a travel mode (driving / cycling / walking) and a speed preset (walking, running, cycling, city, highway, or custom). Tick Loop to replay continuously. Click Start Route. Pause, Resume and Stop Route buttons control playback. iFakeLocation queries the public OSRM server (router.project-osrm.org) for a real road route and builds a physics-aware speed profile from the per-segment annotations.
  5. Confirm the fake location in Apple Maps / Google Maps. To clear it, click Stop Fake Location. If the device is stuck at the faked location, toggle Location Services off and on in Settings → Privacy.

The first request on an iOS 17+ device may show a Trust this computer prompt on the device itself — unlock the phone and tap Allow so the tunnel handshake can complete. Each command has a three-minute timeout.

A Developer menu also appears in Settings after the first run. Reboot the device to remove it.

Developer disk images

iFakeLocation downloads the right developer image automatically. If the automatic download fails, create a DeveloperImages/<ios-version>/ folder next to the executable and drop the matching DeveloperDiskImage.dmg and DeveloperDiskImage.dmg.signature files in:

https://github.com/haikieu/xcode-developer-disk-image-all-platforms/tree/master/DiskImages/iPhoneOS.platform/DeviceSupport

(For iOS 17+ disk images are handled by pymobiledevice3 and personalised on the fly — no manual download needed.)

Troubleshooting

Q: My device doesn't show up. Make sure it is plugged in, trusted with this computer, and visible in iTunes / Finder.

Q: "Unable to load shared library 'imobiledevice'" Set DYLD_LIBRARY_PATH to the folder containing the bundled libimobiledevice files, then run with explicit framework and runtime:

export DYLD_LIBRARY_PATH=$HOME/iFakeLocation/iFakeLocation/bin/Debug/net6.0/runtimes/osx-x64/native
dotnet run --project ./iFakeLocation/iFakeLocation.csproj --framework net6.0 --runtime osx-x64

Q: Can't mount the image / generic mount error. Confirm the device is trusted with this computer. If anything stays broken, reboot the device — that fixes the vast majority of mount issues.

Building from source

dotnet build iFakeLocation.sln -c Release -f net6.0
dotnet publish iFakeLocation/iFakeLocation.csproj -c Release -f net6.0 -r osx-x64 --self-contained false

The self-contained switch can be flipped to true if you want the .NET runtime bundled into the output.

Credits

License

Released under the GNU General Public License — see LICENSE.

About

Simulate locations on iOS devices on Windows, Mac and Ubuntu.

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages