PMbus for PSU information - DPS1200FB


I am relatively new to protocol topics. I like to build a control unit for PSUs with can switch it on and off. It works pretty well. But now I like to add information from PMbus supplied by the PSU. A port scanner shows me the device IDs so it seems to be connected correctly with SDA and SDC.

Now to my problem: I can find some notes that PMbus based an SMbus and I2C. But I cannot find any library to get it easy to work. Any post I could find is too complex for me from today and points out no easy solution. So that’s because I like to ask if there is a description out there how I can understand the issues it better how I can get the data from PMbus.

The PSU used is a DPS1200FB but I know Python Library only.


Hi Nils,

the most detailed infos for this I found on github ( raplin / DPS-1200FB ). However, this describes details and shows python code samples.
The PSU does not make use of the PMBus and so my attempts to get something useful by referring to different descriptions of PMBus protocols failed until now. It is SMBus and the command structure is a bit tricky because it needs a checksum byte added.
I wonder, if you found something more useful meanwhile. Something which avoids to write a library.

If so, it would be great if you can share your findings. If not you may still be interested to find out more and we possibly can work together to build some easy to use Arduino code for reading infos from the PSU like output voltage / current /temperatures and failures.
I will uses this for a power supply with battery backup for two servers (12V) and two Disk racks (12V/5V). Actually it is already running (partly) but the final PSU should deliver all important data and also notify servers to shutdown if power outage is too long.


I concentrated my work on the hardware in the past and are actually developed a small pcb in second version. It uses the standard connector without soldering in the size of the PSU. It supports connecting more PSUs in serial or parallel to have more power or voltage and monitor it. But actually I am using I2C for arduino communication only, reading the voltage via a divider and power from the analog output pin.

Will provide the schematics when I am back from holidays. The I2C part I planned to go into after the pcb and coding for analog version is finished. I did not get any new information if the I2C integration so I decided to go this way as I am an autodidact with electronics. :slight_smile:

How do you plan to inform the servers to shutdown? Perhaps I can add this interface to my pcb to have a wider usage range.


Hi Nils,
for the server notification i want to use the NUT protocol and connection to server via USB or LAN - both should be possible with an Arduino (Mini PRO) - like github xm381/Raspberry-Pi-UPS.
By the way for voltage and current measuring there are nice devices available with i2c interface (e.g. INA3221) and good arduino library (github SV-Zanshin /INA). I use these for measuring cell/total voltage of the battery pack and for measuring currents on different output connectors. For the high currents the shunts need to be replaced, better also moved to places where less cabling is required. The cable resistance is not far away from the shunt values.



I used Arduino Mini on every PSU to have redundancy and cheaper pcb costs (same layout). Current is read out of the PSU as there is a analog pin for it. As I prepared to connect everything via i2c it would perhaps directly working.

Did you have something still finished on hardware side? It would be perhaps easiest to implement NUT via serial interface but I did not know if there is still a protocol lib available? Arduino Mini could be used with USB connector then.


PS. Without i2c a can actually detect per module.

  • Main voltage
  • Supply voltage
  • PSU Ok - like no 220v source connected
  • PSU current
  • external temperature with 1-wire
  • some fan control from PSU (to make is less noisy) or control some case fans (which is my plan)
  • 2 external voltages as I need it for my rc hobby.

Would be nice to join our work. Prepared a Github project but did not set it to public yet until the next hardware version is finished. At least a DPS1200 lib would be helpful.


Sicherheitsschaltung Ladekoffer - V2-1 20200725_Schaltplan.png