Ubuntu22.04下PyVISA用NI-VISA无法识别USB/GPIB设备
解决PyVISA IVI NI后端无法识别GPIB/USB设备的问题
1. 确认NI-VISA及配套驱动的完整安装
- 必须安装NI官方的NI-VISA for Linux和NI-488.2 GPIB驱动,不能仅通过pip安装PyVISA。Ubuntu 22.04需下载对应版本的.deb安装包,运行官方安装脚本完成部署。
- 验证NI-VISA服务状态:
确保服务处于systemctl status nivisa-serveractive (running)状态,未启动则执行:sudo systemctl start nivisa-server sudo systemctl enable nivisa-server - 修复用户权限:将当前用户加入相关用户组,避免权限不足导致设备无法被识别:
执行后注销并重新登录系统。sudo usermod -aG ni-visa,gpib,usbtmc $USER
2. 配置GPIB设备识别
- 使用NI自带工具检测GPIB-USB-HS适配器:
确认输出中能识别到适配器的GPIB地址(默认通常为0),若未识别,重新插拔适配器后重试。sudo gpib_config - 用NI-VISA原生工具验证设备可见性:运行
visaic(图形化工具)或visalist(命令行工具),若能看到GPIB设备,说明NI-VISA本身已识别设备,问题出在PyVISA的后端调用环节。
3. 启用NI-VISA对USB-TMC设备的支持
- 检查USB-TMC设备节点:
若存在ls /dev/usbtmc*/dev/usbtmc0等节点,说明系统已识别Agilent 34980A的USB接口。 - 编辑NI-VISA配置文件
/etc/nivisa.conf,确保USB-TMC支持启用:
找到visa.usb.enable = true行,取消注释(若被注释),保存后重启nivisa-server服务:sudo systemctl restart nivisa-server
4. 验证PyVISA IVI NI后端的调用
- 在Python代码中明确指定使用NI后端,避免默认加载其他后端:
import pyvisa rm = pyvisa.ResourceManager('@ni') print(rm.list_resources()) - 检查PyVISA与NI-VISA的关联状态:
查看输出中pyvisa-infoNI-VISA部分,确保Found为True,且库路径指向NI官方的VISA库(如/usr/lib/x86_64-linux-gnu/libvisa.so)。
5. 额外排查点
- 重新插拔所有设备,确保物理连接稳定。
- 对比
pyvisa-py与NI后端的依赖差异:pyvisa-py依赖libusb纯Python实现,而NI后端依赖官方驱动组件,需确保官方驱动无缺失。 - 查看系统日志排查驱动问题:
查找是否存在设备识别失败、驱动加载错误的日志信息。dmesg | grep -i visa dmesg | grep -i gpib dmesg | grep -i usbtmc
内容的提问来源于stack exchange,提问作者tnixa
相关产品推荐
相关产品推荐

