I have a Nikon 5300 DSLR and an Android 7.1.2 device (LineageOS).

I want to use Nikon's official WirelessMobileUtility app to browse/transfer pictures and take pictures without touching the camera.

Problem: The connection never works, even after trying dozens of times. In the manual (and YouTube tutorials) the steps are so easy (enable WiFi on the camera, connect to that WiFi from the phone, start app) yet the app never manages to connect. Many recent Play Store reviews mention this problem.

How to make the connection succeed?

Important: This question is only for Android 7.1.2 and above


This procedure requires root access.

  1. Install a terminal such as ConnectBot (F-Droid, Play Store)
  2. Type su
  3. Type this command: settings put global captive_portal_mode 0
  4. Press Enter
  5. That's all, the connection should work immediately.

disable captive portal mode

Screenshot (click image for a larger variant)

Explanation: Since 7.1.2 Android has changed the way captive portals are handled, and the camera's WiFi, which does not give access to the Internet, is considered a captive portal and since it does not reply as expected the connection is gets dropped. Setting the captive_portal_mode variable to 0 prevents Android from doing that.

Details: https://github.com/LineageOS/android_frameworks_base/blob/cm-14.1/core/java/android/provider/Settings.java#L8268

(By the way, for devices with an Android version earlier than 7.1.2 the command is settings put global captive_portal_detection_enabled 0)

  • Just out of curiosity: Does that really require root – or might the "elevated privileges" of the shell user via ADB be sufficient? I have no device with 7.x+ to test, but maybe you have?
    – Izzy
    Mar 13 '18 at 13:46
  • @Izzy: I haven't tried, I just thought it was necessary after reading android.stackexchange.com/a/148442/501 Mar 13 '18 at 13:55
  • @Nicholas I think this is somewhat related to : WIFI connection with question mark, also check the answer for other methods of resolving this issue. I would also like to believe this requires elevated priviledges.. Mar 13 '18 at 14:15
  • OK, answering myself: as I suspected, it does not require root (except when run in a terminal directly on the device) – the adb shell variant suffices. One more reference: this answer at SO. Maybe you want to integrate that with your answer, @NicolasRaoul? Also note the exact command seems to depend on the Android version, see this XDA post (you already indicated that).
    – Izzy
    Mar 13 '18 at 14:56
  • 1
    @Izzy: I just tried with typing su, I get Error while accessing settings provider java.lang.SecurityException: Permission Denial: Do not have permission in call getContentProviderExternal() from pid=12592, uid=10124 requires android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY. With the su step it works. Sep 21 '18 at 1:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.