# hotplug usb

## bobdva

Захотелось мне прикрутить автоподключение iPAQ к gentoo,

прочитав 

  Connecting to the PocketPC  и  SynCE - Linux USB HOWTO  имею:

если из-под root'а руками пускать synce-serial-start (а под пользователем dccm) - то всё шоколадно. 

Хочется, чтобы запуск synce-serial-start происходил автоматически, для чего и задумал попробовать hotplug.

Далее так:

```

$ cat /etc/hotplug/usb.usermap 

# usb module         match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info

synce   0x0003  0x03f0  0x1016  0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00

```

/etc/hotplug/usb/synce

но чуть-чуть поправил, чтобы ещё 2>> /var/log/synce.err писал:

```

$ cat /var/log/synce.err 

/usr/bin/synce-serial-start: line 65: modprobe: command not found

synce-serial-start was unable to load the ppp_async kernel module:

Please add this module to your Linux kernel before running this script again.

```

если ещё в скрипте насильно дописать 

```

PATH=/sbin:$PATH

export PATH

```

то уже ругается на 

```

/usr/sbin/pppd: In file /etc/ppp/peers/synce-device: unrecognized option '/dev/tts/USB0'

synce-serial-start was unable to start the PPP daemon!

```

Кто знает , помогите !

И ещё, как автоматически мантировать usb stick'и ?

----------

## bobdva

 *bobdva wrote:*   

>  ругается на 
> 
> ```
> 
> /usr/sbin/pppd: In file /etc/ppp/peers/synce-device: unrecognized option '/dev/tts/USB0'
> ...

 

хм... очень странно, но при запуске /etc/hotplug/usb/synce устройство /dev/tts/USB0 (через которое подключается iPAQ) ещё не появилось...

стоит udev

----------

## bobdva

неужели никто не пользовался hotplug'ом совместно с udev  :Question: 

----------

## r.vitaliy

у меня все сделано проще (как раз для iPAQ'а):

в /etc/dev.d/ttyUSB0 я создал файл pda.dev слкдующего содержания:

#!/bin/sh

/usr/bin/synce-serial-start

и теперь при появлении в системе устройства ttyUSB0 автоматически выполняется этот скрипт.

еще установлен synce-kde, так что в kde все работает вообще на ура.

----------

## bobdva

 *r.vitaliy wrote:*   

> у меня все сделано проще (как раз для iPAQ'а):
> 
> в /etc/dev.d/ttyUSB0 я создал файл pda.dev слкдующего содержания:
> 
> #!/bin/sh
> ...

 

а на основании чего он должен вызыватся ? кем ?

```

# cat /etc/dev.d/ttsUSB0/pda.dev 

#!/bin/sh

echo $0>> /var/log/ttyUSB0.log

date 1>> /var/log/ttyUSB0.log

/usr/bin/synce-serial-start 1>> /var/log/ttyUSB0.log 2>> /var/log/ttyUSB0.err

