Skip to content

Commit

Permalink
README.md: add FAQ
Browse files Browse the repository at this point in the history
  • Loading branch information
cite committed Feb 13, 2019
1 parent c830511 commit bc99cae
Showing 1 changed file with 46 additions and 2 deletions.
48 changes: 46 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,48 @@
# pydtm
Python (Euro)DOCSIS Traffic Meter
Python (Euro)DOCSIS (3.0) Traffic Meter

This is work in progress.
## Overview

This tool uses a DVB-C capable video card (e.g. a cheap USB stick) to measure
the EuroDOCSIS 3.0 traffic per frequency, allowing you to venture an educated
guess about your local segment's utilization.

Data is written to a UDP socket in [graphite](https://graphiteapp.org/)
format.

## Requirements

This was tested with cPython 2.7.13 and cPython 3.5.3 using a Hauppauge WinTV
soloHD USB stick on a Raspberry Pi 3 running Raspbian/stretch.

It should however work with most Python versions as long as the DVB-C card
is supported by your kernel and it's driver complies with the DVBv5 API.


## FAQ

### How does this work?

EuroDOCSIS 3.0 uses standard DVB-C mechanisms to transport it's data: It's
encoded as a standard MPEG Transport Stream on [PID]
(https://en.wikipedia.org/wiki/MPEG_transport_stream#Packet_Identifier_\(PID\))
8190 with either 64- or 256-[QAM]
(https://en.wikipedia.org/wiki/QAM_\(television\))
modulation with a symbol rate of 6952ksyms/s. Since cable is a shared medium,
determining the total amount of data transferred and comparing this to the total
amount possible after
[FEC](https://en.wikipedia.org/wiki/Forward_error_correction) (which is about
51Mbit/s for 256-QAM and 34 MBit/s for 64-QAM) will show you how much capacity
is used.

### Wait, I can read my neighbours data with this?

No, you can't.

### Why Python?

I wanted to learn Python.

### Why output data to UDP? Why not text files, sockets, ...?

You can easily use tools like `netcat` to capture the data.

0 comments on commit bc99cae

Please sign in to comment.