---
title: MC60 Header DB
description: "## Basic Overview The MC60 Header DB (Development Board) is a compact and portable board designed specifically for Arduino. The main equipped modules are the mc60 series wireless communication modules. The MC60 Header DB has a USB Type-C interface, making…"
url: "https://eicut.com/wiki/arduino/hats-and-shields/mc60-header-db/"
updated: "2026-02-14"
category: Arduino / HATs and Shields
---

# MC60 Header DB

## Basic Overview

The MC60 Header DB (Development Board) is a compact and portable board designed specifically for Arduino. The main equipped modules are the mc60 series wireless communication modules. The MC60 Header DB has a USB Type-C interface, making it convenient for development. Developers only need a USB Type-C cable to easily use the MC60 Development board. Additionally, the MC60 Development board is compatible with the expansion board of Arduino, which can be directly used on the MC60 Header DB.

## Supported Board List

- Arduino uno R3
- Arduino uno R3 SMD
- Arduino Zero
- Arduino Yun Rev2
- Arduino UNO Wi-Fi Rev2
- Arduino UNO R4 Wi-Fi
- Arduino uno R4 Minima
- Arduino Leonardo

## Feature List

- Quad-band: 850/900/1800/1900MHz
- AT Commands: GSM 07.07, 07.05 and Enhanced AT Commands
- TCP/UDP/HTTP/FTP/PPP
- Jamming Detection
- Audio
- FOTA
- Dual SIM, Single Standby
- OpenCPU
- GPS+GLONASS
- QuecFastFix

## Development Board Resources

### Function Description

The main component and interface placement of the MC60 Header DB is shown in the following figure:

