---
title: 安装NPU驱动固件
description: "执行如下命令查看现场服务器OS和内核版本，并和华为的版本要求进行对比。"
url: https://www.hiascend.com/document/detail/zh/300Vtest/latest/300V_0022.html
sourcePath: /source/zh/300Vtest/300VG/300V_0022.html
indexId: e0019cc2a5033c0ff92402759d04f322c803caacec6874212a61fe065b9193d740
---
# 安装NPU驱动固件

#### 确认OS和内核版本

执行如下命令查看现场服务器OS和内核版本，并和华为的版本要求进行对比。
```
uname -m && cat /etc/*release
uname -r
```


OS内核版本和对应的安装方式如表1所示。有以下场景：

- 直接安装NPU驱动固件
- 修改驱动包后安装NPU驱动固件
- 不在适配表中的OS，请按照  安装OS（可选）
重新安装OS。


**表1 适配的OS和内核版本**

| OS版本 | 内核版本 | 安装NPU驱动方式 |
| --- | --- | --- |
| openEuler 22.03 LTS | 5.10.0\-60.18.0.50.oe2203 | 直接安装 |
| Ubuntu 18.04.4 | 4.19.90+ | 直接安装 |
| Ubuntu 18.04.5 | 4.15.0\-159 | 直接安装 |
| Ubuntu 18.04.6 | 4.15.0\-212 5.4.0\-152 | 直接安装 |
| Ubuntu 20.04 | 5.4.0\-26 | 直接安装 |
| Ubuntu 20.04.4 | 5.13.0\-30 | 修改驱动包可安装 |
| Ubuntu 20.04.5 | 5.15.0\-58 | 修改驱动包可安装 |
| Ubuntu 20.04.6 | 5.15.0\-76 5.4.0\-186 | 修改驱动包可安装 |
| Ubuntu 22.04 | 5.4.0\-182 | 修改驱动包可安装 |
| Ubuntu 22.04.2 | 5.15.0\-60 | 修改驱动包可安装 |
| Ubuntu 22.04.2 | 6.5.0\-44 | 内核版本降至5.15.0\-119，再修改驱动可安装 |
| Ubuntu 22.04.4 | 6.5.0\-45 | 内核版本降至5.15.0\-97，再修改驱动包可安装 |


#### 安装NPU驱动固件

1. 以root用户登录服务器。
  详细操作可参考远程登录服务器和上传文件。

2. 创建驱动运行用户HwHiAiUser（运行驱动进程的用户），安装驱动时无需指定运行用户，默认即为HwHiAiUser。

```
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
```


3. 安装驱动源码编译所需依赖。

  - Ubuntu系统
需要安装make、dkms、gcc、linux-header驱动源码编译所需依赖。

    a. 执行如下命令检查是否安装：

```
make -v
dpkg-query -s dkms
dpkg-query -s gcc
dpkg-query -s linux-headers-$(uname -r)
```


    b. 若回显相关软件包版本信息，表示已安装；若未安装请执行如下命令安装依赖。

```
apt-get install -y make dkms gcc linux-headers-$(uname -r)
```


  - openEuler 22.03 LTS
需要安装make、dkms、gcc、kernel-devel软件包。

    a. 执行如下命令检查是否安装：

```
make -v
rpm -qa | grep dkms
rpm -qa | grep gcc
rpm -qa | grep kernel-devel-$(uname -r)
```


    b. 若回显相关软件包版本信息，表示已安装；若未安装请执行如下命令安装依赖。

```
yum install -y make dkms gcc kernel-devel-$(uname -r)
```


4. 将驱动包和固件包上传到服务器任意目录如“/home”。可参见文件上传上传文件。
5. 增加驱动和固件包的可执行权限。
  进入驱动包和固件包所在目录，执行如下命令。
  - Arm架构

```
chmod +x Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run
chmod +x Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run
```


  - X86架构

```
chmod +x Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run
chmod +x Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run
```


6. 执行以下命令，完成驱动固件安装，软件包默认安装路径为“/usr/local/Ascend”。
  首次安装场景，需按照“驱动 > 固件”
  的顺序安装驱动固件；覆盖安装场景，需按照“固件> 驱动”
  的顺序安装固件驱动。
  - 安装驱动
执行以下命令，完成驱动安装。
```
# Arm架构
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --full --install-for-all
# x86
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --full --install-for-all
```


    - 若执行上述安装命令出现类似如下回显信息，请参见      驱动安装缺少依赖报错
解决。

```
[ERROR]The list of missing tools: lspci,ifconfig,
```


    - 若执行上述安装命令出现类似如下回显信息，请参见      驱动安装过程中出现dkms编译失败报错
