# PTP Monitoring Toolkit

## Overview

This toolkit provides two main components:

- PTP log collector (bash script)
- PTP graphing tool (Python GUI)

These tools allow you to collect PTP statistics from ptp4l and visualise timing behaviour, including RMS offset, frequency deviation, state changes, and master changes.

---

## 1. PTP Log Collector

### Purpose

The log collector records PTP statistics at approximately 1 Hz and formats them similarly to ptp4l output.

### Example Output

```
Jun 12 16:49:58 host ptp4l@media1: [6443.95] rms 62 max 191 freq -307 +/- 86 delay 1121 +/- 13
```

### Running the Collector

Ensure ptp4l is running and accessible via a UNIX socket.

Run the script:

```
bash PTPLogger.sh
```

### Requirements

- linuxptp installed
- pmc available
- Access to correct ptp4l socket (e.g. /var/run/ptp4l_media1)

### Common Issues

- All values are zero: ptp4l is not synced or no master is present
- No output: incorrect socket or domain

---

## 2. PTP Graphing Tool

### Purpose

The Python GUI tool visualises collected logs and detects PTP events.

### Features

- Plots RMS offset and frequency deviation
- Displays PTP state changes
- Displays master clock changes
- Adjustable time resolution
- Handles multi-day logs


### Usage

1. Click "Open Log"
2. Select a log file
3. Choose time detail if required
4. View graphs and event list

### Supported Log Format

The tool requires log lines containing:

```
rms <value> ... freq <value>
```

### Graph Interpretation

- RMS: timing accuracy
- Frequency deviation: servo behaviour
- Blue vertical lines: state changes
- Red vertical lines: master changes



---

## 3. Compilation (Windows)

### Install PyInstaller

```
python -m pip install pyinstaller
```

### Build Executable

```
pyinstaller --onefile --windowed PTPLogger_Graphing.py
```

### Output

```
dist/PTPLogger_Graphing.exe
```

---

## 5. Compilation (Linux)

### Install Dependencies

```
sudo apt install python3 python3-pip python3-tk
pip3 install matplotlib pyinstaller
```

### Build Executable

```
pyinstaller --onefile --windowed PTPLogger_Graphing.py
```

### Output

```
dist/PTPLogger_Graphing
```

Run:

```
./dist/PTPLogger_Graphing
```

---

## 6. Notes

- The graphing tool works best with continuous ptp4l statistics output
- If logs contain no RMS data, the graph will be empty
- Correct socket configuration is required for pmc to collect data
- Tested with Bolero Diagnotics, and RSP-1216 logs

---

## Summary

The log collector gathers PTP timing data, and the graphing tool provides visual analysis for troubleshooting and performance monitoring.
