diff --git a/tlbmc/hal/nic_veeprom/accessor_base.h b/tlbmc/hal/nic_veeprom/accessor_base.h
index 71d0cb1..229fb3f 100644
--- a/tlbmc/hal/nic_veeprom/accessor_base.h
+++ b/tlbmc/hal/nic_veeprom/accessor_base.h
@@ -1,7 +1,7 @@
 #ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_NIC_VEEPROM_ACCESSOR_BASE_H_
 #define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TLBMC_HAL_NIC_VEEPROM_ACCESSOR_BASE_H_
 
-#include <arpa/inet.h>
+#include <endian.h>
 
 #include <cstddef>
 #include <cstdint>
@@ -85,6 +85,7 @@
     }
     uint16_t version;
     memcpy(&version, buf->data() + offsetof(T, version), sizeof(version));
+    version = be16toh(version);
     if (version != version_) {
       LOG(ERROR) << "VEEPROM V" << version_ << " version mismatch: " << version;
       return;
@@ -93,6 +94,7 @@
     uint32_t header_magic;
     memcpy(&header_magic, buf->data() + offsetof(T, sensor_header_magic),
            sizeof(header_magic));
+    header_magic = be32toh(header_magic);
     if (header_magic != kHeaderMagic) {
       LOG(ERROR) << "VEEPROM V" << version_
                  << " header magic mismatch: " << header_magic;
diff --git a/tlbmc/hal/nic_veeprom/accessor_v1.cc b/tlbmc/hal/nic_veeprom/accessor_v1.cc
index ef11888..dc53faa 100644
--- a/tlbmc/hal/nic_veeprom/accessor_v1.cc
+++ b/tlbmc/hal/nic_veeprom/accessor_v1.cc
@@ -1,5 +1,6 @@
 #include "tlbmc/hal/nic_veeprom/accessor_v1.h"
 
+#include <endian.h>
 #include <memory>
 #include <string>
 
@@ -35,10 +36,10 @@
         absl::ToUnixSeconds(last_refresh_timestamp_));
     switch (name) {
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_CPU:
-        val->set_reading(data.diorite_cpu);
+        val->set_reading(be32toh(data.diorite_cpu));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_DDR:
-        val->set_reading(data.diorite_ddr);
+        val->set_reading(be32toh(data.diorite_ddr));
         break;
       default:
         return absl::NotFoundError(absl::StrFormat(
diff --git a/tlbmc/hal/nic_veeprom/accessor_v2.cc b/tlbmc/hal/nic_veeprom/accessor_v2.cc
index de13a9d..c111534 100644
--- a/tlbmc/hal/nic_veeprom/accessor_v2.cc
+++ b/tlbmc/hal/nic_veeprom/accessor_v2.cc
@@ -1,5 +1,6 @@
 #include "tlbmc/hal/nic_veeprom/accessor_v2.h"
 
+#include <endian.h>
 #include <memory>
 #include <string>
 
@@ -35,127 +36,127 @@
         absl::ToUnixSeconds(last_refresh_timestamp_));
     switch (name) {
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_SPEED_GBPS:
-        val->set_reading(data.port0_speed_gbps);
+        val->set_reading(be16toh(data.port0_speed_gbps));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_SPEED_GBPS:
-        val->set_reading(data.port1_speed_gbps);
+        val->set_reading(be16toh(data.port1_speed_gbps));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_SPEED_GBPS:
-        val->set_reading(data.port2_speed_gbps);
+        val->set_reading(be16toh(data.port2_speed_gbps));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_SPEED_GBPS:
-        val->set_reading(data.port3_speed_gbps);
+        val->set_reading(be16toh(data.port3_speed_gbps));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_FLAP_COUNT:
-        val->set_count(data.port0_flap_count);
+        val->set_count(be16toh(data.port0_flap_count));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_FLAP_COUNT:
-        val->set_count(data.port1_flap_count);
+        val->set_count(be16toh(data.port1_flap_count));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_FLAP_COUNT:
-        val->set_count(data.port2_flap_count);
+        val->set_count(be16toh(data.port2_flap_count));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_FLAP_COUNT:
-        val->set_count(data.port3_flap_count);
+        val->set_count(be16toh(data.port3_flap_count));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_FEC_CCW:
-        val->set_count(data.port0_fec_ccw);
+        val->set_count(be64toh(data.port0_fec_ccw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_FEC_UCW:
-        val->set_count(data.port0_fec_ucw);
+        val->set_count(be64toh(data.port0_fec_ucw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_FEC_CCW:
-        val->set_count(data.port1_fec_ccw);
+        val->set_count(be64toh(data.port1_fec_ccw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_FEC_UCW:
-        val->set_count(data.port1_fec_ucw);
+        val->set_count(be64toh(data.port1_fec_ucw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_FEC_CCW:
-        val->set_count(data.port2_fec_ccw);
+        val->set_count(be64toh(data.port2_fec_ccw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_FEC_UCW:
-        val->set_count(data.port2_fec_ucw);
+        val->set_count(be64toh(data.port2_fec_ucw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_FEC_CCW:
-        val->set_count(data.port3_fec_ccw);
+        val->set_count(be64toh(data.port3_fec_ccw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_FEC_UCW:
-        val->set_count(data.port3_fec_ucw);
+        val->set_count(be64toh(data.port3_fec_ucw));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_MAC_STAT_TX_BYTES:
-        val->set_count(data.port0_mac_stat_tx_bytes);
+        val->set_count(be64toh(data.port0_mac_stat_tx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_MAC_STAT_TX_PACKETS:
-        val->set_count(data.port0_mac_stat_tx_packets);
+        val->set_count(be64toh(data.port0_mac_stat_tx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_MAC_STAT_RX_BYTES:
-        val->set_count(data.port0_mac_stat_rx_bytes);
+        val->set_count(be64toh(data.port0_mac_stat_rx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_MAC_STAT_RX_PACKETS:
-        val->set_count(data.port0_mac_stat_rx_packets);
+        val->set_count(be64toh(data.port0_mac_stat_rx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT0_MAC_STAT_RX_BAD_PACKETS:
-        val->set_count(data.port0_mac_stat_rx_bad_packets);
+        val->set_count(be64toh(data.port0_mac_stat_rx_bad_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_MAC_STAT_TX_BYTES:
-        val->set_count(data.port1_mac_stat_tx_bytes);
+        val->set_count(be64toh(data.port1_mac_stat_tx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_MAC_STAT_TX_PACKETS:
-        val->set_count(data.port1_mac_stat_tx_packets);
+        val->set_count(be64toh(data.port1_mac_stat_tx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_MAC_STAT_RX_BYTES:
-        val->set_count(data.port1_mac_stat_rx_bytes);
+        val->set_count(be64toh(data.port1_mac_stat_rx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_MAC_STAT_RX_PACKETS:
-        val->set_count(data.port1_mac_stat_rx_packets);
+        val->set_count(be64toh(data.port1_mac_stat_rx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT1_MAC_STAT_RX_BAD_PACKETS:
-        val->set_count(data.port1_mac_stat_rx_bad_packets);
+        val->set_count(be64toh(data.port1_mac_stat_rx_bad_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_MAC_STAT_TX_BYTES:
-        val->set_count(data.port2_mac_stat_tx_bytes);
+        val->set_count(be64toh(data.port2_mac_stat_tx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_MAC_STAT_TX_PACKETS:
-        val->set_count(data.port2_mac_stat_tx_packets);
+        val->set_count(be64toh(data.port2_mac_stat_tx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_MAC_STAT_RX_BYTES:
-        val->set_count(data.port2_mac_stat_rx_bytes);
+        val->set_count(be64toh(data.port2_mac_stat_rx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_MAC_STAT_RX_PACKETS:
-        val->set_count(data.port2_mac_stat_rx_packets);
+        val->set_count(be64toh(data.port2_mac_stat_rx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT2_MAC_STAT_RX_BAD_PACKETS:
-        val->set_count(data.port2_mac_stat_rx_bad_packets);
+        val->set_count(be64toh(data.port2_mac_stat_rx_bad_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_MAC_STAT_TX_BYTES:
-        val->set_count(data.port3_mac_stat_tx_bytes);
+        val->set_count(be64toh(data.port3_mac_stat_tx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_MAC_STAT_TX_PACKETS:
-        val->set_count(data.port3_mac_stat_tx_packets);
+        val->set_count(be64toh(data.port3_mac_stat_tx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_MAC_STAT_RX_BYTES:
-        val->set_count(data.port3_mac_stat_rx_bytes);
+        val->set_count(be64toh(data.port3_mac_stat_rx_bytes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_MAC_STAT_RX_PACKETS:
-        val->set_count(data.port3_mac_stat_rx_packets);
+        val->set_count(be64toh(data.port3_mac_stat_rx_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT3_MAC_STAT_RX_BAD_PACKETS:
-        val->set_count(data.port3_mac_stat_rx_bad_packets);
+        val->set_count(be64toh(data.port3_mac_stat_rx_bad_packets));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_TX_PACKETS_DROPPED:
-        val->set_count(data.tx_packets_dropped);
+        val->set_count(be64toh(data.tx_packets_dropped));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_RX_PACKETS_DROPPED:
-        val->set_count(data.rx_packets_dropped);
+        val->set_count(be64toh(data.rx_packets_dropped));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_CN0_ETH0_NO_BUFFER_RX_DROPS:
-        val->set_count(data.cn0_eth0_no_buffer_rx_drops);
+        val->set_count(be64toh(data.cn0_eth0_no_buffer_rx_drops));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_ADT:
-        val->set_reading(data.diorite_adt);
+        val->set_reading(be16toh(data.diorite_adt));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_FAN_SPEED:
-        val->set_reading(data.diorite_fan_speed);
+        val->set_reading(be16toh(data.diorite_fan_speed));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_FAN_DUTY_CYCLE:
         val->set_reading(data.diorite_fan_duty_cycle);
@@ -164,16 +165,16 @@
         val->set_reading(data.op_mode);
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_PORT_LINK_STATE:
-        val->set_reading(data.port_link_state);
+        val->set_reading(be16toh(data.port_link_state));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_ERROR_CODES:
-        val->set_count(data.error_codes);
+        val->set_count(be64toh(data.error_codes));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_CPU:
-        val->set_reading(data.diorite_cpu);
+        val->set_reading(be32toh(data.diorite_cpu));
         break;
       case NicTelemetryName::NIC_TELEMETRY_NAME_DIORITE_DDR:
-        val->set_reading(data.diorite_ddr);
+        val->set_reading(be32toh(data.diorite_ddr));
         break;
       default:
         return absl::NotFoundError(absl::StrFormat(
