MCC DAQ HAT Library for Raspberry Pi
Switch branches/tags
Nothing to show
Clone or download

MCC DAQ HAT Library for Raspberry Pi

InfoContains C and Python Libraries for interacting with Measurement Computing DAQ HAT boards.
AuthorMeasurement Computing
Library Version1.0.0


This is the repository for Measurement Computing DAQ HAT boards. The daqhats library was created and is supported by Measurement Computing Corporation (MCC).

Supported MCC DAQ HAT hardware

Hardware supported by this version of the MCC DAQ HAT Library:


  • Raspbian or Raspbian Lite image (may work with other Raspberry Pi operating systems)
  • Raspberry Pi A+, B+, 2, or 3
  • C, C++, Python 2.7 or Python 3.4

Raspberry Pi Configuration

Follow the instructions at for setting up a Raspberry Pi.

Install Instructions

  1. Power off the Raspberry Pi and attach one or more DAQ HAT boards, using unique address settings for each. Refer to Installing the HAT board for detailed information. When using a single board, leave it at address 0 (all address jumpers removed.) One board must always be at address 0 to ensure that the OS reads a HAT EEPROM and initializes the hardware correctly.

  2. Power on the Pi, log in, and open a terminal window (if using the graphical interface.)

  3. Update your package list:

    sudo apt-get update
  4. Optional: Update your installation packages and reboot:

    sudo apt-get dist-upgrade
    sudo reboot
  5. Install git (if not installed):

    sudo apt-get install git
  6. Download the daqhats library to the root of your home folder:

    cd ~
    git clone
  7. Build and install the shared library, tools, and optional Python support. The installer will ask if you want to install Python 2 and Python 3 support. It will also detect the HAT board EEPROMs and save the contents, if needed.

    cd ~/daqhats
    sudo ./
  8. Optional: Use the firmware update tool to update the firmware on your MCC 118 board(s). The "0" in the example below is the board address. Repeat the command for each MCC 118 address in your board stack. This example demonstrates how to update the firmware on the MCC 118 that is installed at address 0.

    mcc118_firmware_update 0 ~/daqhats/tools/MCC_118.hex

Note: If you encounter any errors during steps 5 - 7 then uininstall the daqhats library (if installed), go back to step 4, update your installed packages and reboot, then repeat steps 5 - 7.

You can now run the example programs under ~/daqhats/examples and create your own programs. Refer to the Examples section below for more information.

List the installed boards

You can use the tool daqhats_list_boards to display a list of the detected MCC DAQ HATs. This list is generated from the EEPROM images, so it will not be correct if you change the board stack without updating the EEPROM images (see below.)

Update the EEPROM images

If you change your board stack, you must update the saved EEPROM images so that the library has the correct board information:

sudo daqhats_read_eeproms

Uninstall the daqhats library

If you want to uninstall the the daqhats library, use the following commands:

cd ~/daqhats
sudo ./


The daqhats library includes example programs developed with C/C++ and Python. The examples are available under ~/daqhats/examples, and are provided in the following formats:

  • console-based (C/C++ and Python)
  • User interface
    • Web server (Python)
    • IFTTT (If This Then That) trigger service (Python)
    • Data logger (C/C++)

Refer to the file in each example folder for more information.


The following is a basic Python example demonstrating how to read MCC 118 voltage inputs and display channel values.

#!/usr/bin/env python
# MCC 118 example program
# Read and display analog input values
import sys
import daqhats as hats

# get hat list of MCC HAT boards
list = hats.hat_list(filter_by_id = hats.HatIDs.ANY)
if not list:
    print("No boards found")

# Read and display every channel
for entry in list: 
if == hats.HatIDs.MCC_118:
    print("Board {}: MCC 118".format(entry.address))
    board = hats.mcc118(entry.address)
    for channel in range(
        value = board.a_in_read(channel)
        print("Ch {0}: {1:.3f}".format(channel, value))	


The daqhats library is supported by MCC. Contact technical support through our support page.


Documentation for the daqhats library is available at