Android e Udev
Per far riconoscere il nostro smartphone Android alla nostra Linux box (ad esempio per utilizzare
adb
o trasferire i file via protocollo MTP) è necessario creare una regola ad-hoc di udev.
Recuperiamo le informazioni del dispositivo
Per permettere ad udev di riconoscere correttamente il nostro smartphone è necessario recuperare il vendor-id.
Attacchiamo il nostro smartphone alla presa USB e da terminale digidiamo lsusb
per elencare i dispositivi USB connessi:
# lsusb [...] Bus 002 Device 006: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1] [...]
Dalla prova effettuata con il mio smartphone il vendor-id è il 04e8
ovvero della Samsung.
Creiamo la regola
Adesso che abbiamo il vendor-id possiamo creare la regola udev in questo modo.
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0664", GROUP="plugdev"
Per comodita più in basso riporto la regola udev per tutti i vendor che utilizzano Android.
Con utente root
, apriamo il nostro editor di testo preferito e copiamo la regola udev qui sotto nella directory /etc/udev/rules.d
:
- 51-android.rules
#Acer SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0664", GROUP="plugdev" #ASUS SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0664", GROUP="plugdev" #Dell SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0664", GROUP="plugdev" #Foxconn SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0664", GROUP="plugdev" #Fujitsu & Fujitsu Toshiba SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0664", GROUP="plugdev" #Garmin-Asus SUBSYSTEM=="usb", ATTR{idVendor}=="091e", MODE="0664", GROUP="plugdev" #Google SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0664", GROUP="plugdev" #Haier SUBSYSTEM=="usb", ATTR{idVendor}=="201e", MODE="0664", GROUP="plugdev" #Hisense SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0664", GROUP="plugdev" #HTC SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0664", GROUP="plugdev" #Huawei SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0664", GROUP="plugdev" #K-Touch SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0664", GROUP="plugdev" #KT Tech SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0664", GROUP="plugdev" #Kyocera SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0664", GROUP="plugdev" #Lenovo SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0664", GROUP="plugdev" #LG SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0664", GROUP="plugdev" #Motorola SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev" #MTK SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0664", GROUP="plugdev" #NEC SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0664", GROUP="plugdev" #Nook SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0664", GROUP="plugdev" #Nvidia SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0664", GROUP="plugdev" #OTGV SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0664", GROUP="plugdev" #Pantech SUBSYSTEM=="usb", ATTR{idVendor}=="10a9", MODE="0664", GROUP="plugdev" #Pegatron SUBSYSTEM=="usb", ATTR{idVendor}=="1d4d", MODE="0664", GROUP="plugdev" #Philips SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0664", GROUP="plugdev" #PMC-Sierra SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0664", GROUP="plugdev" #Qualcomm SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0664", GROUP="plugdev" #SK Telesys SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0664", GROUP="plugdev" #Samsung SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0664", GROUP="plugdev" #Sharp SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0664", GROUP="plugdev" #Sony SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0664", GROUP="plugdev" #Sony Ericsson SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0664", GROUP="plugdev" #Teleepoch SUBSYSTEM=="usb", ATTR{idVendor}=="2340", MODE="0664", GROUP="plugdev" #Toshiba SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0664", GROUP="plugdev" #ZTE SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0664", GROUP="plugdev"
Dopo aver creato la regola assicuriamoci che abbia i permessi giusti:
# chmod 644 /etc/udev/rules.d/51-android.rules
Ricarichiamo le regole udev:
# udevadm control --reload-rules
Come ultimo passo è necessario che l'utente appartenga al gruppo plugdev
:
# usermod -aG plugdev <user>
Ri-logghiamoci, ed ora possiamo accedere via MTP ai file presenti nel nostro smartphone ed utilizzare adb
senza problemi.
Per maggiori informazioni
- Android Developer: USB VendorID - http://developer.android.com/tools/device.html#VendorIds
- Cyanogenmod: UDEV - http://wiki.cyanogenmod.org/w/UDEV