Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
On Thu, 9 Jun 2011, Nobuhiro Iwamatsu wrote: Peter's patch applied to upstream now. # I talked on IRC about this patch. I will cherry-pick this to Debian. Sounds great. Cristian, many thanks. Thank you. -- Cristian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
Hi, 2011/6/7 Cristian Ionescu-Idbohrn cristian.ionescu-idbo...@axis.com: On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I hope this message will reach Marcel too, as it identifies bugs in the upstream code. On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I'd like to get this problem out of the way. What can I do to help? [snip] Alright. I took the magic wand, Peter Hurley handed over here: http://comments.gmane.org/gmane.linux.bluez.kernel/13457 (patch for the upstream scripts/bluetooth-hid2hci.rules) which solves the two major problems (runs the /lib/udev/rules.d/62-bluez-hid2hci.rules, including hid2hci and making the hci0 device available). This patch mean , if device is hidraw, change of device is failed. But if device is hiddev, change of deice already is success. OK? Marcel, why do you apply this patch ? This: Still, hid2hci returns status code failure: exit_group(1) = ? This is another bug :( int rc = 1; I attached patch that revised this. I will send to upsream. Nobuhiro -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6 diff --git a/tools/hid2hci.c b/tools/hid2hci.c index 45a3a3d..ba4aea4 100644 --- a/tools/hid2hci.c +++ b/tools/hid2hci.c @@ -240,7 +240,7 @@ int main(int argc, char *argv[]) enum mode mode = HCI; const char *devpath = NULL; int err = -1; - int rc = 1; + int rc = 0; for (;;) { int option; @@ -288,13 +288,16 @@ int main(int argc, char *argv[]) } udev = udev_new(); - if (udev == NULL) + if (udev == NULL) { + rc = ENOMEM; goto exit; + } snprintf(syspath, sizeof(syspath), %s/%s, udev_get_sys_path(udev), devpath); udev_dev = udev_device_new_from_syspath(udev, syspath); if (udev_dev == NULL) { fprintf(stderr, error: could not find '%s'\n, devpath); + rc = ENODEV; goto exit; } @@ -312,6 +315,7 @@ int main(int argc, char *argv[]) dev = udev_device_get_parent_with_subsystem_devtype(dev, usb, usb_device); if (dev == NULL) { fprintf(stderr, error: could not find usb_device for '%s'\n, devpath); +rc = ENODEV; goto exit; } } @@ -320,6 +324,7 @@ int main(int argc, char *argv[]) if (handle == NULL) { fprintf(stderr, error: unable to handle '%s'\n, udev_device_get_syspath(dev)); + rc = EBADF; goto exit; } err = usb_switch(handle, mode); @@ -331,6 +336,7 @@ int main(int argc, char *argv[]) device = udev_device_get_devnode(udev_dev); if (device == NULL) { fprintf(stderr, error: could not find hiddev device node\n); + rc = ENODEV; goto exit; } err = hid_switch_logitech(device);
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
Hi, Peter's patch applied to upstream now. # I talked on IRC about this patch. I will cherry-pick this to Debian. Cristian, many thanks. Nobuhiro 2011/6/9 Nobuhiro Iwamatsu iwama...@nigauri.org: Hi, 2011/6/7 Cristian Ionescu-Idbohrn cristian.ionescu-idbo...@axis.com: On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I hope this message will reach Marcel too, as it identifies bugs in the upstream code. On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I'd like to get this problem out of the way. What can I do to help? [snip] Alright. I took the magic wand, Peter Hurley handed over here: http://comments.gmane.org/gmane.linux.bluez.kernel/13457 (patch for the upstream scripts/bluetooth-hid2hci.rules) which solves the two major problems (runs the /lib/udev/rules.d/62-bluez-hid2hci.rules, including hid2hci and making the hci0 device available). This patch mean , if device is hidraw, change of device is failed. But if device is hiddev, change of deice already is success. OK? Marcel, why do you apply this patch ? This: Still, hid2hci returns status code failure: exit_group(1) = ? This is another bug :( int rc = 1; I attached patch that revised this. I will send to upsream. Nobuhiro -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6 -- Nobuhiro Iwamatsu iwamatsu at {nigauri.org / debian.org} GPG ID: 40AD1FA6 -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
I'd like to get this problem out of the way. What can I do to help? Firstly, I think we must find out _why_ udev seems to ignore /lib/udev/rules.d/62-bluez-hid2hci.rules (I may need some help to narrow down what's going on). # udevadm test /devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 indicates it knows about 62-bluez-hid2hci.rules: parse_file: reading '/lib/udev/rules.d/62-bluez-hid2hci.rules' as rules file but does not run the rules in it. 'udevadm test' shows it uses: /lib/udev/rules.d/45-libmtp8.rules udev_rules_apply_to_event: PROGRAM 'mtp-probe /sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 1 6' /lib/udev/rules.d/45-libmtp8.rules:701 /lib/udev/rules.d/50-udev-default.rules udev_rules_apply_to_event: MODE 0664 /lib/udev/rules.d/50-udev-default.rules:53 /lib/udev/rules.d/50-udev-default.rules udev_rules_apply_to_event: IMPORT 'usb_id --export /devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' /lib/udev/rules.d/50-udev-default.rules:64 /lib/udev/rules.d/90-hal.rules udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2 /lib/udev/rules.d/91-permissions.rules udev_rules_apply_to_event: MODE 0664 /lib/udev/rules.d/91-permissions.rules:36 and finally: UDEV_LOG=6 DEVPATH=/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 MAJOR=189 MINOR=5 DEVNAME=/dev/bus/usb/001/006 DEVTYPE=usb_device DRIVER=usb DEVICE=/proc/bus/usb/001/006 PRODUCT=46d/c714/4900 TYPE=0/0/0 BUSNUM=001 DEVNUM=006 ACTION=add SUBSYSTEM=usb ID_VENDOR=Logitech ID_VENDOR_ENC=Logitech ID_VENDOR_ID=046d ID_MODEL=Logitech_BT_Mini-Receiver ID_MODEL_ENC=Logitech\x20BT\x20Mini-Receiver ID_MODEL_ID=c714 ID_REVISION=4900 ID_SERIAL=Logitech_Logitech_BT_Mini-Receiver_001F20122175 ID_SERIAL_SHORT=001F20122175 ID_BUS=usb ID_USB_INTERFACES=:030102: UPOWER_VENDOR=Logitech, Inc. run: 'socket:@/org/freedesktop/hal/udev_event' Secondly, _why_ hid2hci fails: error: switching device '/sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' failed strace shows this: open(/dev/bus/usb/001/006, O_RDWR)= 3 ioctl(3, HIDIOCINITREPORT, 0) = -1 ENOTTY (Inappropriate ioctl for device) close(3)= 0 write(2, error: switching device '/sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' failed.\n, 94) = 94 exit_group(1) = ? Cheers, -- Cristian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
I hope this message will reach Marcel too, as it identifies bugs in the upstream code. On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I'd like to get this problem out of the way. What can I do to help? [snip] Secondly, _why_ hid2hci fails: error: switching device '/sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' failed strace shows this: open(/dev/bus/usb/001/006, O_RDWR) = 3 ioctl(3, HIDIOCINITREPORT, 0) = -1 ENOTTY (Inappropriate ioctl for device) close(3) = 0 write(2, error: switching device '/sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' failed.\n, 94) = 94 exit_group(1) = ? Alright. It looks like I might have found out the cause for the Inappropriate ioctl for device above. Seems the opened device file /dev/bus/usb/001/006: crw-rw-r-- 1 root root 189, 5 Jun 6 09:53 /dev/bus/usb/001/006 _is_ the problem. Opening /dev/usb/hiddev0 instead: crw--- 1 root root 180, 0 Jun 6 09:51 /dev/usb/hiddev0 enables the device: kernel: [162517.412273] usb 1-3.2.1: new full speed USB device number 7 using ehci_hcd kernel: [162517.509507] usb 1-3.2.1: New USB device found, idVendor=046d, idProduct=c709 kernel: [162517.509514] usb 1-3.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 bluetoothd[2700]: HCI dev 0 registered bluetoothd[2700]: Listening for HCI events on hci0 bluetoothd[2700]: HCI dev 0 up bluetoothd[2700]: Adapter /org/bluez/2700/hci0 has been enabled # hcitool dev Devices: hci000:1F:20:11:22:33 and strace confirms that: open(/dev/usb/hiddev0, O_RDWR) = 3 ioctl(3, HIDIOCINITREPORT, 0) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSREPORT, 0xbfe96aa4) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSREPORT, 0xbfe96aa4) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSUSAGE, 0xbfe96a8c) = 0 ioctl(3, HIDIOCSREPORT, 0xbfe96aa4) = 0 close(3) = 0 Still, hid2hci returns status code failure: exit_group(1) = ? This is another bug :( int rc = 1; is declared in 'main', never changes during the course of the program and is returned on exit: exit: udev_device_unref(udev_dev); udev_unref(udev); return rc; } Cheers, -- Cristian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I hope this message will reach Marcel too, as it identifies bugs in the upstream code. On Mon, 6 Jun 2011, Cristian Ionescu-Idbohrn wrote: I'd like to get this problem out of the way. What can I do to help? [snip] Alright. I took the magic wand, Peter Hurley handed over here: http://comments.gmane.org/gmane.linux.bluez.kernel/13457 (patch for the upstream scripts/bluetooth-hid2hci.rules) which solves the two major problems (runs the /lib/udev/rules.d/62-bluez-hid2hci.rules, including hid2hci and making the hci0 device available). This: Still, hid2hci returns status code failure: exit_group(1) = ? This is another bug :( int rc = 1; is declared in 'main', never changes during the course of the program and is returned on exit: exit: udev_device_unref(udev_dev); udev_unref(udev); return rc; } on the other hand, still remains to be solved. Cheers, -- Cristian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
On Tue, 31 May 2011, Nobuhiro Iwamatsu wrote: Hi, By bluez 4.93-2, I think that this problem was revised. Would you confirm it? # --mode hci may be necessary in 62-bluez-hid2hci.rules. /lib/udev/rules.d/62-bluez-hid2hci.rules: # Logitech devices KERNEL==hiddev*, ATTRS{idVendor}==046d, ATTRS{idProduct}==c70[35e], \ RUN+=hid2hci --method=logitech-hid --devpath=%p KERNEL==hidraw*, ATTRS{idVendor}==046d, ATTRS{idProduct}==c70[4abc]|c71[34bc], \ RUN+=hid2hci --method=logitech-hid --devpath=%p /lib/udev/hid2hci is now in place, but the problem still exists. And got worth. hid2hci now refuses to switch the device to hci mode (that works with package version 4.91-1), with or without '--mode hci'. Here is what I tried, after inserting the dongle and getting the devpath from syslog: kernel: [57370.905607] input: Logitech Logitech BT Mini-Receiver as /devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3/1-3.2.3:1.0/input/input7 Checked that: # cat /sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3/1-3.2.3:1.0/input/input7/id/vendor 046d # cat /sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3/1-3.2.3:1.0/input/input7/id/product c714 exactly what lsusb reports: 046d:c714 Logitech, Inc. diNovo Edge Keyboard # udevadm test /devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 doesn't show anything about 62-bluez-hid2hci.rules catching and executing hid2hci. udev_rules_apply_to_event: PROGRAM 'mtp-probe /sys/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 1 18' /lib/udev/rules.d/45-libmtp8.rules:701 udev_rules_apply_to_event: MODE 0664 /lib/udev/rules.d/50-udev-default.rules:53 udev_rules_apply_to_event: IMPORT 'usb_id --export /devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' /lib/udev/rules.d/50-udev-default.rules:64 udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /lib/udev/rules.d/90-hal.rules:2 udev_rules_apply_to_event: MODE 0664 /lib/udev/rules.d/91-permissions.rules:36 and: # /lib/udev/hid2hci --method=logitech-hid --devpath=/devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3 --mode=hci error: switching device '/sys//devices/pci:00/:00:1d.7/usb1/1-3/1-3.2/1-3.2.3' failed. Cheers, -- Cristian -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#626975: [Pkg-bluetooth-maintainers] Bug#626975: bluez: getting a Logitech, Inc. diNovo Edge Keyboard working
Hi, By bluez 4.93-2, I think that this problem was revised. Would you confirm it? # --mode hci may be necessary in 62-bluez-hid2hci.rules. /lib/udev/rules.d/62-bluez-hid2hci.rules: # Logitech devices KERNEL==hiddev*, ATTRS{idVendor}==046d, ATTRS{idProduct}==c70[35e], \ RUN+=hid2hci --method=logitech-hid --devpath=%p KERNEL==hidraw*, ATTRS{idVendor}==046d, ATTRS{idProduct}==c70[4abc]|c71[34bc], \ RUN+=hid2hci --method=logitech-hid --devpath=%p Best regards, Nobuhiro 2011/5/17 Cristian Ionescu-Idbohrn cristian.ionescu-idbo...@axis.com: Package: bluez Version: 4.91-1 Severity: important This is a USB bluetooth dongle and a keyboard with a builtin mouse pad. After plugging the dongle in an USB port, lsusb reports: Bus 001 Device 004: ID 046d:0b04 Logitech, Inc. Bus 001 Device 005: ID 046d:c713 Logitech, Inc. Bus 001 Device 006: ID 046d:c714 Logitech, Inc. diNovo Edge Keyboard The dongle chip Manufacturer: Broadcom Corporation. The udev rule /lib/udev/rules.d/62-bluez-hid2hci.rules (package bluez) does not run: ACTION==add, ENV{ID_VENDOR}==046d, ENV{ID_MODEL}==c714 \ RUN+=/usr/sbin/hid2hci --method logitech -v $env{ID_VENDOR} -p $env{ID_MODEL} --mode hci as expected. Instead, I note the 'joydev' kernel module being loaded, and: # hcitool dev Devices: reports nothing. Please note, there's a /lib/udev/rules.d/70-hid2hci.rules (package udev), with a: KERNEL==hidraw*, ATTRS{idVendor}==046d, ATTRS{idProduct}==c70[4abc]|c71[34bc], \ RUN+=hid2hci --method=logitech-hid --devpath=%p which seems terribly wrong (at least for the 'c71[34]'). Also, '--method=logitech-hid' is not a documented method. What's documented is: -m, --method= Method to use to switch [csr, logitech, dell] If I run manually: # hid2hci --method logitech -v 046d -p c714 --mode hci Attempting to switch device 046d:c714 to HCI mode was successful This seems to do what I expect, reports success and, to my surprise, exits with status code 2 :( I know for a fact SUCCESS == 0. I get: # hcitool dev Devices: hci0 00:1F:20:aa:bb:cc and see kernel module 'btusb' loaded, and: # lsusb Bus 001 Device 004: ID 046d:0b04 Logitech, Inc. Bus 001 Device 005: ID 046d:c713 Logitech, Inc. Bus 001 Device 006: ID 046d:c714 Logitech, Inc. diNovo Edge Keyboard Bus 001 Device 007: ID 046d:c709 Logitech, Inc. BT Mini-Receiver (HCI mode) Also: # hcitool scan Scanning ... 00:1F:20:dd:ee:ff Logitech diNovo Edge Next step is pairing, but none of the straight forward methods I tried work out of the box :( Tried this: # bluez-simple-agent hci0 00:1F:20:dd:ee:ff but that is successful _only_ if one manages to get everything going at the first attempt. If not, using a bluez-simple-agent _undocumented_ and _odd_ feature (information found here: http://blog.projectnibble.org/2010/08/08/how-ubuntus-broken-bluetooth-support-came-to-be/comment-page-1/#comment-1492 ) may get one succeed every time: # bluez-simple-agent hci0 00:1F:20:dd:ee:ff repair /dev/null || bluez-simple-agent hci0 00:1F:20:dd:ee:ff Next thing is to connect (see above link): # dbus-send --system --print-reply --dest=org.bluez org/bluez/N/hci0/dev_00_1F_20_dd_ee_ff org.bluez.Input.Connect That's the simplified version. There are a few more dbus-send commands in between. Of course I collected a lot of data from my weekend long attempts to get this working, which I'm willing to share. I also put the whole thing in an inefficient shell script. I can share that too. IMO, the _major_ problem is to get the udev-rules to work out of the box. Obviously there is at least one bug in there. Next must come the pairing oddities and finally the connection (maybe trust too). -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: i386 (i686) Kernel: Linux 2.6.38-2-686 (SMP w/2 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/bash Versions of packages bluez depends on: ii dbus 1.4.8-3 simple interprocess messaging syst ii libbluetooth3 4.91-1 Library to use the BlueZ Linux Blu ii libc6 2.13-4 Embedded GNU C Library: Shared lib ii libcap-ng0 0.6.5-1+b1 An alternate POSIX capabilities li ii libdbus-1-3 1.4.8-3 simple interprocess messaging syst ii libglib2.0-0 2.28.6-1 The GLib library of C routines ii libusb-0.1-4 2:0.1.12-17 userspace USB programming library ii lsb-base 3.2-27 Linux Standard Base 3.2 init scrip ii makedev 2.3.1-89 creates device files in /dev ii