解决。

```
[ERROR]Dkms install failed, details in : var/log/ascend_seclog/ascend_install.log.
[ERROR]Driver_ko_install failed, details in : /var/log/ascend_seclog/ascend_install.log.
```


    - 若执行上述安装命令出现类似如下回显信息，请参见      安装驱动路径不属于root
解决。

```
[ERROR]The given directory, including its parents, should belong to root, details in : var/log/ascend_seclog/ascend_install.log.
```


    - 若系统出现如下关键回显信息，则表示驱动安装成功。

```
Driver package installed successfully!
```


  - 安装固件
    执行以下命令，完成固件安装。

```
./Ascend-hdk-310p-npu-firmware_7.5.0.1.129.run --full
```


    若系统出现如下关键回显信息，表示固件安装成功。

```
Firmware package installed successfully! Reboot now or after driver installation for the installation/upgrade to take effect
```


7. 执行reboot命令重启系统，使NPU驱动固件生效。
8. 重启系统后，以root用户登录服务器。
9. 执行npu-smi info查看驱动加载是否成功。
  若出现类似如下图所示回显信息，说明加载成功。否则，说明加载失败。请联系华为技术支持处理。

  Ubuntu 22.04.x在使用官方源或外部源时默认开启内核更新功能，安装部分软件包将自动升级内核到源里的新版本，在当前内核版本作为使用场景时，需要在软件安装后对内核版本进行锁定。 执行如下命令锁定内核（命令中的5.15.0-94版本仅为示例）。 apt-mark hold linux-image-5.15.0-94-generic linux-headers-5.15.0-94-generic linux-modules-5.15.0-94-generic linux-modules-extra-5.15.0-94-generic


#### 修改驱动包后安装NPU驱动固件

部分OS内核版本需要修改驱动包后才能安装NPU驱动固件，本文以OS内核5.15.0为例介绍修改驱动包的方法，更多案例请参见修改驱动包（内核 5.13.0）和修改驱动包（内核5.4.0-198）。

部分OS需要先降低内核版本，再修改驱动包后才能安装NPU驱动固件，请参见升降内核。

1. 参考1~6执行驱动安装，根据驱动安装的报错信息进行定位修改。
2. 驱动安装时出现如图1所示报错信息。
  图1 报错信息

3. 查看安装日志。

```
cat /var/log/ascend_seclog/ascend_install.log
```


  图2 查看安装日志

4. 找到错误说明，查看“make.log”。

```
cat /var/lib/dkms/davinci_ascend/1.0/build/make.log
```


  图3 查看make.log

5. 查找“make.log”中最开始报的错误error。
  图4 报错信息1

6. 在run包目录下，解压run包。

  - Arm架构

```
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --noexec --extract=./tmp
```


  - X86架构

```
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --noexec --extract=./tmp
```


7. 进入“tmp”目录，在“tmp/driver/kernel”中找到上述.c文件的上级目录（vmng_host），编辑其中的Makefile。 如果没有Makefile，则进入上一层目录查找。

```
cd tmp/driver/kernel/vmng_host
vi Makefile
```


8. 查找ccflag（非编辑模式下，执行/ccflag命令查询），如下图所示，在行尾添加“-Wno-type-limits” （error的提示错误）。
  修改后如下图所示。

9. 修改完后，删除上次安装残余文件。

```
/usr/local/Ascend/driver/script/uninstall.sh
```


10. 回到“tmp”目录下，执行如下命令安装。

```
./driver/script/install.sh -- -- --full
```


11. 安装成功后，回到“tmp”上级目录，执行如下命令将修改后的tmp目录打包（5.15.0内核版本仅为示例）。

  - Arm架构

```
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-aarch64.run --repack-path=./tmp new_driver_5.15.0.run
```


  - X86架构

```
./Ascend-hdk-310p-npu-driver_24.1.rc3_linux-x86-64.run --repack-path=./tmp new_driver_5.15.0.run
```


12. 如果打包报错，查看报错日志。依照上述步骤处理报错。

```
cat /var/log/ascend_seclog/ascend_rebuild.log
```


13. 修改驱动包后参见安装NPU驱动固件，根据新的驱动包进行安装。


#### 检查芯片温度

NPU驱动固件安装完成后，可执行如下步骤查看芯片温度是否超标，导致设备不可用或是性能下降。温度规格参考表2。

1. 以root用户登录服务器。
2. 执行如下命令，查询所有芯片的温度。

```
npu-smi info -t temp -i
id
```


  id表示设备id。通过npu-smi info -l命令查出的NPU ID即为设备id。

  命令示例如下，查询设备1的芯片温度。

