Skip to content

Releases: KonradIT/osmosis

Osmosis v1.3.3-action1-playback

Pre-release

Choose a tag to compare

@KonradIT KonradIT released this 05 Aug 22:43

Send playback command first

Osmosis v1.2.1

Choose a tag to compare

@KonradIT KonradIT released this 05 Aug 19:10

Camera-line release off main. The previous build testers were on (drones-test-v1.2.0) came off the drone branch; this is the normal line, with everything main has gained since.

Preview

  • YouTube-style scrub preview. Drag the seek bar and the frame under your thumb floats above it, decoded straight off the camera by HTTP range request — nothing is downloaded. A coarse grid is prefetched so the bubble is never empty, and it sharpens to the keyframe under the thumb as you settle. Measured on hardware: ~260 ms/frame on an Xtra Edge Pro, ~420 ms on a Nano, flat regardless of how far you seek.
  • Dragging no longer seeks the player. It used to fire a seek per pixel of travel, each one a fresh range fetch over the camera's AP; now the clip jumps once, on release.
  • Pinch-to-zoom on photos, with double-tap to toggle and pan while zoomed.
  • Share and Edit buttons on a photo once it has been saved, handing the gallery copy to any app that takes it.

Delete

  • Sturdier handle decoding for photos and videos. The record marker is read as [kind][star] 19 06 rather than only the one video-with-clear-star shape, so a record can no longer fall through to the next one's marker while scanning. Two files sharing a delete handle is now logged loudly at decode time, and a regression test decodes real captured Nano and Xtra manifests and fails if any two files collide.
  • A destructive command is never re-issued on a missing reply. If an inline delete gets no reply, the file may well have gone — these cameras reuse file numbers, so re-sending the same handle can address a different, newer file. It now re-lists to check instead. Reading is safe; deleting twice is not. Relatedly, 0xd6 means the handle is already gone, not that the delete failed.

Fixes

  • "Already downloaded" now checks the app's own folders instead of matching a filename anywhere in the gallery, so an unrelated file with the same name no longer greys out Download.
  • A DJI camera advertising under a renamed or unrecognised name is identified by its BLE company id rather than a keyword.
  • Unverified models are marked with a 🧪 badge in the camera list.

Verified

Nano, Action 5 Pro, Action 6, Pocket 3 and the Xtra Edge Pro rebrand — grid, paging, preview, download and delete.

Osmosis neo2-test-v1.3.0

Pre-release

Choose a tag to compare

@KonradIT KonradIT released this 04 Aug 10:18

Test build for the DJI Neo 2, off the drones branch.

Why this build exists

A Neo 2 gets as far as the datalink and then stops at the 0x51 session-open:

handshake OK on udp/9003
session=0x7b46 channel=0x87b8
no drone serial seen in a beacon — cannot open the session
drone list FAILED ... rx [NOTHING — link silent]

The session-open has to echo the aircraft's own serial back at it, read out of its 0x51/0x13
beacon. No serial, no session, and every command is ignored.

What changed

  • The serial length is measured, not assumed. It was fixed at 20 characters, which is a
    Mavic 3's and nothing more principled — any aircraft with a different length would find the
    tag, fail the fixed-width check, and report "no serial".
  • A failed open now says what it saw, so the next run can tell a drone that never beacons
    from one whose beacon we fail to parse. Those need completely different fixes.

⚠️ Expect one pairing prompt

This build gives every install its own pairing identity instead of a shared constant. An
aircraft that had approved an earlier Osmosis build will treat this as a new app and ask for
confirmation: the lights will flash and you hold the power button for ~2 seconds (three
quick presses on a Mini 3). One time only — silent after that. This is expected, not a fault.

What to send back

Turn Save logs on before connecting. The useful line comes straight after
no drone serial seen in a beacon:

  • 0x51 inner cmds seen: NONE — the aircraft never beacons; the open needs a different trigger.
  • a 0x51/0x13 beacon DID arrive but carried no readable serial — payload … — it beacons in a
    shape we do not parse, and the hex says which.
  • drone serial XXXX (N chars) — the length fix was the whole problem and it should just work.

Also worth noting: last run the AP dropped ~16 s after joining, so tap the drone and browse
straight away rather than letting it sit.

Also in here

Everything on drones: Mavic 3 offload end to end, the pairing-identity work, the delete
handle fix, and the Osmo Action index-list decoder. The Action 5 Pro, Action 6, Nano and
Pocket 3 all passed in the same tester session that produced the Neo 2 log.

Osmosis v1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 22:26

Osmosis v1.1.0

A big gallery + reliability release. Changes since v1.0.1:

New

  • Gallery overhaul — the media grid is now a smooth RecyclerView with date section headers (TODAY / YESTERDAY / “30 JUL 2026”), Photos / Videos / Faved filter chips, and a Select mode to queue items straight from the grid (animated filtering).
  • Swipe between items in the viewer — in the full-screen preview, a horizontal swipe moves to the next/previous item in the current filtered list (videos: while paused).
  • Full-library browsing — infinite scroll pages through your entire library, not just the newest ~45.
  • Burst / interval photos — detected and badged, with a frame strip in the viewer.
  • Favorites — star / un-star media (long-press a cell).
  • Share logs — toggling “Save logs” off offers to send the log via the share sheet.

