diff -Naur rpm/config/pci.ids oech/config/pci.ids
--- rpm/config/pci.ids	2022-10-24 08:36:33.000000000 +0800
+++ oech/config/pci.ids	2022-12-13 10:13:13.228273472 +0800
@@ -20115,7 +20115,8 @@
 		15b3 0113  MCX565M-CDAB
 	101a  MT28800 Family [ConnectX-5 Ex Virtual Function]
 	101b  MT28908 Family [ConnectX-6]
-		15b3 0006  MCX653105A-EFAT
+		15b3 0006  MCX653105A-ECAT
+		15b3 0029  MCX653105A-EFAT
 	101c  MT28908 Family [ConnectX-6 Virtual Function]
 	101d  MT2892 Family [ConnectX-6 Dx]
 	101e  ConnectX Family mlx5Gen Virtual Function
diff -Naur rpm/docs/design_docs/dev_design.md oech/docs/design_docs/dev_design.md
--- rpm/docs/design_docs/dev_design.md	2022-12-13 17:29:04.328175692 +0800
+++ oech/docs/design_docs/dev_design.md	2022-12-13 10:13:13.228273472 +0800
@@ -321,6 +321,7 @@
 | 16 | `CertEnv()` | 工具环境信息模块 | 提供工具文件环境路径 |
 | 17 | `SysInfo()` | 系统信息模块 | 系统信息获取 |
 | 18 | `ConfigIP()` | 网卡IP配置模块 | 查询并配置网卡IP |
+| 19 | `CertInfo()` | 兼容性信息收集模块 | 自动收集并生成兼容性信息文件 |
 
 ### 3.6 web服务接口清单
 
diff -Naur rpm/hwcompatible/common.py oech/hwcompatible/common.py
--- rpm/hwcompatible/common.py	2022-10-24 08:36:33.000000000 +0800
+++ oech/hwcompatible/common.py	2022-12-13 10:13:13.232273494 +0800
@@ -21,7 +21,8 @@
 import importlib
 from .test import Test
 from .env import CertEnv
-from .constants import NODEVICE
+from .constants import NODEVICE, TEST_KABI_ARCH
+from .command import Command
 
 
 def create_test_suite(test_factory, logger, subtests_filter=None):
@@ -53,7 +54,9 @@
         if test["name"] == "kabi":
             kabi_test = test
 
-    if kabi_select:
+    command = Command(logger)
+    arch = command.run_cmd("uname -m")[0].strip()
+    if kabi_select and arch in TEST_KABI_ARCH:
         logger.info("The hardware will test kabi automatically.")
         kabi_test["run"] = True
         testcase = __create_testcase(kabi_test, logger, subtests_filter)
diff -Naur rpm/hwcompatible/constants.py oech/hwcompatible/constants.py
--- rpm/hwcompatible/constants.py	2022-10-24 08:36:33.000000000 +0800
+++ oech/hwcompatible/constants.py	2022-12-13 10:13:13.232273494 +0800
@@ -26,6 +26,7 @@
 VERSION = "driverVersion"
 NODEVICE = ("cpufreq", "memory", "clock", "profiler", "system",
             "stress", "kdump", "perf", "acpi", "watchdog", "kabi")
+TEST_KABI_ARCH = ("aarch64", "x86_64")
 CDTYPES = ("DVD_RW", "DVD_PLUS_RW", "DVD_R", "DVD_PLUS_R", "DVD",
            "BD_RE", "BD_R", "BD", "CD_RW", "CD_R", "CD")
 GPU_DRIVER = ("nouveau", "nvidia", "bi_driver", "amdgpu")
diff -Naur rpm/oec-hardware.spec oech/oec-hardware.spec
--- rpm/oec-hardware.spec	2022-10-24 08:36:33.000000000 +0800
+++ oech/oec-hardware.spec	2022-12-13 10:13:13.232273494 +0800
@@ -37,6 +37,7 @@
 %setup -q -c
 
 %build
