Skip to content

Releases: aa-proxy/aa-proxy-rs

v0.22.0

Choose a tag to compare

@manio manio released this 23 Jun 06:48

What's Changed

@Deadknight's work:

  • Protocol Version Override & Vehicle Energy Forecast
    • Added Android Auto transport and Wi-Fi protocol version override support for unlocking phone-side features gated by newer HU PDK versions.
    • Improved override logic to only apply when the head unit advertises an older version than the configured target.
    • Added automatic handling and filtering of override-induced VehicleEnergyForecast and MediaOptions messages for compatibility with older head units.
    • Added Vehicle Energy Forecast publishing over WebSocket (vehicle_energy_forecast) for companion applications.
    • Added caching and intelligent merging of partial or null Vehicle Energy Forecast updates to improve data stability.
    • Added support for additional Android Auto protocol message IDs, including Vehicle Energy Forecast and new Media message types.
  • Album Art Injection
    • Added EV energy forecast integration into media metadata with configurable text placement modes.
    • Replaced the legacy EV prefix toggle with a flexible map_album_art_ev_text_mode configuration supporting multiple metadata injection strategies.
    • Improved synthetic metadata generation with placeholder title support for artwork-only updates.
    • Added automatic polling of H.264-derived artwork to ensure updates are emitted even without subsequent metadata packets.
    • Fixed EV metadata prefix expiration handling and improved metadata synchronization reliability.
  • MITM Diagnostics & Debugging
    • Added optional full-frame packet reassembly for decrypted packet debugging and protocol inspection.
    • Added internal SSL packet trace ring buffer infrastructure for future TLS diagnostics and troubleshooting.
    • Improved packet debug logging by reducing media-fragment log noise and enhancing protocol message visibility.
  • USB Gadget Compatibility
    • Added configurable accessory-start gating to avoid stale Android Auto accessory sessions.
    • Added USB gadget re-arm support with configurable cooldowns for head units that do not fully power-cycle USB during sleep/wake cycles.
    • Improved connection retry handling and gadget enable failure reporting.
  • Display & Media Handling
    • Fixed acknowledgement window handling for injected AUX displays.
    • Improved injected display media flow compatibility and ACK synchronization.
  • Build System
    • Added configurable fast-release build profiles for cross-compilation Docker images.
    • Improved Docker build output handling and profile selection flexibility.

@manio's work:

  • TLS / SSL Backend Migration
    • Replaced the OpenSSL-based TLS implementation with a Rustls backend using AWS-LC.
    • Added compatibility workarounds for Android Auto's legacy X.509 v1 certificates.
    • Restored detailed TLS handshake progress logging and negotiated cipher suite reporting.
    • Fixed TLS role assignment between head unit and mobile device connections.
    • Improved TLS read/write buffering by properly draining TLS records and handling partial writes.
    • Fixed TLS decryption handling for WouldBlock conditions.
    • Disabled TLS session resumption to avoid interoperability issues between OpenSSL and Rustls sessions.
    • Improved certificate verification compatibility for Android Auto certificate chains.
  • Development Tooling
    • Added pre-commit hook support for automatic cargo fmt.
    • Updated project documentation and development workflow files.

@korhojoa's work:

  • Display Profiles & Runtime Optimizations
    • Improved injected media channel handling by preventing media fragments from being interpreted as control messages.
    • Enabled LTO, stripping, and single codegen-unit release optimizations for smaller and faster binaries.
    • Enabled panic=abort for release builds to reduce binary size while preserving crash reporting.

Full Changelog: v0.22.0...v0.23.0

Buildroot:

  • no changes

v0.21.0

Choose a tag to compare

@manio manio released this 12 Jun 14:30

What's Changed

