← Documents Documentation/hwmon/asb100.rst GitHub 원문 ↗

Linux 6.18.37 · Hardware Monitoring

Kernel driver asb100

Asus ASB100/ASB100-A의 voltage·temperature·fan·VID 측정과 역공학된 alarm bitmap입니다.

Source pathDocumentation/hwmon/asb100.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

asb100.rst:1-73

공개 datasheet가 없는 Asus ASIC의 sensor 자원과 일부 불확실성이 남은 alarm bit를 설명합니다.

문서 개요
항목
SourceDocumentation/hwmon/asb100.rst
분량73 source lines
Sensors7 voltage, 3 fan, 4 temperature
PWMASB100-A의 fan 2·3 공동 제어

원문 분량과 핵심 지원 범위입니다.

핵심 흐름
I2C 0x2d 탐지Sensor와 VID 읽기Alarm bitmap 분해불확실한 register 조건 표시

장치를 구성하고 측정·제어하는 기본 순서입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 Kernel driver asb100
2 ====================
3
4 Supported Chips:
5
6 * Asus ASB100 and ASB100-A "Bach"
7
8 Prefix: 'asb100'
9
10 Addresses scanned: I2C 0x2d
11
12 Datasheet: none released
13
14 Author: Mark M. Hoffman <[email protected]>
15
16 Description
17 -----------
18
19 This driver implements support for the Asus ASB100 and ASB100-A "Bach".
20 These are custom ASICs available only on Asus mainboards. Asus refuses to
21 supply a datasheet for these chips. Thanks go to many people who helped
22 investigate their hardware, including:
23
24 Vitaly V. Bursov
25 Alexander van Kaam (author of MBM for Windows)
26 Bertrik Sikken
27
28 The ASB100 implements seven voltage sensors, three fan rotation speed
29 sensors, four temperature sensors, VID lines and alarms. In addition to
30 these, the ASB100-A also implements a single PWM controller for fans 2 and
31 3 (i.e. one setting controls both.) If you have a plain ASB100, the PWM
32 controller will simply not work (or maybe it will for you... it doesn't for
33 me).
34
35 Temperatures are measured and reported in degrees Celsius.
36
37 Fan speeds are reported in RPM (rotations per minute). An alarm is
38 triggered if the rotation speed has dropped below a programmable limit.
39
40 Voltage sensors (also known as IN sensors) report values in volts.
41
42 The VID lines encode the core voltage value: the voltage level your
43 processor should work with. This is hardcoded by the mainboard and/or
44 processor itself. It is a value in volts.
45
46 Alarms: (TODO question marks indicate may or may not work)
47
48 - 0x0001 => in0 (?)
49 - 0x0002 => in1 (?)
50 - 0x0004 => in2
51 - 0x0008 => in3
52 - 0x0010 => temp1 [1]_
53 - 0x0020 => temp2
54 - 0x0040 => fan1
55 - 0x0080 => fan2
56 - 0x0100 => in4
57 - 0x0200 => in5 (?) [2]_
58 - 0x0400 => in6 (?) [2]_
59 - 0x0800 => fan3
60 - 0x1000 => chassis switch
61 - 0x2000 => temp3
62
63 .. [1] This alarm will only trigger if the hysteresis value is 127C.
64 I.e. it behaves the same as w83781d.
65
66 .. [2] The min and max registers for these values appear to
67 be read-only or otherwise stuck at 0x00.
68
69 TODO:
70 * Experiment with fan divisors > 8.
71 * Experiment with temp. sensor types.
72 * Are there really 13 voltage inputs? Probably not...
73 * Cleanups, no doubt...
74

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

ASB100 지원과 측정 기능

1-44

이 driver는 Asus ASB100과 ASB100-A `Bach`를 prefix `asb100`으로 지원하며 I2C 주소 `0x2d`를 검색합니다. 공개된 datasheet는 없습니다. 저자는 Mark M. Hoffman입니다.

두 custom ASIC은 Asus mainboard에서만 사용됩니다. Asus가 datasheet 제공을 거부했기 때문에 hardware 조사에 참여한 Vitaly V. Bursov, Windows용 MBM 저자 Alexander van Kaam, Bertrik Sikken의 도움으로 동작을 파악했습니다.

ASB100은 voltage sensor 7개, fan rotation speed sensor 3개, temperature sensor 4개, VID line, alarm을 구현합니다. ASB100-A에는 fan 2와 fan 3을 함께 제어하는 단일 PWM controller가 추가됩니다. 일반 ASB100에서는 이 PWM controller가 동작하지 않습니다.

Temperature는 degrees Celsius, fan speed는 RPM, IN sensor라고도 부르는 voltage sensor 값은 volts로 보고합니다. Fan rotation speed가 programmable limit 아래로 내려가면 alarm이 발생합니다.

VID line은 processor가 동작해야 하는 core voltage를 encode합니다. 이 값은 mainboard나 processor에 hardcode되어 있으며 volts 단위입니다.

