Skip to content

Releases: borconi/openzeekr

OpenZeekr 0.2.2

Choose a tag to compare

@borconi borconi released this 22 Oct 21:09

⌚ Wear OS watch — now a real companion

  • Battery & range at a glance — a dashboard-style charge gauge wraps the screen, coloured by level (green → yellow → orange → red) and filling bottom-left to bottom-right like a car gauge.
  • Climate from your wrist — set a target temperature and turn A/C on/off with a single switch that follows the car's state.
  • Charging from your wrist — open/close the charge port, then start/stop charging once plugged in; each button reflects what the car is actually doing.
  • Lock as a slide switch that shows whether the car is locked and flips the moment you act.
  • Works offline — lock/unlock run over the watch's own Bluetooth key even when the car's been off the network for days; cloud-only controls grey out until it's reachable rather than failing silently. Climate/charging relay through your phone, so no account or keys ever live on the watch.

📱 Phone

  • Unlock on approach with the phone locked (Samsung and others, #21) — reconnects now work screen-off.
  • Faster, more reliable reconnects — connects the moment Bluetooth spots the car; gives up on a stalled attempt after 12 s.
  • Charging speed shows on DC fast charging.
  • Proximity follows your walking — full-speed detection while walking, nothing while standing still (no idle battery drain).
  • Background detection self-heals if Bluetooth drops it (thanks @clydebarrow, #25).

Full details in CHANGELOG.md.


Install: openzeekr-phone-0.2.2.apk on the phone, openzeekr-watch-0.2.2.apk on the watch. Both are signed with the same key and share one Play applicationId.

OpenZeekr 0.2.1

Choose a tag to compare

@borconi borconi released this 09 Oct 10:10

Fixed

  • Digital Key works again on current phones - and repairs keys the old version stranded. Zeekr recently dropped some older phones (including the Pixel 6a) from the list of models allowed to hold a Digital Key on the 7GT. Any key OpenZeekr had created under the old phone identity was left stuck on Zeekr's servers in a half-created state that could never activate and that retrying could not fix. OpenZeekr now presents a currently-supported phone identity, so Digital Keys provision normally again.
  • Automatic broken-key repair. When setup finds one of these stranded keys bound to your device, OpenZeekr now deletes it and creates a fresh one automatically - instead of trying, and failing, to reuse it. No manual delete-and-retry needed. Repair only ever touches a stuck key that belongs to your own device.
  • Digital Key setup no longer fails after a server rate-limit. If Zeekr's gateway throttled the key-creation request while the key was in fact created, setup used to stop with an error. It now recognizes that the key already exists and carries on.
  • Software updates on shared accounts. Checking for and installing updates is an owner-only action on Zeekr's side. Shared (non-owner) accounts used to see a confusing "Current version: Unknown"; the Updates tab is now hidden for shared accounts, with a clear "managed by the car's owner account" message as a safety net. (#23)
  • Session expiry is handled cleanly. When your sign-in expires, OpenZeekr now drops you to the sign-in screen with "Session expired - please sign in again" instead of silently retrying with a dead token. (#22)

Changed

  • Reported device identity updated to a modern Pixel (Pixel 7 / Android 16). This is only what Zeekr's backend sees when checking Digital Key eligibility and looking up calibration; it changes nothing about your actual phone.

Developer tooling

  • A dev-only (developer mode) Cancel update button to abort an update assignment that froze mid-install and is blocking remote control.

OpenZeekr is a free, non-commercial clean-room app and is not affiliated with Zeekr.

OpenZeekr 0.2

Choose a tag to compare

@borconi borconi released this 01 Oct 21:47

Phone app, version 0.2. Install the APK below (sideload). The Wear OS app is unchanged from its own release.

Added

  • Software updates - the full flow. The Updates tab now drives your car's software update end to end, like the official app: it shows the available version and release notes, follows the car's download progress live (with a percentage), and lets you Install now or Schedule install for a later time. While an install is scheduled you can still install it now or pick a different time.
  • Live update status. Once an update is downloading or installing, the tab tracks the whole lifecycle on its own - Downloading, Ready to install, Vehicle self-check, Installing, Finalizing, Installed - updating in real time from the car's own status pushes, with no need to tap Refresh.

Changed

  • The Updates tab loads the current update status automatically when you open it.

Developer tooling

  • Cross-platform verify Gradle tasks (build + test + lint), a baselined Android Lint gate, an .editorconfig, and a toolchain preflight that fails early with an actionable message on a wrong setup. Thanks to Erik Günther (#12). (Lint runs under verify/check, not the normal app build.)

Full changelog: https://github.com/borconi/openzeekr/blob/master/CHANGELOG.md

OpenZeekr 0.1.9

Choose a tag to compare

@borconi borconi released this 30 Sep 22:13

Added

  • Live speed on the hero card. When the car is being driven, the home card shows the
    current speed; while it's parked you get the normal card. Updates refresh faster while
    driving (and only while the app is open).
  • Software updates tab (experimental). A new "Updates" tab checks whether your car has a
    new software version available. It's under development - it can only check for now, not
    install - and on most setups the check needs credentials it won't have, so it may be
    unavailable.

Fixed

  • Crash on startup (introduced in 0.1.8). On setups without the optional inbox
    credentials (which most people don't have), the app could crash right after the main
    screen. Those overseas-app features are now simply unavailable when the keys aren't set,
    instead of taking the app down. Thanks to Fredrik for the report and diagnosis.
  • Approach unlock now triggers when you reach the car even if your phone had already
    connected to it as you walked up. Previously it only unlocked if the key was still linking
    at the moment you arrived, so walking up to an already-connected car often did nothing. It
    still unlocks only once per approach and re-arms after you walk away.
  • Rear seat ventilation buttons no longer show on cars that don't have the feature (e.g. a
    7GT with heated-only rear seats). The Climate tab now follows the car's actual fitted
    ventilation zones instead of a generic four-seat layout. Thanks to Atarinside (issue #20).

Changed

  • Walk-away auto-lock now waits until you've clearly left the car before locking - it was
    locking too soon, as little as a step back from the door. The unlock and lock points now use
    one consistent gap (calibrated or not).
  • Calibration step 2 now says "the driver's side" instead of "to the left", so it's correct
    on right-hand-drive cars (left for LHD, right for RHD).
  • Bottom navigation adapts to the screen: it keeps labels where there's room and falls back
    to clean icons on smaller / large-display screens, so the tabs never crowd.

OpenZeekr 0.1.8

Choose a tag to compare

@borconi borconi released this 30 Sep 13:00

Added

  • Approach unlock & walk-away lock. The car can unlock as you walk up to it and lock
    itself as you walk away, over the BLE digital key. Because every phone-and-car pair is
    different, this is set up with a quick, one-time "Calibrate at your car" walk in the
    Key tab: you stand at four spots around the car once and OpenZeekr learns your phone's
    real signal at the door and at ~6 m. Approach unlock stays off until you've calibrated, and
    the sensitivity (very close / close / far) is then based on your measured distances instead
    of one-size-fits-all guesses. The digital key itself still sets up from your account with no
    car present - only approach unlock needs the at-car walk.

Changed

  • Bottom navigation now shows every tab at once on any phone - tabs are no longer pushed
    off the edge of the screen where they can't be found.
  • Scaling on any phone. The home dashboard, stat row and control tiles now fit correctly
    on phones with a large display size or font size, instead of wrapping or clipping (e.g.
    "Locked" or "578 km" splitting across lines).
  • The donate link in Settings now opens when tapped.
  • Passive-entry setup and proximity calibration are consolidated in the Key tab.

Fixed

  • Paint colour. Cars (for example the 7GT) no longer show the wrong colour - the real
    exterior paint is read from your account and is matched even when the colour name comes back
    localised.
  • Car name. The top bar now shows your car's real name or nickname (including a name you
    set in the official app) instead of an internal model code.
  • Charging speed. Three-phase AC charging now reports the correct power (about 11 kW)
    rather than a third of it.
  • Windows tile now uses a car-window icon instead of the Windows logo.
  • Notifications badge. The unread count now goes down as you read messages or tap
    "mark all read" - previously it could stay stuck at the total.
  • Login. A clearer message when an account can't be found in the selected region, instead
    of a bare error code.

Digital key

  • Fixed the constant Bluetooth pairing-request buzz some phones got near the car. Pairing
    is now used only briefly during calibration and is cleared straight afterwards.
  • Self-calibration now completes under OpenZeekr's own key - the groundwork that makes the new
    at-car approach-unlock calibration possible.

OpenZeekr 0.1.7

Choose a tag to compare

@borconi borconi released this 24 Sep 17:29

Early beta. Not affiliated with Zeekr. A free, non-commercial clean-room app.

What's new in 0.1.7

  • Multiple cars on one account. Switch between all your cars - owned and shared - from the car-name dropdown at the top. The dashboard, status and controls follow the selected car, and each car can be renamed.
  • Accept a shared car without the official app. When someone shares a car with you, OpenZeekr shows an Accept / Decline prompt (owner, model, access and expiry). There's also a "Check for shared cars" button in Settings. When a share ends, the car drops out of the switcher automatically.
  • Fridge / cool-box control (on/off + target temperature) and Sun-shield (rear sunshade) open/close, for cars that have them.
  • New vehicle stats: odometer, distance and time to the next service, and the 12 V battery voltage.
  • The charge tile is now "Charge & more" so it's clearer it opens all the charge settings (limit, scheduled charging, battery pre-conditioning, port).

Fixes

  • The dashboard now shows the correct car's model and colour when switching (it could previously stay on the first car).
  • The fridge tile no longer appears on cars that only send fridge alarms; sunroof/sun-shield now match what each car actually supports.
  • Cleaner quick-action grid when a car doesn't have every control.

Digital key

  • Reverted a 0.1.6 change that could break your digital key. 0.1.6 sent an experimental Bluetooth "pairing" step on every connection that could corrupt the car's stored pairing (entry/start would stop working). It's removed; the key handshake is back to the proven 0.1.5 behaviour. If you ran 0.1.6 and your key broke: remove the OpenZeekr key in the official Zeekr app (Digital keys -> remove), then re-provision in OpenZeekr. Do not run 0.1.6.

Also includes the 0.1.6 improvements: SEA/Australia login, sign-out then sign-in fix, gzip response handling, faster reconnect.

OpenZeekr 0.1.5

Choose a tag to compare

@borconi borconi released this 23 Sep 07:57

OpenZeekr 0.1.5

  • Send a diagnostic log from the login screen. If sign-in fails during setup, a "Share diagnostic log" button now appears right there, and the login attempt's network traffic is captured automatically - so a tester who can't get past login (and therefore can't reach Settings) can still send us an encrypted log to diagnose the failure.
  • Fixed the setup spinner buttons. The "Logging in…" / "Setting up…" buttons showed an oversized, mis-shaped spinner; they now show a correctly sized spinner with a label.

Phone APK only. The Wear OS app is unchanged from 0.1.4 (all 0.1.5 changes are phone-side); keep using the 0.1.4 watch APK.

OpenZeekr 0.1.4

Choose a tag to compare

@borconi borconi released this 22 Sep 15:13

OpenZeekr 0.1.4

  • Send a debug log as a file. Settings now has a "Share" button that sends the encrypted log through your email / share sheet as a file attachment. A full session log is far longer than the clipboard can hold, so the old copy-paste route silently cut long logs off and made them unreadable - a file has no such limit. (The log is still encrypted so only the developers can read it.)
  • Shared accounts can create a key. Provisioning no longer refuses to mint a digital key just because the signed-in account isn't the registered car owner - it attempts the mint and lets the server decide, so a second/shared account can set up its own key.
  • Stops retrying forever when a car won't pair. If the car accepts the Bluetooth link but never completes the digital-key handshake, the app no longer loops connect - fail - reconnect endlessly (which drained the battery) - it backs off automatically, while an explicit connect still retries immediately.
  • Clearer error when the link drops mid-pairing. A Bluetooth drop during the key handshake now shows a plain "link dropped during the handshake" message instead of a cryptic obfuscated one.
  • Better handshake diagnostics. More detail is captured when the key handshake fails, and the on-screen error names the likely cause, to help pin down cars that won't pair.
  • Works on 16 KB-page devices. The native secrets library is now aligned for 16 KB memory pages, so it loads correctly on newer devices (some Android 15+ phones). Previously it could fail to load there, leaving the app unconfigured and unable to sign in.
  • Anti-relay / fake-car protection. The car's certificate is pinned to your car on first pairing (and checked for validity), so a fake or relayed "car" - even one presenting a genuine Geely certificate - can no longer complete the handshake and harvest your digital key.
  • No key material in the log. Removed leftover debug lines that wrote the AES session key and the raw digital key into the log.
  • Safer secrets export. "Export" now copies your configuration to the clipboard instead of displaying your password, tokens and keys on screen.
  • Hardened "send to car" link handling. Shared map links are only expanded over http/https to public addresses (no internal / loopback targets).
  • Southeast Asia (SEA) login. Selecting the SEA region now uses SEA's own signing keys, so accounts registered in SEA/Malaysia can sign in (previously every region's login was signed with the EU keys and SEA was rejected). LA / ME will follow once their keys are added.
  • In-app update check. OpenZeekr checks GitHub on launch and tells you in Settings when a newer release is available, with a one-tap download link (plus a manual "Check for updates" button).
  • Watch stays usable when the phone isn't at the car. The Wear OS app now only stands down while the phone is actually holding the car's Bluetooth link (not merely when Lock-on-approach is enabled), so you can still lock/unlock from the watch via handover. Thanks to Jan Compen for the report and patch.

Downloads: openzeekr-phone-0.1.4.apk (phone) and openzeekr-watch-0.1.4.apk (Wear OS watch).

OpenZeekr 0.1.3

Choose a tag to compare

@borconi borconi released this 21 Sep 21:06
  • Lock / unlock confirmed by the car, with self-healing. Waits for the car's acknowledgement and, if the digital-key session has gone stale, rebuilds the link and retries automatically (fixes lock/unlock silently doing nothing until a Bluetooth toggle).
  • Handshake retries the connect step when the car does not answer the first time.
  • Broader car discovery - the connect scan is now unfiltered, which should fix the "can not find / connect to the car" link issue for more models (e.g. Zeekr X).
  • Session refresh for a stale link (interim; likely to change again).
  • Logging OFF by default on a clean install.
  • Sanitized HTTP logs (redact keys / tokens / secrets; still pending a full human review).
  • Encrypted log sharing - the BLE log Copy button now encrypts the log, so sharing it on GitHub or elsewhere is safe.
  • Compile-time keys hardened - baked into a native .so library instead of plaintext in the APK.

OpenZeekr 0.1.2

Choose a tag to compare

@borconi borconi released this 19 Sep 19:54

OpenZeekr 0.1.2

Highlights

  • Region selection (EU / SEA / LA / ME) with per-market Zeekr servers. Only EU is verified on a real car; SEA/LA/ME are experimental with an Advanced host-override panel.
  • Push notifications from Zeekr shown directly in OpenZeekr (security alarms, charging, service messages) via Firebase - no need to keep the official app running.
  • Power trunk: open / close the tailgate remotely.
  • Charge & departure scheduling: set off-peak charging windows and departure / preconditioning times; saving commits to the car and reads back to confirm.
  • Seat ventilation detection fixed - controls reflect only what your specific car supports.
  • Better phone-side walk-away lock, with a cloud backstop if the BLE lock can't be confirmed as you leave.
  • Average trip consumption (Ø kWh/100km) shown alongside vehicle status.
  • Mobile data usage: how much of the car's eSIM data plan you've used this month.
  • Nicer climate (cooling / heating) UI.

Downloads

  • openzeekr-0.1.2.apk - phone app (signed).
  • openzeekr-wear-0.1.1.apk - Wear OS companion, UNCHANGED from 0.1.1 (no Wear changes this release).