diff --git a/sbp.cabal b/sbp.cabal
--- a/sbp.cabal
+++ b/sbp.cabal
@@ -1,5 +1,5 @@
 name:                  sbp
-version:               2.3.6
+version:               2.3.9
 synopsis:              SwiftNav's SBP Library
 homepage:              https://github.com/swift-nav/libsbp
 license:               LGPL-3
diff --git a/src/SwiftNav/SBP/Msg.hs b/src/SwiftNav/SBP/Msg.hs
--- a/src/SwiftNav/SBP/Msg.hs
+++ b/src/SwiftNav/SBP/Msg.hs
@@ -134,6 +134,7 @@
    | SBPMsgNapDeviceDnaReq MsgNapDeviceDnaReq Msg
    | SBPMsgNapDeviceDnaResp MsgNapDeviceDnaResp Msg
    | SBPMsgNdbEvent MsgNdbEvent Msg
+   | SBPMsgNetworkBandwidthUsage MsgNetworkBandwidthUsage Msg
    | SBPMsgNetworkStateReq MsgNetworkStateReq Msg
    | SBPMsgNetworkStateResp MsgNetworkStateResp Msg
    | SBPMsgObs MsgObs Msg
@@ -289,6 +290,7 @@
           | _msgSBPType == msgNapDeviceDnaReq = SBPMsgNapDeviceDnaReq (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgNapDeviceDnaResp = SBPMsgNapDeviceDnaResp (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgNdbEvent = SBPMsgNdbEvent (decode (fromStrict (unBytes _msgSBPPayload))) m
+          | _msgSBPType == msgNetworkBandwidthUsage = SBPMsgNetworkBandwidthUsage (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgNetworkStateReq = SBPMsgNetworkStateReq (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgNetworkStateResp = SBPMsgNetworkStateResp (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgObs = SBPMsgObs (decode (fromStrict (unBytes _msgSBPPayload))) m
@@ -436,6 +438,7 @@
       encoder (SBPMsgNapDeviceDnaReq _ m) = put m
       encoder (SBPMsgNapDeviceDnaResp _ m) = put m
       encoder (SBPMsgNdbEvent _ m) = put m
+      encoder (SBPMsgNetworkBandwidthUsage _ m) = put m
       encoder (SBPMsgNetworkStateReq _ m) = put m
       encoder (SBPMsgNetworkStateResp _ m) = put m
       encoder (SBPMsgObs _ m) = put m
@@ -587,6 +590,7 @@
         | msgType == msgNapDeviceDnaReq = SBPMsgNapDeviceDnaReq <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgNapDeviceDnaResp = SBPMsgNapDeviceDnaResp <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgNdbEvent = SBPMsgNdbEvent <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
+        | msgType == msgNetworkBandwidthUsage = SBPMsgNetworkBandwidthUsage <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgNetworkStateReq = SBPMsgNetworkStateReq <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgNetworkStateResp = SBPMsgNetworkStateResp <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgObs = SBPMsgObs <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
@@ -739,6 +743,7 @@
   toJSON (SBPMsgNapDeviceDnaReq n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgNapDeviceDnaResp n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgNdbEvent n m) = toJSON n <<>> toJSON m
+  toJSON (SBPMsgNetworkBandwidthUsage n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgNetworkStateReq n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgNetworkStateResp n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgObs n m) = toJSON n <<>> toJSON m
@@ -885,6 +890,7 @@
   msg f (SBPMsgNapDeviceDnaReq n m) = SBPMsgNapDeviceDnaReq n <$> f m
   msg f (SBPMsgNapDeviceDnaResp n m) = SBPMsgNapDeviceDnaResp n <$> f m
   msg f (SBPMsgNdbEvent n m) = SBPMsgNdbEvent n <$> f m
+  msg f (SBPMsgNetworkBandwidthUsage n m) = SBPMsgNetworkBandwidthUsage n <$> f m
   msg f (SBPMsgNetworkStateReq n m) = SBPMsgNetworkStateReq n <$> f m
   msg f (SBPMsgNetworkStateResp n m) = SBPMsgNetworkStateResp n <$> f m
   msg f (SBPMsgObs n m) = SBPMsgObs n <$> f m
diff --git a/src/SwiftNav/SBP/Piksi.hs b/src/SwiftNav/SBP/Piksi.hs
--- a/src/SwiftNav/SBP/Piksi.hs
+++ b/src/SwiftNav/SBP/Piksi.hs
@@ -710,6 +710,68 @@
 $(makeJSON "_msgNetworkStateResp_" ''MsgNetworkStateResp)
 $(makeLenses ''MsgNetworkStateResp)
 
+-- | NetworkUsage.
+--
+-- The bandwidth usage for each interface can be reported within this struct
+-- and utilize multiple fields to fully specify the type of traffic that is
+-- being tracked. As either the interval of collection or the collection time
+-- may vary, both a timestamp and period field is provided, though may not
+-- necessarily be populated with a value.
+data NetworkUsage = NetworkUsage
+  { _networkUsage_duration     :: !Word64
+    -- ^ Duration over which the measurement was collected
+  , _networkUsage_total_bytes  :: !Word64
+    -- ^ Number of bytes handled in total within period
+  , _networkUsage_rx_bytes     :: !Word32
+    -- ^ Number of bytes transmitted within period
+  , _networkUsage_tx_bytes     :: !Word32
+    -- ^ Number of bytes received within period
+  , _networkUsage_interface_name :: !Text
+    -- ^ Interface Name
+  } deriving ( Show, Read, Eq )
+
+instance Binary NetworkUsage where
+  get = do
+    _networkUsage_duration <- getWord64le
+    _networkUsage_total_bytes <- getWord64le
+    _networkUsage_rx_bytes <- getWord32le
+    _networkUsage_tx_bytes <- getWord32le
+    _networkUsage_interface_name <- decodeUtf8 <$> getByteString 16
+    pure NetworkUsage {..}
+
+  put NetworkUsage {..} = do
+    putWord64le _networkUsage_duration
+    putWord64le _networkUsage_total_bytes
+    putWord32le _networkUsage_rx_bytes
+    putWord32le _networkUsage_tx_bytes
+    putByteString $ encodeUtf8 _networkUsage_interface_name
+
+$(makeJSON "_networkUsage_" ''NetworkUsage)
+$(makeLenses ''NetworkUsage)
+
+msgNetworkBandwidthUsage :: Word16
+msgNetworkBandwidthUsage = 0x00BD
+
+-- | SBP class for message MSG_NETWORK_BANDWIDTH_USAGE (0x00BD).
+--
+-- The bandwidth usage, a list of usage by interface.
+data MsgNetworkBandwidthUsage = MsgNetworkBandwidthUsage
+  { _msgNetworkBandwidthUsage_interfaces :: ![NetworkUsage]
+    -- ^ Usage measurement array
+  } deriving ( Show, Read, Eq )
+
+instance Binary MsgNetworkBandwidthUsage where
+  get = do
+    _msgNetworkBandwidthUsage_interfaces <- whileM (not <$> isEmpty) get
+    pure MsgNetworkBandwidthUsage {..}
+
+  put MsgNetworkBandwidthUsage {..} = do
+    mapM_ put _msgNetworkBandwidthUsage_interfaces
+
+$(makeSBP 'msgNetworkBandwidthUsage ''MsgNetworkBandwidthUsage)
+$(makeJSON "_msgNetworkBandwidthUsage_" ''MsgNetworkBandwidthUsage)
+$(makeLenses ''MsgNetworkBandwidthUsage)
+
 msgSpecanDep :: Word16
 msgSpecanDep = 0x0050
 
