Hey Lemmy!
This is a solution for fastboot not listing an Android device.
my device specs
my device specs
- computer OS: Linux Mint 21.3
- computer architecture: x86_64
- USB cable: probably USB 2.0, but I’m not sure. It was not the one that came with my phone
- phone model: Xiaomi MI 6X (wayne)
- phone OS: MIUI 12
problem description
problem description
While my phone was in fastboot mode, I couldn’t connect to it using the Linux fastboot
command.
-
fastboot devices
showed nothing:me@computer:~$ fastboot devices me@computer:~$
-
lsusb
listed my phone if it was in normal system mode. If I was in fastboot,lsusb
does not list my phone. -
adb
worked fine—but only if I ran it as root. If I started it as a normal user, it showed this error:me@computer:~$ adb devices List of devices attached n22i3nf0 no permissions (user in plugdev group; are your udev rules wrong?); see [http://developer.android.com/tools/device.html] me@computer:~$
I had to do these steps to make
adb devices
list it properly:me@computer:~$ adb kill-server me@computer:~$ sudo adb start-server
-
other phones were working fine with both adb and fastboot.
solution
solution
I had to add my phone’s device and vendor ID to /etc/udev/rules.d/51-android.rules
. My other phones were added already, that’s why fastboot worked with them, but this phone wasn’t added, so it did not work. This solution is also the standard solve for the “no permissions (user in plugdev group)” error, so if the below guide doesn’t work, try someone else’s guide.
The below text is from this gist, with some edits.
- First, we are going to determine your phone’s vendor ID and device ID. Reboot your phone into normal system mode. (we can’t get the IDs in fastboot mode because
lsusb
doesn’t show the device.) - Unplug your device from the computer and type
lsusb
in the terminal. You should get an output similar to this:
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 033: ID 0cf3:3004 Atheros Communications, Inc. AR3012 Bluetooth 4.0
Bus 003 Device 047: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1
Bus 003 Device 002: ID 174f:148d Syntek
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
- Now plug your phone into the computer and run the command again, the output should be different:
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 003 Device 033: ID 0cf3:3004 Atheros Communications, Inc. AR3012 Bluetooth 4.0
Bus 003 Device 047: ID 045e:07fd Microsoft Corp. Nano Transceiver 1.1
Bus 003 Device 002: ID 174f:148d Syntek
Bus 003 Device 060: ID 05c6:6765 Qualcomm, Inc.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
-
Take a note of the new output ID. For me it’s
Bus 003 Device 060: ID 05c6:6765 Qualcomm, Inc.
-
record the characters after
ID
(in this case, it’s05c6:6765
). The four characters before the colon are the vendor ID and the four characters after are the device ID. -
edit the file
/etc/udev/rules.d/51-android.rules
and add this:SUBSYSTEM=="usb", ATTR{idVendor}=="vendor_id", ATTR{idProduct}=="device_id", MODE="0666", GROUP="plugdev"
make sure to replace
vendor_id
with your vendor ID anddevice_id
with your device ID. -
Save and close the file.
-
Now in the terminal, run this, which makes the file readable by all users. I don’t know why this is necessary.
sudo chmod a+r /etc/udev/rules.d/51-android.rules
-
restart your computer. This is what I did to make it work, but if you don’t want to, other methods I’ve seen are:
sudo systemctl restart udev
- or:
sudo udevadm control --reload-rules sudo udevadm trigger
-
Now you can try the command
fastboot devices
and it should successfully list your device as one of the entries.
still doesn’t work?
Other solutions which I have seen:
- use a different USB cable
- use a different USB port
- use a different computer
- use a different OS: switch from Linux to Windows, or vice versa, or use a different version of Ubuntu.
Good luck!
Turn off fastboot.