The crashes are not so random any more. They happen every time when
music stops playing. This was not simple to find, because I use ALSA
with the dmix plugin (but without any sound daemon like ESD or
PulseAudio). Usually I pause my music (XMMS) and sometimes my browser
has some Flash applets running which also occupy the audio output. So
audio is not always stopped, when I hear it to stop.
So, I found out that when I start music (e.g. with a simple "aplay
xyz.wav") without any other program doing sound output, g15daemon is
automagically started by udevd. As soon as the music stops (^C to aplay)
g15daemon is stopped by udevd. I've set the
G15DEBUG="on"
in /etc/default/g15daemon and activated moderate debug output by udev
with
udevadm control --log-priority info
The output as observed in /var/log/syslog is attached in the two files
syslog-aplay-{start,stop}.txt.
It seems that every time aplay (or any other sound output) is running,
the device file /dev/usbdev2.3_ep01 is created. Endpoint 1 (OUT) is the
AudioStreaming isochronous endpoint. It seems that this "magically"
turns up upon audio output and vanishes afterwards. OTOH, according to
lsusb, the USB descriptor doesn't change at all in these two conditions
(see attached files lsusb-z10-{playing,silent}.txt), the only difference
is the "Report Descriptor" which seems cannot be queried during audio
output.
So, the first question is: Why does udev send "add" and "remove" events
just because an USB device is used although no endpoints are added or
removed?
The second question is: Why do the G15 scripts start and stop the
g15daemon for each of these events?
I've now added some more debug output on the udev environment variables
and found the following information when starting and stopping playing
audio output:
Sep 23 21:40:16 hansi g15: calling g15 udev; action: "add", product "",
devtype "", devname "/dev/usbdev2.6_ep01", subsystem "usb_endpoint"
Sep 23 21:40:17 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/usbdev2.6_ep01", subsystem "usb_endpoint"
It should be possible to add conditions to /etc/init.d/g15daemon to
avoid these problems. Additionally I think the additional "shared-udev"
parameter can be removed.
When the G15 speakers are plugged in and removed from the USB bus, the
debug output by /etc/init.d/g15daemon is as shown in the attached files
usb-{plugin,remove}-z10.txt (note that usb-plugin-z10.txt is partly
cluttered by a concurrently playing sound).
The unique removal event is
action: "remove", product "46d/a07/1e", devtype "usb_interface", devname "",
subsystem "usb"
while for the plugin of the speakers the devtype "usb_interface" event
is twice. So I suggest to use the following event:
action: "add", product "46d/a07/1e", devtype "usb_device", devname
"/dev/bus/usb/002/006", subsystem "usb"
Unfortunately a little delay is necessary because g15daemon wants to
open /dev/uinputX (or so) which will be populated shortly after this
event.
I've added these additional conditions to the script, see attached patch
etc-init.d-g15daemon.patch. With these changes g15daemon is not killed
any more and works flawlessly. But please check with other supported
devices. As already mentioned, I think that then the special
"shared-udev" parameter of the script can be removed.
Bye
Hansi
Sep 23 21:04:01 hansi udevd[1103]: seq 2995 queued, 'add' 'usb_endpoint'
Sep 23 21:04:01 hansi udevd[1103]: seq 2995 forked, pid [31305], 'add'
'usb_endpoint', 0 seconds old
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x96510b0 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.1/usb_endpoint/usbdev2.3_ep01'
Sep 23 21:04:01 hansi udevd-event[31305]: LINK 'char/251:17'
/lib/udev/rules.d/50-udev.rules:2
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x967b270 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.1'
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x96801c8 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2/2-2'
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x96809a8 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2'
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x9680890 has devpath
'/devices/pci0000:00/0000:00:1d.0'
Sep 23 21:04:01 hansi udevd-event[31305]: device 0x9680c10 has devpath
'/devices/pci0000:00'
Sep 23 21:04:01 hansi udevd-event[31305]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:01 hansi udevd-event[31305]: RUN '/etc/init.d/g15daemon udev'
/etc/udev/rules.d/z60_g15daemon.rules:16
Sep 23 21:04:01 hansi udevd-event[31305]: no node name set, will use kernel
name 'usbdev2.3_ep01'
Sep 23 21:04:01 hansi udevd-event[31305]: create db link (usbdev2.3_ep01
char/251:17)
Sep 23 21:04:01 hansi udevd-event[31305]: creating device node
'/dev/usbdev2.3_ep01', devnum=251:17, mode=0660, uid=0, gid=0
Sep 23 21:04:01 hansi udevd-event[31305]: mknod(/dev/usbdev2.3_ep01, 020660,
(251,17))
Sep 23 21:04:01 hansi udevd-event[31305]: chmod(/dev/usbdev2.3_ep01, 020660)
Sep 23 21:04:01 hansi udevd-event[31305]: chown(/dev/usbdev2.3_ep01, 0, 0)
Sep 23 21:04:01 hansi udevd-event[31305]: '/dev/char/251:17' with target
'/dev/usbdev2.3_ep01' has the highest priority 0, create it
Sep 23 21:04:01 hansi udevd-event[31305]: creating symlink '/dev/char/251:17'
to '../usbdev2.3_ep01'
Sep 23 21:04:01 hansi udevd-event[31305]: passed 298 bytes to monitor 0x96618c8
Sep 23 21:04:01 hansi udevd-event[31305]: '/etc/init.d/g15daemon udev'
Sep 23 21:04:01 hansi g15: calling g15 udev; action: add, product
Sep 23 21:04:01 hansi g15daemon: Process died - removing pidfile
Sep 23 21:04:02 hansi udevd-event[31305]: '/etc/init.d/g15daemon' returned with
status 0
Sep 23 21:04:02 hansi udevd-event[31305]: passed -1 bytes to monitor 0x96511f0
Sep 23 21:04:02 hansi udevd-event[31305]: seq 2995 exit with 0
Sep 23 21:04:02 hansi udevd[1103]: seq 2995 cleanup, pid [31305], status 0, 1
seconds old
Sep 23 21:04:02 hansi g15daemon[31310]: Booting plugin "Linux UINPUT Keyboard
Output"
Sep 23 21:04:02 hansi g15daemon[31310]: Plugin "Linux UINPUT Keyboard Output"
boot successful.
Sep 23 21:04:02 hansi g15daemon[31310]: Booting plugin "Clock"
Sep 23 21:04:02 hansi g15daemon[31310]: Plugin "Clock" boot successful.
Sep 23 21:04:02 hansi udevd[1103]: seq 2996 queued, 'add' 'input'
Sep 23 21:04:02 hansi udevd[1103]: seq 2996 forked, pid [31315], 'add' 'input',
0 seconds old
Sep 23 21:04:02 hansi udevd[1103]: seq 2997 queued, 'add' 'input'
Sep 23 21:04:02 hansi kernel: [19905.631182] input: G15 Extra Keys as
/devices/virtual/input/input50
Sep 23 21:04:02 hansi udevd-event[31315]: RUN '/sbin/modprobe -b
$env{MODALIAS}' /lib/udev/rules.d/80-drivers.rules:10
Sep 23 21:04:02 hansi udevd-event[31315]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:02 hansi udevd-event[31315]: '/sbin/modprobe -b
input:b0003v0000p0000e0004-e0,1,k71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F,90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,CA,CB,CC,CD,CE,CF,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DF,E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,EA,EB,EC,ED,EE,EF,F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,FA,FB,FC,FD,FE,FF,ramlsfw'
Sep 23 21:04:02 hansi udevd-event[31315]: '/sbin/modprobe' (stderr) 'WARNING:
All config files need .conf: /etc/modprobe.d/arch, it will be ignored in a
future release.'
Sep 23 21:04:02 hansi udevd-event[31315]: '/sbin/modprobe' (stderr) 'WARNING:
All config files need .conf: /etc/modprobe.d/crypto, it will be ignored in a
future release.'
Sep 23 21:04:02 hansi udevd-event[31315]: '/sbin/modprobe' returned with status
0
Sep 23 21:04:02 hansi udevd-event[31315]: passed 724 bytes to monitor 0x9661b90
Sep 23 21:04:02 hansi udevd-event[31315]: passed -1 bytes to monitor 0x96511f0
Sep 23 21:04:02 hansi udevd-event[31315]: seq 2996 exit with 0
Sep 23 21:04:02 hansi udevd[1103]: seq 2996 cleanup, pid [31315], status 0, 0
seconds old
Sep 23 21:04:02 hansi udevd[1103]: seq 2997 forked, pid [31317], 'add' 'input',
0 seconds old
Sep 23 21:04:02 hansi udevd-event[31317]: device 0x96802a8 has devpath
'/devices/virtual/input/input50/event6'
Sep 23 21:04:02 hansi udevd-event[31317]: LINK 'char/13:70'
/lib/udev/rules.d/50-udev.rules:2
Sep 23 21:04:02 hansi udevd-event[31317]: NAME 'input/event6'
/lib/udev/rules.d/50-udev.rules:94
Sep 23 21:04:02 hansi udevd-event[31317]: device 0x96510b0 has devpath
'/devices/virtual/input/input50'
Sep 23 21:04:02 hansi udevd-event[31317]: IMPORT 'path_id
/devices/virtual/input/input50/event6'
/lib/udev/rules.d/60-persistent-input.rules:45
Sep 23 21:04:02 hansi udevd-event[31317]: 'path_id
/devices/virtual/input/input50/event6'
Sep 23 21:04:02 hansi g15daemon[31310]: Booting plugin "LCDServer"
Sep 23 21:04:02 hansi g15daemon[31310]: Plugin "LCDServer" boot successful.
Sep 23 21:04:02 hansi udevd-event[31317]: '/lib/udev/path_id' returned with
status 1
Sep 23 21:04:02 hansi udevd-event[31317]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:02 hansi udevd-event[31317]: create db link (input/event6
char/13:70)
Sep 23 21:04:02 hansi udevd-event[31317]: creating device node
'/dev/input/event6', devnum=13:70, mode=0660, uid=0, gid=0
Sep 23 21:04:02 hansi udevd-event[31317]: mknod(/dev/input/event6, 020660,
(13,70))
Sep 23 21:04:02 hansi udevd-event[31317]: chmod(/dev/input/event6, 020660)
Sep 23 21:04:02 hansi udevd-event[31317]: chown(/dev/input/event6, 0, 0)
Sep 23 21:04:02 hansi udevd-event[31317]: '/dev/char/13:70' with target
'/dev/input/event6' has the highest priority 0, create it
Sep 23 21:04:02 hansi udevd-event[31317]: creating symlink '/dev/char/13:70' to
'../input/event6'
Sep 23 21:04:02 hansi udevd-event[31317]: passed 207 bytes to monitor 0x9680968
Sep 23 21:04:02 hansi udevd-event[31317]: passed -1 bytes to monitor 0x96511f0
Sep 23 21:04:02 hansi udevd-event[31317]: seq 2997 exit with 0
Sep 23 21:04:02 hansi udevd[1103]: seq 2997 cleanup, pid [31317], status 0, 0
seconds old
Sep 23 21:04:04 hansi udevd[1103]: seq 2998 queued, 'remove' 'usb_endpoint'
Sep 23 21:04:04 hansi udevd[1103]: seq 2998 forked, pid [31331], 'remove'
'usb_endpoint', 0 seconds old
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x96618c8 filled with db
symlink data '/dev/usbdev2.3_ep01'
Sep 23 21:04:04 hansi udevd-event[31331]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x96803b0 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.1'
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x9680868 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2/2-2'
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x9680a58 has devpath
'/devices/pci0000:00/0000:00:1d.0/usb2'
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x9661ce0 has devpath
'/devices/pci0000:00/0000:00:1d.0'
Sep 23 21:04:04 hansi udevd-event[31331]: device 0x967b3a0 has devpath
'/devices/pci0000:00'
Sep 23 21:04:04 hansi udevd-event[31331]: RUN '/etc/init.d/g15daemon udev'
/etc/udev/rules.d/z60_g15daemon.rules:16
Sep 23 21:04:04 hansi udevd-event[31331]: no reference left, remove
'/dev/char/251:17'
Sep 23 21:04:04 hansi udevd-event[31331]: removing device node
'/dev/usbdev2.3_ep01'
Sep 23 21:04:04 hansi udevd-event[31331]: passed 304 bytes to monitor 0x967b4e0
Sep 23 21:04:04 hansi udevd-event[31331]: '/etc/init.d/g15daemon udev'
Sep 23 21:04:04 hansi g15: calling g15 udev; action: remove, product
Sep 23 21:04:05 hansi udevd[1103]: seq 2999 queued, 'remove' 'input'
Sep 23 21:04:05 hansi udevd[1103]: seq 2999 forked, pid [31337], 'remove'
'input', 0 seconds old
Sep 23 21:04:05 hansi udevd-event[31337]: device 0x96803a0 filled with db
symlink data '/dev/input/event6'
Sep 23 21:04:05 hansi udevd-event[31337]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:05 hansi udevd-event[31337]: device 0x96809d0 has devpath
'/devices/virtual/input/input50'
Sep 23 21:04:05 hansi udevd-event[31337]: no reference left, remove
'/dev/char/13:70'
Sep 23 21:04:05 hansi udevd-event[31337]: removing device node
'/dev/input/event6'
Sep 23 21:04:05 hansi udevd-event[31337]: passed 213 bytes to monitor 0x9661c48
Sep 23 21:04:05 hansi udevd-event[31337]: passed -1 bytes to monitor 0x96511f0
Sep 23 21:04:05 hansi udevd-event[31337]: seq 2999 exit with 0
Sep 23 21:04:05 hansi udevd[1103]: seq 2999 cleanup, pid [31337], status 0, 0
seconds old
Sep 23 21:04:05 hansi udevd[1103]: seq 3000 queued, 'remove' 'input'
Sep 23 21:04:05 hansi udevd[1103]: seq 3000 forked, pid [31338], 'remove'
'input', 0 seconds old
Sep 23 21:04:05 hansi udevd-event[31338]: RUN
'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2
Sep 23 21:04:05 hansi udevd-event[31338]: passed 730 bytes to monitor 0x96809a0
Sep 23 21:04:05 hansi udevd-event[31338]: passed -1 bytes to monitor 0x96511f0
Sep 23 21:04:05 hansi udevd-event[31338]: seq 3000 exit with 0
Sep 23 21:04:05 hansi udevd[1103]: seq 3000 cleanup, pid [31338], status 0, 0
seconds old
Bus 002 Device 003: ID 046d:0a07 Logitech, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x046d Logitech, Inc.
idProduct 0x0a07
bcdDevice 0.1e
iManufacturer 1 Logitech
iProduct 2 Z-10 USB Speaker
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 219
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 3 G6 2006/06/21 10:55
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 43
bInCollection 1
baInterfaceNr( 0) 1
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 12
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 2
wChannelConfig 0x0003
Left Front (L)
Right Front (R)
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 1
bSourceID 12
bControlSize 2
bmaControls( 0) 0x41
bmaControls( 0) 0x01
Mute
Automatic Gain
Bass Boost
bmaControls( 1) 0x02
bmaControls( 1) 0x00
Volume
bmaControls( 2) 0x02
bmaControls( 2) 0x00
Volume
iFeature 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 20
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 1
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 12
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 1
bSubframeSize 2
bBitResolution 16
bSamFreqType 0 Continuous
tLowerSamFreq 6400
tUpperSamFreq 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x0064 1x 100 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x01
Sampling Frequency
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 1 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 12
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 2
bSubframeSize 2
bBitResolution 16
bSamFreqType 0 Continuous
tLowerSamFreq 6400
tUpperSamFreq 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x00c8 1x 200 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x01
Sampling Frequency
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 1 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 46
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 41
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
Bus 002 Device 003: ID 046d:0a07 Logitech, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x046d Logitech, Inc.
idProduct 0x0a07
bcdDevice 0.1e
iManufacturer 1 Logitech
iProduct 2 Z-10 USB Speaker
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 219
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 3 G6 2006/06/21 10:55
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 0mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 0
iInterface 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 1.00
wTotalLength 43
bInCollection 1
baInterfaceNr( 0) 1
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 12
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 2
wChannelConfig 0x0003
Left Front (L)
Right Front (R)
iChannelNames 0
iTerminal 0
AudioControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 1
bSourceID 12
bControlSize 2
bmaControls( 0) 0x41
bmaControls( 0) 0x01
Mute
Automatic Gain
Bass Boost
bmaControls( 1) 0x02
bmaControls( 1) 0x00
Volume
bmaControls( 2) 0x02
bmaControls( 2) 0x00
Volume
iFeature 0
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 20
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 1
iTerminal 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 12
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 1
bSubframeSize 2
bBitResolution 16
bSamFreqType 0 Continuous
tLowerSamFreq 6400
tUpperSamFreq 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x0064 1x 100 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x01
Sampling Frequency
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 1 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 0
iInterface 0
AudioStreaming Interface Descriptor:
bLength 7
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 12
bDelay 0 frames
wFormatTag 1 PCM
AudioStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bNrChannels 2
bSubframeSize 2
bBitResolution 16
bSamFreqType 0 Continuous
tLowerSamFreq 6400
tUpperSamFreq 48000
Endpoint Descriptor:
bLength 9
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 9
Transfer Type Isochronous
Synch Type Adaptive
Usage Type Data
wMaxPacketSize 0x00c8 1x 200 bytes
bInterval 1
bRefresh 0
bSynchAddress 0
AudioControl Endpoint Descriptor:
bLength 7
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x01
Sampling Frequency
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 1 Decoded PCM samples
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 46
Report Descriptor: (length is 46)
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x00 ] 0
(null)
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x02 ] 2
(null)
Item(Global): Report ID, data= [ 0x02 ] 2
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x03 ] 3
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage, data= [ 0x04 ] 4
(null)
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Local ): Usage, data= [ 0x06 ] 6
(null)
Item(Global): Report ID, data= [ 0x03 ] 3
Item(Global): Report Count, data= [ 0xdf 0x03 ] 991
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile
Bitfield
Item(Main ): End Collection, data=none
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 41
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
Sep 23 21:39:24 hansi g15: calling g15 udev; action: "add", product
"46d/a07/1e", devtype "usb_device", devname "/dev/bus/usb/002/006", subsystem
"usb"
Sep 23 21:39:24 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usbdev2.6_ep00", subsystem "usb_endpoint"
Sep 23 21:39:24 hansi g15: calling g15 udev; action: "add", product
"46d/a07/1e", devtype "usb_interface", devname "", subsystem "usb"
Sep 23 21:39:24 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/bus/usb/002/006", subsystem "usb_device"
Sep 23 21:39:24 hansi g15: calling g15 udev; action: "add", product
"46d/a07/1e", devtype "usb_interface", devname "", subsystem "usb"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "", subsystem "sound"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usbdev2.6_ep85", subsystem "usb_endpoint"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product
"3/46d/a07/110", devtype "", devname "", subsystem "input"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "", subsystem "hid"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usbdev2.6_ep83", subsystem "usb_endpoint"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "", subsystem "hid"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usbdev2.6_ep03", subsystem "usb_endpoint"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usb/hiddev0", subsystem "usb"
Sep 23 21:39:25 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/hidraw3", subsystem "hidraw"
Sep 23 21:39:26 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/input/event2", subsystem "input"
Sep 23 21:39:26 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/usb/hiddev0", subsystem "usb"
Sep 23 21:39:27 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/snd/pcmC0D0p", subsystem "sound"
Sep 23 21:39:27 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/snd/controlC0", subsystem "sound"
Sep 23 21:39:27 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/hidraw2", subsystem "hidraw"
Sep 23 21:39:28 hansi g15: calling g15 udev; action: "add", product "", devtype
"", devname "/dev/usbdev2.6_ep01", subsystem "usb_endpoint"
Sep 23 21:39:28 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/hidraw2", subsystem "hidraw"
Sep 23 21:39:29 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "", subsystem "hid"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product
"46d/a07/1e", devtype "usb_interface", devname "", subsystem "usb"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/usbdev2.5_ep03", subsystem "usb_endpoint"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/input/event2", subsystem "input"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/usbdev2.5_ep83", subsystem "usb_endpoint"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/snd/pcmC0D0p", subsystem "sound"
Sep 23 21:39:14 hansi g15: calling g15 udev; action: "remove", product "",
devtype "", devname "/dev/usbdev2.5_ep85", subsystem "usb_endpoint"
--- g15daemon-ori 2009-09-23 22:03:41.000000000 +0200
+++ g15daemon-hansi 2009-09-23 22:02:14.000000000 +0200
@@ -134,15 +134,17 @@
echo "$NAME."
;;
udev)
- log "calling g15 udev; action: $ACTION, product $PRODUCT"
- if [ "x$ACTION" = "xadd" ] ; then
+ log "calling g15 udev; action: \"$ACTION\", product \"$PRODUCT\", devtype \"$DEVTYPE\", devname \"$DEVNAME\", subsystem \"$SUBSYSTEM\""
+ if [ "x$ACTION" = "xadd" -a "$DEVTYPE" = "usb_device" -a "$SUBSYSTEM" = "usb" ] ; then
+ # wait until /dev/inputX is registered
+ sleep 1
load_uinput || true
wait_usr_mount || true
# it seems udev will not release a device if userspace is still
# connected
is_running && ( do_stop; sleep 1 )
do_start
- elif [ "x$ACTION" = "xremove" ] ; then
+ elif [ "x$ACTION" = "xremove" -a "$DEVTYPE" = "usb_interface" -a "$SUBSYSTEM" = "usb" ] ; then
do_stop
else
echo "unknow udev action '$ACTION'"