Правило Udev выполняется дважды, потому что Android-смартфон монтируется 2 раза

Мне нужна ваша помощь. :-) Во-первых, я хочу извинить за свой английский, я из Германии.

У меня есть сценарий Bash, который должен исполняться каждый раз, когда Android-телефон подключается через USB. Это делается моим правилом udev. Он работает, но есть большая проблема.

Немного больше. Мой скрипт Bash должен устанавливать приложения на всех подключенных Android-телефонах отдельно. Для этого я использую Android Debug Bridge (ADB) и режим USB-Debugging на устройстве Android. Каждый раз, когда вы подключаете телефон к USB-порту, вам сначала нужно разрешить подключение USB-отладки на телефоне для доступа к нему через ADB.

Как я уже сказал, это работает, но при подключении устройства смонтировано и попросите разрешить USB-отладку. Затем скрипт запускается и немедленно останавливается и ждет, потому что устройство отключает себя. Затем устройство снова подключится, снова попросит разрешить USB-отладку и вызывается второй экземпляр сценария bash, и теперь исполняются оба экземпляра скрипта.

Надеюсь, кто-то может мне помочь.

Вот какой-то код.

Правило UDEV

ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="24e3", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="10a9", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="1d4d", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="091e", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" RUN+="/usr/local/bin/tmp.sh $attr{serial}"
[d8 ] Правило UDEV

#!/bin/bash

echo /usr/local/bin/installApps.sh $1 | at now

installApps.sh вызвано через tmp.sh

#!/bin/bash

cd /home/android/Schreibtisch/Apps
adb -s $1 wait-for-device

for APK in $(ls *.apk);
do
    adb -s $1 install $APK
done

installApps.sh вызывается через tmp.sh [ ! d11] Вот мой вывод udevadm monitor

KERNEL[384.540419] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[384.659326] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
KERNEL[384.660123] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1 (usb)
KERNEL[384.660969] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1/tty/ttyACM0 (tty)
KERNEL[384.663343] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.2 (usb)
UDEV  [384.663375] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2 (usb)
KERNEL[384.663386] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.3 (usb)
UDEV  [384.669236] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0 (usb)
UDEV  [384.670955] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.3 (usb)
UDEV  [384.672776] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1 (usb)
UDEV  [384.674355] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.2 (usb)
UDEV  [384.690927] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.1/tty/ttyACM0 (tty)

. Выход этого никоим образом не отличается на моем втором USB-порту.

Редактировать 2:

Мне как-то удалось уменьшить ошибки. Но теперь есть несколько другая проблема, и я не знаю, поможет ли файл блокировки. Теперь почти на каждом 10-м устройстве не все приложения установлены. Я проверил в файле журнала, в чем проблема. Сообщение «Разрешить USB-отладка» отображается только один раз, но правило udev выполняется дважды в тот же момент за одну секунду. Но это происходит, как сказано только на каждом 10-м устройстве. Что может быть причиной этого и как я могу это предотвратить?

1
задан 2 July 2015 в 14:54

0 ответов

Другие вопросы по тегам:

Похожие вопросы: