libusb and hal
Tom Billiet <[email protected]>
| Newsgroups | gmane.comp.gnome.apps.pilot |
|---|---|
| Message-ID | <[email protected]> |
Hi,
After doing some hacking in pilot-link for the z22 to get to work with
libusb (and to work at all, because visor is also no more working), I've
already made a (dirty) patch for pilot-link (see the "z22 F7 problem"
thread for more details) to get pilot-xfer to work. Now the next problem
is gnome-pilot.
It came to my attention that it worked every time the first time the z22
was connected to the computer after a reboot, and it would not work
anymore the next times. So I did some investigation and figured the root
of the problem.
When the z22 is connected, the hal_device_added function in gpilotd.c is
called a few times, each time with different hal information. only one
time this part of code will succeed:
if (!(bus = libhal_device_get_property_string (hal_ctx, udi, "info.bus",
NULL))) {
return;
}
if (strcmp (bus, "usb_device") != 0 ) {
libhal_free_string (bus);
return;
}
So this means gpilotd is waiting for a "usb_device" to be added by hal,
which works the first time. But the next times the "usb_device" is not
added anymore, as this device stays available in hal. Here is a part of
the output of hal-device:
0: udi = '/org/freedesktop/Hal/devices/usb_device_830_61_noserial'
linux.subsystem = 'usb' (string)
info.product = 'Palm Handheld' (string)
usb_device.device_revision_bcd = 256 (0x100) (int)
usb_device.product = 'Palm Handheld' (string)
usb_device.product_id = 97 (0x61) (int)
usb_device.speed = 12 (double)
usb_device.vendor = 'Palm, Inc.' (string)
usb_device.can_wake_up = false (bool)
usb_device.configuration_value = 1 (0x1) (int)
usb_device.linux.device_number = 16 (0x10) (int)
info.linux.driver = 'usb' (string)
usb_device.device_class = 255 (0xff) (int)
info.parent =
'/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_02_0' (string)
usb_device.bus_number = 2 (0x2) (int)
usb_device.device_protocol = 0 (0x0) (int)
usb_device.is_self_powered = true (bool)
info.subsystem = 'usb_device' (string)
info.vendor = 'Palm, Inc.' (string)
usb_device.version = 1.1 (double)
usb_device.num_interfaces = 1 (0x1) (int)
usb_device.vendor_id = 2096 (0x830) (int)
usb_device.speed_bcd = 4608 (0x1200) (int)
usb_device.version_bcd = 272 (0x110) (int)
info.udi = '/org/freedesktop/Hal/devices/usb_device_830_61_noserial'
(string)
usb_device.linux.sysfs_path =
'/sys/devices/pci0000:00/0000:00:02.0/usb2/2-3' (string)
usb_device.num_configurations = 1 (0x1) (int)
info.bus = 'usb_device' (string)
linux.device_file = '/dev/bus/usb/002/016' (string)
usb_device.num_ports = 0 (0x0) (int)
usb_device.max_power = 500 (0x1f4) (int)
linux.hotplug_type = 2 (0x2) (int)
usb_device.device_subclass = 0 (0x0) (int)
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:02.0/usb2/2-3'
(string)
so if I do "hal-device -r
/org/freedesktop/Hal/devices/usb_device_830_61_noserial" this item will
be removed from the hal list, and the next time I connect my z22
gnome-pilot will work!
So now I know the cause of the problem, but I don't know how to fix
this. Should hal normally remove this device? Should gnome-pilot not
wait for an "usb_device" but for something else? ... ?
Can somebody help me on this?
Kind regards,
Tom Billiet
_______________________________________________
gnome-pilot-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-pilot-list