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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.