```
npu-smi info -t temp -i 1
```


  回显类似如下信息：

```
NPU ID                         : 1
Chip Count                     : 1
Temperature (C)                : 44
Chip ID                        : 0
LM75A_TE (C)                   : 41
LM75B_TE (C)                   : 36
AICORE   (C)                   : 43
Chip Name                      : MCU
```


**表2 打印信息说明**

| 字段 | 说明 |
| --- | --- |
| NPU ID | 设备id |
| Chip Count | 芯片个数 |
| Temperature (C) | 温度（单位：°C） 102℃以下表示芯片温度正常。 |
| Chip ID | 芯片id |
| LM75A\_TE (C) | LM75A\_TE温度（单位：°C） |
| LM75B\_TE (C) | LM75B\_TE温度（单位：°C） |
| AICORE (C) | AICORE温度（单位：°C） |
| Chip Name | 芯片名称 |


#### 升级MCU

MCU是推理卡带外管理模块，具备单板监测、故障上报等功能。出厂时推理卡已集成了初始版本，为了保障所有功能正常使用，请将MCU升级到配套版本。

本节内容主要介绍通过npu-smi工具和iBMC升级MCU，npu-smi工具可以将单个推理卡的MCU升级到相应版本，如果配备了多个推理卡，需要逐个升级，iBMC可以批量升级到相应版本。

- 如果现场使用Atlas 800 推理服务器（型号：3000）和TaiShan 200服务器，配置Atlas 300V 视频解析卡，请通过iBMC Web界面升级。
- 如果现场使用第三方服务器，配置Atlas 300V 视频解析卡，请通过npu-smi工具升级。

通过npu-smi工具升级。

1. 将获取的“Ascend-hdk-310p-mcu_24.2.2zip”包解压至本地文件夹，获取安装包。
  Ascend-hdk-310p-mcu_24.2.2.hpm

2. 以root用户登录服务器，将安装包上传至Linux系统任意目录下（如“/home”）。
3. 执行npu-smi info -l命令查询NPU ID（推理卡的设备编号）。
  回显类似如下信息，NPU ID
  为8
  。

```
Card Count                     : 1
NPU ID                     : 8
Product Name                   : IT21DMPB01
Serial Number                  : 033EFS10M8000087
Chip Count                     : 4
```


4. 进入MCU软件包所在路径，执行如下命令启动升级（将NPU ID替换为3中查询到的设备编号）。

```
npu-smi upgrade -t mcu -i
NPU ID
-f Ascend-hdk-310p-mcu_24.2.2.hpm
```


  出现类似如下回显表示升级成功。

```
Start upgrade [100].
Status                         : OK
Message                        : Start device upgrade successfully
Message                        : need active mcu
```


5. 执行如下命令使新版本生效，类似以下回显表示已生效。
  npu-smi upgrade -a mcu -i NPU ID

```
Status                         : OK
Message                        : The upgrade has taken effect after performed reboot successfully.
```


6. 在生效新版本之后，等待30s，查询MCU版本号，确保升级成功。npu-smi upgrade -b mcu -iNPU ID

```
Version                        : 24.2.2
```


通过iBMC Web界面升级

1. 将获取的“Ascend-hdk-310p-mcu_24.2.2zip”包解压至本地文件夹，获取安装包。
  Ascend-hdk-310p-mcu_24.2.2.hpm

2. 以root用户登录服务器，执行npu-smi info -l命令查询NPU ID（推理卡的设备编号）。
  回显类似如下信息，NPU ID
  为8
  。

```
Card Count                     : 1
NPU ID                     : 8
Product Name                   : IT21DMPB01
Serial Number                  : 033EFS10M8000087
Chip Count                     : 4
```


3. 在浏览器的地址栏中输入“https://iBMC管理网口IP地址”，可打开用户登录界面。
  输入“用户名”和“密码”登录iBMC Web界面。

4. 单击“固件升级”。
5. 选择升级文件，单击“开始升级”。
6. 升级成功。
7. 检查升级后的版本号。

  a. 在iBMC Web主界面导航栏中，选择“系统管理 > 系统信息”，单击“其他”。
  b. 在界面左侧选择“PCIe卡”，单击PCIe卡左方的，在打开的“扩展信息”区域查看“MCU固件版本”，如    图5
所示。
    图5 MCU固件版本


- MCU新版本生效后，如需再次升级，请等待5min后再次操作。
- 如果升级后不是目标版本或者升级失败，请重新进行升级。如果依然升级失败，请记录故障现象和操作步骤，并联系华为技术支持解决。
