diff --git a/docs/parsers/lsusb.md b/docs/parsers/lsusb.md
index 10ddb0a0..ed5e4822 100644
--- a/docs/parsers/lsusb.md
+++ b/docs/parsers/lsusb.md
@@ -1 +1,292 @@
[Home](https://kellyjonbrazil.github.io/jc/)
+
+
+# jc.parsers.lsusb
+
+jc - JSON CLI output utility `lsusb` command output parser
+
+Supports the `-v` option or no options.
+
+Usage (cli):
+
+ $ lsusb -v | jc --lsusb
+
+ or
+
+ $ jc lsusb -v
+
+Usage (module):
+
+ import jc
+ result = jc.parse('lsusb', lsusb_command_output)
+
+ or
+
+ import jc.parsers.lsusb
+ result = jc.parsers.lsusb.parse(lsusb_command_output)
+
+Schema:
+
+ Note: - object keynames are assigned directly from the lsusb
+ output. If there are duplicate
- names in a section, only the
+ last one is converted.
+
+ [
+ {
+ "bus": string,
+ "device": string,
+ "id": string,
+ "description": string,
+ "device_descriptor": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ },
+ "configuration_descriptor": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ },
+ "interface_association": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ },
+ "interface_descriptors": [
+ {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ },
+ "cdc_header": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ },
+ "cdc_call_management": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ },
+ "cdc_acm": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ },
+ "cdc_union": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ },
+ "endpoint_descriptors": [
+ {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "hub_descriptor": {
+ "
- ": {
+ "value": string,
+ "description": string,
+ "attributes": [
+ string,
+ ]
+ },
+ "hub_port_status": {
+ "
- ": {
+ "value": string,
+ "attributes": [
+ string
+ ]
+ }
+ }
+ },
+ "device_status": {
+ "value": string,
+ "description": string
+ }
+ }
+ ]
+
+Examples:
+
+ $ lsusb -v | jc --lsusb -p
+ [
+ {
+ "bus": "002",
+ "device": "001",
+ "id": "1d6b:0001",
+ "description": "Linux Foundation 1.1 root hub",
+ "device_descriptor": {
+ "bLength": {
+ "value": "18"
+ },
+ "bDescriptorType": {
+ "value": "1"
+ },
+ "bcdUSB": {
+ "value": "1.10"
+ },
+ ...
+ "bNumConfigurations": {
+ "value": "1"
+ },
+ "configuration_descriptor": {
+ "bLength": {
+ "value": "9"
+ },
+ ...
+ "iConfiguration": {
+ "value": "0"
+ },
+ "bmAttributes": {
+ "value": "0xe0",
+ "attributes": [
+ "Self Powered",
+ "Remote Wakeup"
+ ]
+ },
+ "MaxPower": {
+ "description": "0mA"
+ },
+ "interface_descriptors": [
+ {
+ "bLength": {
+ "value": "9"
+ },
+ ...
+ "bInterfaceProtocol": {
+ "value": "0",
+ "description": "Full speed (or root) hub"
+ },
+ "iInterface": {
+ "value": "0"
+ },
+ "endpoint_descriptors": [
+ {
+ "bLength": {
+ "value": "7"
+ },
+ ...
+ "bmAttributes": {
+ "value": "3",
+ "attributes": [
+ "Transfer Type Interrupt",
+ "Synch Type None",
+ "Usage Type Data"
+ ]
+ },
+ "wMaxPacketSize": {
+ "value": "0x0002",
+ "description": "1x 2 bytes"
+ },
+ "bInterval": {
+ "value": "255"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "hub_descriptor": {
+ "bLength": {
+ "value": "9"
+ },
+ ...
+ "wHubCharacteristic": {
+ "value": "0x000a",
+ "attributes": [
+ "No power switching (usb 1.0)",
+ "Per-port overcurrent protection"
+ ]
+ },
+ ...
+ "hub_port_status": {
+ "Port 1": {
+ "value": "0000.0103",
+ "attributes": [
+ "power",
+ "enable",
+ "connect"
+ ]
+ },
+ "Port 2": {
+ "value": "0000.0103",
+ "attributes": [
+ "power",
+ "enable",
+ "connect"
+ ]
+ }
+ }
+ },
+ "device_status": {
+ "value": "0x0001",
+ "description": "Self Powered"
+ }
+ }
+ ]
+
+
+
+#### parse
+
+```python
+def parse(data, raw=False, quiet=False)
+```
+
+Main text parsing function
+
+Parameters:
+
+ data: (string) text data to parse
+ raw: (boolean) unprocessed output if True
+ quiet: (boolean) suppress warning messages if True
+
+Returns:
+
+ List of Dictionaries. Raw or processed structured data.
+
+#### Parser Information
+Compatibility: linux
+
+Version 1.1 by Kelly Brazil (kellyjonbrazil@gmail.com)