QuecPI - Quick Fix Guide for ADB "Insufficient Permissions" Issue on Linux

Overview

When connecting a Quectel Pi device to a Linux host using ADB, users may encounter the following error when running adb devices or adb shell:

error: insufficient permissions for device:
user in plugdev group; are your udev rules wrong?

This issue occurs when the Linux host does not have the appropriate udev rules configured to grant non-root access to the Android Debug Bridge (ADB) interface.

This guide explains how to configure the required udev rules and restore normal ADB functionality.


Symptoms

One or more of the following symptoms may be observed:

adb devices

Returns:

error: insufficient permissions for device:
user in plugdev group; are your udev rules wrong?

or

List of devices attached
????????????    no permissions

As a result:

adb shell

cannot be executed successfully.


Solution 1: Install the Official Generic ADB udev Rules

Most Linux distributions provide a package containing generic Android udev rules.

Install the package using:

sudo apt update
sudo apt install -y android-sdk-platform-tools-common

After installation, reload the rules and restart ADB:

sudo udevadm control --reload-rules
sudo udevadm trigger
sudo pkill -f adb || true

Disconnect and reconnect the USB cable, then start ADB again:

adb start-server
adb devices

If the device is detected correctly, no additional configuration is required.

If the device still appears as “no permissions”, proceed to Solution 2.


Solution 2: Create Custom udev Rules

Step 1: Create the udev Rules File

Create or edit the following file:

sudo nano /etc/udev/rules.d/51-android.rules

Add the following content:

# Allow all Qualcomm USB devices
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev", TAG+="uaccess"

# Allow the Quectel Pi ADB device
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="902d", MODE="0666", GROUP="plugdev", TAG+="uaccess"

# Generic ADB interface rule
SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:ff4201:*", MODE="0666", GROUP="plugdev", TAG+="uaccess"

Rule Explanation

Rule Purpose
Vendor Rule Allows access to Qualcomm USB devices (VID: 05c6)
Product Rule Allows access to the specific Quectel Pi ADB interface (PID: 902d)
Generic ADB Rule Matches any device exposing an ADB interface

For maximum compatibility, it is recommended to keep all three rules.


Step 2: Apply the Rules

Set the correct file permissions:

sudo chmod 644 /etc/udev/rules.d/51-android.rules

Reload udev:

sudo udevadm control --reload-rules
sudo udevadm trigger

Step 3: Reconnect the Device

Disconnect and reconnect the USB cable.

Restart the ADB service:

sudo pkill -f adb || true
adb start-server
adb devices -l

Important: Run ADB as a normal user. Avoid starting ADB using sudo, as this may cause permission conflicts.


Verifying the Fix

Case 1: Device Shows “unauthorized”

If the output changes from:

no permissions

to:

unauthorized

the Linux permission issue has been resolved successfully.

Example:

List of devices attached
xxxxxxxxxxxx    unauthorized

At this stage, check the Quectel Pi display and approve the USB debugging prompt:

Allow USB debugging?

Select:

Allow

to authorize the host PC.


Case 2: Device Shows “device”

Once USB debugging is authorized, the device should appear as:

List of devices attached
xxxxxxxxxxxx    device

ADB communication is now fully operational.

You can access the device using:

adb shell

Additional Verification

To confirm that the Linux host detects the Quectel Pi correctly:

lsusb

Example output:

Bus 001 Device 005: ID 05c6:902d Qualcomm Device

You can also verify that the udev rules were loaded successfully:

udevadm test /sys/class/usb_device/<device>

Conclusion

The “insufficient permissions” error is typically caused by missing or incomplete udev rules on the Linux host rather than an issue with the Quectel Pi itself.

Installing the generic Android udev package resolves the issue in most cases. If the problem persists, adding the custom Qualcomm and ADB udev rules described above will allow Linux users to access the device without requiring root privileges.

After the rules are applied and USB debugging is authorized, normal ADB operations such as:

adb devices
adb shell
adb push
adb pull

can be used successfully.