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
- Device discovery — advertises with local name (serial) and service UUID
0000ff09-0000-1000-8000-00805f9b34fb ✓
- BLE connection — succeeded on first attempt via
bleak-retry-connector ✓
- Subscriptions — StartNotify on characteristic
8c850003-0302-41c5-b46e-cf057c562025
confirmed (Notifying: true) ✓
- 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!
- 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
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
Environment
Summary
The C2000 is not yet supported by SolixBLE. Connecting via the
Genericclasscompletes the entire 5-stage negotiation handshake successfully, including the
ECDH key exchange, but no telemetry/state packets are ever received afterward
(
LAST_UPDATEremainsNone,AVAILABLEstaysFalse), and no keep-alive taskis registered for this model.
What works
0000ff09-0000-1000-8000-00805f9b34fb✓bleak-retry-connector✓8c850003-0302-41c5-b46e-cf057c562025confirmed (
Notifying: true) ✓Chargingv0.0.5.2Negotiations with '...' succeeded!No keep-alive task registered, stopping task...What doesn't work
receives no property/state requests because
Generichas no command orproperty table for the C2000.
Notes / observations
(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.
Attachments
logging.DEBUG), serial/MAC redacted: see attacheddebug-redacted.txt. Includes complete hex exchange for all negotiation stagesand the keep-alive attempt.
debug-redacted.txt