Bug 6804

Summary: При извлечении USB устройства не запускается usermap-скрипт
Product: Sisyphus Reporter: Sir Raorn <raorn>
Component: hotplugAssignee: Anton Farygin <rider>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P1 CC: genix, mike, pilot, shrek, slava, sr
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 7085    
Bug Blocks:    

Description Sir Raorn 2005-05-10 20:09:51 MSD
Для поддержки IrDA/USB (реализуется при помощи usermap) необходимо выполнять
некоторую последователность действий при подключении устройства и при его
отключении.  Сейчас такой возможности не предусмотрено:

/etc/hotplug/usb.agent
...
case $ACTION in

add)
...
    for MAP in $MAP_USERMAP $HOTPLUG_DIR/usb/*.usermap
    do
...
    done
...
 ;;

remove)
    if [ -x $REMOVER ]; then
        $REMOVER
    fi
    rm -f $REMOVER

    ;;
...
Comment 1 Sir Raorn 2005-05-11 01:24:19 MSD
Кстати, за отмазку вполне может проканать указание как пользоваться $REMOVER'ом.
 Это как я понимаю наиболее прямой путь в данной ситуации.
Comment 2 Anton Farygin 2005-05-12 10:30:27 MSD
Как использовать REMOVER рассказано в комментариях usb.agent'а
Comment 3 Sir Raorn 2005-05-12 10:56:56 MSD
Это?

# This script then adds the variable:
#
#       REMOVER=/var/run/usb/<some string unique to $DEVICE>
#
# This is the path where the script would like to find a remover, if
# the target device needs one. This script is executed on remove if
# it is executable when the remove happens.

Насколько кошерно такое использование:

... do something useful
if [ -n "$REMOVER" ]; then
  rmscript=$(mktemp "${REMOVER}.XXXXXXXXXX")
  cat <<EOF > "$rmscript"
#!/bin/sh
... do something
EOF
  chmod 700 "$rmscript"
  mv -f "$rmscript" "$remover"
fi

Ещё вопрос - имеет ли смысл переменная ACTION в usermap скрипте?  Во всех
примерах подразумевается, что ACTION всегда add...
Comment 4 Anton Farygin 2005-05-12 11:19:39 MSD
Наверное где-то имеет.

Кстати, а зачем тебе нужно что-то делать в REMOVER ?
Comment 5 Sir Raorn 2005-05-12 11:22:12 MSD
> Кстати, а зачем тебе нужно что-то делать в REMOVER ?

Нужно убивать irattach (service irda stop).  Сам не дохнет...
Comment 6 Valery Inozemtsev 2005-05-12 11:25:38 MSD
Алексей, подожди заморачиваться. Мы тут с pilot@ посовещались, irdaX это же
сетевой интерфейс, дергается он через net.agent, поэтому для него надо делать
up\down в etcnet
Comment 7 Sir Raorn 2005-05-12 11:30:51 MSD
(In reply to comment #6)
> Алексей, подожди заморачиваться. Мы тут с pilot@ посовещались, irdaX это же
> сетевой интерфейс, дергается он через net.agent, поэтому для него надо делать
> up\down в etcnet

Он такой же сетевой, как tty.  /dev/ircommX (модуль ircomm-tty).

Как scmxx будет общаться с телефоном через сетевой интерфейс?
Comment 8 Valery Inozemtsev 2005-05-12 11:37:54 MSD
а ты включи для начала дебаг в хотплюе и подергай игду туда сюда, все увидишь. в
конце концов неважно чем он будет подниматься\опускаться, главное что бы
реализация была простая
Comment 9 Sir Raorn 2005-05-13 01:09:39 MSD
Ага, именно так.  Вызывается net.agent c нужным irdaX...

Как вариант - запускать irattach из net.agent через start-stop-daemon, пропатчив
первый на предмет создания уникальных пидфайлов (его вообще переписать бы надо
если честно).

Либо то же самое, но в etcnet.  Можно вообще всю поддержку irda вынести в etcnet.
Comment 10 Denis Ovsienko 2005-05-13 10:19:55 MSD
> Либо то же самое, но в etcnet.  Можно вообще всю поддержку irda вынести в etcnet.
... или в hotplug :) Хорошо.
Comment 11 Sir Raorn 2005-05-13 10:27:33 MSD
> ... или в hotplug :) Хорошо.

А что вообще нужно от интерфейса irdaX?  У меня дальше irattach и modprobe
ircomm-tty фантазия не идёт.  Обычно всё равно поверх него работает pppd, либо
как клиент либо как сервер...
Comment 12 Denis Ovsienko 2005-05-13 10:39:15 MSD
Не могу похвастаться более занятными применениями.
Comment 13 Anton Farygin 2005-05-13 12:16:47 MSD
Еще можно смонтировать содержимое сотового через OBEX.
Comment 14 Anton Farygin 2005-07-13 20:44:26 MSD
raorn, используй /etc/dev.d/ в udev-0.62, оно как раз для этих целей.