diff --git a/internal/common/omci/mib_test.go b/internal/common/omci/mib_test.go
index 9578416..2214f2e 100644
--- a/internal/common/omci/mib_test.go
+++ b/internal/common/omci/mib_test.go
@@ -17,6 +17,8 @@
 package omci
 
 import (
+	"encoding/binary"
+	"reflect"
 	"testing"
 
 	"github.com/google/gopacket"
@@ -45,6 +47,16 @@
 	assert.Equal(t, msgObj.Result, me.Success)
 }
 
+func TestSetTxIdInEncodedPacket(t *testing.T) {
+	basePkt := []byte{129, 42, 46, 10, 0, 2, 0, 0, 0, 37, 0, 1, 128, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 40, 40, 206, 0, 226}
+	res := SetTxIdInEncodedPacket(basePkt, uint16(292))
+	assert.Equal(t, len(basePkt), len(res))
+
+	b := res[0:2]
+	txId := binary.BigEndian.Uint16(b)
+	assert.Equal(t, uint16(292), txId)
+}
+
 // types for TestCreateMibUploadNextResponse test
 type mibArgs struct {
 	omciPkt gopacket.Packet
@@ -92,6 +104,7 @@
 		me.OnuDataClassID,
 		onuDataEntityId,
 		me.AttributeValueMap{me.OnuData_MibDataSync: 0},
+		nil,
 	})
 
 	mibDb.items = append(mibDb.items, MibDbEntry{
@@ -103,6 +116,7 @@
 			me.CircuitPack_SerialNumber:  ToOctets("BBSM-Circuit-Pack", 20),
 			me.CircuitPack_Version:       ToOctets("v0.0.1", 20),
 		},
+		nil,
 	})
 
 	mibDb.items = append(mibDb.items, MibDbEntry{
@@ -126,6 +140,7 @@
 			me.AniG_UpperOpticalThreshold:       255,
 			me.AniG_UpperTransmitPowerThreshold: 129,
 		},
+		nil,
 	})
 
 	mibDb.items = append(mibDb.items, MibDbEntry{
@@ -142,6 +157,17 @@
 			me.Onu2G_TotalPriorityQueueNumber:                    64,
 			me.Onu2G_TotalTrafficSchedulerNumber:                 8,
 		},
+		nil,
+	})
+
+	// create an entry with UnkownAttributes set
+	var customPktTxId uint16 = 5
+	customPkt := []byte{0, byte(customPktTxId), 46, 10, 0, 2, 0, 0, 0, 37, 0, 1, 128, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 40, 40, 206, 0, 226}
+	mibDb.items = append(mibDb.items, MibDbEntry{
+		me.ClassID(37),
+		nil,
+		me.AttributeValueMap{},
+		customPkt,
 	})
 
 	tests := []struct {
@@ -157,6 +183,8 @@
 			mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 3, entityID: anigEntityId.ToUint16(), entityClass: me.AniGClassID, attributes: map[string]interface{}{me.AniG_GemBlockLength: uint16(48)}}},
 		{"mibUploadNext-3", createTestMibUploadNextArgs(t, 4, 3),
 			mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: 4, entityID: onuDataEntityId.ToUint16(), entityClass: me.Onu2GClassID, attributes: map[string]interface{}{me.Onu2G_TotalPriorityQueueNumber: uint16(64)}}},
+		{"mibUploadNext-unknown-attrs", createTestMibUploadNextArgs(t, 5, 4),
+			mibExpected{messageType: omci.MibUploadNextResponseType, transactionId: customPktTxId, entityID: 1, entityClass: me.ClassID(37), attributes: map[string]interface{}{"UnknownAttr_1": []uint8{1}}}},
 	}
 
 	for _, tt := range tests {
@@ -182,7 +210,15 @@
 			for k, v := range tt.want.attributes {
 				attr, err := msgObj.ReportedME.GetAttribute(k)
 				assert.NilError(t, err)
-				assert.Equal(t, attr, v)
+				if isSlice(attr) {
+					expected := v.([]uint8)
+					data := attr.([]uint8)
+					for i, val := range data {
+						assert.Equal(t, expected[i], val)
+					}
+				} else {
+					assert.Equal(t, attr, v)
+				}
 			}
 		})
 	}
@@ -192,3 +228,7 @@
 	_, err := CreateMibUploadNextResponse(args.omciPkt, args.omciMsg, MDS, &mibDb)
 	assert.Error(t, err, "mibdb-does-not-contain-item")
 }
+
+func isSlice(v interface{}) bool {
+	return reflect.TypeOf(v).Kind() == reflect.Slice
+}
