diff --git a/internal/core/translation.go b/internal/core/translation.go
index bc7c692..634272c 100644
--- a/internal/core/translation.go
+++ b/internal/core/translation.go
@@ -19,14 +19,29 @@
 import (
 	"fmt"
 
+	"github.com/opencord/voltha-protos/v5/go/common"
 	"github.com/opencord/voltha-protos/v5/go/voltha"
 )
 
 const (
 	DeviceAggregationModel = "bbf-device-aggregation"
 	DevicesPath            = "/" + DeviceAggregationModel + ":devices"
-	DeviceTypeOlt          = "bbf-device-types:olt"
-	DeviceTypeOnu          = "bbf-device-types:onu"
+	HardwarePath           = "data/ietf-hardware:hardware"
+
+	//Device types
+	DeviceTypeOlt = "bbf-device-types:olt"
+	DeviceTypeOnu = "bbf-device-types:onu"
+
+	//Admin states
+	ietfAdminStateUnknown  = "unknown"
+	ietfAdminStateLocked   = "locked"
+	ietfAdminStateUnlocked = "unlocked"
+
+	//Oper states
+	ietfOperStateUnknown  = "unknown"
+	ietfOperStateDisabled = "disabled"
+	ietfOperStateEnabled  = "enabled"
+	ietfOperStateTesting  = "testing"
 )
 
 type YangItem struct {
@@ -39,20 +54,117 @@
 	return fmt.Sprintf("%s/device[name='%s']", DevicesPath, id)
 }
 
+//getDevicePath returns the yang path to the root of the device's hardware module in its data mountpoint
+func getDeviceHardwarePath(id string) string {
+	return fmt.Sprintf("%s/device[name='%s']/%s/component[name='%s']", DevicesPath, id, HardwarePath, id)
+}
+
+//ietfHardwareAdminState returns the string that represents the ietf-hardware admin state
+//enum value corresponding to the one of VOLTHA
+func ietfHardwareAdminState(volthaAdminState voltha.AdminState_Types) string {
+	//TODO: verify this mapping is correct
+	switch volthaAdminState {
+	case common.AdminState_UNKNOWN:
+		return ietfAdminStateUnknown
+	case common.AdminState_PREPROVISIONED:
+	case common.AdminState_DOWNLOADING_IMAGE:
+	case common.AdminState_ENABLED:
+		return ietfAdminStateUnlocked
+	case common.AdminState_DISABLED:
+		return ietfAdminStateLocked
+	}
+
+	//TODO: does something map to "shutting-down" ?
+
+	return ietfAdminStateUnknown
+}
+
+//ietfHardwareOperState returns the string that represents the ietf-hardware oper state
+//enum value corresponding to the one of VOLTHA
+func ietfHardwareOperState(volthaOperState voltha.OperStatus_Types) string {
+	//TODO: verify this mapping is correct
+	switch volthaOperState {
+	case common.OperStatus_UNKNOWN:
+		return ietfOperStateUnknown
+	case common.OperStatus_TESTING:
+		return ietfOperStateTesting
+	case common.OperStatus_ACTIVE:
+		return ietfOperStateEnabled
+	case common.OperStatus_DISCOVERED:
+	case common.OperStatus_ACTIVATING:
+	case common.OperStatus_FAILED:
+	case common.OperStatus_RECONCILING:
+	case common.OperStatus_RECONCILING_FAILED:
+		return ietfOperStateDisabled
+	}
+
+	return ietfOperStateUnknown
+}
+
 //translateDevice returns a slice of yang items that represent a voltha device
 func translateDevice(device voltha.Device) []YangItem {
 	devicePath := getDevicePath(device.Id)
+	hardwarePath := getDeviceHardwarePath(device.Id)
 
-	typeItem := YangItem{}
-	typeItem.Path = fmt.Sprintf("%s/type", devicePath)
+	result := []YangItem{}
 
+	//Device type
 	if device.Root {
-		typeItem.Value = DeviceTypeOlt
+		result = append(result, YangItem{
+			Path:  fmt.Sprintf("%s/type", devicePath),
+			Value: DeviceTypeOlt,
+		})
 	} else {
-		typeItem.Value = DeviceTypeOnu
+		result = append(result, YangItem{
+			Path:  fmt.Sprintf("%s/type", devicePath),
+			Value: DeviceTypeOnu,
+		})
 	}
 
-	return []YangItem{typeItem}
+	//Vendor name
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/mfg-name", hardwarePath),
+		Value: device.Vendor,
+	})
+
+	//Model
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/model-name", hardwarePath),
+		Value: device.Model,
+	})
+
+	//Hardware version
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/hardware-rev", hardwarePath),
+		Value: device.HardwareVersion,
+	})
+
+	//Firmware version
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/firmware-rev", hardwarePath),
+		Value: device.FirmwareVersion,
+	})
+
+	//Serial number
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/serial-num", hardwarePath),
+		Value: device.SerialNumber,
+	})
+
+	//Administrative state
+	//Translates VOLTHA admin state enum to ietf-hardware enum
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/state/admin-state", hardwarePath),
+		Value: ietfHardwareAdminState(device.AdminState),
+	})
+
+	//Operative state
+	result = append(result, YangItem{
+		Path:  fmt.Sprintf("%s/state/oper-state", hardwarePath),
+		Value: ietfHardwareOperState(device.OperStatus),
+	})
+
+	return result
 }
 
 //translateDevices returns a slice of yang items that represent a list of voltha devices