@Deadknight's work:

  • Introduce Bluetooth-based Android Auto Wireless proxy and car Wi-Fi MITM implementation:

    • Added new proxy modes (car-wifi-mitm, proxy_ap, external_ap) with AP+STA and dual-radio support.
    • Improved HU pairing, SDP discovery, rendezvous handling, connection sequencing, recovery, retries, and compatibility with stricter head units (including MBUX).
    • Added Wi-Fi join backends (wpactrl, wpa_supplicant) and configurable timeouts.
    • Added keepalive handling, TCP connection synchronization, route recovery, smarter Wi-Fi bootstrap processing, and improved reliability during wireless Android Auto startup.
    • Introduced configurable kernel module preloading, firmware path configuration, and enhanced USB Wi-Fi adapter support.
    • Added optional Bluetooth passthrough service allowing Android Auto HFP/call audio to use the head unit's native Bluetooth adapter when aa-proxy-rs is in the middle.
  • Companion Bluetooth

    • Replaced the legacy BLE/GATT companion transport with a Classic Bluetooth RFCOMM implementation.
    • Added persistent pairing agent, SPP fallback profile for improved Android compatibility, and HMAC-SHA256 authentication for companion connections.
    • Improved companion Bluetooth output formatting and protocol consistency.
  • Album Art Injection

    • Reworked media playback channel discovery and synchronization.
    • Added synthetic metadata fallback when no metadata template is available.
    • Improved album art injection reliability, optional duration-tick workaround, PNG size handling, and H.264 diagnostics/logging.
  • Vendor Extensions

    • Added binary REST response support with automatic Base64 encoding for non-text payloads.
    • Improved response fragmentation logic and transfer performance.
    • Removed unused vendor extension helper functions.
  • Web Interface & API

    • Added GET /config-data-tree endpoint exposing the complete configuration tree.
    • Added mobile long-press labels/tooltips.
    • Replaced browser alerts with snackbar notifications for configuration saves.
    • Reorganized Bluetooth Wireless Proxy configuration sections in the UI.
  • Display Profiles

    • Added content_insets and stable_content_insets support to display profiles by @korhojoa
    • Removed legacy duplicated inset fields and unified inset handling.
  • Web input improvements by @fkloft in #109:

    • Added rotary input support, visual rotary feedback, and expanded keypad controls.
  • Fix: allow reconnect after manual disconnect by @wiskiw in #112

New Contributors

Full Changelog: v0.20.1...v0.21.0

Buildroot:

Full BR Changelog: aa-proxy/buildroot@b0f31bd...1ca6bcd

v0.20.1

Choose a tag to compare

@manio manio released this 28 May 10:35

Changes in this version:

  • Hotfix release addressing DHCP problem

Full Changelog: v0.20.0...v0.20.1
Full BR Changelog: aa-proxy/buildroot@0fc356f...b0f31bd

v0.20.0

Choose a tag to compare

@manio manio released this 27 May 06:33

Warning

This release contains known networking issues and should not be used.
Please upgrade to the latest hotfix release.

Changes in this version:

  • Dual I/O backend: new standard tokio backend alongside io-uring; io-uring is now an optional feature flag, enabling support for platforms with older kernels
  • Bluetooth: round-robin connection across multiple devices β€” each device gets a chance every round instead of exhausting all attempts on one before moving to the next
    thanks: @juggie
  • Bluetooth: persist known AA devices to disk; wildcard connect (00:00:00:00:00:00) now uses a local cache of previously successful sessions instead of scanning all paired devices
    thanks: @juggie
  • BT SCO/eSCO call-audio bridge (bt_sco) β€” route phone call audio through AA media/microphone channels; includes downlink resampling, echo/ducking control, and media/mic bridge sub-features
    thanks: @Deadknight
  • Injected display support: cluster and auxiliary displays can now be declared in inject-displays.toml with per-profile frame rate, touchscreen flag, density, and initial_content_keycode
    thanks: @korhojoa, @Deadknight
  • Media tap endpoint registry with on-demand reverse TCP bridge to companion app (POST /media-taps/:id/open)
    thanks: @Deadknight
  • Album art injection: replace phone album art with a static file, REST-uploaded PNG, companion app upload, or a live H.264 frame decoded from an injected display
    thanks: @Deadknight
  • Per-vehicle SDR UI override profiles (sdr-ui-overrides.toml) β€” patch content insets and margins per head unit identity, with optional per-phone sub-profiles
    thanks: @Deadknight
  • Vendor Extension Channel (VEC) wired into packet processing pipeline; VEC REST calls and WebSocket topic events routed through WASM scripts
    thanks: @Deadknight
  • WASM: scripts now persist state across calls; on-create/on-destroy lifecycle hooks; per-script config sections exposed in web UI; configurable resource limits (memory, instance, table, epoch deadlines); configurable hooks directory
    thanks: @Deadknight
  • Packet debug mode (pkt_debug) with fine-grained filtering by side, stage, service kind, channel/message ID lists, payload truncation, and pretty-printed protobuf
    thanks: @Deadknight
  • Config: nested sections with subsections, collapsed_by_default, requires dependency gating (truthy / equals / contains / all-of)
    thanks: @kronflux
  • Config dashboard redesign: nested sections, dependency gating (requires), advanced toggle, dropdown selects, chip-based multi-select widget, dark card layout with sliding controller drawer
    thanks: @kronflux, @Deadknight
  • dashboard-preview example binary for local web UI development
    thanks: @kronflux
  • aa_server_tcp_addr config option for direct MD TCP mode, bypassing the BT/Wi-Fi handshake entirely
    thanks: @Deadknight
  • REST endpoint GET /service-discovery-response β€” returns the last observed SDR as protobuf JSON
    thanks: @Deadknight
  • REST endpoint GET /crashes, GET /crashes/:filename, DELETE /crashes β€” panic handler writes timestamped crash reports to disk
    thanks: @Deadknight
  • POST /disconnect β€” sends a graceful ByeByeRequest to the phone before tearing down the session
    thanks: @korhojoa
  • iw list called once at startup and cached β€” eliminates up to ~9 duplicate subprocess spawns during AppConfig::default()
  • Configurable wireless subnet (wlan_subnet) β€” dnsmasq and network interface configs generated from templates
  • Cancelled orphaned tcp_bridge tasks on session end to prevent background reconnect loops

