我使用的發行版是Gentoo,fastboot無法刷入Android手機,永遠都卡在那邊,換了另一台Gentoo電腦都有一樣問題,可是以前用Ubuntu不會這樣呀。
使用fastboot devices
、fastboot getvar all
指令皆有回傳結果,但到了刷入boot.img的環節,fastboot flash boot
就卡在sending boot.img...
了!要不然就是unknown command
的錯誤,其餘牽涉刷入的操作也是如此。
在 Can not use fastboot on linux - XDA Forums一文中看到使用Arch Linux的用戶也有一樣問題,結果我按照他的建議真的解決了…welll,以下是我的除錯之路。
1. 手動建立udev rules#
這個方法無法解決根本問題,但是將手機加入udev rules之後打fastboot就不需要root權限了。
- 按照
Arch Linux Wiki,在手機進入fastboot後,輸入
lsusb
應該會看到手機的硬體ID:
# VENDOR ID為18d1,PRODUCT ID為d00d
Bus 001 Device 103: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
- 編輯規則
/etc/udev/rules.d/51-android.rules
,輸入以下內容。注意有些手機進入fastboot後VENDOR ID會變化,因此要額外多寫三行。
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", MODE="0660", GROUP="adbusers", TAG+="uaccess"
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", ATTR{idProduct}=="[PRODUCT ID]", SYMLINK+="android_adb"
SUBSYSTEM=="usb", ATTR{idVendor}=="[VENDOR ID]", ATTR{idProduct}=="[PRODUCT ID]", SYMLINK+="android_fastboot"
- 重新載入udev rules。
sudo udevadm control --reload
sudo udevadm trigger
2. 改用Google官方發表的fastboot#
雖然各大發行版有提供ADB和Fastboot的套件,不過還是可以試試Google官方釋出的版本,因為版本不一致可能也會導致錯誤。
到 Android官網下載Linux版的SDK Platform Tools,解壓縮,在該目錄直接執行fastboot:
./fastboot devices
3. 將手機插到USB擴充埠#
對,這個就是我解決fastboot偵測不到手機的最終解方。
電腦的孔都是USB 3.0,我將手機插上USB 2.0的擴充埠(USB hub),再把它插到電腦上。Voila!fastboot flash
指令總算有反應了。