Page 2 of 2 FirstFirst 12
Results 16 to 19 of 19

Thread: wl500gP + BlueTooth

  1. #16
    Join Date
    Mar 2008
    Location
    Moscow, Zelenograd
    Posts
    28

    Авто-запуск USB-устройства (Bluetooth)

    А можно ли в прошивке Олега произвести настройку таким образом, чтобы при втыкании некого USB устройства автоматически загружались его модули ядра и запускался некий скрипт?
    Конкретно, хотелось бы чтобы когда я втыкаю USB-Bluetooth модуль, автоматически поднимался Bluez и скрипт из /opt/etc/init.d который мне сейчас вручную запускать приходится...
    Знаю что в обычном линуксе это делается настройками modprobe, а тут как?
    (WL-500gP, 1.9.2.7-9)

  2. #17
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805

  3. #18
    Join Date
    Mar 2008
    Location
    Moscow, Zelenograd
    Posts
    28
    О! спасибо, все вроде понятно, буду пробовать.
    А то я уж было собрался сканить /proc/bus/usb/devices по крону

  4. #19
    Join Date
    Mar 2008
    Location
    Moscow, Zelenograd
    Posts
    28
    Все получилось, привожу свои версии скрипта автостарта для Bluetooth (если кому понадобится).
    Из-за странного поведения hotplug для моего Bluetooth-донгла, пришлось повозиться - потому что скрипт hotplug по непонятной мне причине запускается 3 раза подряд, и возникает 3 конкурирующих процесса. Для борьбы с этим пришлось добавить случайную задержку и флаг.

    Итак, делаем сначала как сказано в писании на 2 поста выше
    то есть в /usr/local/sbin/pre-boot добавляем
    Code:
    echo /usr/local/sbin/hotplug > /proc/sys/kernel/hotplug
    Эту команду заодно можно выполнить сразу, чтобы активировать hotplug скрипт без перезагрузки.

    Далее создаем исполняемый файл скрипта /usr/local/sbin/hotplug следующего содержания (моя версия):

    Code:
    #!/bin/sh
    
    logger -t hotplug "Processing hotplug for '$*': called '${ACTION}' for device '${PRODUCT}'" 
    
    BT_DONGLE="a12/1/525" # CSR Bluetooth dongle
    
    if [ "${PRODUCT}" = "${BT_DONGLE}" ] ; then 
    	BT="bluetooth"
    	INIT_SCRIPT="/opt/etc/${BT}/${BT}-hotplug"
    	STARTED="/tmp/var/state/${BT}.started"
    	# add random delay 0...2s to avoid concurrency
    	/bin/usleep `/opt/bin/date +%N | awk '{srand(substr($0,3,4)); print int(rand()*2000000)}'`
    	if [ "${ACTION}" = "add" -a ! -e $STARTED ] ; then
    		touch $STARTED 
    		if [ -x ${INIT_SCRIPT} ] ; then ${INIT_SCRIPT} start ; fi  
    	elif [ "${ACTION}" = "remove" -a -e $STARTED ] ; then 
    		rm -f $STARTED
    		if [ -x ${INIT_SCRIPT} ] ; then ${INIT_SCRIPT} stop ; fi  
    	fi
    else
    	# use base hotplug
    	/sbin/hotplug
    fi
    Поначалу идентификатор девайса нам не известен, мы его узнаем из лога как только первый раз попытаемся воткнуть Bt-донгл в USB.
    Итак, втыкаем, смотрим лог, видим что то вроде:
    Apr 17 04:05:38 hotplug: Processing hotplug for 'usb': called 'add' for device 'a12/1/525'
    Копируем идентификатор из лога и вставляем в скрипт (переменная BT_DONGLE)

    Сохраняем флеш.

    Скрипт (исполняемый) для запуска модулей и служб размещаем в /opt/etc/bluetooth, имя файла bluetooth-hotplug. Здесь привожу мой вариант который используется для коннекта с телефона Nokia 6120 по Gnubox, и может быть изменен по необходимости:

    Code:
    #!/bin/sh
    
    # uncomment to disable
    #exit 0
    
    PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin
    LOG="/usr/bin/logger -t bluetooth-hotplug"
    
    if [ -z "$1" ] ; then
        rc="usage"
    else
        rc="$1"
    fi
    
    case "$rc" in
     start)
    	$LOG "starting modules"
    	modprobe bluez
    	modprobe hci_usb
    	modprobe l2cap
    	modprobe rfcomm
    	modprobe sco
    	sleep 1 
    	$LOG "starting services"
    	/opt/sbin/hcid -f /opt/etc/bluetooth/hcid.conf 2>&1 |$LOG
    	/opt/sbin/hciconfig hci0 up 2>&1 |$LOG
    	/opt/sbin/sdpd 2>&1 |$LOG
    	/opt/bin/rfcomm -f /opt/etc/bluetooth/rfcomm.conf bind all 2>&1 |$LOG
    	$LOG "starting Gnubox network for Nokia"
    	/opt/bin/sdptool add --channel=2 SP 2>&1 |$LOG
    	/opt/bin/dund --listen --channel 2 file /opt/etc/ppp/nokia-gnubox.ppp 2>&1 |$LOG
    	;;
     stop)
    	$LOG "stopping services"
    	killall dund
    	killall sdpd
    	killall hcid
    	$LOG "stopping modiles"
    	/sbin/rmmod sco
    	/sbin/rmmod rfcomm
    	/sbin/rmmod l2cap
    	/sbin/rmmod hci_usb
    	/sbin/rmmod bluez
    	;;
     *)  
    	echo "Usage: $0 (start|stop|usage)"
    	;;
    esac
    Важно: служба dbus должна быть установлена и запущена предварительно, запуск ее внутри этого скрипта нестабилен (загружает проц на 100%, почему - неясно).

    Про настройку Bluez, rfcomm, ppp и GnuBox отсылаю к первоисточнику:
    http://wl500g.info/showthread.php?t=10818
    Last edited by xkir; 17-04-2008 at 12:29. Reason: скрипты отлажены

Page 2 of 2 FirstFirst 12

Similar Threads

  1. ПК - WL500gP - ASDL_ROUTER, без NAT
    By Silkmann in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 5
    Last Post: 20-05-2007, 10:37
  2. WL500gP achter modemrouter internet probleem
    By rinusr in forum Dutch Discussion - Nederlands
    Replies: 4
    Last Post: 01-04-2007, 12:49
  3. bluez Bluetooth?
    By Googol in forum WL-500g Q&A
    Replies: 2
    Last Post: 22-01-2007, 12:59

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •