Prime Wireless Charging Station (3-in-1, MagGo, AirCool, Dock Stand)
- class SolixBLE.MagGo3in1(ble_device: BLEDevice)
Anker MagGo 3-in-1 Wireless Charger.
Use this class to connect and monitor the 3-in-1 wireless charging station (phone MagSafe pad, Apple Watch puck and earbuds pad). This model is also known as the A25x7.
Note
Reverse-engineered from BLE captures. Like the C1000G2 it uses the same encryption and telemetry framing as the other Prime devices, but it streams nothing until it receives a subscribe command (
4200); telemetry then arrives on command4300.The three wireless pads live in TLV parameters
a2/a3/a4, each eight bytes with the04 <status> <2b> <2b> <power LE>per-port shape used by the Prime chargers. Per-pad power was confirmed on hardware (an Apple Watch charging at 2.85 W reada2[6:8]little-endian0x011d= 285). The two intermediate fields per pad are present but their scaling was not confidently confirmed for the wireless pads, so only power and status are exposed. The report carries no dedicated total field (a5is a constant04ffffanda6/feare zeros), sopower_outis computed as the sum of the three pads.- __init__(ble_device: BLEDevice) None
Initialise device object. Does not connect automatically.
- add_callback(function: Callable[[], None]) None
Register a callback to be run on state updates.
Triggers include changes to pretty much anything, including, battery percentage, output power, solar, connection status, etc.
- Parameters:
function – Function to run on state changes.
- async connect(max_attempts: int = 3, run_callbacks: bool = True) bool
Connect to device.
This will connect to the device, determine if it is supported and subscribe to status updates, returning True if successful.
- Parameters:
max_attempts – Maximum number of attempts to try to connect (default=3).
run_callbacks – Execute registered callbacks on successful connection (default=True).
- async disconnect() None
Disconnect from device and reset internal state.
Disconnects from device, resets internal state, including connection attempts, cancels the automatic reconnection task and will not execute state changes callbacks.
- remove_callback(function: Callable[[], None]) None
Remove a registered state change callback.
- Parameters:
function – Function to remove from callbacks.
- Raises:
ValueError – If callback does not exist.
- property address: str
MAC address of device.
- Returns:
The Bluetooth MAC address of the device.
- property available: bool
Connected to device and data is available.
- Returns:
True/False if the device is connected and sending telemetry.
- property connected: bool
Connected to device.
This does not mean that an encrypted connection has been established or that any data values have been populated, use the available property to determine that.
- Returns:
True/False if connected to device.
- property last_update: datetime | None
Timestamp of last telemetry data update from device.
- Returns:
Timestamp of last update or None.
- property name: str
Bluetooth name of the device.
- Returns:
The name of the device or default string value.
- property negotiated: bool
Has an encrypted session been successfully negotiated.
This does not mean that any data values have been populated, use the available property to determine that.
- Returns:
True/False if session has been negotiated and connected.
- property pad_1: PortStatus
Wireless pad 1 status.
- Returns:
Status of pad 1.
- property pad_1_power: float
Wireless pad 1 power (W).
- Returns:
Power delivered by pad 1 or default float value.
- property pad_2: PortStatus
Wireless pad 2 status.
- Returns:
Status of pad 2.
- property pad_2_power: float
Wireless pad 2 power (W).
- Returns:
Power delivered by pad 2 or default float value.
- property pad_3: PortStatus
Wireless pad 3 status.
- Returns:
Status of pad 3.
- property pad_3_power: float
Wireless pad 3 power (W).
- Returns:
Power delivered by pad 3 or default float value.
- property power_out: float
Total Power Out (watts).
The telemetry report has no dedicated total field, so this is computed as the sum of the three per-pad power values.
- Returns:
Total power out or default float value.