ASB100 측정 자원
자원수량비고
Voltage sensor7Volts
Fan speed sensor3RPM, low limit alarm
Temperature sensor4Degrees Celsius
VID1 setProcessor core voltage
PWM controllerASB100-A만 1Fan 2와 fan 3 공동 제어

ASB100과 ASB100-A의 공통 기능과 차이입니다.

ASB100 monitoring
I2C 0x2d에서 chip 탐지Voltage·temperature·fan speed 읽기Fan speed를 programmable limit와 비교VID에서 core voltage 해석ASB100-A이면 공동 PWM 적용

역공학으로 확인된 register에서 측정값과 alarm을 읽습니다.

Kernel driver asb100
====================

Supported Chips:

  * Asus ASB100 and ASB100-A "Bach"

    Prefix: 'asb100'

    Addresses scanned: I2C 0x2d

    Datasheet: none released

Author: Mark M. Hoffman <[email protected]>

Description
-----------

This driver implements support for the Asus ASB100 and ASB100-A "Bach".
These are custom ASICs available only on Asus mainboards. Asus refuses to
supply a datasheet for these chips. Thanks go to many people who helped
investigate their hardware, including:

Vitaly V. Bursov
Alexander van Kaam (author of MBM for Windows)
Bertrik Sikken

The ASB100 implements seven voltage sensors, three fan rotation speed
sensors, four temperature sensors, VID lines and alarms. In addition to
these, the ASB100-A also implements a single PWM controller for fans 2 and
3 (i.e. one setting controls both.) If you have a plain ASB100, the PWM
controller will simply not work (or maybe it will for you... it doesn't for
me).

Temperatures are measured and reported in degrees Celsius.

Fan speeds are reported in RPM (rotations per minute). An alarm is
triggered if the rotation speed has dropped below a programmable limit.

Voltage sensors (also known as IN sensors) report values in volts.

The VID lines encode the core voltage value: the voltage level your
processor should work with. This is hardcoded by the mainboard and/or
processor itself. It is a value in volts.

Alarm bitmap과 알려지지 않은 동작

45-73

Alarm bit `0x0001`, `0x0002`, `0x0004`, `0x0008`은 각각 `in0`, `in1`, `in2`, `in3`에 대응합니다. 이 가운데 in0과 in1은 실제 동작 여부가 확실하지 않습니다. `0x0010`은 `temp1`, `0x0020`은 `temp2`, `0x0040`은 `fan1`, `0x0080`은 `fan2`입니다.

`0x0100`은 `in4`, `0x0200`은 `in5`, `0x0400`은 `in6`, `0x0800`은 `fan3`, `0x1000`은 chassis switch, `0x2000`은 `temp3`입니다. in5와 in6 alarm도 동작 여부가 불확실합니다.

`temp1` alarm은 hysteresis 값이 `127C`일 때만 발생하며 `w83781d`와 같은 방식으로 동작합니다. `in5`와 `in6`의 min/max register는 read-only이거나 `0x00`에 고정된 것으로 보입니다.

남은 TODO는 8보다 큰 fan divisor 시험, temperature sensor type 시험, 실제 voltage input이 13개인지 확인, 전반적인 cleanup입니다.

ASB100 alarm bitmap
Bit대상주의
0x0001/0x0002in0/in1동작 불확실
0x0004/0x0008in2/in3-
0x0010/0x0020temp1/temp2temp1은 hysteresis 127C 필요
0x0040/0x0080/0x0800fan1/fan2/fan3-
0x0100/0x0200/0x0400in4/in5/in6in5·in6 제한 register 문제
0x1000/0x2000chassis switch/temp3-

각 bit와 sensor를 대응시킵니다.

Alarm 해석
16-bit alarm word 읽기각 sensor bit mask 적용Temp1이면 hysteresis 127C 조건 확인불확실한 in0·in1·in5·in6 별도 표시유효 alarm을 userspace에 보고

Raw alarm word를 sensor 상태로 분해합니다.


Alarms: (TODO question marks indicate may or may not work)

- 0x0001 => in0 (?)
- 0x0002 => in1 (?)
- 0x0004 => in2
- 0x0008 => in3
- 0x0010 => temp1 [1]_
- 0x0020 => temp2
- 0x0040 => fan1
- 0x0080 => fan2
- 0x0100 => in4
- 0x0200 => in5 (?) [2]_
- 0x0400 => in6 (?) [2]_
- 0x0800 => fan3
- 0x1000 => chassis switch
- 0x2000 => temp3

.. [1]        This alarm will only trigger if the hysteresis value is 127C.
        I.e. it behaves the same as w83781d.

.. [2]        The min and max registers for these values appear to
        be read-only or otherwise stuck at 0x00.

TODO:
  * Experiment with fan divisors > 8.
  * Experiment with temp. sensor types.
  * Are there really 13 voltage inputs? Probably not...
  * Cleanups, no doubt...