wifi-profiler


Namewifi-profiler JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA cross-platform CLI/TUI tool for measuring and reporting Wi-Fi quality
upload_time2025-07-22 11:21:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords wifi network profiling cli tui monitoring network-diagnostics wifi-analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # WiFi Profiler

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI](https://img.shields.io/badge/PyPI-wifi--profiler-blue.svg)](https://pypi.org/project/wifi-profiler/)

A cross-platform CLI/TUI tool for measuring and reporting Wi-Fi quality: RSSI, link speed, jitter, packet loss, latency, and throughput.

## Features

- **Real-time Monitoring**: Live TUI dashboard with updating charts and metrics
- **Comprehensive Testing**: Ping tests, throughput measurements, and WiFi statistics
- **Cross-platform**: Linux (primary), macOS support
- **Multiple Output Formats**: Pretty terminal output, JSON, and HTML reports
- **System Integration**: Uses native tools (iw, nmcli, iwconfig, airport)
- **Active & Passive Tests**: ICMP ping, iperf3 integration, HTTP download fallback

## Quick Start

### Installation

```bash
# Install from PyPI
pip install wifi-profiler

# Or install from source
git clone https://github.com/wifi-profiler/wifi-profiler.git
cd wifi-profiler
pip install -e .
```

### Basic Usage

```bash
# Quick test (10s ping + RSSI)
wifi-profiler quick

# Live monitoring dashboard
wifi-profiler live

# Comprehensive survey
wifi-profiler survey --duration 60

# List wireless interfaces
wifi-profiler devices

# Generate HTML report
wifi-profiler survey --html report.html
```

## Commands

### `wifi-profiler quick`
Quick WiFi quality test with ping and RSSI measurement.

```bash
wifi-profiler quick --target 8.8.8.8 1.1.1.1 --duration 10
```

**Options:**
- `--iface, -i`: Wireless interface name
- `--target, -t`: Ping targets (multiple allowed)
- `--duration, -d`: Test duration in seconds
- `--json`: Save results to JSON file
- `--html`: Generate HTML report
- `--export`: Save session data

### `wifi-profiler live`
Interactive TUI dashboard with real-time metrics.

```bash
wifi-profiler live --iface wlan0 --target 8.8.8.8 --duration 300
```

**Controls:**
- `s`: Save snapshot
- `q`: Quit

### `wifi-profiler survey`
Comprehensive WiFi survey with detailed analysis.

```bash
wifi-profiler survey \
  --iface wlan0 \
  --target 8.8.8.8 1.1.1.1 \
  --duration 30 \
  --ping-count 10 \
  --throughput-duration 15 \
  --html survey_report.html
```

### `wifi-profiler devices`
List wireless interfaces and their details.

```bash
wifi-profiler devices --verbose
```

### `wifi-profiler import-session`
Import saved session and generate reports.

```bash
wifi-profiler import-session session.json --html report.html
```

## System Requirements

### Linux
- Python 3.10+
- `ping` command
- One of: `iw`, `iwconfig`, or NetworkManager (`nmcli`)
- Optional: `iperf3` for throughput testing
- Optional: `curl` or `wget` for HTTP download tests

### macOS
- Python 3.10+
- `ping` command
- Built-in `airport` utility
- Optional: `iperf3` for throughput testing

### Installation of Dependencies

**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install wireless-tools network-manager iperf3 curl
```

**CentOS/RHEL/Fedora:**
```bash
sudo dnf install wireless-tools NetworkManager iperf3 curl
# or
sudo yum install wireless-tools NetworkManager iperf3 curl
```

**macOS:**
```bash
# iperf3 via Homebrew
brew install iperf3
```

## Configuration

Create a configuration file at `~/.config/wifi-profiler/config.toml`:

```toml
# Default interface (auto-detect if not specified)
default_interface = "wlan0"

# Default ping targets
default_targets = ["8.8.8.8", "1.1.1.1"]

# Test durations
default_duration = 30
ping_count = 10
throughput_test_duration = 10

# iperf3 server (optional)
iperf3_server = "speedtest.tele2.net:5201"

# HTTP download URL for fallback throughput testing
http_download_url = "https://speed.hetzner.de/100MB.bin"

# Output settings
log_level = "INFO"
output_format = "text"
save_sessions = true
```

## Output Formats

### Terminal Output
Rich, colored terminal output with tables and progress bars.

### JSON Output
Machine-readable JSON format for programmatic analysis:

```json
{
  "session_id": "survey_1234567890",
  "start_time": "2024-01-15T10:30:00",
  "end_time": "2024-01-15T10:30:30",
  "interface": {
    "name": "wlan0",
    "ssid": "MyWiFi",
    "bitrate": 866.7
  },
  "wifi_stats": [...],
  "ping_summaries": [...],
  "throughput_results": [...]
}
```

### HTML Reports
Self-contained HTML reports with interactive charts:

```bash
wifi-profiler survey --html report.html
```

Features:
- Interactive RSSI charts using Plotly
- Detailed ping and throughput tables
- Responsive design
- Quality indicators with color coding

## Examples

### Basic Network Quality Check
```bash
# Quick check of current WiFi quality
wifi-profiler quick --target 8.8.8.8 --json results.json
```

### Long-term Monitoring
```bash
# Monitor for 5 minutes with live updates
wifi-profiler live --duration 300 --interval 2.0
```

### Comprehensive Analysis
```bash
# Full survey with all tests
wifi-profiler survey \
  --duration 60 \
  --ping-count 20 \
  --throughput-duration 20 \
  --html comprehensive_report.html \
  --json session_data.json
```

### Batch Testing
```bash
# Test multiple targets
wifi-profiler survey \
  --target 8.8.8.8 1.1.1.1 208.67.222.222 \
  --duration 30
```

## Troubleshooting

### No Wireless Interfaces Found
```bash
# Check available interfaces
wifi-profiler devices --verbose

# Ensure wireless tools are installed
sudo apt install wireless-tools  # Ubuntu/Debian
```

### Permission Issues
Some operations may require elevated privileges:
```bash
# Run with sudo if needed
sudo wifi-profiler quick
```

### iperf3 Not Available
The tool will automatically fall back to HTTP download testing if iperf3 is not available.

### Network Connectivity Issues
```bash
# Check basic connectivity
ping 8.8.8.8

# Verify interface is up
ip link show wlan0
```

## Development

### Setup Development Environment
```bash
git clone https://github.com/wifi-profiler/wifi-profiler.git
cd wifi-profiler
pip install -e ".[dev]"
```

### Running Tests
```bash
pytest
pytest --cov=wifi_profiler
```

### Code Quality
```bash
ruff check .
black .
mypy wifi_profiler/
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Run the test suite
6. Submit a pull request

See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [Textual](https://textual.textualize.io/) for the TUI framework
- [Rich](https://rich.readthedocs.io/) for beautiful terminal output
- [Typer](https://typer.tiangolo.com/) for CLI framework
- [Pydantic](https://pydantic-docs.helpmanual.io/) for data validation
- [Plotly](https://plotly.com/) for interactive charts

## Roadmap

- [ ] Windows support
- [ ] Prometheus metrics export
- [ ] REST API mode
- [ ] Advanced packet analysis
- [ ] WiFi channel analysis
- [ ] Historical data tracking
- [ ] Alert system
- [ ] Mobile app companion

## Support

- **Issues**: [GitHub Issues](https://github.com/wifi-profiler/wifi-profiler/issues)
- **Discussions**: [GitHub Discussions](https://github.com/wifi-profiler/wifi-profiler/discussions)
- **Documentation**: [GitHub Wiki](https://github.com/wifi-profiler/wifi-profiler/wiki) 

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "wifi-profiler",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Sherin Joseph Roy <sherin.joseph2217@gmail.com>",
    "keywords": "wifi, network, profiling, cli, tui, monitoring, network-diagnostics, wifi-analysis",
    "author": null,
    "author_email": "Sherin Joseph Roy <sherin.joseph2217@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/67/c3/a5559b1e9bb196d25309e6442c3ad1528bd6473af36c348196ced9889c43/wifi_profiler-0.1.0.tar.gz",
    "platform": null,
    "description": "# WiFi Profiler\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI](https://img.shields.io/badge/PyPI-wifi--profiler-blue.svg)](https://pypi.org/project/wifi-profiler/)\n\nA cross-platform CLI/TUI tool for measuring and reporting Wi-Fi quality: RSSI, link speed, jitter, packet loss, latency, and throughput.\n\n## Features\n\n- **Real-time Monitoring**: Live TUI dashboard with updating charts and metrics\n- **Comprehensive Testing**: Ping tests, throughput measurements, and WiFi statistics\n- **Cross-platform**: Linux (primary), macOS support\n- **Multiple Output Formats**: Pretty terminal output, JSON, and HTML reports\n- **System Integration**: Uses native tools (iw, nmcli, iwconfig, airport)\n- **Active & Passive Tests**: ICMP ping, iperf3 integration, HTTP download fallback\n\n## Quick Start\n\n### Installation\n\n```bash\n# Install from PyPI\npip install wifi-profiler\n\n# Or install from source\ngit clone https://github.com/wifi-profiler/wifi-profiler.git\ncd wifi-profiler\npip install -e .\n```\n\n### Basic Usage\n\n```bash\n# Quick test (10s ping + RSSI)\nwifi-profiler quick\n\n# Live monitoring dashboard\nwifi-profiler live\n\n# Comprehensive survey\nwifi-profiler survey --duration 60\n\n# List wireless interfaces\nwifi-profiler devices\n\n# Generate HTML report\nwifi-profiler survey --html report.html\n```\n\n## Commands\n\n### `wifi-profiler quick`\nQuick WiFi quality test with ping and RSSI measurement.\n\n```bash\nwifi-profiler quick --target 8.8.8.8 1.1.1.1 --duration 10\n```\n\n**Options:**\n- `--iface, -i`: Wireless interface name\n- `--target, -t`: Ping targets (multiple allowed)\n- `--duration, -d`: Test duration in seconds\n- `--json`: Save results to JSON file\n- `--html`: Generate HTML report\n- `--export`: Save session data\n\n### `wifi-profiler live`\nInteractive TUI dashboard with real-time metrics.\n\n```bash\nwifi-profiler live --iface wlan0 --target 8.8.8.8 --duration 300\n```\n\n**Controls:**\n- `s`: Save snapshot\n- `q`: Quit\n\n### `wifi-profiler survey`\nComprehensive WiFi survey with detailed analysis.\n\n```bash\nwifi-profiler survey \\\n  --iface wlan0 \\\n  --target 8.8.8.8 1.1.1.1 \\\n  --duration 30 \\\n  --ping-count 10 \\\n  --throughput-duration 15 \\\n  --html survey_report.html\n```\n\n### `wifi-profiler devices`\nList wireless interfaces and their details.\n\n```bash\nwifi-profiler devices --verbose\n```\n\n### `wifi-profiler import-session`\nImport saved session and generate reports.\n\n```bash\nwifi-profiler import-session session.json --html report.html\n```\n\n## System Requirements\n\n### Linux\n- Python 3.10+\n- `ping` command\n- One of: `iw`, `iwconfig`, or NetworkManager (`nmcli`)\n- Optional: `iperf3` for throughput testing\n- Optional: `curl` or `wget` for HTTP download tests\n\n### macOS\n- Python 3.10+\n- `ping` command\n- Built-in `airport` utility\n- Optional: `iperf3` for throughput testing\n\n### Installation of Dependencies\n\n**Ubuntu/Debian:**\n```bash\nsudo apt update\nsudo apt install wireless-tools network-manager iperf3 curl\n```\n\n**CentOS/RHEL/Fedora:**\n```bash\nsudo dnf install wireless-tools NetworkManager iperf3 curl\n# or\nsudo yum install wireless-tools NetworkManager iperf3 curl\n```\n\n**macOS:**\n```bash\n# iperf3 via Homebrew\nbrew install iperf3\n```\n\n## Configuration\n\nCreate a configuration file at `~/.config/wifi-profiler/config.toml`:\n\n```toml\n# Default interface (auto-detect if not specified)\ndefault_interface = \"wlan0\"\n\n# Default ping targets\ndefault_targets = [\"8.8.8.8\", \"1.1.1.1\"]\n\n# Test durations\ndefault_duration = 30\nping_count = 10\nthroughput_test_duration = 10\n\n# iperf3 server (optional)\niperf3_server = \"speedtest.tele2.net:5201\"\n\n# HTTP download URL for fallback throughput testing\nhttp_download_url = \"https://speed.hetzner.de/100MB.bin\"\n\n# Output settings\nlog_level = \"INFO\"\noutput_format = \"text\"\nsave_sessions = true\n```\n\n## Output Formats\n\n### Terminal Output\nRich, colored terminal output with tables and progress bars.\n\n### JSON Output\nMachine-readable JSON format for programmatic analysis:\n\n```json\n{\n  \"session_id\": \"survey_1234567890\",\n  \"start_time\": \"2024-01-15T10:30:00\",\n  \"end_time\": \"2024-01-15T10:30:30\",\n  \"interface\": {\n    \"name\": \"wlan0\",\n    \"ssid\": \"MyWiFi\",\n    \"bitrate\": 866.7\n  },\n  \"wifi_stats\": [...],\n  \"ping_summaries\": [...],\n  \"throughput_results\": [...]\n}\n```\n\n### HTML Reports\nSelf-contained HTML reports with interactive charts:\n\n```bash\nwifi-profiler survey --html report.html\n```\n\nFeatures:\n- Interactive RSSI charts using Plotly\n- Detailed ping and throughput tables\n- Responsive design\n- Quality indicators with color coding\n\n## Examples\n\n### Basic Network Quality Check\n```bash\n# Quick check of current WiFi quality\nwifi-profiler quick --target 8.8.8.8 --json results.json\n```\n\n### Long-term Monitoring\n```bash\n# Monitor for 5 minutes with live updates\nwifi-profiler live --duration 300 --interval 2.0\n```\n\n### Comprehensive Analysis\n```bash\n# Full survey with all tests\nwifi-profiler survey \\\n  --duration 60 \\\n  --ping-count 20 \\\n  --throughput-duration 20 \\\n  --html comprehensive_report.html \\\n  --json session_data.json\n```\n\n### Batch Testing\n```bash\n# Test multiple targets\nwifi-profiler survey \\\n  --target 8.8.8.8 1.1.1.1 208.67.222.222 \\\n  --duration 30\n```\n\n## Troubleshooting\n\n### No Wireless Interfaces Found\n```bash\n# Check available interfaces\nwifi-profiler devices --verbose\n\n# Ensure wireless tools are installed\nsudo apt install wireless-tools  # Ubuntu/Debian\n```\n\n### Permission Issues\nSome operations may require elevated privileges:\n```bash\n# Run with sudo if needed\nsudo wifi-profiler quick\n```\n\n### iperf3 Not Available\nThe tool will automatically fall back to HTTP download testing if iperf3 is not available.\n\n### Network Connectivity Issues\n```bash\n# Check basic connectivity\nping 8.8.8.8\n\n# Verify interface is up\nip link show wlan0\n```\n\n## Development\n\n### Setup Development Environment\n```bash\ngit clone https://github.com/wifi-profiler/wifi-profiler.git\ncd wifi-profiler\npip install -e \".[dev]\"\n```\n\n### Running Tests\n```bash\npytest\npytest --cov=wifi_profiler\n```\n\n### Code Quality\n```bash\nruff check .\nblack .\nmypy wifi_profiler/\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Run the test suite\n6. Submit a pull request\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [Textual](https://textual.textualize.io/) for the TUI framework\n- [Rich](https://rich.readthedocs.io/) for beautiful terminal output\n- [Typer](https://typer.tiangolo.com/) for CLI framework\n- [Pydantic](https://pydantic-docs.helpmanual.io/) for data validation\n- [Plotly](https://plotly.com/) for interactive charts\n\n## Roadmap\n\n- [ ] Windows support\n- [ ] Prometheus metrics export\n- [ ] REST API mode\n- [ ] Advanced packet analysis\n- [ ] WiFi channel analysis\n- [ ] Historical data tracking\n- [ ] Alert system\n- [ ] Mobile app companion\n\n## Support\n\n- **Issues**: [GitHub Issues](https://github.com/wifi-profiler/wifi-profiler/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/wifi-profiler/wifi-profiler/discussions)\n- **Documentation**: [GitHub Wiki](https://github.com/wifi-profiler/wifi-profiler/wiki) \n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A cross-platform CLI/TUI tool for measuring and reporting Wi-Fi quality",
    "version": "0.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/Sherin-SEF-AI/wifi-profiler/issues",
        "Documentation": "https://github.com/Sherin-SEF-AI/wifi-profiler#readme",
        "Homepage": "https://sherin-sef-ai.github.io/",
        "Repository": "https://github.com/Sherin-SEF-AI/wifi-profiler",
        "Source Code": "https://github.com/Sherin-SEF-AI/wifi-profiler"
    },
    "split_keywords": [
        "wifi",
        " network",
        " profiling",
        " cli",
        " tui",
        " monitoring",
        " network-diagnostics",
        " wifi-analysis"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd7cb3ab52c1b5c6a1a1bacbd56f9cdc1286187a8e5edcb6319df5e3f4278410",
                "md5": "48ffc7167813e7a45e2f0c336ba58864",
                "sha256": "fd8da8070bd8c0d64d7c6f333731110be357b50584303eb0e98bd63ef0a3d8b7"
            },
            "downloads": -1,
            "filename": "wifi_profiler-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "48ffc7167813e7a45e2f0c336ba58864",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 34495,
            "upload_time": "2025-07-22T11:21:11",
            "upload_time_iso_8601": "2025-07-22T11:21:11.975472Z",
            "url": "https://files.pythonhosted.org/packages/fd/7c/b3ab52c1b5c6a1a1bacbd56f9cdc1286187a8e5edcb6319df5e3f4278410/wifi_profiler-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "67c3a5559b1e9bb196d25309e6442c3ad1528bd6473af36c348196ced9889c43",
                "md5": "3adf3e0b285620db62a14a758dae1bcd",
                "sha256": "a32be4c957687013e7f8c0da8ffb68aec48a4c6154574edbffd031c1b24fb516"
            },
            "downloads": -1,
            "filename": "wifi_profiler-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3adf3e0b285620db62a14a758dae1bcd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 34852,
            "upload_time": "2025-07-22T11:21:14",
            "upload_time_iso_8601": "2025-07-22T11:21:14.114274Z",
            "url": "https://files.pythonhosted.org/packages/67/c3/a5559b1e9bb196d25309e6442c3ad1528bd6473af36c348196ced9889c43/wifi_profiler-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-22 11:21:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Sherin-SEF-AI",
    "github_project": "wifi-profiler",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "wifi-profiler"
}
        
Elapsed time: 1.35148s