From: matthieu castet <[EMAIL PROTECTED]>
Cyril Olivier MARTIN wrote:
En fait eagle-usb.usermap fait doublon avec
/lib/modules/<version-kernel>/modules.usbmap.
Je suppose que c'est l'installation du modules qui écrit ce fichier.
Après l'avoir supprimer, le script est lancé trois fois : LAST_CHAR vaut
successivement 1.0, 1.1 et 1.2 (le hub et les deux prises non ?).
tu oublis qu'au demarage c'est /etc/hotplug/usb.rc qui est lancer et ca
donne :
----------------------------------
for device in /sys/bus/usb/devices/[0-9]*; do
DEVPATH=${device#/sys/}
if [ -f $device/idVendor ]; then
PRODUCT="$(cat $device/idVendor)/$(cat
$device/idProduct)/$(cat $device/bcdDevice)"
if [ -f $device/bDeviceClass ]; then
TYPE="$((0x$(cat
$device/bDeviceClass)))/$((0x$(cat $device/bDeviceSubClass)))/$((0x$(cat
$device/bDeviceProtocol)))"
fi
# in case the device may not care about
$INTERFACE
/etc/hotplug/usb.agent
# try each interfaces if any (TYPE=0/* case
only?)
for intf in $device/[0-9]*; do
DEVPATH=${intf#/sys/}
if [ -f $intf/bInterfaceClass ]; then
# $INTERFACE will be updated in usb.agent
/etc/hotplug/usb.agent
fi
done
fi
done
--------------------------------
le resultat chez moi est en remplacant les appel a hotplug par des echo
$DEVPATH
bus/usb/devices/2-1
bus/usb/devices/2-1/2-1:1.0
bus/usb/devices/2-1/2-1:1.1
bus/usb/devices/2-1/2-1:1.2
d'ou les 2 passages dans le script : une fois avec LASTCHAR null et l'autre
avec :1.0
Oui c'est vrai.
J'ai passé rapidement cette partie du script car je ne l'exécute pas.
Je sors prématurement à cause de ce bout de code. Là je n'ai pas trop
compris, ils font une distinction entre cold plug et hot plug...
# synthesize hotplug events if we can
# we need (non-bash) programs to parse descriptors.
LISTER=`which usbmodules`
if [ "$LISTER" = "" -o ! -f /proc/bus/usb/devices ]; then
echo "** can't synthesize root hub events"
return
fi
Enfin c'est donc à cause de cela que je ne charge qu'une seule fois le dsp
(et que je n'attends sa synchronisation qu'une seule fois).
Pour résumer on a deux problèmes bien distincts :
1 - /etc/hotplug/usb/eagle-usb est appelé plusieurs fois (et c'est
normal), mais il semblerait qu'on l'appel trop de fois même si c'est sans
conséquence.
2 - Un test dans ce fichier doit nous assurer que l'on ne charge qu'une
seule fois le code dsp dans le modem.
Pour le second, si j'ai bien compris ce qu'a écrit Matthieu il faudrait
remplacer
if [ -z "$LAST_CHARS" ] || [ "x$LAST_CHARS" = "x:1.0" ] ; then
par
if [ "x$LAST_CHARS" = "x:1.0" ] ; then
J'ai bien compris ?
Question annexe, si on a deux modems, on injecte le code dsp dans les deux
modems en même temps ? Si oui, alors en branchant un second modem je
désynchronise le premier...
Pour le premier, je reviens sur ma première conclusion, à savoir supprimer
eagle-usb.usermap.
Il est nécessaire, mais il faudrait peut-être renommé eagle-usb en
eagle-usb.post ou eagle-usb.dsp.
Trace d'exécution chez moi :
- /etc/init.d/hotplug restart lance /etc/hotplug/usb.rc
- /etc/hotplug/usb.rc monte les partitions et charge les modules
concernant l'USB dont usbcore (et que ça chez moi, pas de COLD).
- (HOT) usbcore (drivers/usb/core/usb.c) regarde
"/proc/sys/kernel/hotplug" et lance "/sbin/hotplug usb" qui lance
"/etc/hotplug.d/default/default.hotplug usb" qui lance
"/etc/hotplug/usb.agent"
- "/etc/hotplug/usb.agent" appelle load_driver d'abord sur
/lib/modules/<kernel-version>/modules.usbmap puis sur
/etc/hotplug/usb/eagle-usb.usermap.
- load_driver regarde si le périphérique matche une entrée de la map, si
oui il exécute le script associé (toujours eagle-usb dans notre cas), et
APRÈS il essaye de charger le module homonyme.
Donc eagle-usb est exécuté pour rien plusieurs fois parce qu'il est
référencé par /lib/modules/<KVERS>/modules.usbmap. Ce dernier fichier est
correct, sans lui on ne chargerait pas le module eagle-usb. Puis eagle-usb
est exécuté comme prévu car il est référencé par eagle-usb.usermap.
Ça marche bien comme ça mais on éviterait un peu de travail inutile en
renommant eagle-usb en eagle-usb-quelquechose, et en reportant les
modifications sur eagle-usb.usermap.
mcoolive.
_________________________________________________________________
Hotmail : un compte GRATUIT qui vous suit partout et tout le temps !
http://g.msn.fr/FR1000/9493