{"id":22499740,"url":"https://github.com/opiproject/opi-smbios-bridge","last_synced_at":"2025-08-03T06:32:17.298Z","repository":{"id":65095645,"uuid":"580201468","full_name":"opiproject/opi-smbios-bridge","owner":"opiproject","description":"OPI gRPC to SMBIOS bridge for inventory","archived":false,"fork":false,"pushed_at":"2024-06-13T23:10:19.000Z","size":264,"stargazers_count":1,"open_issues_count":7,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-14T01:22:14.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opiproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-20T00:55:48.000Z","updated_at":"2024-06-13T23:09:02.000Z","dependencies_parsed_at":"2024-01-14T19:26:12.723Z","dependency_job_id":"fee831c4-c571-4589-bf71-d6c67cb1cecf","html_url":"https://github.com/opiproject/opi-smbios-bridge","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opiproject%2Fopi-smbios-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opiproject%2Fopi-smbios-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opiproject%2Fopi-smbios-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opiproject%2Fopi-smbios-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opiproject","download_url":"https://codeload.github.com/opiproject/opi-smbios-bridge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228532189,"owners_count":17933247,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-06T22:15:43.559Z","updated_at":"2024-12-06T22:15:44.403Z","avatar_url":"https://github.com/opiproject.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OPI inventory gRPC to SMBIOS DMI bridge\n\n[![Linters](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/linters.yml/badge.svg)](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/linters.yml)\n[![CodeQL](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/codeql.yml/badge.svg)](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/codeql.yml)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/opiproject/opi-smbios-bridge/badge)](https://securityscorecards.dev/viewer/?platform=github.com\u0026org=opiproject\u0026repo=opi-smbios-bridge)\n[![tests](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/go.yml/badge.svg)](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/go.yml)\n[![Docker](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/opiproject/opi-smbios-bridge/actions/workflows/docker-publish.yml)\n[![License](https://img.shields.io/github/license/opiproject/opi-smbios-bridge?style=flat-square\u0026color=blue\u0026label=License)](https://github.com/opiproject/opi-smbios-bridge/blob/master/LICENSE)\n[![codecov](https://codecov.io/gh/opiproject/opi-smbios-bridge/branch/main/graph/badge.svg)](https://codecov.io/gh/opiproject/opi-smbios-bridge)\n[![Go Report Card](https://goreportcard.com/badge/github.com/opiproject/opi-smbios-bridge)](https://goreportcard.com/report/github.com/opiproject/opi-smbios-bridge)\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg)](http://godoc.org/github.com/opiproject/opi-smbios-bridge)\n[![Pulls](https://img.shields.io/docker/pulls/opiproject/opi-smbios-bridge.svg?logo=docker\u0026style=flat\u0026label=Pulls)](https://hub.docker.com/r/opiproject/opi-smbios-bridge)\n[![Last Release](https://img.shields.io/github/v/release/opiproject/opi-smbios-bridge?label=Latest\u0026style=flat-square\u0026logo=go)](https://github.com/opiproject/opi-smbios-bridge/releases)\n[![GitHub stars](https://img.shields.io/github/stars/opiproject/opi-smbios-bridge.svg?style=flat-square\u0026label=github%20stars)](https://github.com/opiproject/opi-smbios-bridge)\n[![GitHub Contributors](https://img.shields.io/github/contributors/opiproject/opi-smbios-bridge.svg?style=flat-square)](https://github.com/opiproject/opi-smbios-bridge/graphs/contributors)\n\nThis is a [SMBIOS](https://www.dmtf.org/standards/smbios) plugin to OPI inventory gRPC APIs based on [dmidecode](https://linux.die.net/man/8/dmidecode) and [ghw](https://github.com/jaypipes/ghw) go library implementing [protobuf](https://github.com/opiproject/opi-api/blob/main/common/v1/inventory.proto).\n\n## I Want To Contribute\n\nThis project welcomes contributions and suggestions.  We are happy to have the Community involved via submission of **Issues and Pull Requests** (with substantive content or even just fixes). We are hoping for the documents, test framework, etc. to become a community process with active engagement.  PRs can be reviewed by by any number of people, and a maintainer may accept.\n\nSee [CONTRIBUTING](https://github.com/opiproject/opi/blob/main/CONTRIBUTING.md) and [GitHub Basic Process](https://github.com/opiproject/opi/blob/main/doc-github-rules.md) for more details.\n\n## Getting started\n\nbuild like this:\n\n```bash\ngo build -v -o /opi-smbios-bridge ./cmd/...\n```\n\nimport like this:\n\n```go\nimport \"github.com/opiproject/opi-smbios-bridge/pkg/inventory\"\n```\n\n## Using docker\n\non DPU/IPU (i.e. with IP=10.10.10.1) run\n\n```bash\n$ docker run --rm -it -p 50051:50051 -p 8082:8082 ghcr.io/opiproject/opi-smbios-bridge:main\n2024/06/13 23:07:43 gRPC Server listening at [::]:50051\n2024/06/13 23:07:43 HTTP Server listening at 8082\n```\n\non X86 management VM run\n\n```bash\n$ docker run --network=host --rm -it namely/grpc-cli ls 10.10.10.10:50051 opi_api.inventory.v1.InventorySvc -l\nfilename: inventory.proto\npackage: opi_api.inventory.v1;\nservice InventorySvc {\n  rpc GetInventory(opi_api.inventory.v1.GetInventoryRequest) returns (opi_api.inventory.v1.Inventory) {}\n}\n```\n\nHTTP example using grpc gateway\n\n```bash\ncurl -kL http://10.10.10.10:8082/v1/inventory/1/inventory/2\n```\n\n### Nvidia example\n\n```bash\n$ docker run --network=host --rm -it namely/grpc-cli call --json_input --json_output 10.10.10.10:50051 GetInventory \"{}\"\nconnecting to 10.10.10.10:50051\n{\n  \"bios\": {\n    \"vendor\": \"https://www.mellanox.com\",\n    \"version\": \"BlueField:3.7.0-20-g98daf29\",\n    \"date\": \"Jun 26 2021\"\n  },\n  \"system\": {\n    \"family\": \"BlueField\",\n    \"name\": \"BlueField SoC\",\n    \"vendor\": \"https://www.mellanox.com\",\n    \"serialNumber\": \"Unspecified System Serial Number\",\n    \"uuid\": \"2e3bc1d1-e205-4830-a817-968ed1978bac\",\n    \"sku\": \"Unspecified System SKU\",\n    \"version\": \"1.0.0\"\n  },\n  \"baseboard\": {\n    \"assetTag\": \"Unspecified Asset Tag\",\n    \"serialNumber\": \"Unspecified Base Board Serial Number\",\n    \"vendor\": \"https://www.mellanox.com\",\n    \"version\": \"1.0.0\",\n    \"product\": \"BlueField SoC\"\n  },\n  \"chassis\": {\n    \"assetTag\": \"Unspecified Chassis Board Asset Tag\",\n    \"serialNumber\": \"Unspecified Chassis Board Serial Number\",\n    \"type\": \"1\",\n    \"typeDescription\": \"Other\",\n    \"vendor\": \"https://www.mellanox.com\",\n    \"version\": \"1.0.0\"\n  },\n  \"processor\": {\n    \"totalCores\": 8,\n    \"totalThreads\": 8\n  },\n  \"memory\": {\n    \"totalPhysicalBytes\": \"17179869184\",\n    \"totalUsableBytes\": \"16733876224\"\n  },\n  \"pci\": [\n    {\n      \"driver\": \"pcieport\",\n      \"address\": \"0000:00:00.0\",\n      \"vendor\": \"Mellanox Technologies\",\n      \"product\": \"MT42822 BlueField-2 SoC Crypto enabled\",\n      \"revision\": \"0x00\",\n      \"subsystem\": \"unknown\",\n      \"class\": \"Bridge\",\n      \"subclass\": \"PCI bridge\"\n    },\n    {\n      \"driver\": \"pcieport\",\n      \"address\": \"0000:01:00.0\",\n      \"vendor\": \"Mellanox Technologies\",\n      \"product\": \"MT42822 Family [BlueField-2 SoC PCIe Bridge]\",\n      \"revision\": \"0x00\",\n      \"subsystem\": \"unknown\",\n      \"class\": \"Bridge\",\n      \"subclass\": \"PCI bridge\"\n    },\n    {\n      \"driver\": \"pcieport\",\n      \"address\": \"0000:02:00.0\",\n      \"vendor\": \"Mellanox Technologies\",\n      \"product\": \"MT42822 Family [BlueField-2 SoC PCIe Bridge]\",\n      \"revision\": \"0x00\",\n      \"subsystem\": \"unknown\",\n      \"class\": \"Bridge\",\n      \"subclass\": \"PCI bridge\"\n    },\n    {\n      \"driver\": \"mlx5_core\",\n      \"address\": \"0000:03:00.0\",\n      \"vendor\": \"Mellanox Technologies\",\n      \"product\": \"MT42822 BlueField-2 integrated ConnectX-6 Dx network controller\",\n      \"revision\": \"0x00\",\n      \"subsystem\": \"unknown\",\n      \"class\": \"Network controller\",\n      \"subclass\": \"Ethernet controller\"\n    },\n    {\n      \"driver\": \"mlx5_core\",\n      \"address\": \"0000:03:00.1\",\n      \"vendor\": \"Mellanox Technologies\",\n      \"product\": \"MT42822 BlueField-2 integrated ConnectX-6 Dx network controller\",\n      \"revision\": \"0x00\",\n      \"subsystem\": \"unknown\",\n      \"class\": \"Network controller\",\n      \"subclass\": \"Ethernet controller\"\n    }\n  ]\n}\nRpc succeeded with OK status\n```\n\n### Marvell example\n\nReduced output a little bit...\n\n```bash\n$ docker run --network=host --rm -it namely/grpc-cli call --json_input --json_output 11.11.11.11:50051 GetInventory \"{}\"\nconnecting to 11.11.11.11:50051\n{\n\"bios\": {\n  \"vendor\": \"U-Boot\",\n  \"version\": \"2020.10-6.0.0\",\n  \"date\": \"11/29/2021\"\n},\n\"system\": {\n  \"name\": \"octeontx2\",\n  \"vendor\": \"Marvell\",\n  \"serialNumber\": \"CN9600-CRB-BOARD-PR3-CP-R3P1-209\",\n  \"uuid\": \"36394e43-3030-432d-5242-2d424f415244\"\n},\n\"baseboard\": {\n  \"vendor\": \"Marvell\",\n  \"product\": \"octeontx2\"\n},\n \"chassis\": {\n  \"type\": \"23\",\n  \"typeDescription\": \"Rack mount chassis\",\n  \"vendor\": \"Marvell\"\n},\n \"processor\": {\n  \"totalCores\": 24,\n  \"totalThreads\": 24\n},\n \"memory\": {\n  \"totalPhysicalBytes\": \"51118669824\",\n  \"totalUsableBytes\": \"51118669824\"\n},\n \"pci\": [\n  {\n   \"address\": \"0000:00:01.0\",\n   \"vendor\": \"Cavium, Inc.\",\n   \"product\": \"THUNDERX PCC Bridge\",\n   \"revision\": \"0x11\",\n   \"subsystem\": \"unknown\",\n   \"class\": \"Bridge\",\n   \"subclass\": \"PCI bridge\"\n  },\n   {\n   \"address\": \"0000:01:01.0\",\n   \"vendor\": \"Cavium, Inc.\",\n   \"product\": \"THUNDERX NCSI (Network Controller Sideband Interface)\",\n   \"revision\": \"0x11\",\n   \"subsystem\": \"unknown\",\n   \"class\": \"Network controller\",\n   \"subclass\": \"Network controller\"\n  },\n   {\n   \"driver\": \"thunderx_mmc\",\n   \"address\": \"0000:01:01.4\",\n   \"vendor\": \"Cavium, Inc.\",\n   \"product\": \"THUNDERX eMMC/SD Controller\",\n   \"revision\": \"0x11\",\n   \"subsystem\": \"unknown\",\n   \"class\": \"Memory controller\",\n   \"subclass\": \"Memory controller\"\n  },\n   {\n   \"address\": \"0000:01:06.1\",\n    \"vendor\": \"Cavium, Inc.\",\n    \"product\": \"unknown\",\n    \"revision\": \"0x11\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Memory controller\",\n    \"subclass\": \"Memory controller\"\n   },\n   {\n    \"address\": \"0000:01:08.0\",\n    \"vendor\": \"Cavium, Inc.\",\n    \"product\": \"unknown\",\n    \"revision\": \"0x11\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Generic system peripheral\",\n    \"subclass\": \"System peripheral\"\n   },\n   {\n    \"driver\": \"Marvell-CGX!RPM\",\n    \"address\": \"0000:01:10.0\",\n    \"vendor\": \"Cavium, Inc.\",\n    \"product\": \"Octeon TX2 CGX (MAC)\",\n    \"revision\": \"0x11\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Network controller\",\n    \"subclass\": \"Network controller\"\n   },\n   {\n    \"driver\": \"cavium_rng_pf\",\n    \"address\": \"0000:03:00.0\",\n    \"vendor\": \"Cavium, Inc.\",\n    \"product\": \"THUNDERX Random Number Generator\",\n    \"revision\": \"0x11\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Processing accelerators\",\n    \"subclass\": \"Processing accelerators\"\n   },\n   {\n    \"address\": \"0005:00:00.0\",\n    \"vendor\": \"Cavium, Inc.\",\n    \"product\": \"THUNDERX PCIERC (PCIe Root Complex)\",\n    \"revision\": \"0x00\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Bridge\",\n    \"subclass\": \"PCI bridge\"\n   },\n   {\n    \"driver\": \"nvme\",\n    \"address\": \"0005:01:00.0\",\n    \"vendor\": \"Samsung Electronics Co Ltd\",\n    \"product\": \"NVMe SSD Controller PM9A1/PM9A3/980PRO\",\n    \"revision\": \"0x00\",\n    \"subsystem\": \"unknown\",\n    \"class\": \"Mass storage controller\",\n    \"subclass\": \"Non-Volatile memory controller\"\n   }\n ]\n }\nRpc succeeded with OK status\n```\n\n### Intel example\n\nValues market as ```-------------``` will be populated in future FW releases.\n\n```bash\n$ docker run --network=host --rm -it namely/grpc-cli call --json_input --json_output 10.10.0.18:50051 GetInventory \"{}\"\nconnecting to 10.10.0.18:50051\n{\n\"bios\": {\n  \"vendor\": \"Intel\",\n  \"version\": \"Intel(R) IPU Embedded UEFI FW 0.6.7 for AArch64\",\n  \"date\": \"Dec  9 2022\"\n},\n\"system\": {\n  \"family\": \"-------------\",\n  \"name\": \"Intel(R) Infrastructure Processing Unit (Intel(R) IPU)\",\n  \"vendor\": \"Intel\",\n  \"serialNumber\": \"-------------\",\n  \"uuid\": \"8a95d198-7f46-11e5-bf8b-08002704d48e\",\n  \"sku\": \"-------------\",\n  \"version\": \"A0\"\n},\n\"baseboard\": {\n  \"assetTag\": \"unknown\",\n  \"serialNumber\": \"unknown\",\n  \"vendor\": \"unknown\",\n  \"version\": \"unknown\",\n  \"product\": \"unknown\"\n},\n\"chassis\": {\n  \"assetTag\": \"N/A\",\n  \"serialNumber\": \"N/A\",\n  \"type\": \"1\",\n  \"typeDescription\": \"Other\",\n  \"vendor\": \"Intel\",\n  \"version\": \"N/A\"\n},\n\"processor\": {},\n\"memory\": {\n  \"totalPhysicalBytes\": \"13732470784\",\n  \"totalUsableBytes\": \"13732470784\"\n}\n}\nRpc succeeded with OK status\n```\n\n### AMD example\n\ntbd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopiproject%2Fopi-smbios-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopiproject%2Fopi-smbios-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopiproject%2Fopi-smbios-bridge/lists"}