How to Inspect Haptic Actuators and Vibration Effects on Android Using ADB dumpsys vibrator

In modern mobile user experience design, haptic feedback plays a crucial role in providing tactile confirmation for button presses, scroll wheels, keyboard typing, gaming effects, and accessibility cues. Contemporary Android devices incorporate advanced linear resonant actuators (LRA) or voice-coil haptic motors capable of generating nuanced vibration envelopes, frequency sweeps, and variable amplitude feedback using the VibrationEffect API. When an application fails to produce haptic feedback, triggers jarring buzzing instead of subtle clicks, or consumes excessive power by locking hardware actuators, diagnosing the issue requires inspecting the underlying haptics pipeline via ADB dumpsys vibrator.

Understanding the Android Vibrator Framework

The Android haptic architecture comprises several interacting components:

  • Vibrator HAL (Hardware Abstraction Layer): Interfaces directly with hardware haptic driver ICs, exposing capabilities like resonant frequency tracking, amplitude control, and primitive effect triggers.
  • VibratorManagerService & VibratorService: Manages concurrent client requests, enforces user settings (e.g., Touch Feedback toggle), scales vibration amplitude, and ensures background apps do not vibrate unexpectedly.
  • VibrationEffect Types: Modern Android supports predefined haptic primitives (EFFECT_CLICK, EFFECT_TICK, EFFECT_HEAVY_CLICK), step waveforms (duration and amplitude arrays), and composition waveforms.

Generating a Complete Haptic Diagnostics Dump

To inspect physical haptic hardware capabilities and recent vibration logs on a connected Android device, run:

adb shell dumpsys vibrator

On devices supporting multiple independent vibration motors (or newer Android 12+ releases), you can also query the multi-actuator manager service:

adb shell dumpsys vibrator_manager

Inspecting Physical Actuator Capabilities

Examine the first section of the output to determine what hardware features are supported by your device\u2019s physical haptic motor:

Vibrator (Id=0):
  Has Amplitude Control: true
  Has External Control: false
  Resonant Frequency: 170.0 Hz
  Q-Factor: 24.5
  Supported Effects: [CLICK, DOUBLE_CLICK, TICK, THUD, POP, HEAVY_CLICK]
  Supported Primitives: [CLICK, TICK, LOW_TICK, QUICK_FALL, QUICK_RISE, SPIN]

Key hardware parameters:

  • Has Amplitude Control: If true, the motor supports fine-grained intensity modulation (scaling from 1 to 255). If false, the hardware only supports binary on/off pulsing.
  • Resonant Frequency: The natural mechanical resonance of the linear motor (e.g., 170.0 Hz). Efficient haptic drivers track this frequency dynamically to maximize tactile impact while minimizing battery draw.
  • Supported Primitives: Lists hardware-accelerated effects stored directly in the haptic driver ROM for instantaneous playback without latency.

Auditing Active and Recent Vibration Requests

To diagnose which application recently triggered haptic feedback or to catch rogue background processes, inspect the vibration history table:

adb shell dumpsys vibrator | grep -A 20 "Previous vibrations:"

The diagnostic log records caller packages and effect details:

Previous vibrations:
  10:15:32.412 - op: com.google.android.inputmethod.latin (uid 10045)
    attrs: AudioAttributes [Usage: USAGE_ASSISTANCE_SONIFICATION, Flags: 0]
    effect: Prebaked [id: 2, fallback: null]
    scale: 0.45, duration: 15ms, status: FINISHED
  10:15:30.120 - op: com.example.gameapp (uid 10184)
    attrs: AudioAttributes [Usage: USAGE_GAME, Flags: 0]
    effect: Waveform [timings: [0, 50, 100, 50], amplitudes: [0, 128, 0, 255]]
    scale: 1.00, duration: 200ms, status: FINISHED

Notice the details captured:

  • op / uid: The exact package name and Linux user ID that initiated the vibration.
  • scale: The calculated amplitude factor applied based on system-wide haptic intensity settings.
  • status: Confirms if the vibration completed normally (FINISHED) or was interrupted by a higher-priority alert (CANCELLED_SUPERSEDED).

Simulating Vibration Effects via ADB for Testing

You can trigger haptic feedback directly from the terminal to test actuator responsiveness and amplitude control:

To trigger a standard 500-millisecond vibration:

adb shell cmd vibrator vibrate 500

To test whether system haptic feedback is globally enabled or disabled in Android system settings:

adb shell settings get system haptic_feedback_enabled

If 0, haptic feedback is disabled across the OS. To enable it:

adb shell settings put system haptic_feedback_enabled 1

Using dumpsys vibrator alongside ADB testing commands allows developers and QA teams to verify tactile timing, diagnose actuator stalls, and optimize haptic battery efficiency across Android applications.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.