> 
> There's also http://www.speedtouch.co.uk/products/faq.asp?ProductID=471.  
> Probably
> you want the "Driver for 8M lines".
> 
>> Any ideas where the new firmware is? Do I need a new firmware extractor too?
> 
> I've no idea where the "extended reach" driver went.  Since I downloaded it
> without having to agree to any licence conditions etc (the download doesn't
> contain a licence either) I will send the firmware to anyone who asks, unless
> Thomson asks me to stop.
> 

Thanks for that, not that it made any difference.

> 
> I'd guess you have some script on your system, maybe a hotplug script,
> that is removing the modules.  One thought is that the device reset
> may be being misinterpreted by some script as device removal, and
> is triggering unloading of the modules.
> 

Well, this lead me to thinking that it might be a udev problem, so I did
some (exhaustive) tests and I have tracked the problem down not to udev
(directly) as to the usb_endpoint changes which were put in the kernel by
GKH and chums. The problem occurs with kernel 2.6.18+, and it works as
follows.

If I trace the udev events on 2.6.17.X after the box has booted the
following (abbreviated) device events occur in the udev log.

SEQNUM=1052 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2
SEQNUM=1053 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (uhci-hcd)
SEQNUM=1054 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (uhci-hcd)
SEQNUM=1055 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (uhci-hcd)
SEQNUM=1056 ACTION=add DEVPATH=/class/usb_device/usbdev1.2 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2
run_program: '/sbin/modprobe 
pci:v00001106d00003038sv00000925sd00001234bc0Csc03i00' (uhci-hcd)
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 1052, pid [3895] exit with 0, 1 seconds old
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
SEQNUM=1057 ACTION=add DEVPATH=/module/usbatm SUBSYSTEM=module
SEQNUM=1058 ACTION=add DEVPATH=/module/speedtch SUBSYSTEM=module
SEQNUM=1059 ACTION=add DEVPATH=/bus/usb/drivers/speedtch SUBSYSTEM=drivers
run_program: '/sbin/modprobe 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00'(speedtch)
udev_done: seq 1057, pid [3903] exit with 0, 0 seconds old
udev_done: seq 1058, pid [3904] exit with 0, 0 seconds old
udev_done: seq 1059, pid [3906] exit with 0, 0 seconds old
SEQNUM=1060 ACTION=add DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-1.bin.4.00
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 1053, pid [3897] exit with 0, 1 seconds old
run_program: '/lib/udev/firmware_helper'
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 1055, pid [3899] exit with 0, 2 seconds old
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 1054, pid [3898] exit with 0, 2 seconds old
run_program: '/lib/udev/firmware_helper' returned with status 0
udev_done: seq 1060, pid [3909] exit with 0, 1 seconds old
udev_done: seq 1056, pid [3911] exit with 0, 2 seconds old
SEQNUM=1061 ACTION=remove DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-1.bin.4.00
SEQNUM=1062 ACTION=add DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-2.bin.4.00
udev_done: seq 1061, pid [3913] exit with 0, 0 seconds old
run_program: '/lib/udev/firmware_helper'
run_program: '/lib/udev/firmware_helper' returned with status 0
udev_done: seq 1062, pid [3914] exit with 0, 1 seconds old

This is the 'good kernel' which seems to work with any recent udev
(I tried versions from 088 to 104) and a really basic set of rules.
The only peculiarity I can see is that the kernel tries to remove
the firmware after adding it. I am not sure why this should happen,
but it seems like a bug.

Now moving onto 2.6.18+ the events generated by the kernel are rather
different.

