> For the complete documentation index, see [llms.txt](https://docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verifone.com/adk-os-platform/readme/diagnose-and-troubleshooting.md).

# Diagnose and troubleshooting

Find and collect system information, configure logs, transfer diagnostic artifacts, and report issues to Verifone Support.

Use this page to collect system information, enable and review logs, respond to tamper conditions, and prepare support requests.

## Get system information

The following table lists what to check and where to find it.

| **Information**              | **Details**                                                                                             | **Location**                       |
| ---------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| Device state                 | Device mode (PROD, APP-DEV), tamper                                                                     | Control Panel → Security           |
| Device identification        | Part number, serial number, model ID, hardware ID                                                       | Control Panel → System Information |
| System SW versions           | Application boot loader, application OS, secure processor boot loader, secure processor FW, ADK version | Control Panel → System Information |
| System PCI security versions | PCI version of SPBL, SPFW, APFW, VOS3; security hardware ID                                             | Control Panel → Security           |
| Installed SW packages        | Name and version of all installed packages                                                              | Control Panel → Software           |
| System memory usage          | Available and free flash memory, available and free RAM                                                 | Control Panel → System Information |
| Loaded keys                  | Warrantied keys, customer keys                                                                          | Control Panel → Security           |
| Network MAC addresses        | Bluetooth MAC, Wi-Fi MAC                                                                                | Control Panel → Communication      |
| LAN network IP address       | Static or DHCP-assigned IP                                                                              | Control Panel → Communication      |
| Connected Wi-Fi network      | SSID, IP address                                                                                        | Control Panel → Communication      |
| Paired Bluetooth devices     | Bluetooth name of paired devices                                                                        | Control Panel → Communication      |

***

## System logs

### Log types

| **Log**                | **Contents**                                                   | **Lifespan**            |
| ---------------------- | -------------------------------------------------------------- | ----------------------- |
| Tamper                 | Tamper, arm/disarm, de-tamper events                           | Endless (never rotated) |
| Installer              | Installation logs from system installer                        | Endless (never rotated) |
| Critical system events | Critical events such as faulty battery, low-voltage coin cell  | Endless (never rotated) |
| System                 | Default system logs plus additional channels enabled via LCP   | Rolling file set        |
| Crashes                | Crash events recorded by the launcher                          | One-time per boot       |
| System properties      | Dump of all system properties at log transfer time             | One-time at transfer    |
| Current SW             | Dump of all installed bundles with version info at transfer    | One-time at transfer    |
| Resources              | Dump of available system resources (flash per partition, etc.) | One-time at transfer    |

### Application logs

Applications should use ADK Logging APIs.

### Files and locations

| **File**                                | **Location**                                                 |
| --------------------------------------- | ------------------------------------------------------------ |
| System messages                         | `/mnt/sysdata/logs/messages`                                 |
| Application messages                    | `/mnt/appdata/logs/messages`                                 |
| High-priority messages                  | `/mnt/sysdata/logs/tamper`                                   |
| Channel configuration                   | `/mnt/appdata/versioned/globalshare/adk-log/*_log.conf`      |
| User syslog configuration               | `/mnt/appdata/versioned/globalshare/syslog/user_syslog.conf` |
| System syslog configuration (read-only) | `/mnt/sysdata/versioned/share/syslog/sys_syslog.conf`        |

{% hint style="info" %}
The folders `/home/usr_X/logs/`, `/mnt/appdata/logs/usr_X`, `/mnt/sysdata/logs/sys_X`, and `/home/sys_X/logs/` are not used by ADK-LOG or liblog. They are reserved for application-specific logging facilities.
{% endhint %}

### Log filtering

Log output is filtered by log level. The following levels are supported, in order of increasing priority:

| **Log level** |
| ------------- |
| Trace         |
| Info          |
| Notice        |
| Warning       |
| Error         |
| Critical      |
| Alert         |
| Emergency     |

Filtering happens in two stages: first at the Liblog channel level, then at the syslog daemon level. Critical, Alert, and Emergency are always written to the high-priority messages file regardless of syslog settings.

{% hint style="warning" %}
A channel enabled in Liblog but not in syslog (or vice versa) produces no output. Always verify both settings are aligned.
{% endhint %}

### Log configuration — channels and outputs

All logging settings can be configured through the Log Control Panel (LCP) or using the Liblog API.

To open LCP: **Control Panel → Log Control**.

**Channels**

Channels can be added, enabled, or disabled in the Logging Channels window. All channels are disabled by default. Each channel can be assigned a log mask and an output destination:

* **Syslog** — sends output to the syslog daemon
* **Console** — sends output to the serial console only (no file or syslog output)
* **All** — sends output to both syslog and console

**Syslog output destinations**

| **Destination** | **Notes**                                                      |
| --------------- | -------------------------------------------------------------- |
| Serial          | Output to serial port                                          |
| File            | Output to messages file (app or system, based on running user) |
| UDP             | Output to a configured IP address and port                     |
| USB             | Output via USB                                                 |

{% hint style="info" %}
When File is selected, application logs (usr\_X) go to `/mnt/appdata/logs/messages` and system logs (sys\_X) go to `/mnt/sysdata/logs/messages`.
{% endhint %}

### Debug log configuration

Use the `logger-liblog` CLI utility on the device to test channel and syslog configuration. Pass the channel name as input — the tool emits one message per log level.

```
~ # logger-liblog
Usage: [channel_name]

~ # logger-liblog COM
Channel [COM] initialized
Configuration read. Enabled[0]
Channel [COM] de-initialized

~ # logger-liblog CCP
Channel [CCP] initialized
Configuration read. Enabled[1]
<64> logger-liblog[1467]: [CCP] Message Priority[1] Channel[CCP]
<65> logger-liblog[1467]: [CCP] Message Priority[2] Channel[CCP]
<66> logger-liblog[1467]: [CCP] Message Priority[3] Channel[CCP]
<67> logger-liblog[1467]: [CCP] Message Priority[4] Channel[CCP]
<68> logger-liblog[1467]: [CCP] Message Priority[5] Channel[CCP]
<69> logger-liblog[1467]: [CCP] Message Priority[6] Channel[CCP]
<70> logger-liblog[1467]: [CCP] Message Priority[7] Channel[CCP]
<71> logger-liblog[1467]: [CCP] Message Priority[8] Channel[CCP]
Channel [CCP] de-initialized
```

### Transferring logs

Logs and diagnostic artifacts can be transferred using:

* **Transfer Logs panel** — Control Panel → Transfer Logs → saves to USB stick
* **`vfidiag` CLI tool** — collects system information and transfers to external USB

***

## System tamper state

### Restrictions in tamper state

A tamper warning dialog appears at startup whenever a tamper condition is detected. System control panels remain accessible after acknowledging the warning, but **user applications cannot run** in a tampered state.

{% hint style="info" %}
The device automatically resets if a tamper condition is detected while running.
{% endhint %}

### Actions upon tamper

1. Check the tamper reason in **Control Panel → Security → Tamper → Tamper log**.
2. Collect device artifacts using the Diagnostic app or the diagnostic API.
3. Contact Verifone Support with the artifact bundle and tamper log.

The tamper condition can only be cleared by reconnecting the device to a trusted key loading device and reloading the warrantied keys.

***

## Reporting issues

Include the following when opening a support request with Verifone.

| **Item**                | **Details**                                                                |
| ----------------------- | -------------------------------------------------------------------------- |
| Problem description     | Free-form description of the issue                                         |
| Component name          | The system component the problem presumably relates to                     |
| Issue replication guide | Step-by-step instructions to reproduce the issue                           |
| Device artifacts        | Logs, installed SW versions, configs — collected via Diagnostic app or API |
| Minimal demo project    | (Recommended) A small application that demonstrates the issue              |


---

# 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://docs.verifone.com/adk-os-platform/readme/diagnose-and-troubleshooting.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.
