内核驱动 it87

支持的芯片

  • IT8603E/IT8623E

    前缀: ‘it8603’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8620E

    前缀: ‘it8620’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

  • IT8628E

    前缀: ‘it8628’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8705F

    前缀: ‘it87’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:曾经在 ITE 网站上公开提供,但不再提供

  • IT8712F

    前缀: ‘it8712’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:曾经在 ITE 网站上公开提供,但不再提供

  • IT8716F/IT8726F

    前缀: ‘it8716’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:曾经在 ITE 网站上公开提供,但不再提供

  • IT8718F

    前缀: ‘it8718’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:曾经在 ITE 网站上公开提供,但不再提供

  • IT8720F

    前缀: ‘it8720’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8721F/IT8758E

    前缀: ‘it8721’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8728F

    前缀: ‘it8728’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8732F

    前缀: ‘it8732’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8771E

    前缀: ‘it8771’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8772E

    前缀: ‘it8772’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8781F

    前缀: ‘it8781’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8782F

    前缀: ‘it8782’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8783E/F

    前缀: ‘it8783’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8786E

    前缀: ‘it8786’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8790E

    前缀: ‘it8790’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT8792E/IT8795E

    前缀: ‘it8792’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • IT87952E

    前缀: ‘it87952’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:未公开提供

  • SiS950 [IT8705F 的克隆]

    前缀: ‘it87’

    扫描地址:来自 Super I/O 配置空间 (8 个 I/O 端口)

    数据表:不再提供

作者

模块参数

  • update_vbat bool

    如果 vbat 应该报告启动时的值,则为 0;如果 vbat 应该在每次读取后更新,则为 1。默认值为 0。在某些主板上,电池电压由电池或板载电源提供。只有启动时的第一次读取才是实际的电池电压(芯片会自动完成)。在其他主板上,电池电压始终馈送到芯片,因此可以随时读取。过度读取可能会缩短电池寿命,但在数据表中没有给出相关信息。

  • fix_pwm_polarity bool

    强制 PWM 极性为高电平有效(危险)。某些芯片被 BIOS 错误配置 - PWM 值将被反转。此选项尝试修复此问题。请联系您的 BIOS 制造商并要求他们修复。

  • force_id short, short

    强制多个芯片 ID 为指定的值,用“,”分隔。例如“force_id=0x8689,0x8633”。对于该芯片,值为 0 将被忽略。注意:单个 force_id 值(例如“force_id=0x8689”)用于所有芯片,如果只想设置第一个芯片,请使用“force_id=0x8689,0”。仅应用于测试。

  • ignore_resource_conflict bool

    类似于 acpi_enforce_resources=lax,但仅影响此驱动程序。如果提供此参数并将其设置为 1,则会忽略 ACPI 资源冲突。提供此参数是因为有报告称,在某些系统上,系统范围内的 acpi_enfore_resources=lax 可能会导致启动失败。注意:这本身具有风险,因为它意味着 ACPI 和此驱动程序可能会同时访问芯片。这可能会导致竞争条件,最坏情况下会导致系统意外重启。

硬件接口

此驱动程序支持的所有芯片都是 LPC Super-I/O 芯片,通过 LPC 总线(类似 ISA 的 I/O 端口)访问。 IT8712F 还有一个 SMBus 接口连接到硬件监控功能。 但是,此驱动程序不再支持此接口,因为它比 ISA 访问慢且可靠性低,并且仅在少数主板型号上可用。

描述

该驱动程序实现了对 IT8603E、IT8620E、IT8623E、IT8628E、IT8705F、IT8712F、IT8716F、IT8718F、IT8720F、IT8721F、IT8726F、IT8728F、IT8732F、IT8758E、IT8771E、IT8772E、IT8781F、IT8782F、IT8783E/F、IT8786E、IT8790E、IT8792E/IT8795E、IT87952E 和 SiS950 芯片的支持。

这些芯片是“超级 I/O 芯片”,支持软盘、红外端口、操纵杆和其他各种功能。对于硬件监控,它们包括一个“环境控制器”,带有 3 个温度传感器、3 个风扇转速传感器、8 个电压传感器、相关警报和机箱入侵检测。

IT8712F 和 IT8716F 还具有 VID 输入,用于报告处理器的 Vcore 电压。早期的 IT8712F 有 5 个 VID 引脚,IT8716F 和后期的 IT8712F 有 6 个。但是,它们与其他功能共享,因此该功能可能在给定的系统上不可用。

IT8718F 和 IT8720F 也具有 VID 输入(最多 8 个引脚),但该值存储在 Super-I/O 配置空间中。由于技术限制,目前只能在初始化时读取一次此值,因此驱动程序不会注意到并报告 VID 值的更改。两个高位 VID 与电压输入(in5 和 in6)共享它们的引脚,因此您不能在给定的主板上同时拥有两者。

IT8716F、IT8718F、IT8720F、IT8721F/IT8758E 和后来的 IT8712F 版本支持 2 个额外的风扇。驱动程序支持额外的风扇。

IT8716F、IT8718F、IT8720F、IT8721F/IT8758E、IT8732F、IT8781F、IT8782F、IT8783E/F 以及后期的 IT8712F 和 IT8705F 还具有可选的 16 位转速计计数器,用于风扇 1 到 3。这更好(不再需要风扇时钟分频器),但不与旧芯片和版本兼容。当检测到上述芯片之一时,驱动程序会启用 16 位转速计模式。

IT8726F 只是位增强的 IT8716F,带有用于 AMD 电源排序的额外硬件。因此,对于用户空间应用程序,该芯片将显示为 IT8716F。

