Skip to main content

SMBMC

An unofficial Python interface for obtaining metrics from Supermicro BMCs.

The following metrics are accessible:

  • Sensor: Temperature, Fan, Voltage, etc.

  • PMBus: Power Consumption, Fan, Temperature, etc.

Note: This library depends on the BMC web-interface being available.

Usage

Setup

# smbmc_example.py
from smbmc import Client

# initialise client with connection details
c = Client(IPMI_SERVER, IPMI_USER, IPMI_PASS)

# retrieve session token (usually lasts 30 minutes)
# optional: the library maintains session tokens internally.
c.login()

Sensor Metrics

# obtain sensor metrics
sensors = c.get_sensor_metrics()

for sensor in sensors:
    print(sensor.__dict__)

# output (some removed for brevity)
{'id': 0, 'name': 'System Temp', 'type': <SensorTypeEnum.TEMPERATURE: 1>, 'unit': <SensorUnitEnum.DEGREES_CELSIUS: 1>, 'state': <SensorStateEnum.PRESENT: 1>, 'flags': None, 'reading': 28.0, 'lnr': -9.0, 'lc': -7.0, 'lnc': -5.0, 'unc': 80.0, 'uc': 85.0, 'unr': 90.0}
{'id': 1, 'name': '12VCC', 'type': <SensorTypeEnum.VOLTAGE: 2>, 'unit': <SensorUnitEnum.VOLTS: 4>, 'state': <SensorStateEnum.PRESENT: 1>, 'flags': None, 'reading': 12.192, 'lnr': 10.144, 'lc': 10.272, 'lnc': 10.784, 'unc': 12.96, 'uc': 13.28, 'unr': 13.408}
{'id': 9, 'name': 'FAN1', 'type': <SensorTypeEnum.FAN: 4>, 'unit': <SensorUnitEnum.RPM: 18>, 'state': <SensorStateEnum.PRESENT: 1>, 'flags': None, 'reading': 3500.0, 'lnr': 400.0, 'lc': 600.0, 'lnc': 800.0, 'unc': 25300.0, 'uc': 25400.0, 'unr': 25500.0}
{'id': 10, 'name': 'FAN2', 'type': <SensorTypeEnum.FAN: 4>, 'unit': <SensorUnitEnum.RPM: 18>, 'state': <SensorStateEnum.NOT_PRESENT: 2>, 'flags': None, 'reading': 0.0, 'lnr': 400.0, 'lc': 600.0, 'lnc': 800.0, 'unc': 25300.0, 'uc': 25400.0, 'unr': 25500.0}
{'id': 19, 'name': 'SAS2 FTemp1', 'type': <SensorTypeEnum.TEMPERATURE: 1>, 'unit': <SensorUnitEnum.DEGREES_CELSIUS: 1>, 'state': <SensorStateEnum.PRESENT: 1>, 'flags': None, 'reading': 30.0, 'lnr': -9.0, 'lc': -7.0, 'lnc': -5.0, 'unc': 75.0, 'uc': 77.0, 'unr': 79.0}
{'id': 27, 'name': 'PS2 Status', 'type': <SensorTypeEnum.POWER_SUPPLY: 8>, 'unit': <SensorUnitEnum.UNSPECIFIED: 0>, 'state': <SensorStateEnum.PRESENT: 1>, 'flags': <PowerSupplyFlag.PRESENCE_DETECTED: 1>, 'reading': 0, 'lnr': 0, 'lc': 0, 'lnc': 0, 'unc': 0, 'uc': 0, 'unr': 0}

PMBus Metrics

# obtain pmbus metrics
power_supplies = c.get_pmbus_metrics()

for psu in power_supplies:
    print(psu.__dict__)

# output
{'id': 0, 'name': '', 'status': 'ff', 'type': '0', 'input_voltage': 0, 'input_current': 0.0, 'input_power': 0, 'output_voltage': 0.0, 'output_current': 0.0, 'output_power': 0, 'temp_1': 0, 'temp_2': 0, 'fan_1': 0, 'fan_2': 0}
{'id': 1, 'name': 'FAKE_PSU_SERIAL', 'status': '1', 'type': '1', 'input_voltage': 236, 'input_current': 0.359, 'input_power': 85, 'output_voltage': 12.1, 'output_current': 5.75, 'output_power': 69, 'temp_1': 38, 'temp_2': 53, 'fan_1': 2894, 'fan_2': 3810}

All Metrics

# obtain all metrics
metrics = c.get_metrics()

print(metrics)

# output
{'pmbus': [], 'sensor': []}

Contributing

This library has been tested on a system with the following components:

  • Chassis: SC846 (unknown revision; possibly 846BA-R920B)

  • Motherboard: CSE-PTJBOD-CB3

  • Power Supply: PWS-920P-SQ

  • Backplane: BPN-SAS2-846EL1

  • Power Distribution Board: PDB-PT846-2824

If there are any errors or additional functionality for other components, please file an issue with as much detail as you can!

Metadata

Release files for smbmc 0.3.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 smbmc 0.3.0
File Size Uploaded
smbmc-0.3.0.tar.gz 8.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smbmc 0.3.0
File Interpreter ABI Platform
smbmc-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.0 kB

Release files / smbmc-0.3.0.tar.gz

Download URL smbmc-0.3.0.tar.gz
Size 8.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0eabb9cfcbbcfd770112dcb4a7237c55a58bd9611e9a8919592b41f0915ee081
BLAKE2b-256 checksum
How to use checksums
44ae940738d4be4085d120a2bd4229471d40f7423e9ee3cc29e3a502e2fe1d7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / smbmc-0.3.0-py3-none-any.whl

Download URL smbmc-0.3.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
624fd70d9dcbcbaf4bd7b2ad24e5b4ca41417ac5dcf30dde7a9b01c4e6773e92
BLAKE2b-256 checksum
How to use checksums
4c75d98861cce472d16ba11d38ac5f791fef3839e7757aa36b3134638f04cccf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

1 release file

0.1.0

2 release files

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