diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index ef980fa..4b023e9 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -171,6 +171,61 @@
 	return ""
 }
 
+type HWComponentInfoGetResponse struct {
+	Status               Status     `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               Reason     `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
+	Component            *Component `protobuf:"bytes,3,opt,name=component,proto3" json:"component,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *HWComponentInfoGetResponse) Reset()         { *m = HWComponentInfoGetResponse{} }
+func (m *HWComponentInfoGetResponse) String() string { return proto.CompactTextString(m) }
+func (*HWComponentInfoGetResponse) ProtoMessage()    {}
+func (*HWComponentInfoGetResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{3}
+}
+
+func (m *HWComponentInfoGetResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_HWComponentInfoGetResponse.Unmarshal(m, b)
+}
+func (m *HWComponentInfoGetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_HWComponentInfoGetResponse.Marshal(b, m, deterministic)
+}
+func (m *HWComponentInfoGetResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_HWComponentInfoGetResponse.Merge(m, src)
+}
+func (m *HWComponentInfoGetResponse) XXX_Size() int {
+	return xxx_messageInfo_HWComponentInfoGetResponse.Size(m)
+}
+func (m *HWComponentInfoGetResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_HWComponentInfoGetResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_HWComponentInfoGetResponse proto.InternalMessageInfo
+
+func (m *HWComponentInfoGetResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *HWComponentInfoGetResponse) GetReason() Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return Reason_UNDEFINED_REASON
+}
+
+func (m *HWComponentInfoGetResponse) GetComponent() *Component {
+	if m != nil {
+		return m.Component
+	}
+	return nil
+}
+
 type HWComponentInfoSetRequest struct {
 	DeviceUuid           *Uuid                `protobuf:"bytes,1,opt,name=device_uuid,json=deviceUuid,proto3" json:"device_uuid,omitempty"`
 	ComponentUuid        *Uuid                `protobuf:"bytes,2,opt,name=component_uuid,json=componentUuid,proto3" json:"component_uuid,omitempty"`
@@ -185,7 +240,7 @@
 func (m *HWComponentInfoSetRequest) String() string { return proto.CompactTextString(m) }
 func (*HWComponentInfoSetRequest) ProtoMessage()    {}
 func (*HWComponentInfoSetRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{3}
+	return fileDescriptor_eae902e73066286d, []int{4}
 }
 
 func (m *HWComponentInfoSetRequest) XXX_Unmarshal(b []byte) error {
@@ -246,7 +301,7 @@
 func (m *HWComponentInfoSetResponse) String() string { return proto.CompactTextString(m) }
 func (*HWComponentInfoSetResponse) ProtoMessage()    {}
 func (*HWComponentInfoSetResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{4}
+	return fileDescriptor_eae902e73066286d, []int{5}
 }
 
 func (m *HWComponentInfoSetResponse) XXX_Unmarshal(b []byte) error {
@@ -294,7 +349,7 @@
 func (m *StartManagingDeviceResponse) String() string { return proto.CompactTextString(m) }
 func (*StartManagingDeviceResponse) ProtoMessage()    {}
 func (*StartManagingDeviceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{5}
+	return fileDescriptor_eae902e73066286d, []int{6}
 }
 
 func (m *StartManagingDeviceResponse) XXX_Unmarshal(b []byte) error {
@@ -347,7 +402,7 @@
 func (m *StopManagingDeviceRequest) String() string { return proto.CompactTextString(m) }
 func (*StopManagingDeviceRequest) ProtoMessage()    {}
 func (*StopManagingDeviceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{6}
+	return fileDescriptor_eae902e73066286d, []int{7}
 }
 
 func (m *StopManagingDeviceRequest) XXX_Unmarshal(b []byte) error {
@@ -387,7 +442,7 @@
 func (m *StopManagingDeviceResponse) String() string { return proto.CompactTextString(m) }
 func (*StopManagingDeviceResponse) ProtoMessage()    {}
 func (*StopManagingDeviceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{7}
+	return fileDescriptor_eae902e73066286d, []int{8}
 }
 
 func (m *StopManagingDeviceResponse) XXX_Unmarshal(b []byte) error {
@@ -426,6 +481,7 @@
 	proto.RegisterType((*PhysicalInventoryRequest)(nil), "dmi.PhysicalInventoryRequest")
 	proto.RegisterType((*PhysicalInventoryResponse)(nil), "dmi.PhysicalInventoryResponse")
 	proto.RegisterType((*HWComponentInfoGetRequest)(nil), "dmi.HWComponentInfoGetRequest")
+	proto.RegisterType((*HWComponentInfoGetResponse)(nil), "dmi.HWComponentInfoGetResponse")
 	proto.RegisterType((*HWComponentInfoSetRequest)(nil), "dmi.HWComponentInfoSetRequest")
 	proto.RegisterType((*HWComponentInfoSetResponse)(nil), "dmi.HWComponentInfoSetResponse")
 	proto.RegisterType((*StartManagingDeviceResponse)(nil), "dmi.StartManagingDeviceResponse")
@@ -436,40 +492,42 @@
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 527 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xd1, 0x6a, 0x13, 0x41,
-	0x14, 0x65, 0x9b, 0x52, 0xc9, 0x8d, 0x0d, 0x38, 0xfa, 0xb0, 0x59, 0xb1, 0x2d, 0x2b, 0x82, 0x28,
-	0xcd, 0x96, 0xf4, 0x49, 0x7c, 0x53, 0x69, 0xd2, 0x87, 0x14, 0xd9, 0xa5, 0x04, 0x7c, 0x09, 0x93,
-	0x9d, 0x9b, 0x64, 0xa0, 0x33, 0xb3, 0xee, 0xcc, 0xa6, 0xf4, 0x37, 0xf4, 0x07, 0xfc, 0x13, 0x7f,
-	0xc2, 0x0f, 0x92, 0x9d, 0xdd, 0x6c, 0x42, 0x92, 0x15, 0x91, 0x0a, 0x7d, 0xdb, 0xcc, 0x39, 0xf7,
-	0x70, 0xee, 0x99, 0xb9, 0x37, 0x70, 0xcc, 0x04, 0x0f, 0xe6, 0xb7, 0x63, 0x41, 0x25, 0x9d, 0xa1,
-	0x40, 0x69, 0xc6, 0x1a, 0xd3, 0x05, 0x8f, 0xb1, 0x9b, 0xa4, 0xca, 0x28, 0xd2, 0x60, 0x82, 0x7b,
-	0x4f, 0x72, 0x56, 0xac, 0x84, 0x50, 0x52, 0x17, 0xe7, 0xde, 0xe3, 0xa2, 0xb0, 0xf8, 0xe5, 0x5f,
-	0x80, 0xfb, 0x79, 0x7e, 0xa7, 0x79, 0x4c, 0x6f, 0x2e, 0xe5, 0x02, 0xa5, 0x51, 0xe9, 0x5d, 0x88,
-	0x5f, 0x33, 0xd4, 0x86, 0xbc, 0x81, 0x16, 0xc3, 0x5c, 0x71, 0x9c, 0x65, 0x9c, 0xb9, 0xce, 0x89,
-	0xf3, 0xba, 0xd5, 0x6b, 0x76, 0x99, 0xe0, 0xdd, 0xeb, 0x8c, 0xb3, 0x10, 0x0a, 0x34, 0xff, 0xf6,
-	0xbf, 0x39, 0xd0, 0xd9, 0x21, 0xa4, 0x13, 0x25, 0x35, 0x92, 0x97, 0x70, 0xa0, 0x0d, 0x35, 0x99,
-	0xb6, 0x22, 0xed, 0x5e, 0xcb, 0x8a, 0x44, 0xf6, 0x28, 0x2c, 0xa1, 0x9c, 0x94, 0x22, 0xd5, 0x4a,
-	0xba, 0x7b, 0x6b, 0xa4, 0xd0, 0x1e, 0x85, 0x25, 0x44, 0xde, 0x42, 0x93, 0x2f, 0xe5, 0xdd, 0x86,
-	0x75, 0x74, 0x68, 0x79, 0x03, 0x9a, 0xb2, 0x5b, 0x9a, 0x62, 0xb8, 0xc2, 0xfd, 0x1f, 0x0e, 0x74,
-	0x06, 0xa3, 0x8f, 0x4a, 0x24, 0x4a, 0xa2, 0x34, 0x97, 0x72, 0xaa, 0xfa, 0x68, 0xfe, 0xa1, 0x3d,
-	0x72, 0x06, 0xed, 0x78, 0x29, 0x53, 0xd0, 0xf7, 0x36, 0xe9, 0x87, 0x15, 0xc1, 0x56, 0xbc, 0x5a,
-	0xaf, 0x90, 0x54, 0xa0, 0x75, 0xdb, 0x5c, 0xa3, 0x5d, 0x51, 0x81, 0xfe, 0xaf, 0x6d, 0x8b, 0xd1,
-	0xc3, 0xb2, 0x48, 0x7a, 0xf0, 0x28, 0x9e, 0x53, 0x39, 0x43, 0xed, 0xee, 0x5b, 0x45, 0xd7, 0x2a,
-	0x0e, 0x15, 0xe3, 0x53, 0x4e, 0x27, 0x37, 0x58, 0xb9, 0x0f, 0x97, 0x44, 0x7f, 0x0a, 0xde, 0xae,
-	0xae, 0xee, 0xfb, 0x39, 0xf8, 0xdf, 0x1d, 0x78, 0x1e, 0x19, 0x9a, 0x9a, 0x61, 0x3e, 0x06, 0x5c,
-	0xce, 0x3e, 0xd9, 0x40, 0xfe, 0xc3, 0xc3, 0xdb, 0xb8, 0x8a, 0xc6, 0x9f, 0x86, 0x21, 0x80, 0x4e,
-	0x64, 0x54, 0xb2, 0xe9, 0xa9, 0xb8, 0x53, 0x02, 0xfb, 0x36, 0x6b, 0xc7, 0x66, 0x6d, 0xbf, 0xf3,
-	0xb8, 0x76, 0x15, 0xdc, 0x77, 0x13, 0xbd, 0x9f, 0x0d, 0xe8, 0x5c, 0x51, 0xc3, 0x17, 0x38, 0x18,
-	0x0d, 0xab, 0xc5, 0x11, 0x15, 0x7b, 0x83, 0x44, 0xf0, 0x74, 0x47, 0x96, 0xa4, 0xf6, 0xba, 0xbd,
-	0x93, 0xa5, 0x91, 0xba, 0xfc, 0xcf, 0x1c, 0x72, 0x0d, 0x64, 0xbb, 0x35, 0x72, 0x54, 0x56, 0xd6,
-	0x84, 0xe4, 0x1d, 0xd7, 0xe2, 0x65, 0x26, 0x23, 0x78, 0xd6, 0x47, 0xb3, 0xb5, 0x71, 0xc8, 0x0b,
-	0x5b, 0x58, 0xb7, 0xd2, 0xbc, 0xa3, 0x3a, 0xb8, 0xf2, 0x7b, 0x01, 0xa4, 0x8f, 0x66, 0xe3, 0xf1,
-	0x96, 0x7e, 0x6b, 0x77, 0x89, 0xd7, 0xb6, 0x78, 0x85, 0x96, 0x7d, 0xff, 0xa5, 0xce, 0x6a, 0xe0,
-	0xcb, 0xbe, 0xeb, 0x47, 0xe7, 0xc3, 0xfb, 0x2f, 0xef, 0x66, 0xdc, 0xcc, 0xb3, 0x49, 0x37, 0x56,
-	0x22, 0x50, 0x09, 0xca, 0x58, 0xa5, 0x2c, 0x28, 0x1e, 0xdf, 0xe9, 0xea, 0xcf, 0xe0, 0x94, 0x4b,
-	0x83, 0xe9, 0x94, 0xc6, 0x18, 0x2c, 0xce, 0x83, 0x99, 0x0a, 0x98, 0xe0, 0x93, 0x03, 0xbb, 0xf3,
-	0xcf, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x47, 0xf4, 0xba, 0x3c, 0x06, 0x00, 0x00,
+	// 547 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xd1, 0x6e, 0xd3, 0x30,
+	0x14, 0x55, 0xd6, 0x69, 0xa8, 0x77, 0xac, 0x12, 0x86, 0x87, 0x34, 0x88, 0x6d, 0x0a, 0x42, 0x42,
+	0xc0, 0x9a, 0xa9, 0x7b, 0x42, 0xbc, 0x01, 0xa2, 0xdd, 0x43, 0x27, 0x94, 0x68, 0xaa, 0xc4, 0x4b,
+	0xe5, 0xc6, 0xb7, 0xad, 0xa5, 0xd9, 0x0e, 0xb1, 0xd3, 0x69, 0xbf, 0x01, 0x7c, 0x00, 0x9f, 0xc4,
+	0x03, 0x1f, 0x84, 0xe2, 0xa4, 0x69, 0xd5, 0x36, 0x80, 0xd0, 0x26, 0xf1, 0x96, 0xf8, 0x9e, 0x7b,
+	0x7c, 0xee, 0xb9, 0xf6, 0x35, 0x1c, 0x31, 0xc1, 0x83, 0xd9, 0xf5, 0x48, 0x50, 0x49, 0xa7, 0x28,
+	0x50, 0x9a, 0x91, 0xc6, 0x74, 0xce, 0x63, 0xec, 0x24, 0xa9, 0x32, 0x8a, 0x34, 0x98, 0xe0, 0xde,
+	0x83, 0x1c, 0x15, 0x2b, 0x21, 0x94, 0xd4, 0xc5, 0xba, 0x77, 0xbf, 0x48, 0x2c, 0xfe, 0xfc, 0x0f,
+	0xe0, 0x7e, 0x9c, 0xdd, 0x68, 0x1e, 0xd3, 0xab, 0x73, 0x39, 0x47, 0x69, 0x54, 0x7a, 0x13, 0xe2,
+	0xe7, 0x0c, 0xb5, 0x21, 0x2f, 0x60, 0x9f, 0x61, 0xce, 0x38, 0xca, 0x32, 0xce, 0x5c, 0xe7, 0xd8,
+	0x79, 0xbe, 0xdf, 0x6d, 0x76, 0x98, 0xe0, 0x9d, 0xcb, 0x8c, 0xb3, 0x10, 0x8a, 0x68, 0xfe, 0xed,
+	0x7f, 0x71, 0xa0, 0xbd, 0x85, 0x48, 0x27, 0x4a, 0x6a, 0x24, 0x4f, 0x61, 0x4f, 0x1b, 0x6a, 0x32,
+	0x6d, 0x49, 0x5a, 0xdd, 0x7d, 0x4b, 0x12, 0xd9, 0xa5, 0xb0, 0x0c, 0xe5, 0xa0, 0x14, 0xa9, 0x56,
+	0xd2, 0xdd, 0x59, 0x01, 0x85, 0x76, 0x29, 0x2c, 0x43, 0xe4, 0x25, 0x34, 0xf9, 0x82, 0xde, 0x6d,
+	0x58, 0x45, 0x07, 0x16, 0xd7, 0xa7, 0x29, 0xbb, 0xa6, 0x29, 0x86, 0xcb, 0xb8, 0xff, 0xdd, 0x81,
+	0x76, 0x7f, 0xf8, 0x4e, 0x89, 0x44, 0x49, 0x94, 0xe6, 0x5c, 0x4e, 0x54, 0x0f, 0xcd, 0x3f, 0x94,
+	0x47, 0x4e, 0xa1, 0x15, 0x2f, 0x68, 0x0a, 0xf8, 0xce, 0x3a, 0xfc, 0xa0, 0x02, 0xd8, 0x8c, 0x67,
+	0xab, 0x19, 0x92, 0x0a, 0xb4, 0x6a, 0x9b, 0x2b, 0xb0, 0x0b, 0x2a, 0xd0, 0xff, 0xe6, 0x80, 0xb7,
+	0x4d, 0xe2, 0xad, 0x1b, 0xf7, 0x0a, 0x9a, 0xd5, 0xce, 0xa5, 0x71, 0x2d, 0x8b, 0xab, 0xf6, 0x0e,
+	0x97, 0x00, 0xff, 0xe7, 0xa6, 0x73, 0xd1, 0xff, 0xe5, 0x1c, 0xe9, 0xc2, 0xbd, 0x78, 0x46, 0xe5,
+	0x14, 0xb5, 0xbb, 0x6b, 0x19, 0x5d, 0xcb, 0x38, 0x50, 0x8c, 0x4f, 0x38, 0x1d, 0x5f, 0xe1, 0xb2,
+	0xb0, 0x05, 0xd0, 0x9f, 0x6c, 0x98, 0x1d, 0xdd, 0x85, 0xd9, 0xfe, 0x57, 0x07, 0x1e, 0x47, 0x86,
+	0xa6, 0x66, 0x90, 0xdf, 0x4e, 0x2e, 0xa7, 0xef, 0xad, 0x21, 0x77, 0xd0, 0xd6, 0xb5, 0x56, 0x34,
+	0x7e, 0x77, 0x47, 0x03, 0x68, 0x47, 0x46, 0x25, 0xeb, 0x9a, 0x8a, 0x9e, 0x12, 0xd8, 0xb5, 0x5e,
+	0x3b, 0xd6, 0x6b, 0xfb, 0x9d, 0xdb, 0xb5, 0x2d, 0xe1, 0xb6, 0x8b, 0xe8, 0xfe, 0x68, 0x40, 0xfb,
+	0x82, 0x1a, 0x3e, 0xc7, 0xfe, 0x70, 0x50, 0xcd, 0xb3, 0xa8, 0x18, 0x67, 0x24, 0x82, 0x87, 0x5b,
+	0xbc, 0x24, 0xb5, 0xed, 0xf6, 0x8e, 0x17, 0x42, 0xea, 0xfc, 0x3f, 0x75, 0xc8, 0x25, 0x90, 0xcd,
+	0xd2, 0xc8, 0x61, 0x99, 0x59, 0x63, 0x92, 0x77, 0x54, 0x1b, 0x2f, 0x3d, 0x19, 0xc2, 0xa3, 0x1e,
+	0x9a, 0x8d, 0x41, 0x48, 0x9e, 0xd8, 0xc4, 0xba, 0x49, 0xeb, 0x1d, 0xd6, 0x85, 0x2b, 0xbd, 0x43,
+	0x20, 0x3d, 0x34, 0x6b, 0x87, 0xb7, 0xd4, 0x5b, 0x3b, 0xe2, 0x4a, 0xbd, 0xf5, 0xf3, 0xa5, 0x34,
+	0xe2, 0x2f, 0x89, 0xa3, 0x3f, 0x10, 0xaf, 0xdc, 0xa5, 0xb7, 0x6f, 0x3e, 0xbd, 0x9e, 0x72, 0x33,
+	0xcb, 0xc6, 0x9d, 0x58, 0x89, 0x40, 0x25, 0x28, 0x63, 0x95, 0xb2, 0xa0, 0x38, 0x8d, 0x27, 0xcb,
+	0x47, 0xeb, 0x84, 0x4b, 0x83, 0xe9, 0x84, 0xc6, 0x18, 0xcc, 0xcf, 0x82, 0xa9, 0x0a, 0x98, 0xe0,
+	0xe3, 0x3d, 0xfb, 0x36, 0x9d, 0xfd, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xdb, 0x2f, 0x23, 0xe4,
+	0x06, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -601,7 +659,7 @@
 }
 
 type NativeHWManagementService_GetHWComponentInfoClient interface {
-	Recv() (*Component, error)
+	Recv() (*HWComponentInfoGetResponse, error)
 	grpc.ClientStream
 }
 
@@ -609,8 +667,8 @@
 	grpc.ClientStream
 }
 
-func (x *nativeHWManagementServiceGetHWComponentInfoClient) Recv() (*Component, error) {
-	m := new(Component)
+func (x *nativeHWManagementServiceGetHWComponentInfoClient) Recv() (*HWComponentInfoGetResponse, error) {
+	m := new(HWComponentInfoGetResponse)
 	if err := x.ClientStream.RecvMsg(m); err != nil {
 		return nil, err
 	}
@@ -721,7 +779,7 @@
 }
 
 type NativeHWManagementService_GetHWComponentInfoServer interface {
-	Send(*Component) error
+	Send(*HWComponentInfoGetResponse) error
 	grpc.ServerStream
 }
 
@@ -729,7 +787,7 @@
 	grpc.ServerStream
 }
 
-func (x *nativeHWManagementServiceGetHWComponentInfoServer) Send(m *Component) error {
+func (x *nativeHWManagementServiceGetHWComponentInfoServer) Send(m *HWComponentInfoGetResponse) error {
 	return x.ServerStream.SendMsg(m)
 }
 
