# nicsensor工具使用说明 > 本说明仅针对 nicsensorv1.x系列脚本 ## 目录 - [nicsensor工具使用说明](#nicsensor工具使用说明) - [目录](#目录) - [1\_简介](#1_简介) - [2\_使用方法](#2_使用方法) - [2\_1\_传感器读取](#2_1_传感器读取) - [2\_2\_FRU相关操作](#2_2_fru相关操作) - [2\_3\_命令透传](#2_3_命令透传) - [2\_4\_插槽I2C信息遍历](#2_4_插槽i2c信息遍历) - [2\_5\_调试模式使用](#2_5_调试模式使用) - [2\_5\_扩展功能](#2_6_扩展功能) - [3\_常见问题](#3_常见问题) - [3\_1\_ADC128传感器读值为0](#3_1_adc128传感器读值为0) - [3\_2\_脚本执行时出现大批量语法错误](#3_2_脚本执行时出现大批量语法错误) - [4\_附属工具](#4_附属工具) - [4\_1\_FruParse](#4_1_fruparse) - [5\_关于nicsensor\_v2](#5_关于nicsensor_v2) ## 1_简介 nicsensor工具是在带有i2ctool工具(i2ctransfer、i2cdetect)的BMC下用于测试网卡I2C功能的工具。 **当前支持的功能有:** - 读取网卡上的I2C传感器 - 读取并修改网卡上的FRU - 透传I2C命令到网卡的芯片上 - 遍历服务器上的PCIE插槽的I2C信息 - 部分服务器类型支持读取OCP卡 **当前支持测试的传感器类型** - adc128 - ina3221 - emc1413 - tmp468 - tmp112 > [!tip] > 每次执行脚本都可以在 `/tmp/nicsensor_debug.log` 查询详细的命令执行记录 ## 2_使用方法 > [!warning] > 在使用时针对网卡的硬件特性需要定制化修改脚本的 `Project Varible` ### 2_1_传感器读取 **命令格式** ``` shell ./nicsensor.sh ``` **参数说明** - `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型 - `sensor type`:传感器类型 - `sensor slave`:传感器的slave地址 **命令示例** ``` shell # 读取pcie2槽位上的adc128的信息, adc128芯片的地址为0x1f(7bit) ./nicsensor.sh pcie2 adc128 0x1f ``` ### 2_2_FRU相关操作 > [!warning] > 在写入网卡FRU操作时,受限于服务器PCA9641的影响,需要将服务器关机后执行 **命令格式** ``` shell # 读取FRU ./nicsensor.sh fru # 写入FRU ./nicsensor.sh fru write ``` **参数说明** - `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型 - `eeprom slave`: FRU所在的eeprom芯片的slave地址 - `filename`: 仅在写入FRU时提供, 要写入的FRU bin文件 **命令示例** ``` shell # 读取pcie2槽位上的fru信息, eeprom的芯片地址为0x50(7bit) ./nicsensor.sh pcie2 fru 0x50 # 写入pcie2槽位上网卡的fru ./nicsensor.sh pcie2 fru 0x50 write fru.bin ``` ### 2_3_命令透传 **命令格式** ``` shell ./nicsensor.sh chip ``` **参数说明** - `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型 - `chip slave`: 芯片的slave地址 - `command`: 要透传执行的I2C命令 **命令示例** ``` shell # 对pcie2槽位上的chip透传命令 i2ctransfer -y 12 w2@0x11 0x00 0x00 r2 , 芯片地址为0x11(7bit) ./nicsensor.sh pcie2 chip 0x11 "i2ctransfer -y 12 w2@0x11 0x00 0x00 r2" ``` ### 2_4_插槽I2C信息遍历 **命令格式** ``` shell ./nicsensor.sh detect ``` **参数说明** - `nic type`:需要指定pcie/ocp, 不指定时默认为pcie类型 **命令示例** ``` shell ./nicsensor.sh detect pcie ``` ### 2_5_调试模式使用 > 关联变量 `DEBUG_MODE`, 启用调试模式时需要将该变量的值配置为1 如果不需要借助脚本来选通服务器上对应的channel, 仅需要做传感器数值测试, 可以启用调试模式。 在调试模式下, 脚本不会执行选通PCA9641以及PCA9546/9548的操作。仅直接测试传感器。因此,需要手动调整两个变量 - `DEBUG_MODE` - `i2c_bus` > 关联变量 `DISABLE_DETECT`, 启用时配置为1, 将不会在切换PCA9641和PCA9548时进行i2cdetect ### 2_6_扩展功能 脚本中预留了函数 `handle_reserve` 用于扩展功能。针对有特殊需求的项目可能会使用。 ## 3_常见问题 ### 3_1_ADC128传感器读值为0 ADC128传感器在使用时需要初始化, 因此第一次读取时传感器可能并未完成初始化, 所以读值为0 ### 3_2_脚本执行时出现大批量语法错误 通常是因为服务器上含有PCA9641切断了BMC的I2C控制权导致,重试即可 ## 4_附属工具 ### 4_1_FruParse 提供了一个简单python脚本用于解析FRU的数据, 将nicsensor读取到的FRU数据拷贝到frudata.txt后, 执行 `python fru_parse.py`即可将读取到的数据转化为FRU内容 ## 5_关于nicsensor_v2 nicsensor_v2将服务器选通channel和读取传感器数值的功能解耦,因此在单独使用某个功能时可以直接找到对应的脚本进行测试。 详见[nicsensor_v2](./nicsensor_v2/readme.md)