+strip tests/keycard/libswsds_%{_arch}.so
 [ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] && rm -rf $RPM_BUILD_ROOT;
 DESTDIR=$RPM_BUILD_ROOT VERSION_RELEASE=%{version} make
 
diff -Naur rpm/README.md oech/README.md
--- rpm/README.md	2022-12-13 17:29:04.328175692 +0800
+++ oech/README.md	2022-12-13 10:13:13.224273450 +0800
@@ -314,9 +314,11 @@
 
    - oec-hardware-server 生成的html测试报告
 
-   - 兼容性清单文件（请参考templates目录下的模板)
+   - 兼容性清单文件
 
-        整机适配需要测试至少一张RAID卡、一张网卡，并提供对应的信息。
+      oec-hardware 执行结束后会自动为测试通过的硬件生成兼容性信息文件`hw_compatibility.json`，请参考该文件填写templates目录下的模板，然后上传填写的模板文件。
+
+      整机适配需要测试至少一张RAID卡、一张网卡，并提供对应的信息。
 
 # 测试项介绍
 
diff -Naur rpm/tests/kabi/kabi.py oech/tests/kabi/kabi.py
--- rpm/tests/kabi/kabi.py	2022-10-24 08:36:33.000000000 +0800
+++ oech/tests/kabi/kabi.py	2022-12-13 10:13:13.236273516 +0800
@@ -19,6 +19,7 @@
 from hwcompatible.env import CertEnv
 from hwcompatible.command import Command
 from hwcompatible.test import Test
+from hwcompatible.constants import TEST_KABI_ARCH
 
 kabi_dir = os.path.dirname(os.path.realpath(__file__))
 
@@ -55,6 +56,11 @@
         Run kabi test case
         return: result
         """
+        arch = self.command.run_cmd("uname -m")[0].strip()
+        if arch not in TEST_KABI_ARCH:
+            self.logger.info(" %s architecture does not support kabi testing." % arch)
+            return True
+
         result = True
         os_version = getoutput(
             "grep openeulerversion /etc/openEuler-latest | awk -F = '{print $2}'")
@@ -125,7 +131,7 @@
 
     def _get_kernel_source_rpm(self, arch):
         standard_kernel_version = getoutput(
-            "dnf list --repo=source | grep kernel.src | head -n 1 | awk '{print $2}'")
+            "dnf list --repo=source | grep '^kernel.src' | awk '{print $2}'")
         rpmpath = "/root/rpmbuild/SOURCES"
         standard_symvers = os.path.join(rpmpath, "Module.kabi_" + arch)
         if os.path.exists(standard_symvers):
diff -Naur rpm/tests/memory/memory.py oech/tests/memory/memory.py
--- rpm/tests/memory/memory.py	2022-10-24 08:36:33.000000000 +0800
+++ oech/tests/memory/memory.py	2022-12-13 10:13:13.244273560 +0800
@@ -65,7 +65,7 @@
         if not self.hugetlb_test():
             self.logger.error("Hugepages test failed.")
             return False
-        self.logger.error("Hugepages test succeed.")
+        self.logger.info("Hugepages test succeed.")
 
         return True
 
diff -Naur rpm/tests/nvme/nvme.py oech/tests/nvme/nvme.py
--- rpm/tests/nvme/nvme.py	2022-10-24 08:36:33.000000000 +0800
+++ oech/tests/nvme/nvme.py	2022-12-13 10:13:13.248273582 +0800
@@ -63,7 +63,8 @@
         elif size > 128 * 1024:
             size = 128 * 1024
 
-        size_per_block = int(self.command.run_cmd("nvme list | grep %s | awk '{print $10}'" % disk)[0])
+        size_per_block = int(self.command.run_cmd("nvme list -o json /dev/%s | grep SectorSize "
+                                                  "| awk -F : '{print $2}'" % disk)[0].strip())
         block_num = 1
         if size_per_block != 0:
             block_num = int(int(size) / size_per_block) - 1