Full Changelog: v0.19.0...v0.20.0
Full BR Changelog: aa-proxy/buildroot@5f30fb4...0fc356f

v0.19.0

Choose a tag to compare

@manio manio released this 04 May 03:37

Changes in this version:

  • Media stream TCP tap (media_dump_base_port) β€” inspect the decrypted AA video/audio stream in VLC, mpv, etc.
    thanks: @korhojoa
  • Added SWUpdate OTA (over-the-air) update support for all Raspberry Pi boards
    thanks: @Snirpo
  • WASM scripting via wasmtime β€” write hooks that modify AA packets on the fly; disabled on ARMv6 (RPi Zero W)
    thanks: @Deadknight
  • Key event injection (/inject_event) and rotary controller support (/inject_rotary)
  • Speed data collection and /speed endpoint
    thanks: @Deadknight
  • WebSocket support for the companion app β€” real-time sensor data streaming
    thanks: @Deadknight
  • Odometer injection via REST API (/odometer)
  • Tire pressure injection via REST API (/tire-pressure) β€” for head units that don't provide this data natively
  • Media button interception on the HU β€” short press re-injects a clean click, long press triggers a configurable script (hu_button_handler)
    thanks: @Ioniq3
  • TCP reverse bridge for SWUpdate, enables OTA updates from the companion app
    thanks: @Deadknight
  • /version endpoint returning software version, board model and board prefix
    thanks: @Deadknight
  • WASM scripts can call the local REST API (rest-call, rest-call-async) and push events over WebSocket
    thanks: @Deadknight
  • /config-entry endpoint for updating a single config key without sending the entire config object
  • Bluetooth: proper graceful RFCOMM shutdown before disconnect
    thanks: @Ioniq3
  • SSL MITM: automatic fallback to non-MITM mode on SSL error (until restart)
    thanks: @juggie

Full Changelog: v0.18.0...v0.19.0
Full BR Changelog: aa-proxy/buildroot@5ca19d9...5f30fb4

v0.18.0

Choose a tag to compare

@manio manio released this 13 Apr 05:17

Changes in this version:

The most important change in this release:
Some electric vehicle head units (HUs) expose battery SOC data via the SENSOR_FUEL field. This adds support for that method, enabling EV features in Google Maps to work without requiring an external data logger (e.g. OBD or other sources).

By default, the HU does not send fuel_data, so it must be explicitly requested. Normally, this data becomes available only after launching a client application such as ABRP or Home Assistant on the phone.

thanks: @Snirpo

and also:

  • bluetooth fixes (thanks: @Ioniq3)
  • /battery-status endpoint for last battery data

Full Changelog: v0.17.0...v0.18.0
Full BR Changelog: No changes

v0.17.0

Choose a tag to compare

@manio manio released this 02 Apr 08:44

Changes in this version:

  • more complete MITM/video_in_motion function again
    thanks: @j4ckp0t85

  • compatibility fixes

  • initial SWUpdate support for AAWireless
    thanks: @Snirpo

Full Changelog: v0.16.0...v0.17.0
Full BR Changelog: aa-proxy/buildroot@87ceae0...5ca19d9

v0.16.0

Choose a tag to compare

@manio manio released this 25 Mar 04:51

A lot of changes in this version:

  • new Buildroot version (updated package versions)

  • performance improvements (f_accessory driver, main data transfer loop)
    thanks: @ochakov

  • many fixes for Radxa ZERO 3W:

    • new kernel
    • new AIC8800 drivers
    • Wi-Fi optimization
    • option to switch between internal/external antenna
    • smaller kernel size
    • improved boot time

    thanks: @PugzAreCute

  • improved MITM/video_in_motion function
    thanks: @j4ckp0t85

Full Changelog: v0.15.0...v0.16.0
Full BR Changelog: aa-proxy/buildroot@0f0031a...87ceae0

v0.15.0

Choose a tag to compare

@manio manio released this 04 Feb 14:17

Release Highlights:

  • Initial release with added support for AAWireless 3.
  • Fixed 5β€―GHz support for AAWireless TWO devices.

Full Changelog: v0.14.0...v0.15.0
Full BR Changelog: aa-proxy/buildroot@dc388ab...0f0031a

v0.14.0

Choose a tag to compare

@manio manio released this 16 Dec 15:39

Release Highlights:

  • This is the initial release with added support for the Milk-V DUO S single-board computer.

Full Changelog: v0.13.0...v0.14.0
Full BR Changelog: aa-proxy/buildroot@1eeca56...dc388ab