John Maguire

Camera App Connection Issues and VPNs on Android Phones


TL;DR: When connected to a VPN app, such as Nebula, Wireguard, or Tailscale, camera apps used to download photos may be unable to access the camera’s network. Some VPN apps may offer the ability to exclude these apps from the VPN connection—otherwise, you must temporarily disconnect from the VPN when using the camera app.


As a software engineer working on mesh overlay networks (a type of VPN product) I typically have a VPN process running on my Android phone (usually a Pixel.) I’m also a hobbyist photographer, and have owned cameras from a variety of manufacturers, including Sony, Fujifilm, Ricoh, and GoPro.

A constant over the years, regardless of which ecosystem I’m a part of, is user complaints around the app which downloads photos from the camera to a phone. The specifics vary: usually poor UX, performance issues, or finicky file transfers. I personally found the Ricoh app to be so unreliable that I finally broke down and wrote my own Android app. But I have noticed one issue that is constant among camera brands and seems to be a bug inherent to Android itself.

When a VPN is active, Android apps—even those configured only to route IP addresses outside of the WiFi network range—are unable to access the local network (i.e. the camera’s WiFi network.)

I’ve seen some argue that this is the correct behavior, noting that a VPN should sit between your phone and the rest of the Internet, for privacy’s sake. However, a local area network is not the Internet, and VPNs are used for purposes outside privacy-focused “exit nodes”—after all, they are just Virtual Private Networks. When a VPN registers a route for 100.64.0.0/10, it shouldn’t affect traffic flowing to the 192.168.0.0/16 subnet.

This bug even affects Google applications which use the WiFi IoT APIs, such as Stadia, RCS, and Android Auto (see for example this Tailscale pull request to fix the aforementioned services). While VPN apps can resolve this issue on a per-app basis by excluding the app from the network, camera manufacturers can’t work around the issue in their own app. While some VPNs such as Tailscale and Wireguard allow you to configure apps to exclude in their settings, others do not—and in this case the only known workaround is to temporarily disable the VPN.


For further reading, here are some examples of this issue on Reddit. I have a foggy memory of an Android issue tracker bug on the matter as well, but I can no longer find it.