• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1page.title=Dumpsys
2@jd:body
3
4<!--
5    Copyright 2013 The Android Open Source Project
6
7    Licensed under the Apache License, Version 2.0 (the "License");
8    you may not use this file except in compliance with the License.
9    You may obtain a copy of the License at
10
11        http://www.apache.org/licenses/LICENSE-2.0
12
13    Unless required by applicable law or agreed to in writing, software
14    distributed under the License is distributed on an "AS IS" BASIS,
15    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16    See the License for the specific language governing permissions and
17    limitations under the License.
18-->
19<p>The <code>dumpsys</code> tool runs on the device and dumps interesting information
20about the status of system services.</p>
21<h2 id="usage">Usage</h2>
22<p>The input system is part of the window manager.  To dump its state,
23run the following command.</p>
24<pre><code>$ adb shell su -- dumpsys window
25
26WINDOW MANAGER INPUT (dumpsys window input)
27Event Hub State:
28  BuiltInKeyboardId: -1
29  Devices:
30...
31</code></pre>
32<p>The set of information that is reported varies depending on the version of Android.</p>
33<h3 id="event-hub-state">Event Hub State</h3>
34<p>The <code>EventHub</code> component is responsible for communicating with the kernel device
35drivers and identifying device capabilities.  Accordingly, its state shows
36information about how devices are configured.</p>
37<pre><code>Event Hub State:
38  BuiltInKeyboardId: -1
39  Devices:
40    3: tuna-gpio-keypad
41      Classes: 0x00000001
42      Path: /dev/input/event2
43      Location:
44      UniqueId:
45      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
46      KeyLayoutFile: /system/usr/keylayout/tuna-gpio-keypad.kl
47      KeyCharacterMapFile: /system/usr/keychars/tuna-gpio-keypad.kcm
48      ConfigurationFile:
49    5: Tuna Headset Jack
50      Classes: 0x00000080
51      Path: /dev/input/event5
52      Location: ALSA
53      UniqueId:
54      Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000
55      KeyLayoutFile:
56      KeyCharacterMapFile:
57      ConfigurationFile:
58    6: Melfas MMSxxx Touchscreen
59      Classes: 0x00000014
60      Path: /dev/input/event1
61      Location: 3-0048/input0
62      UniqueId:
63      Identifier: bus=0x0018, vendor=0x0000, product=0x0000, version=0x0000
64      KeyLayoutFile:
65      KeyCharacterMapFile:
66      ConfigurationFile: /system/usr/idc/Melfas_MMSxxx_Touchscreen.idc
67    7: Motorola Bluetooth Wireless Keyboard
68      Classes: 0x8000000b
69      Path: /dev/input/event6
70      Location: 0C:DF:A4:B3:2D:BA
71      UniqueId: 00:0F:F6:80:02:CD
72      Identifier: bus=0x0005, vendor=0x22b8, product=0x093d, version=0x0288
73      KeyLayoutFile: /system/usr/keylayout/Vendor_22b8_Product_093d.kl
74      KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
75      ConfigurationFile:
76</code></pre>
77<h4 id="things-to-look-for">Things To Look For</h4>
78<ol>
79<li>
80<p>All of the expected input devices are present.</p>
81</li>
82<li>
83<p>Each input device has an appropriate key layout file, key character map file
84    and input device configuration file.  If the files are missing or contain
85    syntax errors, then they will not be loaded.</p>
86</li>
87<li>
88<p>Each input device is being classified correctly.  The bits in the <code>Classes</code>
89    field correspond to flags in <code>EventHub.h</code> such as <code>INPUT_DEVICE_CLASS_TOUCH_MT</code>.</p>
90</li>
91<li>
92<p>The <code>BuiltInKeyboardId</code> is correct.  If the device does not have a built-in keyboard,
93    then the id must be <code>-1</code>, otherwise it should be the id of the built-in keyboard.</p>
94<p>If you observe that the <code>BuiltInKeyboardId</code> is not <code>-1</code> but it should be, then
95you are missing a key character map file for a special function keypad somewhere.
96Special function keypad devices should have key character map files that contain
97just the line <code>type SPECIAL_FUNCTION</code> (that's what in the <code>tuna-gpio-keykad.kcm</code>
98file we see mentioned above).</p>
99</li>
100</ol>
101<h3 id="input-reader-state">Input Reader State</h3>
102<p>The <code>InputReader</code> is responsible for decoding input events from the kernel.
103Its state dump shows information about how each input device is configured
104and recent state changes that occurred, such as key presses or touches on
105the touch screen.</p>
106<p>This is what a special function keypad looks like:</p>
107<pre><code>Input Reader State:
108  Device 3: tuna-gpio-keypad
109    IsExternal: false
110    Sources: 0x00000101
111    KeyboardType: 1
112    Keyboard Input Mapper:
113      Parameters:
114        AssociatedDisplayId: -1
115        OrientationAware: false
116      KeyboardType: 1
117      Orientation: 0
118      KeyDowns: 0 keys currently down
119      MetaState: 0x0
120      DownTime: 75816923828000
121</code></pre>
122<p>Here is a touch screen.  Notice all of the information about the resolution of
123the device and the calibration parameters that were used.</p>
124<pre><code>  Device 6: Melfas MMSxxx Touchscreen
125    IsExternal: false
126    Sources: 0x00001002
127    KeyboardType: 0
128    Motion Ranges:
129      X: source=0x00001002, min=0.000, max=719.001, flat=0.000, fuzz=0.999
130      Y: source=0x00001002, min=0.000, max=1279.001, flat=0.000, fuzz=0.999
131      PRESSURE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000
132      SIZE: source=0x00001002, min=0.000, max=1.000, flat=0.000, fuzz=0.000
133      TOUCH_MAJOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000
134      TOUCH_MINOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000
135      TOOL_MAJOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000
136      TOOL_MINOR: source=0x00001002, min=0.000, max=1468.605, flat=0.000, fuzz=0.000
137    Touch Input Mapper:
138      Parameters:
139        GestureMode: spots
140        DeviceType: touchScreen
141        AssociatedDisplay: id=0, isExternal=false
142        OrientationAware: true
143      Raw Touch Axes:
144        X: min=0, max=720, flat=0, fuzz=0, resolution=0
145        Y: min=0, max=1280, flat=0, fuzz=0, resolution=0
146        Pressure: min=0, max=255, flat=0, fuzz=0, resolution=0
147        TouchMajor: min=0, max=30, flat=0, fuzz=0, resolution=0
148        TouchMinor: unknown range
149        ToolMajor: unknown range
150        ToolMinor: unknown range
151        Orientation: unknown range
152        Distance: unknown range
153        TiltX: unknown range
154        TiltY: unknown range
155        TrackingId: min=0, max=65535, flat=0, fuzz=0, resolution=0
156        Slot: min=0, max=9, flat=0, fuzz=0, resolution=0
157      Calibration:
158        touch.size.calibration: diameter
159        touch.size.scale: 10.000
160        touch.size.bias: 0.000
161        touch.size.isSummed: false
162        touch.pressure.calibration: amplitude
163        touch.pressure.scale: 0.005
164        touch.orientation.calibration: none
165        touch.distance.calibration: none
166      SurfaceWidth: 720px
167      SurfaceHeight: 1280px
168      SurfaceOrientation: 0
169      Translation and Scaling Factors:
170        XScale: 0.999
171        YScale: 0.999
172        XPrecision: 1.001
173        YPrecision: 1.001
174        GeometricScale: 0.999
175        PressureScale: 0.005
176        SizeScale: 0.033
177        OrientationCenter: 0.000
178        OrientationScale: 0.000
179        DistanceScale: 0.000
180        HaveTilt: false
181        TiltXCenter: 0.000
182        TiltXScale: 0.000
183        TiltYCenter: 0.000
184        TiltYScale: 0.000
185      Last Button State: 0x00000000
186      Last Raw Touch: pointerCount=0
187      Last Cooked Touch: pointerCount=0
188</code></pre>
189<p>Here is an external keyboard / mouse combo HID device.  (This device doesn't actually
190have a mouse but its HID descriptor says it does.)</p>
191<pre><code>  Device 7: Motorola Bluetooth Wireless Keyboard
192    IsExternal: true
193    Sources: 0x00002103
194    KeyboardType: 2
195    Motion Ranges:
196      X: source=0x00002002, min=0.000, max=719.000, flat=0.000, fuzz=0.000
197      Y: source=0x00002002, min=0.000, max=1279.000, flat=0.000, fuzz=0.000
198      PRESSURE: source=0x00002002, min=0.000, max=1.000, flat=0.000, fuzz=0.000
199      VSCROLL: source=0x00002002, min=-1.000, max=1.000, flat=0.000, fuzz=0.000
200    Keyboard Input Mapper:
201      Parameters:
202        AssociatedDisplayId: -1
203        OrientationAware: false
204      KeyboardType: 2
205      Orientation: 0
206      KeyDowns: 0 keys currently down
207      MetaState: 0x0
208      DownTime: 75868832946000
209    Cursor Input Mapper:
210      Parameters:
211        AssociatedDisplayId: 0
212        Mode: pointer
213        OrientationAware: false
214      XScale: 1.000
215      YScale: 1.000
216      XPrecision: 1.000
217      YPrecision: 1.000
218      HaveVWheel: true
219      HaveHWheel: false
220      VWheelScale: 1.000
221      HWheelScale: 1.000
222      Orientation: 0
223      ButtonState: 0x00000000
224      Down: false
225      DownTime: 0
226</code></pre>
227<p>Here is a joystick.  Notice how all of the axes have been scaled to a normalized
228range.  The axis mapping can be configured using key layout files.</p>
229<pre><code>Device 18: Logitech Logitech Cordless RumblePad 2
230    IsExternal: true
231    Sources: 0x01000511
232    KeyboardType: 1
233    Motion Ranges:
234      X: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000
235      Y: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000
236      Z: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000
237      RZ: source=0x01000010, min=-1.000, max=1.000, flat=0.118, fuzz=0.000
238      HAT_X: source=0x01000010, min=-1.000, max=1.000, flat=0.000, fuzz=0.000
239      HAT_Y: source=0x01000010, min=-1.000, max=1.000, flat=0.000, fuzz=0.000
240    Keyboard Input Mapper:
241      Parameters:
242        AssociatedDisplayId: -1
243        OrientationAware: false
244      KeyboardType: 1
245      Orientation: 0
246      KeyDowns: 0 keys currently down
247      MetaState: 0x0
248      DownTime: 675270841000
249    Joystick Input Mapper:
250      Axes:
251        X: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000
252          scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000
253          rawAxis=0, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0
254        Y: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000
255          scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000
256          rawAxis=1, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0
257        Z: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000
258          scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000
259          rawAxis=2, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0
260        RZ: min=-1.00000, max=1.00000, flat=0.11765, fuzz=0.00000
261          scale=0.00784, offset=-1.00000, highScale=0.00784, highOffset=-1.00000
262          rawAxis=5, rawMin=0, rawMax=255, rawFlat=15, rawFuzz=0, rawResolution=0
263        HAT_X: min=-1.00000, max=1.00000, flat=0.00000, fuzz=0.00000
264          scale=1.00000, offset=0.00000, highScale=1.00000, highOffset=0.00000
265          rawAxis=16, rawMin=-1, rawMax=1, rawFlat=0, rawFuzz=0, rawResolution=0
266        HAT_Y: min=-1.00000, max=1.00000, flat=0.00000, fuzz=0.00000
267          scale=1.00000, offset=0.00000, highScale=1.00000, highOffset=0.00000
268          rawAxis=17, rawMin=-1, rawMax=1, rawFlat=0, rawFuzz=0, rawResolution=0
269</code></pre>
270<p>At the end of the input reader dump there is some information about global configuration
271parameters such as the mouse pointer speed.</p>
272<pre><code>  Configuration:
273    ExcludedDeviceNames: []
274    VirtualKeyQuietTime: 0.0ms
275    PointerVelocityControlParameters: scale=1.000, lowThreshold=500.000, highThreshold=3000.000, acceleration=3.000
276    WheelVelocityControlParameters: scale=1.000, lowThreshold=15.000, highThreshold=50.000, acceleration=4.000
277    PointerGesture:
278      Enabled: true
279      QuietInterval: 100.0ms
280      DragMinSwitchSpeed: 50.0px/s
281      TapInterval: 150.0ms
282      TapDragInterval: 300.0ms
283      TapSlop: 20.0px
284      MultitouchSettleInterval: 100.0ms
285      MultitouchMinDistance: 15.0px
286      SwipeTransitionAngleCosine: 0.3
287      SwipeMaxWidthRatio: 0.2
288      MovementSpeedRatio: 0.8
289      ZoomSpeedRatio: 0.3
290</code></pre>
291<h4 id="things-to-look-for_1">Things To Look For</h4>
292<ol>
293<li>
294<p>All of the expected input devices are present.</p>
295</li>
296<li>
297<p>Each input device has been configured appropriately.  Especially check the
298    touch screen and joystick axes.</p>
299</li>
300</ol>
301<h3 id="input-dispatcher-state">Input Dispatcher State</h3>
302<p>The <code>InputDispatcher</code> is responsible for sending input events to applications.
303Its state dump shows information about which window is being touched, the
304state of the input queue, whether an ANR is in progress, and so on.</p>
305<pre><code>Input Dispatcher State:
306  DispatchEnabled: 1
307  DispatchFrozen: 0
308  FocusedApplication: name='AppWindowToken{41b03a10 token=Token{41bdcf78 ActivityRecord{418ab728 com.android.settings/.Settings}}}', dispatchingTimeout=5000.000ms
309  FocusedWindow: name='Window{41908458 Keyguard paused=false}'
310  TouchDown: false
311  TouchSplit: false
312  TouchDeviceId: -1
313  TouchSource: 0x00000000
314  TouchedWindows: &lt;none&gt;
315  Windows:
316    0: name='Window{41bd5b18 NavigationBar paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x05800068, type=0x000007e3, layer=181000, frame=[0,1184][720,1280], scale=1.000000, touchableRegion=[0,1184][720,1280], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms
317    1: name='Window{41a19770 RecentsPanel paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01820100, type=0x000007de, layer=151000, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms
318    2: name='Window{41a78768 StatusBar paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00800048, type=0x000007d0, layer=141000, frame=[0,0][720,50], scale=1.000000, touchableRegion=[0,0][720,50], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms
319    3: name='Window{41877570 StatusBarExpanded paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x01811328, type=0x000007e1, layer=131005, frame=[0,-1184][720,-114], scale=1.000000, touchableRegion=[0,-1184][720,-114], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms
320    4: name='Window{41bedf20 TrackingView paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01020300, type=0x000007e1, layer=131000, frame=[0,-1032][720,102], scale=1.000000, touchableRegion=[0,-1032][720,102], inputFeatures=0x00000000, ownerPid=306, ownerUid=1000, dispatchingTimeout=5000.000ms
321    5: name='Window{41908458 Keyguard paused=false}', paused=false, hasFocus=true, hasWallpaper=false, visible=true, canReceiveKeys=true, flags=0x15120800, type=0x000007d4, layer=111000, frame=[0,50][720,1184], scale=1.000000, touchableRegion=[0,50][720,1184], inputFeatures=0x00000000, ownerPid=205, ownerUid=1000, dispatchingTimeout=5000.000ms
322    6: name='Window{4192cc30 com.android.phasebeam.PhaseBeamWallpaper paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=true, canReceiveKeys=false, flags=0x00000308, type=0x000007dd, layer=21010, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=429, ownerUid=10046, dispatchingTimeout=5000.000ms
323    7: name='Window{41866c00 com.android.settings/com.android.settings.Settings paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01810100, type=0x00000001, layer=21005, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=19000, ownerUid=1000, dispatchingTimeout=5000.000ms
324    8: name='Window{4197c858 com.android.launcher/com.android.launcher2.Launcher paused=false}', paused=false, hasFocus=false, hasWallpaper=false, visible=false, canReceiveKeys=false, flags=0x01910100, type=0x00000001, layer=21000, frame=[0,0][720,1184], scale=1.000000, touchableRegion=[0,0][720,1184], inputFeatures=0x00000000, ownerPid=515, ownerUid=10032, dispatchingTimeout=5000.000ms
325  MonitoringChannels: &lt;none&gt;
326  InboundQueue: length=0
327  ActiveConnections: &lt;none&gt;
328  AppSwitch: not pending
329  Configuration:
330    MaxEventsPerSecond: 90
331    KeyRepeatDelay: 50.0ms
332    KeyRepeatTimeout: 500.0ms
333</code></pre>
334<h4 id="things-to-look-for_2">Things To Look For</h4>
335<ol>
336<li>
337<p>In general, all input events are being processed as expected.</p>
338</li>
339<li>
340<p>If you touch the touch screen and run dumpsys at the same time, then the <code>TouchedWindows</code>
341    line should show the window that you are touching.</p>
342</li>
343</ol>
344
345