Improved

  • All media info comes from the camera’s DUML manifest now — size, duration, resolution, fps and photo dimensions — so the grid and viewer fill in instantly (no more MP4 moov parsing or HTTP size probes).
  • Storage resolved from the manifest — SD vs internal is derived from the record handle (Pocket 3 pinned to its microSD), fixing blank thumbnails on multi-store cameras.
  • Faster camera actions — delete, favorite, paging, burst-expand and highlight marks all run inline on one live session instead of re-registering each time.
  • Download queue — the FAB shows the queued count, items leave the queue once saved, and duplicate re-downloads are fixed.
  • Preview — already-downloaded items gray out the download button; black system bars; shows the media ID.
  • Rotation keeps the live camera session and the loaded grid (no bounce to the selector); the status pill hides in landscape to give the grid more room.
  • Camera clock is synced to the phone (time + timezone) on connect.
  • Connect flow prompts to enable Bluetooth / Wi-Fi when they’re off, and drops a redundant Wi-Fi heads-up dialog.
  • Wider camera coverage — Xtra rebadges named; the whole Xtra line confirmed on the 10004/no-poke datalink.

Fixed

  • Connecting to a second camera after browsing a first (was getting stuck on the first step).
  • Thumbnails fall back to .thm when the derived .scr isn’t present.
  • The status pill no longer goes dead when a camera has no media.

Osmosis v1.0.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 22:56
Osmosis v1.0.1 — fix landscape-layout launch crash (DJI RC)

Osmosis v1.0

Choose a tag to compare

@github-actions github-actions released this 24 Jul 22:43
Osmosis v1.0 — zero-SDK offload + control for the DJI Osmo line

Osmosis v0.5-storage

Choose a tag to compare

@github-actions github-actions released this 24 Jul 18:44
Osmosis v0.5-storage — per-store SD/internal fixes + OA4 WiFi-enable …

Osmosis v0.5-pocket3

Choose a tag to compare

@github-actions github-actions released this 24 Jul 16:06
Osmosis v0.5-pocket3 — Pocket 3 test build (GPS interlock + media met…

v0.5-osmo-line — media browsing across the Osmo line

Choose a tag to compare

@github-actions github-actions released this 24 Jul 08:33

Install app-release.apk (the signed build; ignore app-debug.apk). Installs over any prior build (versionCode 9).

This is the one that should make your Action 5 Pro, Action 6, and Pocket 3 work end-to-end. Last time we cracked the media-list format off your hex dumps — it's a DJI binary structure, and the app now reads it field-by-field instead of guessing from the filename, so the camera's custom Folder/File name prefixes decode the same as stock.

What to check (2 min)

Keep Save logs ON, then for each of the three:

  1. Connect and let the grid load — you should see thumbnails now.
  2. Tap one clip → preview, then Download it.
  3. Long-press a clip → Delete (optional — it's irreversible).

If anything's off, pull the log with ./dump-logs.sh and send the newest .log.

Known: Osmo 360 — skip it for now

The 360 pairs over Bluetooth but the phone can't find its Wi-Fi network (it just says "searching for device…"), so it won't open. It's a separate issue from the other three, and its footage is 360-format that needs DJI Mimo to view anyway — parked for now.

Version 0.5-osmo-line (versionCode 9).

Osmosis v0.5-osmo-action-pocket

Pre-release

Choose a tag to compare

@KonradIT KonradIT released this 24 Jul 06:43

Test build for Osmo Action 5 Pro / Action 6 / Pocket 3 / Osmo 360. Install app-release.apk (the signed release build; app-debug.apk is the debuggable variant — ignore it). Installs over any prior build (versionCode 8).

The last session's log + screen recording nailed down what's happening. Good news: your Action 5 Pro, Action 6, and Pocket 3 all connect on the DJI-standard port (udp/9004) — the connection path is solid. What's not working yet is the media list, and it fails differently per camera. This build captures the one missing piece.

What this build does

  1. Dumps the raw media list to the log whenever it can't decode it (Action 5 Pro, Action 6, Pocket 3). That hex dump is the exact data needed to make the grid, thumbnails, sizes, and downloads work — it contains only file names and paths, no passwords, no location.
  2. Osmo 360: last time the Wi-Fi join failed (it's WPA3 and the phone couldn't join), and the app then wrongly told you the password was stale. This build retries the join as WPA2 automatically, and if both fail it now says it's a Wi-Fi-compatibility limit rather than blaming the password.

What to do (about 2 minutes)

  1. Keep Save logs ON (top-right).
  2. Connect to each camera in turn — Action 5 Pro, Action 6, Pocket 3, and the 360 — and let each finish loading (or fail). Reaching the grid / "No media" screen is enough; no need to tap around.
  3. Pull the logs with ./dump-logs.sh and send the newest .log.

That single log should crack the list format for the Action 5 Pro, Action 6 and Pocket 3 at once, and confirm whether the 360 is WPA2 or WPA3.

Version 0.5-osmo-action-pocket (versionCode 8).