본문 바로가기

학습/잡다

usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions) - ADB Error Fix

제목 : usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions) 대응

문제 원인 : adb 가 root로 실행되지 않아서 발생한 문제
일반 사용자 계정(ksson)으로 adb를 실행시켜서 usb 장치의 접근을 시도할때 os의 usb 장치 (인터페이스) 접근 권한이 없어서 발생한 문제
관리자 계정(root)으로 adb를 실행 시킨 후 사용자 계정으로 adb 명령을 실행할 수 있다.

예시 : 대응 로그
[ksson@localhost rules.d]$ adb devices
* daemon not running; starting now at tcp:5037
ADB server didn't ACK
Full server startup log: /tmp/adb.1000.log
Server had pid: 15948
--- adb starting (pid 15948) ---
10-15 14:34:00.746 15948 15948 I adb     : main.cpp:63 Android Debug Bridge version 1.0.41
10-15 14:34:00.746 15948 15948 I adb     : main.cpp:63 Version 35.0.2-12147458
10-15 14:34:00.746 15948 15948 I adb     : main.cpp:63 Installed as /usr/local/platform-tools/adb
10-15 14:34:00.746 15948 15948 I adb     : main.cpp:63 Running on Linux 5.14.0-427.33.1.el9_4.x86_64 (x86_64)
10-15 14:34:00.746 15948 15948 I adb     : main.cpp:63
10-15 14:34:00.747 15948 15948 I adb     : auth.cpp:416 adb_auth_init...
10-15 14:34:00.747 15948 15948 I adb     : auth.cpp:152 loaded new key from '/home/ksson/.android/adbkey' with fingerprint 80A0E51E821FE4B790A9A9552C69F08F E9BBF37EA390A02F7A61D71FA9A4B56F
10-15 14:34:00.747 15948 15948 I adb     : auth.cpp:391 adb_auth_inotify_init...
10-15 14:34:00.748 15948 15948 I adb     : udp_socket.cpp:170 AdbUdpSocket fd=12
10-15 14:34:00.748 15948 15948 I adb     : udp_socket.cpp:170 AdbUdpSocket fd=15
10-15 14:34:00.748 15948 15948 I adb     : udp_socket.cpp:274 SetMulticastOutboundInterface for index=3
10-15 14:34:00.748 15948 15948 I adb     : udp_socket.cpp:533 bind endpoint=0.0.0.0:5353
10-15 14:34:00.748 15948 15948 I adb     : udp_socket.cpp:274 SetMulticastOutboundInterface for index=3
10-15 14:34:00.749 15948 15948 I adb     : udp_socket.cpp:558 bind endpoint=[0000:0000:0000:0000:0000:0000:0000:0000]:5353 scope_id=0
10-15 14:34:01.747 15948 15948 E adb     : usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions)
10-15 14:34:01.747 15948 15948 I adb     : transport.cpp:1153 R3CN90RWT2: connection terminated: failed to open device: Access denied (insufficient permissi ons)

* failed to start daemon
adb: failed to check server version: cannot connect to daemon
[ksson@localhost rules.d]$ su
암호:
[root@localhost rules.d]# echo $PATH
/root/.local/bin:/root/bin:/home/ksson/.local/bin:/home/ksson/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/platform-tools:/usr/local/p latform-tools:/usr/local/platform-tools:/usr/local/android-platform-tools
[root@localhost rules.d]# adb version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as /usr/local/platform-tools/adb
Running on Linux 5.14.0-427.33.1.el9_4.x86_64 (x86_64)
[root@localhost rules.d]# adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
R3CN90RWT2      device

[root@localhost rules.d]# crontab -l
no crontab for root
[root@localhost rules.d]# exit

[ksson@localhost rules.d]# adb devices
List of devices attached
24c1b5d11111        device
R3CN1111111      device
R3CT1111111     device
R3CT1111111     device

 

 

-- 영문(+정성)

 

Issue Summary:
The error usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions) occurs when ADB (Android Debug Bridge) is not run with root privileges. In this case, the non-root user (e.g., ksson) tried to access USB devices without the necessary permissions, leading to this failure. To resolve the issue, you need to start the ADB server with root privileges, allowing the non-root user to subsequently run ADB commands.

Root Cause:
ADB requires access to USB devices, which in many Linux systems, is restricted to users with root or specific privileges. When a regular user attempts to execute ADB without proper permissions, it leads to the "Access denied" error, preventing the ADB daemon from running and communicating with the Android device.

 

Solution:
Step 1: Run ADB as Root To start the ADB server with the appropriate permissions, execute the following commands as a root user.

Example Log:
[ksson@localhost rules.d]$ adb devices
* daemon not running; starting now at tcp:5037
ADB server didn't ACK
Full server startup log: /tmp/adb.1000.log
Server had pid: 15948
--- adb starting (pid 15948) ---
10-15 14:34:00.746 15948 15948 I adb     : Android Debug Bridge version 1.0.41
10-15 14:34:00.746 15948 15948 I adb     : Version 35.0.2-12147458
10-15 14:34:00.746 15948 15948 I adb     : Installed as /usr/local/platform-tools/adb
10-15 14:34:01.747 15948 15948 E adb     : usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions)



Step 2: Switch to Root User Use su to switch to the root user.
[ksson@localhost rules.d]$ su
Password:
[root@localhost rules.d]#

Step 3: Start the ADB Server as Root Once you’re logged in as the root user, start the ADB daemon with root permissions to bypass the USB permission restrictions.
[root@localhost rules.d]# adb version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as /usr/local/platform-tools/adb

Step 4: Run ADB Devices Start the ADB daemon and list connected devices.
[root@localhost rules.d]# adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
R3CN90RWT2      device

Step 5: Verify Device Access After starting the daemon as root, check that the devices are correctly listed. You should now see all connected devices.
[ksson@localhost rules.d]# adb devices
List of devices attached
24c1b5d4111111    device
R3CN111111          device
R3CT1111111        device
R3CT11111111        device


Conclusion:
By starting the ADB server with root privileges, you ensure that the daemon can access USB devices properly. After that, you can execute ADB commands as a regular user without encountering the Access denied issue.