Skip to content

[Feature Request] Add support for Anker SOLIX C2000 power station #66

Description

@JBEngineHouse

Anker SOLIX C2000 Gen 2

SolixBLE version: 3.9.0, running on Ubuntu (BlueZ via Bleak)

Key facts: connection succeeds, 5-stage negotiation completes including ECDH key exchange, device identifies as "Charging", firmware v0.0.5.2, serial AFYDKPN0F49300504

Device

  • Model: Anker SOLIX C2000 Gen 2
  • Serial prefix: AFYDKPN0... (redacted)
  • Device firmware (reported during negotiation): v0.0.5.2

Environment

  • SolixBLE version: 3.9.0 (installed via pip)
  • OS: Ubuntu 24.04.4 LTS (Linux, BlueZ via Bleak)
  • Connection method: BleakClient over BLE, automatic retry connector

Summary

The C2000 is not yet supported by SolixBLE. Connecting via the Generic class
completes the entire 5-stage negotiation handshake successfully, including the
ECDH key exchange, but no telemetry/state packets are ever received afterward
(LAST_UPDATE remains None, AVAILABLE stays False), and no keep-alive task
is registered for this model.

What works

  1. Device discovery — advertises with local name (serial) and service UUID
    0000ff09-0000-1000-8000-00805f9b34fb
  2. BLE connection — succeeded on first attempt via bleak-retry-connector
  3. Subscriptions — StartNotify on characteristic 8c850003-0302-41c5-b46e-cf057c562025
    confirmed (Notifying: true) ✓
  4. Full negotiation sequence — stages 1 through 5 all completed:
    • Stage 1/2/3 exchanged successfully
    • Stage 3 response contained device metadata, decoded as:
      • Mode: Charging
      • Firmware: v0.0.5.2
      • Serial (redacted)
    • Stage 4 completed
    • Stage 5: device public key received, shared secret derived
    • Final log line: Negotiations with '...' succeeded!
  5. Keep-alive attempted but: No keep-alive task registered, stopping task...

What doesn't work

  • No state/telemetry notifications arrive after negotiation completes. The device
    receives no property/state requests because Generic has no command or
    property table for the C2000.
  • Resulting device state after 20s connected:

Notes / observations

  • The full negotiation + key exchange succeeding suggests the C2000 uses the same
    (or a very similar) protocol to the other supported Solix power stations, and the
    missing piece is the per-model state/property command table and keep-alive
    definition.
  • The device responded cooperatively throughout and did not reject any commands.
  • Happy to capture additional logs on request, or to test development builds.

Attachments

  • Full debug log (logging.DEBUG), serial/MAC redacted: see attached
    debug-redacted.txt. Includes complete hex exchange for all negotiation stages
    and the keep-alive attempt.

debug-redacted.txt

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions