{"id":43978961,"url":"https://github.com/gotmc/usbtmc","last_synced_at":"2026-02-07T08:35:19.075Z","repository":{"id":28710965,"uuid":"32231637","full_name":"gotmc/usbtmc","owner":"gotmc","description":"Go library to communicate with a USB Test and Measurement Class (USBTMC) interface","archived":false,"fork":false,"pushed_at":"2024-04-13T02:20:35.000Z","size":127,"stargazers_count":20,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-19T17:06:29.917Z","etag":null,"topics":["gousb","libusb","scpi","scpi-commands","scpi-instrument","scpi-instruments","scpi-lab-instruments","test-automation","usb-devices","usbtmc","visa"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gotmc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-03-14T20:56:01.000Z","updated_at":"2024-04-13T02:29:02.000Z","dependencies_parsed_at":"2024-04-13T03:27:38.372Z","dependency_job_id":"0184a82f-44ff-4636-943a-f94920e3d7cc","html_url":"https://github.com/gotmc/usbtmc","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/gotmc/usbtmc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotmc%2Fusbtmc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotmc%2Fusbtmc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotmc%2Fusbtmc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotmc%2Fusbtmc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gotmc","download_url":"https://codeload.github.com/gotmc/usbtmc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotmc%2Fusbtmc/sbom","scorecard":{"id":442046,"data":{"date":"2025-08-11","repo":{"name":"github.com/gotmc/usbtmc","commit":"c1e8fd754957ed9b0d06b2f6f21b5c0a777574f7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":1,"reason":"Found 3/25 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 8 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T05:48:11.993Z","repository_id":28710965,"created_at":"2025-08-19T05:48:11.994Z","updated_at":"2025-08-19T05:48:11.994Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29190294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T07:37:03.739Z","status":"ssl_error","status_checked_at":"2026-02-07T07:37:03.029Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["gousb","libusb","scpi","scpi-commands","scpi-instrument","scpi-instruments","scpi-lab-instruments","test-automation","usb-devices","usbtmc","visa"],"created_at":"2026-02-07T08:35:18.422Z","updated_at":"2026-02-07T08:35:19.070Z","avatar_url":"https://github.com/gotmc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# usbtmc\n\nGo library to communicate with a USB Test and Measurement Class (USBTMC)\nenabled USB device.\n\n[![GoDoc][godoc badge]][godoc link]\n[![Go Report Card][report badge]][report card]\n[![Build Status][travis badge]][travis link]\n[![License Badge][license badge]][LICENSE.txt]\n\n## Overview\n\n[USBTMC][] is a USB device class specification for test equiment and\ninstrumentation devices, such as oscilloscopes, digital multimeters, and\nfunction generators. USBTMC requires three endpoints:\n\n- Control endpoint\n- Bulk-OUT endpoint\n- Bulk-IN endpoint\n\nAdditionally, the USBTMC subclass USB488 has an Interrupt-IN endpoint.\n\nThis packages enables controlling USBTMC compatible test equipment (e.g.,\noscilloscopes, function generators, multimeters, etc.) over USB. While this\npackage can be used by itself to send Standard Commands for Programmable\nInstruments ([SCPI][]) commands to a piece of test equipment, it also serves to\nprovide an Instrument interface for both the [ivi][] and [visa][] packages. The\n[ivi][] package provides standardized APIs for programming test instruments\nfollowing the [Interchangeable Virtual Instrument (IVI) standard][ivi-specs].\n\n## USBTMC Descriptors\n\n- Interface class = 0xFE (application-specific)\n- Interface subclass = 0x03 (indicates USBTMC)\n\n## Installation\n\n```bash\n$ go get github.com/gotmc/usbtmc\n```\n\n## Usage\n\nTo use the [usbtmc][gousbtmc] package, you must register which Go-based\n[libusb][] interface library should be used. [libusb][] is \"a C library\nthat provides generic access to USB devices.\" There are two Go-based\nlibusb hardware interface libraries available:\n\n- [github.com/google/gousb][gousb]\n- [github.com/gotmc/libusb][golibusb] — Not working currently\n\nYou'll need to install **_one_** of the above libraries using:\n\n```bash\n$ go get -v github.com/google/gousb\n$ go get -v github.com/gotmc/gotmc\n```\n\nTo indicate which libusb interface library should be used, include\n**_one_** of the following blank imports:\n\n```go\nimport _ \"github.com/gotmc/usbtmc/driver/google\"\nimport _ \"github.com/gotmc/usbtmc/driver/gotmc\"\n```\n\n## Documentation\n\nDocumentation can be found at either:\n\n- \u003chttps://godoc.org/github.com/gotmc/usbtmc\u003e\n- \u003chttp://localhost:6060/pkg/github.com/gotmc/usbtmc/\u003e after running `$\ngodoc -http=:6060`\n\n## Contributing\n\nContributions are welcome! To contribute please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Code\n4. Submit a [pull request][]\n\n### Testing\n\nPrior to submitting a [pull request][], please run the tests using either [GNU\nMake][make]:\n\n```bash\n$ make check\n$ make lint\n```\n\nor you can use [Just][]:\n\n```bash\n$ just check\n$ just lint\n```\n\nTo update and view the test coverage report using [Make][] run:\n\n```bash\n$ make cover\n```\n\nor you can use [Just][]:\n\n```bash\n$ just cover\n```\n\n### Disclosure and Call for Help\n\nWhile this package works, it does not fully implement the [USBTMC][]\nspecification. Please submit pull requests as needed to increase functionality,\nmaintainability, or reliability.\n\n## License\n\n[usbtmc][gousbtmc] is released under the MIT license. Please see the\n[LICENSE.txt][] file for more information.\n\n[godoc badge]: https://godoc.org/github.com/gotmc/usbtmc?status.svg\n[godoc link]: https://godoc.org/github.com/gotmc/usbtmc\n[golibusb]: https://github.com/gotmc/libusb\n[gousb]: https://github.com/google/gousb\n[gousbtmc]: https://github.com/gotmc/usbtmc\n[ivi]: https://github.com/gotmc/ivi\n[ivi-foundation]: http://www.ivifoundation.org/\n[ivi-specs]: http://www.ivifoundation.org/specifications/\n[just]: https://just.systems/man/en/\n[libusb]: http://libusb.info\n[LICENSE.txt]: https://github.com/gotmc/libusb/blob/master/LICENSE.txt\n[license badge]: https://img.shields.io/badge/license-MIT-blue.svg\n[lxi]: https://github.com/gotmc/lxi\n[make]: https://www.gnu.org/software/make/\n[pull request]: https://help.github.com/articles/using-pull-requests\n[report badge]: https://goreportcard.com/badge/github.com/gotmc/usbtmc\n[report card]: https://goreportcard.com/report/github.com/gotmc/usbtmc\n[scpi]: https://www.ivifoundation.org/About-IVI/scpi.html\n[travis badge]: http://img.shields.io/travis/gotmc/usbtmc/master.svg\n[travis link]: https://travis-ci.org/gotmc/usbtmc\n[usbtmc]: http://www.usb.org/developers/docs/devclass_docs/\n[visa]: https://github.com/gotmc/visa\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotmc%2Fusbtmc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgotmc%2Fusbtmc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotmc%2Fusbtmc/lists"}