Это вызвано ошибкой регрессии в Startup Disk Creator, которая превратилась в создателя CD-ROM. С 16 апреля они записывали USB-накопитель как CD-ROM iso9660 вместо USB-накопителя. См. Мой ответ здесь для исправления.
Ошибка загрузки блока запуска автозапуска USB
Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.
Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.
Найдите ваше устройство в lsusb
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink)
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Точка интереса в этом случае:
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Проверьте соответствующий файл устройства
$ ls -l /dev/bus/usb/001/006
Вероятно, вы увидите что-то вроде
crw-rw-r-- 1 root root 189, 5 Sep 8 21:47 /dev/bus/usb/001/006
Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.
Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules
- для добавления устройства в группу plugdev
, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id
)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660",
GROUP="plugdev", SYMLINK+="android%n"
** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).
Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:
$ adb devices
List of devices attached
YC873P0G device
Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik
Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb
с консоли.
Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.
Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.
Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.
Сообщество GitHub поддерживает udev-rules
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Это самый полный список правил udev, который я видел до сих пор, даже больше, чем рекомендуемый в настоящий момент sudo apt-get install android-tools-adb
в официальной документации , попробуйте.
Пожалуйста, НЕ ИСПОЛЬЗУЙТЕ решения, предлагающие использовать sudo
(sudo adb start-server
)! Это запустить adb как root (administrator), и он НЕ должен работать так! Это обходное решение BAD!
Все, что работает от имени root, может делать что-либо в вашей системе, если оно создает или изменяет файл, может изменить его разрешение, которое будет использоваться только root. Опять же, DO NOT!
Правильная вещь - настроить вашу систему, чтобы ПОЛЬЗОВАТЕЛЬ имел разрешение, проверил это руководство , я написал о том, как это сделать правильно .
Вам необходимо предоставить разрешение на Android-устройство. Перейдите в Настройки> Параметры разработчика. Попробуйте отключить отладку Usb и снова включить его. Удалите кабель и снова подключите его. Также попробуйте удалить все сохраненные авторизации из параметров разработчика. Теперь он должен запросить разрешение на отладку с помощью подсказки на вашем телефоне. Примите это.
Перейдите в Настройки >> Обслуживание >> Хранение. Затем проверьте меню верхнего левого меню и щелкните по USB-соединению компьютера, затем переключитесь на медиа-устройство (MTP).
Я не знаю, почему это работает, но это единственное решение, которое сработало для меня
. Найдите, где работает adb (если вы похожи на меня, у вас установлено несколько версий). Имейте в виду, что такие инструменты, как реакция native, могут решить использовать случайные другие версии, чтобы сделать вашу жизнь сложнее. Для меня это ~/Android/Sdk/platform-tools/adb
. Итак, я запустил:
sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb
Android-инструменты очень раздражают.
Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.
Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.
Найдите ваше устройство в lsusb
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink)
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Точка интереса в этом случае:
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Проверьте соответствующий файл устройства
$ ls -l /dev/bus/usb/001/006
Вероятно, вы увидите что-то вроде
crw-rw-r-- 1 root root 189, 5 Sep 8 21:47 /dev/bus/usb/001/006
Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.
Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules
- для добавления устройства в группу plugdev
, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id
)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660",
GROUP="plugdev", SYMLINK+="android%n"
** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).
Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:
$ adb devices
List of devices attached
YC873P0G device
Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik
Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb
с консоли.
Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.
Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.
Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.
Сообщество GitHub поддерживает udev-rules
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Это самый полный список правил udev, который я видел до сих пор, даже больше, чем рекомендуемый в настоящий момент sudo apt-get install android-tools-adb
в официальной документации , попробуйте.
Пожалуйста, НЕ ИСПОЛЬЗУЙТЕ решения, предлагающие использовать sudo
(sudo adb start-server
)! Это запустить adb как root (administrator), и он НЕ должен работать так! Это обходное решение BAD!
Все, что работает от имени root, может делать что-либо в вашей системе, если оно создает или изменяет файл, может изменить его разрешение, которое будет использоваться только root. Опять же, DO NOT!
Правильная вещь - настроить вашу систему, чтобы ПОЛЬЗОВАТЕЛЬ имел разрешение, проверил это руководство , я написал о том, как это сделать правильно .
Вам необходимо предоставить разрешение на Android-устройство. Перейдите в Настройки> Параметры разработчика. Попробуйте отключить отладку Usb и снова включить его. Удалите кабель и снова подключите его. Также попробуйте удалить все сохраненные авторизации из параметров разработчика. Теперь он должен запросить разрешение на отладку с помощью подсказки на вашем телефоне. Примите это.
Перейдите в Настройки >> Обслуживание >> Хранение. Затем проверьте меню верхнего левого меню и щелкните по USB-соединению компьютера, затем переключитесь на медиа-устройство (MTP).
Я не знаю, почему это работает, но это единственное решение, которое сработало для меня
. Найдите, где работает adb (если вы похожи на меня, у вас установлено несколько версий). Имейте в виду, что такие инструменты, как реакция native, могут решить использовать случайные другие версии, чтобы сделать вашу жизнь сложнее. Для меня это ~/Android/Sdk/platform-tools/adb
. Итак, я запустил:
sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb
Android-инструменты очень раздражают.
Была такая же проблема. Убедитесь, что режим USB устройства NOT только разрешил его.
Скорее всего, udev неправильно добавляет ваше устройство. У меня тоже была эта проблема & amp; натолкнулось на относительно простое решение.
Найдите ваше устройство в lsusb
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp.
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink)
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Точка интереса в этом случае:
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Проверьте соответствующий файл устройства
$ ls -l /dev/bus/usb/001/006
Вероятно, вы увидите что-то вроде
crw-rw-r-- 1 root root 189, 5 Sep 8 21:47 /dev/bus/usb/001/006
Это означает, что файл устройства будет принадлежать пользователю root и корневому файлу группы, поэтому adb может получить к нему доступ как root, но а не как ваш стандартный пользователь.
Это можно решить, создав новое правило udev - я использовал /etc/udev/rules.d/51-android.rules
- для добавления устройства в группу plugdev
, которую adb уже предполагает, что вы являетесь членом (вы должны быть, проверьте с помощью id
)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660",
GROUP="plugdev", SYMLINK+="android%n"
** Не забудьте заменить ATTR {idProduct} == "4ee7" на свой собственный идентификатор продукта, который вы обнаружили на первом шаге. ** (Если ваш поставщик не является Google Inc., также замените идентификатор поставщика с номером до двоеточия в lsusb).
Теперь просто отключите устройство от сети и подключите его обратно (udev должен автоматически отвечать на новый файл) и tadaa:
$ adb devices
List of devices attached
YC873P0G device
Источник: Добавление правил udev для USB отладка устройств Android - Janos Gyerik
Чтобы расширить ответ Sumeet Deshmukh, его подход действительно работает вообще - если вы хотите использовать команду adb
с консоли.
Android Studio, однако, по-видимому, начинает собственный сервер adb, убивая наша. Это означает, что после того, как мы убили / запустили сервер с помощью sudo, Studio перезапустит его, что приведет к исходной ситуации - никаких разрешений.
Решение состоит в том, чтобы сначала запустить Studio, а затем выполнить запуск / останов сервер. Сделав это, мне удалось заставить Nexus 5X отображаться в качестве допустимой цели запуска в Studio.
Это не лучшая ситуация (необходимость запуска команд при каждом запуске Studio), но это трюк быстро и грязно. Если я найду более постоянное решение, я обновлю этот ответ.
Изменение режима USB с Телефон сделал трюк для меня. (Я установил его в Передача файлов .)
Это не сработало для меня после того, как я добавил себя в группу plugdev
и перезагрузил машину, чтобы убедиться, что изменение вступает в силу во всех сеансах моей оболочки. Затем я обнаружил, что в файле /etc/udev/rules.d
нет файла 51-android.rules
, и для устранения проблемы пришлось сделать следующее:
# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart
Мне также пришлось отключить и снова подключить мое Android-устройство.