> For the complete documentation index, see [llms.txt](https://developer.magtek.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.magtek.com/services/reader-management-services/linux-sample-code-manual/overview.md).

# Overview

This document provides instructions to use the RMS Sample Code. Combining MagTek Linux SDK and web API calls to the Reader Management System (RMS) web service, the sample code assist in setting configurations, key injection, updating EMV Tags/CAPKs, and updating firmware for MagTek readers. The sample code is parsed into a collection of CLI apps (command line interface).

* Configuration app
* EMV Tags app
* Firmware app

For details on the RMS API see: [https://rmsv2.developer.magtek.com](https://rmsv2.developer.magtek.com/)

## Onboarding

This sample code is built with a public RMS Profile. MagTek will provide the necessary Profile configurations and authorization Web API Keys if requested.

## Benefits

The MagTek Reader Management System (RMS) provides several key benefits for merchants and businesses, these include:

* Centralized Management: RMS allows for the remote management and configuration of MagTek readers across multiple locations from a single platform. Merchants can update firmware, keys, terminal settings, and CAPKs without manual intervention, reducing time, cost, and effort.
* Enhanced Security: RMS supports compliance with industry standards, such as PCI DSS, by ensuring secure payment card transactions and protecting sensitive customer data. It enables a secure process for keeping readers up to date with the latest firmware and configurations.
* Efficient Updates: RMS automates firmware updates and maintenance, allowing merchants to push updates remotely. This ensures all devices run the latest firmware, enhancing system reliability and reducing the need for manual updates.
* System Reporting: RMS offers reporting capabilities to track firmware versions and device settings, providing detailed insights by serial number for firmware, terminal, and CAPK updates in both production and test environments.
* Scalability and Flexibility: RMS is scalable to meet the needs of businesses, whether for a single store or multiple locations.
* Cost Savings: Automating reader management with RMS reduces the need for on-site visits, lowering maintenance costs and minimizing downtime. Centralized control streamlines administrative tasks, boosting operational efficiency.
* Improved Customer Experience: Efficiently managed payment readers reduce transaction errors and delays, improving customer satisfaction and loyalty, which positively impacts business reputation and revenue.

## Requirements

The following packages are needed on the Linux host to build the sample code. Other dependencies are included in the makefile.

* make
* cmake
* g++

## Building RMS Sample Code

* Unzip the package.
* Go to Sample folder:
* Build the sample code using:

```bash
$ cd Sample
```

```bash
$ make
```

Various libraries and folders are generated. The two folders used for RMS Sample code are:

| Folder     | Description                                                                                  |
| ---------- | -------------------------------------------------------------------------------------------- |
| /rms\_mms  | For DynaFlex readers: DynaFlex II PED, DynaFlex II Go, DynaProx, DynaFlex Pro, DynaFlex SCRA |
| /rms\_scra | For V5 readers: mDynamo, tDynamo, Dynamag, Dynawave, iDynamo 6, eDynamo, DynaPad             |

Each sample code folder contains an account credential for access to RMS. This is by default configured for general public use. When accessing RMS for a custom profile, reassign the values as needed in the files:

```json
{
“rms_server”: “https://svc1.magensa.net”, 
“api_key”: “MTPublic...”,
“profile_name”: “MagTek_Production”
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.magtek.com/services/reader-management-services/linux-sample-code-manual/overview.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