```

и ничего... 

кстати, у меня создаётся уст-во /dev/tts/USB0 и udev

----------

## bobdva

 *bobdva wrote:*   

>  *r.vitaliy wrote:*   у меня все сделано проще (как раз для iPAQ'а):
> 
> в /etc/dev.d/ttyUSB0 я создал файл pda.dev слкдующего содержания:
> 
> #!/bin/sh
> ...

 

так попробовал автомаунтить flash'ку - работает (у меня в udev'е правило, все /dev/sd[abcd]1 отображать как /dev/flash)   :Very Happy: 

----------

## bobdva

 *bobdva wrote:*   

>  *r.vitaliy wrote:*   у меня все сделано проще (как раз для iPAQ'а):
> 
> в /etc/dev.d/ttyUSB0 я создал файл pda.dev слкдующего содержания:
> 
> #!/bin/sh
> ...

 

ибо нужно положить в /etc/dev.d/tts/USB0/pda.dev

НО! ему нужны ещё модули (которые уже загружены), а при запуске в PATH нет /sbin и соот-но не может выполнить modprobe (но хотя зачем ? модули уже загружены)

----------

## r.vitaliy

вот честно - я один раз сделал и забыл

udev у меня версии 056; в udev.rules записано KERNEL="ttyUSB0"        NAME="%k", MODE="0666"

по документации (да, я иногда ее читаю  :Wink: ), в /etc/dev.d находятся папки с именами устройств, которые необходимо обслуживать скриптами. таким образом, при подключении моего ipaq (по USB) создается устройство ttyUSB0, поэтому в папку ttyUSB0 я положил скрипт (который должен иметь расширение .dev) для включения synce-serial

вот и вся премудрость

никакие модули специально (вручную) не загружаются, но при компиляции ядра было указано на создание модуля ipaq где-то приблизительно так: 

CONFIG_USB_SERIAL=m

CONFIG_USB_SERIAL_GENERIC=y

CONFIG_USB_SERIAL_IPAQ=m

ах, да! еще до запуска synce-serial-start один раз надо сконфигурировать с помощью synce-serial-config

----------

## bobdva

 *r.vitaliy wrote:*   

> вот честно - я один раз сделал и забыл
> 
> udev у меня версии 056; в udev.rules записано KERNEL="ttyUSB0"        NAME="%k", MODE="0666"
> 
> по документации (да, я иногда ее читаю ), в /etc/dev.d находятся папки с именами устройств, которые необходимо обслуживать скриптами. таким образом, при подключении моего ipaq (по USB) создается устройство ttyUSB0, поэтому в папку ttyUSB0 я положил скрипт (который должен иметь расширение .dev) для включения synce-serial
> ...

 

в ядре CONFIG_USB_SERIAL_GENERIC=m

документацию тоже читал, но про dev.d как-то не довелось... видать не там искал

synce-serial-config сделан давно

----------

## r.vitaliy

если поможет, то вот модули, которые загружаются после подключения девайса:

```

Module                  Size  Used by

ppp_deflate             4864  1

zlib_deflate           21144  1 ppp_deflate

zlib_inflate           17088  1 ppp_deflate

bsd_comp                5376  0

ppp_async               8704  1

ppp_generic            19732  7 ppp_deflate,bsd_comp,ppp_async

slhc                    6208  1 ppp_generic

crc_ccitt               1728  1 ppp_async

ipaq                   30672  1

usbserial              26024  3 ipaq

```

----------

## bobdva

 *r.vitaliy wrote:*   

> если поможет, то вот модули, которые загружаются после подключения девайса:
> 
> ```
> 
> Module                  Size  Used by
> ...

 

я знаю, проблема в том, что когда выполняется скрипт PATH содержит только /bin:/usr/bin и всё - и поэтому не находит modprobe

покажи, что какой у тебя PATH во время выполнения скрипта

----------

## r.vitaliy

path: /sbin:/bin:/usr/sbin:/usr/bin

messages:

Oct 23 22:29:42 gentoo synce-serial-start: Executing '/usr/sbin/pppd call synce-device'

Oct 23 22:29:42 gentoo pppd[12537]: In file /etc/ppp/peers/synce-device: unrecognized option 'ttyUSB0'

Oct 23 22:29:57 gentoo usb 2-1: new full speed USB device using uhci_hcd and address 3

Oct 23 22:29:58 gentoo ipaq 2-1:1.0: PocketPC PDA converter detected

Oct 23 22:29:58 gentoo usb 2-1: PocketPC PDA converter now attached to ttyUSB0

Oct 23 22:30:03 gentoo synce-serial-start: Executing '/usr/sbin/pppd call synce-device'

Oct 23 22:30:03 gentoo pppd[12648]: pppd 2.4.2 started by root, uid 0

Oct 23 22:30:04 gentoo pppd[12648]: Serial connection established.

Oct 23 22:30:04 gentoo pppd[12648]: Using interface ppp0

Oct 23 22:30:04 gentoo pppd[12648]: Connect: ppp0 <--> /dev/ttyUSB0

Oct 23 22:30:04 gentoo pppd[12648]: local  IP address 192.168.131.102

Oct 23 22:30:04 gentoo pppd[12648]: remote IP address 192.168.131.201

----------

