Source: https://mayphus.org/entries/gosure-3201-local-android-preview/ Title: A local Android preview for my GoSure 3201 Metadata: {"date":"2026-10-07","kind":"article","language":"en","locale":"en","route":"/entries/gosure-3201-local-android-preview/","slug":"entries/gosure-3201-local-android-preview","tags":["camera","android","reverse-engineering"],"type":"article"} # A local Android preview for my GoSure 3201 In August 2026, I investigated my own Philips GoSure 3201 dash camera to see whether I could view its live feed in a small local Android app. The useful result was a working preview recorded in the app's README, along with a more accurate picture of the camera's control protocol. This is an account of that earlier experiment, not a new device test. ## Identifying the camera The camera reported its model as GoSure3201 and its chip as NT96672. It also reported D125 as an internal brand. Its vendor app belonged to Aoni's app family, and an Aoni D125 product specification described similar Wi-Fi and 1080p hardware. Together these clues point toward a customized D125 family device. They do not establish that firmware is interchangeable, and I did not open the case to verify the board. ## Finding the local control path The vendor app and the camera's responses showed that local HTTP requests could read device information and start live viewing. The start operation exposed an RTSP stream. That was enough to build a narrow viewer without a cloud service or an account. The protocol was more stateful than the first successful request suggested. A separate heartbeat session in the vendor app affected whether HTTP commands worked reliably; after that session closed, some commands returned an error. A stop operation I tried was rejected. A file-list request using parameters recovered from the app stalled for more than 25 seconds and temporarily left HTTP unresponsive, so I stopped testing that path. Ordinary media-folder listings remained a less intrusive alternative. An early network scan also misled me. In one unresponsive state, some ports appeared open. After a physical restart, the suspected FTP and Telnet ports refused connections. I never saw a Telnet banner or login prompt, let alone obtained shell access. A successful TCP handshake would not have proved a usable service anyway. ## Getting pixels onto Android The first playback approaches failed for different reasons. The camera's older RTSP implementation rejected an aggregate PLAY request from Media3. Android's platform decoder produced black frames. Interleaved TCP playback stopped after roughly 30 seconds in the recorded test. The preserved Android app uses LibVLC 3.6.5 with software H.264 decoding, direct RTP over UDP, and a dedicated TextureView. It binds the process to the camera's Wi-Fi connection so Android does not silently prefer mobile data. It also resumes the preview when the app returns and reconnects after an interruption. The README records visible camera pixels on a Xiaomi MI 8 with this configuration; the preserved source corroborates the playback path. I did not recover a screenshot or video of that session, and I have not repeated the test for this article. The app's visible actions are deliberately small: check the camera and start live view. It does not implement the vendor heartbeat session, despite that session's importance to the protocol investigation. Nor does it record in the background, upload media, reset the camera, or offer a cloud service. ## What the experiment established I recovered a useful local viewing path and learned to distinguish device responses from assumptions about its underlying platform and services. I did not extract or flash firmware, obtain root or Telnet access, or prove that vendor event names produce working notifications. AI analysis of frames remains an idea, not a feature of this app. The investigation was recorded on August 15–16, 2026. The preserved app and notes were archived together by September 18; that archival date does not establish the app's exact completion day. The result is a bounded local preview and a set of protocol lessons, with the remaining gaps stated plainly.