Skip to content

Testing Guide

Babul Raj Singh edited this page Jul 26, 2026 · 1 revision

Testing Guide

This walks through verifying each of Voyager's core features against a real phone. It assumes the daemon is already running (see Installation & Setup) and that you're watching its terminal window throughout — that log is the only feedback you get right now, there's no graphical UI published yet.

1. Wired (USB) mirroring

  1. Plug the phone in via USB.
  2. Accept the debugging prompt on the phone if it appears.
  3. Watch the daemon log: the device's state should settle on device, then you'll see [+] <model> connected via USB, then [>] scrcpy launched for <model>.
  4. A window should open mirroring your phone's screen.
  5. Type l and press Enter — the device should be listed with a (mirroring) tag next to it.

2. Wireless (Go Wireless)

  1. With the phone on USB and already mirroring, type w and press Enter.
  2. The daemon prints instructions: turn on the phone's hotspot and join it from this PC, or make sure both are already on the same Wi-Fi network.
  3. Do one of those, then just wait — it connects on its own, no further typing needed.
  4. Watch for [w] connected wirelessly: <ip>:5555 in the log.
  5. A second scrcpy window opens for that wireless address. You can unplug the USB cable now — the wireless mirror keeps running.

Known, not a bug: typing l afterward shows the phone listed twice — once by its USB serial, once by its wireless address. Go Wireless doesn't yet recognize these are the same physical device. This is a known limitation, not something broken in your setup.

3. Handoff (single-window USB → wireless swap)

Handoff does the same underlying wireless connection as w, but manages the window for you — see the Command Reference page for exactly how the two differ.

  1. With the phone on USB and a mirror window already open, type h and press Enter.
  2. Watch the stage sequence in the log: initiating → switching to TCP mode → trying same-Wi-Fi/hotspot gateway → launching wireless mirror → closing USB mirror → handoff complete.
  3. The USB window should close and a wireless one should take over.
  4. Unplug the cable — the mirror should keep running.

Known, not a bug: the USB window can disappear a moment before the wireless one appears, rather than a seamless crossfade. Switching the phone to TCP mode briefly cuts the USB connection itself as a side effect — that's unavoidable with this approach.

Known rough edge: if a wireless mirror for the same phone is already running from an earlier session, Handoff can fail with wireless launch failed — a real gap in how it recognizes a mirror is already up for that device. If this happens, close all scrcpy windows and try again from a clean state.

4. Automatic reconnect

Once a phone has gone wireless at least once, Voyager remembers it and tries to reconnect automatically the next time it's reachable — no w or h needed.

  1. With the phone mirroring wirelessly, type q to quit the daemon entirely.
  2. Toggle the connection off and back on (turn the hotspot off then on, or just wait a moment if you're on shared Wi-Fi).
  3. Start the daemon again: dart run bin\daemon.dart.
  4. Type nothing at all — just wait about 10–15 seconds.
  5. Watch for [r] reconnect probe succeeded for <ip>:5555 in the log, followed by the mirror launching on its own.

Known issues to expect right now

Voyager is under active development. These are already-known, already-tracked issues — if you run into them, it isn't something wrong with your setup:

  • Duplicate device entries. The same phone can appear more than once (USB plus one or more wireless addresses), since there's no shared identity across connection types yet.
  • The first replug after a fast unplug/replug can silently fail to mirror. adb's own device state briefly flickers as the USB connection settles, and a launch attempt can land right in that window and fail. Unplugging and replugging again, or just waiting a few seconds, resolves it.
  • Closing a mirror window directly (its own X button) doesn't update the daemon's idea of what's currently mirroring. Check with l, and unplug/replug to relaunch if needed.
  • No audio, by design for now. If you see Audio capture error in the log, add "--no-audio" to scrcpyArgs in %APPDATA%\scrcpy_gui\config.json — audio capture is unreliable on some devices and setups.

If you hit something not on this list, it's worth reporting as a new issue.

Clone this wiki locally