{"id":19924275,"url":"https://github.com/ultraembedded/core_usb_sniffer","last_synced_at":"2026-02-03T15:02:10.418Z","repository":{"id":81709610,"uuid":"266799610","full_name":"ultraembedded/core_usb_sniffer","owner":"ultraembedded","description":"USB capture IP","archived":false,"fork":false,"pushed_at":"2020-06-06T12:35:02.000Z","size":24,"stargazers_count":21,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-17T23:03:30.815Z","etag":null,"topics":["usb-debugging","usb2","verilog"],"latest_commit_sha":null,"homepage":null,"language":"Verilog","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ultraembedded.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-25T14:25:27.000Z","updated_at":"2025-03-17T01:00:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"90b5ae28-7f6c-4158-a501-519b6de77048","html_url":"https://github.com/ultraembedded/core_usb_sniffer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ultraembedded/core_usb_sniffer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultraembedded%2Fcore_usb_sniffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultraembedded%2Fcore_usb_sniffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultraembedded%2Fcore_usb_sniffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultraembedded%2Fcore_usb_sniffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ultraembedded","download_url":"https://codeload.github.com/ultraembedded/core_usb_sniffer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ultraembedded%2Fcore_usb_sniffer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T14:55:20.264Z","status":"ssl_error","status_checked_at":"2026-02-03T14:55:19.725Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["usb-debugging","usb2","verilog"],"created_at":"2024-11-12T22:16:56.054Z","updated_at":"2026-02-03T15:02:10.387Z","avatar_url":"https://github.com/ultraembedded.png","language":"Verilog","funding_links":[],"categories":[],"sub_categories":[],"readme":"### USB Sniffer\n\nGithub: [https://github.com/ultraembedded/core_usb_sniffer](https://github.com/ultraembedded/core_usb_sniffer)\n\nThis core is a HS/FS USB2.0 analyzer (USB bus sniffer).  \nThe core monitors a UTMI interface and logs the traffic seen to a memory buffer via an AXI-4 bus master interface.  \nThe log format can be extracted continuously (continuous capture mode) or the core can stop capturing when the memory buffer is full (one-shot mode).\n\nConfiguration of the IP is performed using an AXI4-Lite slave interface.\n\nThis core has been used to produce a [USB 2.0 Capture Device](https://github.com/ultraembedded/usb2sniffer).\n\n#### Features\n\n* Option of filtering based on device ID and/or endpoint.\n* Option of filtering out SOF packets.\n* Option of filtering out IN+NAK packets.\n* Dense logging format.\n* Supports continuous streaming or one-shot mode.\n* Detection of buffer overruns.\n\n##### Register Map\n\n| Offset | Name | Description   |\n| ------ | ---- | ------------- |\n| 0x00 | USB_BUFFER_CFG | [RW] Configuration Register |\n| 0x04 | USB_BUFFER_STS | [R] Status Register |\n| 0x08 | USB_BUFFER_BASE | [RW] Buffer Base Address |\n| 0x0c | USB_BUFFER_END | [RW] Buffer End Address |\n| 0x10 | USB_BUFFER_CURRENT | [R] Buffer Current address |\n\n##### Register: USB_BUFFER_CFG\n\n| Bits | Name | Description    |\n| ---- | ---- | -------------- |\n| 31 | CONT | Continuous capture - overwrite on wrap (0 = Stop on full, 1 = cont) |\n| 30:24 | DEV | Device ID to match (only if MATCH_DEV = 1) |\n| 19:16 | EP | Endpoint to match (only if MATCH_EP = 1) |\n| 15 | PHY_DMPULLDOWN | UTMI PHY D+ Pulldown Enable (valid if SPEED=manual) |\n| 14 | PHY_DPPULLDOWN | UTMI PHY D+ Pulldown Enable (valid if SPEED=manual) |\n| 13 | PHY_TERMSELECT | UTMI PHY Termination Select (valid if SPEED=manual) |\n| 12:11 | PHY_XCVRSELECT | UTMI PHY Transceiver Select (valid if SPEED=manual) |\n| 10:9 | PHY_OPMODE | UTMI PHY Output Mode (valid if SPEED=manual) |\n| 8:7 | SPEED | USB bus speed (0 = HS, 1 = FS, 2 = LS, 3=manual) |\n| 6 | EXCLUDE_EP | Exclude specific endpoint |\n| 5 | MATCH_EP | Match specific endpoint |\n| 4 | EXCLUDE_DEV | Exclude specific device ID |\n| 3 | MATCH_DEV | Match specific device ID |\n| 2 | IGNORE_SOF | Drop SOF packets (0 = Log SOF, 1 = Drop SOF) |\n| 1 | IGNORE_IN_NAK | Drop IN + NAK sequences |\n| 0 | ENABLED | Capture enabled |\n\n##### Register: USB_BUFFER_STS\n\n| Bits | Name | Description    |\n| ---- | ---- | -------------- |\n| 2 | DATA_LOSS | Data lost due to stream backpressure |\n| 1 | WRAPPED | Capture wrapped |\n| 0 | TRIG | Capture triggered |\n\n##### Register: USB_BUFFER_BASE\n\n| Bits | Name | Description    |\n| ---- | ---- | -------------- |\n| 31:0 | ADDR | Address of buffer base |\n\n##### Register: USB_BUFFER_END\n\n| Bits | Name | Description    |\n| ---- | ---- | -------------- |\n| 31:0 | ADDR | Address of buffer end |\n\n##### Register: USB_BUFFER_CURRENT\n\n| Bits | Name | Description    |\n| ---- | ---- | -------------- |\n| 31:0 | ADDR | Current buffer address - last entry written |\n\n#### References\n\n* [UTMI+ Low Pin Interface (ULPI) Specification](https://www.sparkfun.com/datasheets/Components/SMD/ULPI_v1_1.pdf)\n* [SMSC USB3300 USB PHY Datasheet](http://ww1.microchip.com/downloads/en/DeviceDoc/3300db.pdf)\n* [ULPI Wrapper](https://github.com/ultraembedded/core_ulpi_wrapper)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultraembedded%2Fcore_usb_sniffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fultraembedded%2Fcore_usb_sniffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fultraembedded%2Fcore_usb_sniffer/lists"}