在获得数据表之前(希望如此),IT8728F、IT8771E 和 IT8772E 被认为与 IT8721F 兼容。

IT8603E/IT8623E 是一款定制设计,硬件监控部分类似于 IT8728F。 它仅支持 3 个风扇、16 位风扇模式,并且不支持风扇的全速模式(pwmX_enable 的值为 0)。

IT8620E 和 IT8628E 是定制设计,硬件监控部分类似于 IT8728F。 它仅支持 16 位风扇模式。 两种芯片最多支持 6 个风扇。

IT8790E、IT8792E/IT8795E 和 IT87952E 最多支持 3 个风扇。 始终启用 16 位风扇模式。

IT8732F 支持风扇控制的闭环模式,但驱动程序目前未实现此模式。

温度以摄氏度为单位测量。 一旦超过超温关机限制,就会触发警报。

风扇转速以 RPM(每分钟转数)为单位报告。 如果转速降至可编程限制以下,则会触发警报。 当不使用 16 位转速计计数器时,风扇读数可以被可编程分频器(1、2、4 或 8)划分,以使读数具有更大的范围或准确性。 当分频器为 2 时,最低可表示值约为 2600 RPM。 并非所有 RPM 值都可以准确表示,因此会进行一些舍入。

电压传感器(也称为 IN 传感器)以伏特为单位报告它们的值。 如果电压超过了可编程的最小值或最大值限制,则会触发警报。 请注意,在这种情况下,最小值始终表示“最接近零”; 这对于负电压测量非常重要。 在大多数芯片上,所有电压输入都可以测量 0 到 4.08 伏之间的电压,分辨率为 0.016 伏。 IT8603E、IT8721F/IT8758E 和 IT8728F 可以测量 0 到 3.06 伏之间的电压,分辨率为 0.012 伏。 IT8732F 可以测量 0 到 2.8 伏之间的电压,分辨率为 0.0109 伏。 电池电压 in8 没有限制寄存器。

在 IT8603E、IT8620E、IT8628E、IT8721F/IT8758E、IT8732F、IT8781F、IT8782F 和 IT8783E/F 上,某些电压输入是内部的,并在芯片内部进行缩放:* in3(可选)* in7(对于 IT8781F、IT8782F 和 IT8783E/F 是可选的)* in8(始终)* in9(仅与 IT8603E 相关)驱动程序会透明地处理此问题,因此用户空间无需关心。

VID 线(IT8712F/IT8716F/IT8718F/IT8720F)对内核电压值进行编码:您的处理器应该使用的电压电平。 这是由主板和/或处理器本身硬编码的。 这是一个以伏特为单位的值。

如果触发警报,它将保持触发状态,直到至少读取一次硬件寄存器。 这意味着警报的原因可能已经消失了! 请注意,在当前实现中,只要读取任何数据,就会读取所有硬件寄存器(除非距离上次更新不到 1.5 秒)。 这意味着您很容易错过一次性警报。

如果芯片正确连接和配置,超出限制的读数也可能导致发出蜂鸣声。 可以为每种传感器类型(温度、电压和风扇)启用或禁用蜂鸣声。

IT87xx 仅每 1.5 秒更新一次其值; 更频繁地读取它不会造成任何伤害,但会返回“旧”值。

要将传感器 N 更改为热敏电阻,请执行“echo 4 > tempN_type”,其中 N 为 1、2 或 3。要将传感器 N 更改为热二极管,请执行“echo 3 > tempN_type”。 为未使用的传感器提供 0。任何其他值都无效。 要在启动时配置此项,请查阅 lm_sensors 的 /etc/sensors.conf。 (4 = 热敏电阻;3 = 热二极管)

风扇速度控制

风扇速度控制功能仅限于手动 PWM 模式。 自动“智能守护”模式控制处理仅为旧芯片实现(见下文)。 但是,如果您想使用“手动模式”,只需将 1 写入 pwmN_enable。

如果您只能使用非常小的 PWM 值来控制风扇速度,请尝试降低 PWM 基频 (pwm1_freq)。 根据风扇的不同,它可能会为您提供更大的控制范围。 相同的频率用于驱动所有风扇输出,这就是为什么 pwm2_freq 和 pwm3_freq 是只读的原因。

自动风扇速度控制(旧接口)

该驱动程序支持自动风扇速度控制的旧接口,该接口由 IT8705F 芯片(最高版本 F)和 IT8712F 芯片(最高版本 G)实现。

此接口实现了 4 个温度与 PWM 输出跳变点。 跳变点 4 的 PWM 输出始终是最大值(风扇全速运行),而其他 3 个跳变点的 PWM 输出可以自由选择。 所有 4 个跳变点的温度都可以自由选择。 此外,跳变点 1 具有附加的滞后温度,以防止风扇快速打开和关闭之间切换。

芯片根据输入温度自动计算 PWM 输出值,基于以下简单规则:如果温度值介于跳变点 N 和跳变点 N+1 之间,则 PWM 输出值是跳变点 N 的值。自动控制模式不如手动控制模式灵活,但它反应更快,更强大,并且不使用 CPU 周期。

在切换到自动风扇速度控制模式之前,必须正确设置跳变点。 在实际切换到自动控制模式之前,驱动程序将执行基本的完整性检查。

温度偏移属性

驱动程序支持 temp[1-3]_offset sysfs 属性,以调整热二极管或二极管连接的热晶体管的报告温度。 如果温度传感器配置为热敏电阻,则忽略属性值。 如果热传感器类型为 Intel PECI,则温度偏移必须编程为 CPU 的临界温度。