summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/asmc.4 3.html
blob: 94a058c9c89484a328197ed0e89078e3ff62eab7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<table class="head">
  <tr>
    <td class="head-ltitle">ASMC(4)</td>
    <td class="head-vol">Device Drivers Manual</td>
    <td class="head-rtitle">ASMC(4)</td>
  </tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">asmc</code> &#x2014; <span class="Nd">device
    driver for the Apple System Management Controller (SMC)</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<p class="Pp">To compile this driver into the kernel, place the following line
    in your kernel configuration file:</p>
<div class="Bd Pp Bd-indent"><code class="Cd">device asmc</code></div>
<p class="Pp">Alternatively, to load the driver as a module at boot time, place
    the following line in <a class="Xr">loader.conf(5)</a>:</p>
<div class="Bd Pp Bd-indent Li">
<pre>asmc_load=&quot;YES&quot;</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">The <code class="Nm">asmc</code> driver controls the Apple System
    Management Controller (SMC for short) found on Intel Apple systems.</p>
<p class="Pp">The SMC is known to be found on the following systems:</p>
<p class="Pp"></p>
<ul class="Bl-bullet Bd-indent Bl-compact">
  <li>MacBook</li>
  <li>MacBook Pro</li>
  <li>Intel MacMini</li>
  <li>Mac Pro</li>
  <li>MacBook Air</li>
  <li>Intel iMac</li>
</ul>
<p class="Pp">With this driver, you can configure your keyboard backlight
    brightness, check temperatures of several sensors, check the speed of the
    internal fans and check the status of the Sudden Motion Sensor.</p>
<p class="Pp">Variables related to the SMC control and inspection are exported
    via <a class="Xr">sysctl(3)</a> under the device tree
    <var class="Va">dev.asmc</var>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="KEYBOARD_BACKLIGHT"><a class="permalink" href="#KEYBOARD_BACKLIGHT">KEYBOARD
  BACKLIGHT</a></h1>
<p class="Pp">On MacBook Pro systems, you can control the keyboard brightness by
    writing a value to the <var class="Va">dev.asmc.%d.light.control</var>
    sysctl MIB or with <a class="Xr">backlight(8)</a> utility.</p>
<p class="Pp">The following sysctl MIBs contains the raw value returned by the
    left and right light sensors: <var class="Va">dev.asmc.%d.light.left</var>
    or <var class="Va">dev.asmc.%d.light.right</var>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="TEMPERATURES"><a class="permalink" href="#TEMPERATURES">TEMPERATURES</a></h1>
<p class="Pp">The number of temperature sensors and their description varies
    among systems. You can inspect the temperature sensors on your system by
    traversing the <var class="Va">dev.asmc.temp</var> sysctl MIB.</p>
<p class="Pp">All values are in degrees celsius.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="SYSTEM_FANS"><a class="permalink" href="#SYSTEM_FANS">SYSTEM
  FANS</a></h1>
<p class="Pp">The <var class="Va">dev.asmc.fan.%d</var> sysctl tree contains the
    leaf nodes <var class="Va">speed</var>, <var class="Va">safespeed</var>,
    <var class="Va">minspeed</var>, <var class="Va">maxspeed</var> and
    <var class="Va">targetspeed</var>. Each of these leaf nodes represent the
    current fan speed, the safest minimum fan speed, the minimum speed and the
    maximum speed respectively.</p>
<p class="Pp">All values are in RPM.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="RAW_SMC_KEY_ACCESS"><a class="permalink" href="#RAW_SMC_KEY_ACCESS">RAW
  SMC KEY ACCESS</a></h1>
<p class="Pp">When the kernel is compiled with the
    <code class="Dv">ASMC_DEBUG</code> option, a set of sysctl nodes is provided
    under <var class="Va">dev.asmc.%d.raw</var> for reading and writing
    arbitrary SMC keys by name.</p>
<p class="Pp"></p>
<dl class="Bl-tag Bl-compact">
  <dt id="dev.asmc._d.raw.key"><var class="Va">dev.asmc.%d.raw.key</var></dt>
  <dd>Set the 4-character SMC key name to access (e.g., &#x201C;AUPO&#x201D;).
      Setting this automatically queries the key's length and type.</dd>
  <dt id="dev.asmc._d.raw.value"><var class="Va">dev.asmc.%d.raw.value</var></dt>
  <dd>Read or write the key's value as a hex string.</dd>
  <dt id="dev.asmc._d.raw.len"><var class="Va">dev.asmc.%d.raw.len</var></dt>
  <dd>The auto-detected value length in bytes (read-only).</dd>
  <dt id="dev.asmc._d.raw.type"><var class="Va">dev.asmc.%d.raw.type</var></dt>
  <dd>The 4-character SMC type string (e.g., &#x201C;ui8&#x201D;,
      &#x201C;flt&#x201D;) (read-only).</dd>
</dl>
<p class="Pp">Example usage:</p>
<div class="Bd Pp Bd-indent Li">
<pre>sysctl dev.asmc.0.raw.key=AUPO
sysctl dev.asmc.0.raw.value
sysctl dev.asmc.0.raw.value=01</pre>
</div>
</section>
<section class="Sh">
<h1 class="Sh" id="SUDDEN_MOTION_SENSOR"><a class="permalink" href="#SUDDEN_MOTION_SENSOR">SUDDEN
  MOTION SENSOR</a></h1>
<p class="Pp">The Sudden Motion Sensor (SMS for short) is a device that detects
    laptop movement and notifies the operating system via an interrupt. The
    sysctl MIBs present under <var class="Va">dev.asmc.sms</var> all relate to
    the SMS.</p>
<p class="Pp">The most interesting usage of this device is to park the disk
    heads when the laptop is moved harshly. First, you need to install
    <a class="Xr">ataidle(8)</a>
    (<span class="Pa">ports/sysutils/ataidle</span>) and then configure
    <a class="Xr">devd(8)</a> the following way:</p>
<div class="Bd Pp Bd-indent Li">
<pre>notify 0 {
	match &quot;system&quot;		&quot;ACPI&quot;;
	match &quot;subsystem&quot;	&quot;asmc&quot;;
	action			&quot;/usr/local/sbin/ataidle -s X Y&quot;;
};</pre>
</div>
<p class="Pp">Do not forget to change the <var class="Ar">X</var> and
    <var class="Ar">Y</var> values in the command above.</p>
<p class="Pp">Also, please note that parking the disk heads too many times can
    dramatically reduce your hard drive's life span. Do not rely solely on the
    SMS to protect your hard drive: good care and common sense can increase your
    hard drive's life.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="FILES"><a class="permalink" href="#FILES">FILES</a></h1>
<dl class="Bl-tag Bl-compact">
  <dt><span class="Pa">/dev/backlight/asmc0</span></dt>
  <dd>Keyboard <a class="Xr">backlight(8)</a> device node.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<p class="Pp"><a class="Xr">ataidle(8)</a>
    (<span class="Pa">ports/sysutils/ataidle</span>),
    <a class="Xr">backlight(8)</a>, <a class="Xr">devd(8)</a>,
    <a class="Xr">sysctl(8)</a></p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">asmc</code> driver first appeared in
    <span class="Ux">FreeBSD 8.0</span>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp"><span class="An">Rui Paulo</span>
    &lt;<a class="Mt" href="mailto:rpaulo@FreeBSD.org">rpaulo@FreeBSD.org</a>&gt;
    (Google Summer of Code project)</p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">Support for the latest models was never tested and is most likely
    not fully working.</p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">March 29, 2026</td>
    <td class="foot-os">FreeBSD 15.0</td>
  </tr>
</table>