diff --git a/README.md b/README.md index 32fadb2..1608762 100644 --- a/README.md +++ b/README.md @@ -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.