You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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-server
    
    确保服务处于active (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适配器:
    sudo gpib_config
    
    确认输出中能识别到适配器的GPIB地址(默认通常为0),若未识别,重新插拔适配器后重试。
  • 用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-info
    
    查看输出中NI-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:02:24