SEQNUM=948 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2
SEQNUM=949 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/usbdev1.2_ep00
SEQNUM=950 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (speedtch)
SEQNUM=951 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0/usbdev1.2_ep81
SEQNUM=952 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (speedtch)
SEQNUM=953 ACTION=add DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2 
MODALIAS=usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00 (speedtch)
SEQNUM=954 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep05
SEQNUM=955 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep85
SEQNUM=956 ACTION=add DEVPATH=/class/usb_device/usbdev1.2 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2
run_program: '/sbin/modprobe 
pci:v00001106d00003038sv00000925sd00001234bc0Csc03i00' (uhci_hcd)
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 948, pid [4219] exit with 0, 0 seconds old
run_program: '/sbin/modprobe 
pci:v00001106d00003038sv00000925sd00001234bc0Csc03i00' (uhci_hcd)
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 949, pid [4221] exit with 0, 0 seconds old
SEQNUM=957 ACTION=add DEVPATH=/module/usbatm
udev_done: seq 957, pid [4229] exit with 0, 0 seconds old
SEQNUM=958 ACTION=add DEVPATH=/module/speedtch
udev_done: seq 958, pid [4231] exit with 0, 0 seconds old
SEQNUM=959 ACTION=add DEVPATH=/bus/usb/drivers/speedtch
udev_done: seq 959, pid [4233] exit with 0, 0 seconds old
SEQNUM=960 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=961 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=962 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=963 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0/usbdev1.2_ep81
SEQNUM=964 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0/usbdev1.2_ep81
SEQNUM=965 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=966 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=967 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=968 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=969 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=970 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=971 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep05
SEQNUM=972 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep85
SEQNUM=973 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep05
SEQNUM=974 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep85
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 950, pid [4222] exit with 0, 1 seconds old
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00'
SEQNUM=975 ACTION=add DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-1.bin.4.00
run_program: '/lib/udev/firmware_helper'
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 952, pid [4223] exit with 0, 1 seconds old
udev_done: seq 953, pid [4224] exit with 0, 1 seconds old
udev_done: seq 960, pid [4239] exit with 0, 1 seconds old
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe' returned with status 0
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe' returned with status 0
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
udev_done: seq 951, pid [4235] exit with 0, 1 seconds old
udev_done: seq 961, pid [4240] exit with 0, 1 seconds old
udev_done: seq 962, pid [4242] exit with 0, 1 seconds old
run_program: '/sbin/modprobe usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' 
(speedtch)
run_program: '/sbin/modprobe --remove 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' (speedtch)
run_program: '/sbin/modprobe --remove 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' (speedtch)
run_program: '/lib/udev/firmware_helper' returned with status 0
SEQNUM=976 ACTION=remove DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-1.bin.4.00
udev_done: seq 975, pid [4237] exit with 0, 1 seconds old
SEQNUM=977 ACTION=add DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-2.bin.4.00
run_program: '/sbin/modprobe --remove 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' (speedtch)
run_program: '/sbin/modprobe --remove 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' (speedtch)
udev_done: seq 976, pid [4256] exit with 0, 0 seconds old
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 954, pid [4243] exit with 0, 2 seconds old
run_program: '/sbin/modprobe' returned with status 0
udev_done: seq 955, pid [4244] exit with 0, 2 seconds old
run_program: '/sbin/modprobe --remove 
usb:v06B9p4061d0400dcFFdsc00dp00icFFisc00ip00' (speedtch)
SEQNUM=978 ACTION=remove DEVPATH=/class/firmware/1-2:1.0 
PHYSDEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 
FIRMWARE=speedtch-2.bin.4.00
run_program: '/lib/udev/firmware_helper' returned with status 0
udev_done: seq 977, pid [4257] exit with 0, 1 seconds old
SEQNUM=979 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=980 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=981 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=982 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=983 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=984 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=985 ACTION=add DEVPATH=/class/atm/speedtch0
SEQNUM=986 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep06
SEQNUM=987 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep07
SEQNUM=988 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.1/usbdev1.2_ep87
SEQNUM=989 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep05
SEQNUM=990 ACTION=remove 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep85
SEQNUM=991 ACTION=add 
DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.2/usbdev1.2_ep05
... ad infinitum, but in no particular order.

You will notice that udev unloads speedtch shortly after loading it,
which is what you diagnosed, but the real question is why. It seems
that in 2.6.18+, not only are spurious firmware removal events sent,
but spurious usb_endpoint removal events are created too. These occur
sometimes before and sometimes after add events, causing an unpredictable
splurge of module loads and unloads. Clearly the usb_endpoint changes
have room for improvement.

Obviously I am unloading speedtch in response to an event which
I had not forseen when I wrote the udev rules some months ago, so as a
quick bodge I have stopped the speedtch module from being unloaded by
using a wrapper script. This has allowed me to use 2.6.19.1 and connect
successfully. When the usb_endpoint code has matured I'll have a look
at the usb_endpoint events that the kernel puts out and update my udev
rules to suit, unless in the meantime someone can provide some example
rules which work with 2.6.18+.

Many thanks for your help in debugging this little horror.

Regards,

Steve.


Liste de diffusion modem ALCATEL SpeedTouch USB
Pour se désinscrire : mailto:[EMAIL PROTECTED]

        

Reply via email to