---
title: "Fix ADB Insufficient Permission"
description: "udev rules for fixing ADB Insufficient permission in Linux"
date: 2025-02-24T11:29:30+07:00
draft: false
tags:
  - linux
  - android
---

# Why need this?

Connecting an Android device to a Linux computer could has problem with permission. Listing devices with `adb devices` might show `unauthorized` status or `insufficient permission` error message.

```bash
$ adb devices

List of devices attached
15241JEC211677  device
RR2M9002AHY     unauthorized
```

This happens because by default, in Linux, when you connect an Android device via USB, the system assigns it to the `root` user and a restrictive permission mode (often 0600), meaning that regular users cannot access it.

# How to fix

1. Check `vendor id` and `device id` from connected Android device with `lsusb`.

```bash
$ lsusb

...some other devices
Bus 001 Device 005: ID 18d1:4ee7 Google Inc. Nexus/Pixel Device
```

`18d1` is _vendor id_ and `4ee7` is the _product id_.

2. Create an `udev` rule for this device, I create mine in `/etc/udev/rules.d/51-android.rules`.

```bash
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7", MODE="0666", GROUP="plugdev", SYMLINK+="google_pixel_4a_%n"
```

- `SUBSYSTEM=="usb"` ensures the rule applies only to USB devices.
- `ATTRS{idVendor}=="18d1" and ATTRS{idProduct}=="4ee7"` match the Google Pixel USB devices by their vendor and product IDs.
- `MODE="0666"` sets the device's permission mode to 0666, meaning read/write access for all users.
- `GROUP="plugdev"` assigns the device to the plugdev group, which allows users in that group to access it.
- `SYMLINK+="google_pixel_4a_%n"` creates a symlink (shortcut) under /dev/ with a readable name for easier identification.

3. Reconnect the device to make sure the rule is correct. If not, try to reload `udev` rules and restart it.

```bash
$ sudo udevadm control --reload-rules
```