![MC60 Header DB pinout ](https://eicut.com/wp-content/uploads/2025/10/wsefwef_11zon-1024x867.webp)
**Annotated pinout**

![Back of EICUT MC60 Header DB](https://eicut.com/wp-content/uploads/2025/10/sfeg_11zon.webp)
**Back view**

The detailed assignment of the peripheral interfaces on the MC60 Header DB is as follows:

| NO. | Name | Silkscreen | Comment |
| --- | --- | --- | --- |
| **1** | USB Type-C Interface | – | – |
| **2** | Audio jack 3.5 mm | – | – |
| **3** | Sim card case | – | 4FF SIM Card 12.3 × 8 mm |
| **4** | SD card case | – | Micro SD Card |
| **5** | Manual boot | Manual Boot | Push button |
| **6** | External GNSS Antenna | GNSS ANT | UFL Antenna |
| **7** | 18pin | – | Header 2.54 mm |
| **8** | External GSM Antenna | GSM ANT | UFL Antenna |
| **9** | Button | Button | If pushed, connects RST pin to ground |
| **10** | Boot | BOOT | If pushed, connects PWRKEY pin to ground and turns on/off MC60 Development Board |
| **11** | UART Switch | UART Arduino/USB | If the switch is on the Arduino UART side, communication between Arduino and MC60 Development Board  is established; if on the USB UART side, communication between USB and MC60 Header DB is established |

**The MC60 Header DB has****3****functional indication LEDs, as follows:**

- **D4**: LED Connect 1PPS
- **D3**: LED Connect NETLIGHT
- **D2**: Power indication LED

### Board Interfaces

**The main pin placement of the MC60 Header DB is shown in the following figure:**

![pin map MC60 Header DB ](https://eicut.com/wp-content/uploads/2025/10/ewtertw4tet_11zon-1024x758.webp)
**Pin functions**

![Pin map of EICUT MC60 Header DB](https://eicut.com/wp-content/uploads/2025/10/eryrter_11zon-1024x845.webp)
**Arduino-compatible header**

  🔗Tip

**As shown in the image above, Arduino can communicate with the module in two ways: software UART and hardware UART.**
 **Set the switch to Arduino UART mode and connect with a jumper depending on your needs.**

To connect the GPS module to the module itself, use a jumper to connect `GNRX` to `AUTX` and `GNTX` to `AURX`.

**Power Header**

| NO. | Name | Silkscreen | Comment |
| --- | --- | --- | --- |
| **8-Pin** | NC | NC | – |
| **8-Pin** | IOREF | IOREF | This provides a logic reference voltage for shields that use it; it is connected to the 5 V bus. |
| **8-Pin** | RST | RST | Reset Arduino. |
| **8-Pin** | 3v3 | 3v3 | 3.3 V Arduino regulator; don’t connect to power the module. |
| **8-Pin** | 5v | 5v | 5 V Arduino regulator; do not power the module from the Arduino, but the module can power the Arduino. |
| **8-Pin** | GND | GND | Ground. |
| **8-Pin** | GND | GND | Ground. |
| **8-Pin** | Vin | Vin | This pin is used to power the Arduino Uno using an external power source. The voltage should be within the supported range. |

**ADC Header**

| NO. | Name | Silkscreen | Comment |
| --- | --- | --- | --- |
| **6-Pin** | ADC0 | A0 | Analog input (ADC). |
| **6-Pin** | ADC1 | A1 | The Arduino Uno has 6 analog pins which utilize ADC (Analog-to-Digital Converter). |
| **6-Pin** | ADC2 | A2 | These pins serve as analog inputs and can also function as digital inputs or outputs. |
| **6-Pin** | ADC3 | A3 | These pins serve as analog inputs and can also function as digital inputs or outputs. |
| **6-Pin** | ADC4 | A4 | These pins serve as analog inputs and can also function as digital inputs or outputs. |
| **6-Pin** | ADC5 | A5 | These pins serve as analog inputs and can also function as digital inputs or outputs. |

**Digital Header**

| NO. | Name | Silkscreen | Comment |
| --- | --- | --- | --- |
| **18-Pin** | PD0/TX | 0 | Serial |
| **18-Pin** | PD1/RX | 1 | Communication |
| **18-Pin** | PD2 | 2 | — |
| **18-Pin** | PD3/PWM | 3 | — |
| **18-Pin** | PD4 | 4 | — |
| **18-Pin** | PD5/PWM | 5 | — |
| **18-Pin** | PD6/PWM | 6 | — |
| **18-Pin** | PD7 | 7 | — |
| **18-Pin** | PB0 | 8 | — |
| **18-Pin** | PB1/PWM | 9 | — |
| **18-Pin** | PB2/PWM/SS | 10 | — |
| **18-Pin** | PB3/PWM/MOSI | 11 | SPI |
| **18-Pin** | PB4/MISO | 12 | Communication |
| **18-Pin** | PB5/SCK | 13 | — |
| **18-Pin** | Ground | GND | — |
| **18-Pin** | AREF | AREF | — |
| **18-Pin** | PC4/SDA | SDA | I2C |
| **18-Pin** | PC5/SCL | SCL | Communication |

** Header 2\*9**

| NO. | Name | Silkscreen | Comment |
| --- | --- | --- | --- |
| **2\*9-Pin** | Sim2-DATA | SDATA | You can use it as an output and input. |
| **2\*9-Pin** | Sim-CLK | SCLK | Digital output |
| **2\*9-Pin** | Sim2-VDD | SVDD | Power output |
| **2\*9-Pin** | Sim2-RST | SRST | Digital output |
| **2\*9-Pin** | Clear to send | CTS | Digital output |
| **2\*9-Pin** | Analog input | ADC | Analog input |
| **2\*9-Pin** | GNSS-RX | GNRX | Connect GNSS-RX to AUX-TX by jumpers. |
| **2\*9-Pin** | GNSS-TX | GNTX | Connect GNSS-TX to AUX-RX by jumpers. |
| **2\*9-Pin** | AUX-TX | AUTX | For internal communication. |
| **2\*9-Pin** | AUX-RX | AURX | For internal communication between the GPS module and itself. |
| **2\*9-Pin** | Data carrier detection | DCD | You can use it as an output and input. |
| **2\*9-Pin** | Data terminal ready | DTR | Digital output |
| **2\*9-Pin** | DBG-RX | DBRX | You can use it as an output and input. |
| **2\*9-Pin** | Ring indication | RI | Digital output |
| **2\*9-Pin** | DBG-TX | DBTX | You can use it as an output and input. |
| **2\*9-Pin** | VBUS | VBUS | This pin is powered by USB. |
| **2\*9-Pin** | Ground | GND | – |
| **2\*9-Pin** | Ground | GND | – |

## **Development Board Dimensions**

![EICUT MC60 Header DB mechanical dimensions](https://eicut.com/wp-content/uploads/2025/10/etuteiu_11zon-871x1024.webp)
**Dimensioned layout : 70 \* 53 mm**

 

## Getting Started Preparation

![Arduino compared with MC60 Header DB](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-1024x679.webp)

Suppose you want to make a call, send an SMS, or even get the location of a device in your project. There are many solutions available, and the Quectel modules are one of the good choices as a powerful platform for wireless communications. In this tutorial, we will show you how to connect the MC60 Header DB to an Arduino using the TinyGSM library and use it to send SMS messages and make voice calls.

Okay, before we dive into the coding part, let's get the required components and libraries ready:

1. MC60 Header DB: This hat is fully compatible with Arduino and is pin-to-pin. No additional wiring is needed.
2. **SoftwareSerial Library**: This library is used for the software serial communication between the Arduino and the MC60 hat.
3. **Jumpers**: You will need jumpers to place the MC60 hat on the Arduino and to set the UART mode to software mode.

### Preparation Steps

1. Place the MC60 Header DB on the Arduino.
2. Set the UART switch to the software mode.
3. Configure the jumpers to the software mode.

Now that everything is ready, we can start coding and use the MC60 hat to send SMS messages and make voice calls.

![MC60 Header DB in operation](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-2-856x1024.webp)

**Download the Library**: Download the TinyGSM library from the provided EICUT GitHub link:

  🔗TinyGSM Library

[**Download from GitHub**](https://github.com/Eicut-dev/TinyGSM)

 

![How to add TinyGSM-main.zip library](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-3.webp)

 

In next step downloading the library, we need to add it to the compiler.

(Like the image below).

![How to extract TinyGSM-main.zip library](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-4.webp)

Once the library has been added, go to File -> Examples > TinyGSM > smsandvoicecall to select that example.

![How to open an example code](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-5-518x1024.webp)

After opening the example, we need to make a few changes to the code:

1. In the first line, replace it with the following code:

    C   #define TINY_GSM_MODEM_MC60

| 1 | #define TINY_GSM_MODEM_MC60 |
| --- | --- |

1. In line 12, enter the number that you want the module to call.
2. In line 15, change:

    C   SoftwareSerial SerialAT(2, 3); // RX, TX

| 1 | SoftwareSerial SerialAT(2, 3); // RX, TX |
| --- | --- |

    to set the baud rate to 115200, since the default baud rate of the module is 115200

![How to set the baud rate to 115200](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-6-1024x260.webp)

You need to search for and download the required libraries from this section. After downloading, a message indicating successful download and installation will be displayed in the output.

 

![TinyGSM-main.zip download screen](https://eicut.com/wp-content/uploads/2025/12/LTE-Arduino-Hat-Development-Board-13.webp)

If you have followed the above steps correctly, the code will compile and be ready to upload to the Arduino. According to the image below, enter the model and COM port to which the Arduino is connected, and click on the option marked with 3 in the image to start uploading the code.
 ![Arduino IDE menu – selecting COM port](https://eicut.com/wp-content/uploads/2025/12/LTE-Arduino-Hat-Development-Board-14-300x133.webp)

Upon completion of the compilation, place a nano SIM card into the MC60 hat (the operator does not matter) and connect the antenna to the UFL connector on the board.

The power supply for the MC60 hat is 5V, which you can connect from the header pins or via the USB Type-C port.

A very important note is that your power supply must be able to provide a peak current of 1.5 amps for the MC60 hat; otherwise, the module will reset.

Following the completion of the above steps, open the Arduino Serial Monitor and set the baud rate to 115200. The Arduino and the MC60 hat will start communicating with each other via UART, and their messages will be visible on the Arduino's serial port."

![Arduino IDE Serial Monitor](https://eicut.com/wp-content/uploads/2025/12/LTE-Arduino-Hat-Development-Board-15-1024x331.webp)
 ![How to set the baud rate in Arduino IDE](https://eicut.com/wp-content/uploads/2025/10/MC60-Development-Board-10n-1024x191.webp)

### Tutorial Code

    C++   // This line of code specifies that the MC60 modem is being used, which uses AT commands similar to the M66 #define TINY_GSM_MODEM_MC60 // These two lines of code include the necessary libraries for working with the MC60 modem and using SoftwareSerial #include <TinyGsmClient.h> #include <SoftwareSerial.h> // These three lines of code define the GPRS network access details. In this example, they are not needed as we are only sending SMS and making calls const char apn\[\] = "your_apn"; // Not needed for SMS/Call, only for GPRS const char user\[\] = ""; const char pass\[\] = ""; // This line of code defines the destination phone number const char phoneNumber\[\] = "+1234567890"; // This line of code defines the SoftwareSerial pins for communication with the modem SoftwareSerial SerialAT(2, 3); // RX, TX // This line of code creates an object of the TinyGsm class to work with the MC60 modem TinyGsm modem(SerialAT); void setup() { // This section of code initializes the modem. It first sets up the debug serial, then establishes communication with the modem. After that, it restarts the modem and waits for a network connection Serial.begin(115200); delay(10); SerialAT.begin(115200); delay(3000); Serial.println("Initializing modem..."); modem.restart(); // or modem.init(); // This line of code allows unlocking the SIM card with a PIN // modem.simUnlock("1234"); // This section of code waits for a network connection Serial.print("Waiting for network..."); if (!modem.waitForNetwork()) { Serial.println(" failed"); while (true); } Serial.println(" connected"); // This section of code sends an SMS with the message "Hello from MC60!" to the specified phone number Serial.println("Sending SMS..."); if (modem.sendSMS(phoneNumber, "Hello from MC60!")) { Serial.println("SMS sent successfully!"); } else { Serial.println("SMS failed to send."); } // This line of code creates a 5-second delay before making a phone call delay(5000); // This section of code makes a call to the same phone number and hangs up after 20 seconds Serial.print("Calling "); Serial.println(phoneNumber); modem.callNumber(phoneNumber); delay(20000); modem.callHangup(); Serial.println("Call ended."); } // This function has no code written in it, as all operations are performed in the \`setup()\` function void loop() { }

| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | // This line of code specifies that the MC60 modem is being used, which uses AT commands similar to the M66#define TINY_GSM_MODEM_MC60 // These two lines of code include the necessary libraries for working with the MC60 modem and using SoftwareSerial#include <TinyGsmClient.h>#include <SoftwareSerial.h>// These three lines of code define the GPRS network access details. In this example, they are not needed as we are only sending SMS and making callsconst char apn\[\]  = "your_apn"; // Not needed for SMS/Call, only for GPRSconst char user\[\] = "";const char pass\[\] = ""; // This line of code defines the destination phone numberconst char phoneNumber\[\] = "+1234567890"; // This line of code defines the SoftwareSerial pins for communication with the modemSoftwareSerial SerialAT(2, 3); // RX, TX // This line of code creates an object of the TinyGsm class to work with the MC60 modemTinyGsm modem(SerialAT); void setup() {  // This section of code initializes the modem. It first sets up the debug serial, then establishes communication with the modem. After that, it restarts the modem and waits for a network connection  Serial.begin(115200);  delay(10);  SerialAT.begin(115200);  delay(3000);  Serial.println("Initializing modem...");  modem.restart();  // or modem.init();   // This line of code allows unlocking the SIM card with a PIN  // modem.simUnlock("1234");   // This section of code waits for a network connection  Serial.print("Waiting for network...");  if (!modem.waitForNetwork()) {    Serial.println(" failed");    while (true);  }  Serial.println(" connected");   // This section of code sends an SMS with the message "Hello from MC60!" to the specified phone number  Serial.println("Sending SMS...");  if (modem.sendSMS(phoneNumber, "Hello from MC60!")) {    Serial.println("SMS sent successfully!");  } else {    Serial.println("SMS failed to send.");  }   // This line of code creates a 5-second delay before making a phone call  delay(5000);   // This section of code makes a call to the same phone number and hangs up after 20 seconds  Serial.print("Calling ");  Serial.println(phoneNumber);  modem.callNumber(phoneNumber);  delay(20000);  modem.callHangup();  Serial.println("Call ended.");} // This function has no code written in it, as all operations are performed in the \`setup()\` functionvoid loop() {} |
| --- | --- |

## FAQ

    What does digital mean?

Digital is a way of representing voltage in 1 bit: either 0 or 1. Digital pins on the Arduino are pins designed to be configured as inputs or outputs according to the needs of the user. Digital pins are either on or off. When ON they are in a HIGH voltage state of 5V and when OFF they are in a LOW voltage state of 0V.

On the Arduino, when the digital pins are configured as output, they are set to 0 or 5 volts.
 When the digital pins are configured as input, the voltage is supplied from an external device. This voltage can vary between 0-5 volts which is converted into digital representation (0 or 1). To determine this, there are 2 thresholds:
 • Below 0.8V – considered as 0.
 • Above 2V – considered as 1.

When connecting a component to a digital pin, make sure that the logic levels match. If the voltage is in between the thresholds, the returning value will be undefined.

    What is PWM?

In general, Pulse Width Modulation (PWM) is a modulation technique used to encode a message into a pulsing signal. A PWM is comprised of two key components: frequency and duty cycle. The PWM frequency dictates how long it takes to complete a single cycle (period) and how quickly the signal fluctuates from high to low. The duty cycle determines how long a signal stays high out of the total period. Duty cycle is represented in percentage.

In Arduino, the PWM enabled pins produce a constant frequency of ~500Hz, while the duty cycle changes according to the parameters set by the user. PWM signals are used for speed control of DC motors, dimming LEDs and more.

![PWM duty cycle waveforms showing 0%, 25%, and 100% with period marked.](https://eicut.com/wp-content/uploads/2025/10/image6.webp)

Period-labeled PWM signals at 0%, 25%, and 100% duty cycle.

    What is Serial Communication?

Serial communication is used to exchange data between the Arduino board and another serial device such as computers, displays, sensors and more. Each Arduino board has at least one serial port. Serial communication occurs on digital pins 0 (RX) and 1 (TX) as well as via USB. Arduino supports serial communication through digital pins with the Software Serial Library as well. This allows the user to connect multiple serial-enabled devices and leave the main serial port available for the USB.

**Software serial and hardware serial** - Most microcontrollers have hardware designed to communicate with other serial devices. Software serial ports use a pin-change interrupt system to communicate. There is a built-in library for Software Serial communication. Software serial is used by the processor to simulate extra serial ports. The only drawback with software serial is that it requires more processing and cannot support the same high speeds as hardware serial.

**SPI** - SS/SCK/MISO/MOSI pins are the dedicated pins for SPI communication. They can be found on digital pins 10-13 of the Arduino Uno and on the ICSP headers.

    What is Analog to Digital Conversion?

ADC stands for Analog to Digital Converter. ADC is an electronic circuit used to convert analog signals into digital signals. This digital representation of analog signals allows the processor (which is a digital device) to measure the analog signal and use it through its operation.

Arduino Pins A0-A5 are capable of reading analog voltages. On Arduino the ADC has 10-bit resolution, meaning it can represent analog voltage by 1,024 digital levels. The ADC converts voltage into bits which the microprocessor can understand.

One common example of an ADC is Voice over IP (VoIP). Every smartphone has a microphone that converts sound waves (voice) into analog voltage. This goes through the device’s ADC, gets converted into digital data, which is transmitted to the receiving side over the internet.

    What is SPI?

Serial Peripheral Interface (SPI) is a serial data protocol used by microcontrollers to communicate with one or more external devices in a bus like connection. The SPI can also be used to connect 2 microcontrollers. On the SPI bus, there is always one device that is denoted as a Master device and all the rest as Slaves. In most cases, the microcontroller is the Master device. The SS (Slave Select) pin determines which device the Master is currently communicating with.

SPI enabled devices always have the following pins:
 • **MISO (Master in Slave out)** - A line for sending data to the Master device
 • **MOSI (Master out Slave In)** - The Master line for sending data to peripheral devices
 • **SCK (Serial Clock)** - A clock signal generated by the Master device to synchronize data transmission.

**I2C** - SCL/SDA pins are the dedicated pins for I2C communication. On the Arduino Uno they are found on Analog pins A4 and A5.

    What is I2C?

I2C is a communication protocol commonly referred to as the “I2C bus”. The I2C protocol was designed to enable communication between components on a single circuit board. With I2C there are 2 wires referred to as SCL and SDA.

• **SCL** is the clock line which is designed to synchronize data transfers.
 • **SDA** is the line used to transmit data.

Each device on the I2C bus has a unique address, up to 255 devices can be connected on the same bus.

**Aref** - Reference voltage for the analog inputs.
 **Interrupt** - INT0 and INT1. Arduino Uno has two external interrupt pins.
 **External Interrupt** - An external interrupt is a system interrupt that occurs when outside interference is present. Interference can come from the user or other hardware devices in the network. Common uses for these interrupts in Arduino are reading the frequency a square wave generated by encoders or waking up the processor upon an external event.

Arduino has two forms of interrupt: **External** and **Pin Change**.
 There are two external interrupt pins on the ATmega168/328 called INT0 and INT1. Both INT0 and INT1 are mapped to pins 2 and 3. In contrast, Pin Change interrupts can be activated on any of the pins.

[![MC60 Arduino HAT V1.0](https://eicut.com/wp-content/uploads/2025/10/Frame-20_11zon-273x300.webp)](https://eicut.com/product/mc60-arduino-hat/)
