System Requirements

This section lists system requirements for the FREEDM simulation.


The DGI is tested on recent versions of popular GNU/Linux distributions and require components that can generally be installed from your package manager:

  • ISO-compliant C++98 compiler (such as recent versions of GCC or Clang)
  • CMake 2.6 or higher
  • Boost 1.47 or higher, including binaries
  • Python 2.7.x (and not higher)
  • Google Protocol Buffers 2.4.1 or higher (older versions may work)
  • NTP daemon (not required if only running the PSCAD interface)
  • MQTT Client C and C++ Libraries. 3.0.1 or 3.1.1 recommended. (Required to run MQTT on the DGI)


The recommended method to install Boost is through your system’s package manager. If your distribution does not package a sufficiently recent version of Boost, refer to the Boost documentation for instructions on compiling a newer version of Boost and installing it to /usr/local/boost. Some binary libraries are required: CMake will tell you which ones you are missing when you attempt to compile the DGI.

Additionally, set the BOOST_ROOT environment variable to include the Boost directory:

echo 'export BOOST_ROOT=/usr/local/boost/' >> ~/.bashrc

And restart your shell.


FREEDM DGI uses Python 2.7 for the time being; newer versions will not work. You must have a binary in your path named python2; this is generally /usr/bin/python2. If you don’t have this binary then /usr/bin/python is probably python2 and you can safely create a symlink:

ln -s /usr/bin/python /usr/bin/python2


All DGI nodes must run an NTP daemon (such as chrony or ntpd) to synchronize their clocks. The DGI runs its own fine-grained clock synchronizer designed to correct very small clock skews. However if two nodes’ system clocks are off by a big amount, like one a minute or more, then there is no chance that the DGI’s clock synchronizer will work and you will be unable to form groups.


MQTT Client Libraries can be found both on the paho mqtt website. If your running UBUNTU or LINUX, installing the Libraries from software-manager or the software-center is recommended. Otherwise here are the links to the paho mqtt client libraries with installation instructions:

C :

C++ :

NOTE : make sure to have the files in /usr/local/lib.

For more info try the FREEDM MQTT github wiki page : CIAO!

PSCAD Simulation Requirements

  • PSCAD v4.4 Educational Edition
  • GFortran compiler
  • sys/socket.h
  • netdb.h


Each computer that will run the DGI must have a unique hostname and each other computer that will run a DGI must be able to reach that machine by that hostname. You can check to see if the hostnames are properly configured with a simple ping test. On machine A:

$ hostname

On machine B:

$ ping raichu.freedm
PING raichu.freedm ( 56(84) bytes of data.
64 bytes from _________________________ ( icmp_seq=1 ttl=64 time=0.348 ms
64 bytes from _________________________ ( icmp_seq=2 ttl=64 time=0.295 ms
64 bytes from _________________________ ( icmp_seq=3 ttl=64 time=0.264 ms
--- raichu.freedm ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 0.264/0.294/0.348/0.033 ms

The are many methods to achieve this. The easiest method is documented in Network Configuration