Skip to main content

SKYRC MC3000 Battery Charger GUI

PyPI version License: MIT

Cross-platform Python GUI for monitoring and controlling the SKYRC MC3000 battery charger.

Features

  • Real-time monitoring of all 4 charging slots
  • Voltage, current, capacity, temperature, resistance, power, energy display
  • Slot configuration with battery type selection
  • Profile management (save/load charging profiles)
  • Charging graphs with history
  • Backup and restore slot configurations
  • Color-coded status indicators
  • Cross-platform (Windows, macOS, Linux)

Screenshots

Charging Mode Real-time monitoring with voltage graphs during charging

Refresh Mode Discharge curves during refresh/analyze mode

Installation

From PyPI

pip install skyrc-mc3000-gui

From Source

git clone https://github.com/nuclearcat/SkyRCMC3000-GUI.git
cd SkyRCMC3000-GUI
pip install .

Linux Dependencies

On Linux, you also need libhidapi:

# Debian/Ubuntu
sudo apt install libhidapi-hidraw0

# Fedora
sudo dnf install hidapi

# Arch
sudo pacman -S hidapi

Usage

Run the GUI

mc3000-gui

Or run directly from source:

python main.py

Command-line Tools

# Backup/restore tool
mc3000-backup --help

Linux USB Access

To access the MC3000 without root, create /etc/udev/rules.d/99-mc3000.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="0000", ATTR{idProduct}=="0001", MODE="0666"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0000", ATTRS{idProduct}=="0001", MODE="0666"

Then reload:

sudo udevadm control --reload-rules
sudo udevadm trigger

Documentation

Example Code

Reading Slot Data

from mc3000_usb import MC3000USB
from mc3000_protocol import parse_slot_data

# Connect to charger
usb = MC3000USB()
usb.connect()

# Get real-time data for slot 0
data = usb.get_slot_data(0)
if data:
    print(f"Voltage: {data.voltage_v:.3f} V")
    print(f"Current: {data.current_ma} mA")
    print(f"Capacity: {data.capacity_mah} mAh")
    print(f"Temperature: {data.temperature_c:.1f} C")

usb.disconnect()

Reading Slot Configuration

from mc3000_usb import MC3000USB

usb = MC3000USB()
usb.connect()

# Get settings for slot 0
settings = usb.get_slot_settings(0)
if settings:
    print(f"Battery Type: {settings.battery_type}")
    print(f"Capacity: {settings.capacity_mah} mAh")
    print(f"Charge Current: {settings.charge_current_ma} mA")

usb.disconnect()

Using Profiles

from mc3000_profiles import ProfileManager

pm = ProfileManager()

# List available profiles
for name in pm.list_profiles():
    print(f"Profile: {name}")

# Get a profile
profile = pm.get_profile("NiMH AA 2000mAh")

Development

Install Development Dependencies

pip install -e ".[dev]"

Run Tests

pytest

Known Limitations

  • Starting after "Finished": When a slot completes charging, you may need to press a button on the charger to clear the finished state before starting a new operation via USB.
  • See Protocol Notes for more details.

Firmware Updates (Linux)

The official SKYRC firmware update tool (MC3000_Firmware_Update__V1.25.exe) is a Windows application. However, Linux users have reported success running it under Wine with .NET Framework 4.5.2 installed:

winetricks dotnet452
wine MC3000_Firmware_Update__V1.25.exe

Warning: Firmware updates carry inherent risk. Proceed at your own discretion. Results may vary depending on your Wine configuration and system setup.

License

MIT License - see LICENSE for details.

Acknowledgments

Protocol implementation based on GNU DataExplorer by Winfried Bruegmann.

Metadata

Release files for skyrc-mc3000-gui 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for skyrc-mc3000-gui 1.6.0
File Size Uploaded Provenance Actions
skyrc_mc3000_gui-1.6.0.tar.gz 236.8 kB Without provenance Details for skyrc_mc3000_gui-1.6.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for skyrc-mc3000-gui 1.6.0
File Interpreter ABI Platform Actions
skyrc_mc3000_gui-1.6.0-py3-none-any.whl Python 3 none any Details for skyrc_mc3000_gui-1.6.0-py3-none-any.whl

Total release size: 273.7 kB

Release files / skyrc_mc3000_gui-1.6.0.tar.gz

Download URL skyrc_mc3000_gui-1.6.0.tar.gz
Size 236.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b73d25f93d5b7df574b26d62471057a2d17aa9bba17cac330f0ec701eac38865
BLAKE2b-256 checksum
How to use checksums
563dff29d6d29eb8a0ae93cb3f26d0cbcd8b0b2bfec9c9962e01401ab02cc79d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / skyrc_mc3000_gui-1.6.0-py3-none-any.whl

Download URL skyrc_mc3000_gui-1.6.0-py3-none-any.whl
Size 36.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2963a7d615c0c1f6a671235fb66ad70cc73e7241b474d3f4fc78fd204a88007f
BLAKE2b-256 checksum
How to use checksums
a4691f049b5376ad71857499d3e3ea4423d1610d697214944fb4f893db9e9433
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Security for skyrc-mc3000-gui 1.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page