Date: Sun, 4 Nov 2007 13:07:27 +0800 From: "Xiaofan Chen" <xiaofanc@gmail.com> To: freebsd-usb@freebsd.org Subject: libusb_interrupt_write hangs with FreeBSD 7 Message-ID: <a276da400711032207r5b2ad396y869454f156322bc8@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I've tried to test PICKit 2 under the latest FreeBSD 7 Snapshots. However, libusb_interrupt_write hangs. The same error happened to FreeBSD 6.2 Stable last time I tried it. With the alternative HPS stack, the program works. I have also got PICkit 2 console program Linux port to fully work under FreeBSD with HPS stack. Reference: http://groups.google.com/group/pickit-devel/browse_thread/thread/61627bd8345759b3 ===[mcuee] ~/Desktop/build/mypk2 # uname -a FreeBSD FreeBsd.Mshome 7.0-BETA2 FreeBSD 7.0-BETA2 #3: Fri Nov 2 20:33:40 SGT 2007 root@FreeBsd.Mshome:/home/obj/home/src/sys/USBDEBUG i386 ===[mcuee] ~/Desktop/build/mypk2 # cat testpk2.py #!/usr/local/bin/python -i import usb def opendevice(idVendor, idProduct): devices=[] for b in usb.busses(): for d in b.devices: if d.idVendor==idVendor and d.idProduct==idProduct: devices.append(d) if len(devices)==1: device=devices[0] return device elif not devices: raise "Device not found" else: raise "More than one device found" if __name__=="__main__": device=opendevice(0x04d8, 0x0033) packet_len=64 dh=device.open() dh.setConfiguration(1) print "set Configuration 1" dh.claimInterface(0) print "claim Interface 0" #dh.setAltInterface(0) # First test, turn power on print "Turning power on by USB interrupt write" dh.interruptWrite(1,"V1"+(packet_len-2)*"Z",10000) # Second test, get version number print "Sending version command by USB interrupt write" dh.interruptWrite(1,"v"+(packet_len-1)*"Z",10000) print "Getting version command by USB interrupt read" #r=dh.interruptRead(0x81,64,10000) r=dh.interruptRead(1,64,10000) print r ===[mcuee] ~/Desktop/build/mypk2 # sudo sysctl hw.usb.debug=15 Password: hw.usb.debug: 0 -> 15 ===[mcuee] ~/Desktop/build/mypk2 # python testpk2.py usb_set_debug: Setting debugging level to 255 (on) usb_os_find_busses: Found /dev/usb0 usb_os_find_busses: Found /dev/usb1 usb_os_find_busses: can't open /dev/usb2: Permission denied usb_os_find_devices: Found /dev/ugen0 on /dev/usb1 usb_os_find_devices: Found /dev/ugen1 on /dev/usb1 usb_control_msg: 128 6 512 0 0xbfbfe444 8 1000 usb_control_msg: 128 6 512 0 0x283050a0 41 1000 skipped 1 class/vendor specific interface descriptors usb_control_msg: 128 6 513 0 0xbfbfe444 8 1000 usb_control_msg: 128 6 513 0 0x28361100 32 1000 usb_control_msg: 128 6 512 0 0xbfbfe444 8 1000 usb_control_msg: 128 6 512 0 0x28361140 32 1000 set Configuration 1 claim Interface 0 Turning power on by USB interrupt write ^C (Note by Xiaofan: Program hangs) Traceback (most recent call last): File "testpk2.py", line 37, in <module> dh.interruptWrite(1,"V1"+(packet_len-2)*"Z",10000) KeyboardInterrupt usb_os_close: closing endpoint 4 ===[mcuee] ~/Desktop/build/mypk2 # dmesg <skipped> ugen1: <Microchip Technology Inc. PICkit 2 Microcontroller Programmer, class 0/0, rev 2.00/0.01, addr 3> on uhub1 usb_event_thread: woke up usb_discover usbd_alloc_xfer() = 0xc406e400 usbd_transfer: xfer=0xc406e400, flags=6, pipe=0xc4053d00, running=0 usbd_dump_queue: pipe=0xc4053d00 usb_insert_transfer: pipe=0xc4053d00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4053d00 xfer=0xc406e400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4053d00, xfer=0 usbd_free_xfer: 0xc406e400 usbd_alloc_xfer() = 0xc406e400 usbd_transfer: xfer=0xc406e400, flags=6, pipe=0xc4053d00, running=0 usbd_dump_queue: pipe=0xc4053d00 usb_insert_transfer: pipe=0xc4053d00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4053d00 xfer=0xc406e400 status=0 actlen=14 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4053d00, xfer=0 usbd_free_xfer: 0xc406e400 usbd_alloc_xfer() = 0xc406e400 usbd_transfer: xfer=0xc406e400, flags=6, pipe=0xc4053d00, running=0 usbd_dump_queue: pipe=0xc4053d00 usb_insert_transfer: pipe=0xc4053d00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4053d00 xfer=0xc406e400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4053d00, xfer=0 usbd_free_xfer: 0xc406e400 usbd_alloc_xfer() = 0xc406e400 usbd_transfer: xfer=0xc406e400, flags=6, pipe=0xc4053d00, running=0 usbd_dump_queue: pipe=0xc4053d00 usb_insert_transfer: pipe=0xc4053d00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4053d00 xfer=0xc406e400 status=0 actlen=28 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4053d00, xfer=0 usbd_free_xfer: 0xc406e400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4069b00, running=0 usbd_dump_queue: pipe=0xc4069b00 usb_insert_transfer: pipe=0xc4069b00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4069b00 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4069b00, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4069b00, running=0 usbd_dump_queue: pipe=0xc4069b00 usb_insert_transfer: pipe=0xc4069b00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4069b00 xfer=0xc5494400 status=0 actlen=14 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4069b00, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4069b00, running=0 usbd_dump_queue: pipe=0xc4069b00 usb_insert_transfer: pipe=0xc4069b00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4069b00 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4069b00, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4069b00, running=0 usbd_dump_queue: pipe=0xc4069b00 usb_insert_transfer: pipe=0xc4069b00 running=0 timeout=5000 usb_transfer_complete: pipe=0xc4069b00 xfer=0xc5494400 status=0 actlen=28 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4069b00, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=10 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=42 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=52 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=2 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=5000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=72 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=8 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=41 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=8 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc4356800, running=0 usbd_dump_queue: pipe=0xc4356800 usb_insert_transfer: pipe=0xc4356800 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc4356800 xfer=0xc5494400 status=0 actlen=32 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc4356800, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=8 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=6, pipe=0xc40eca80, running=0 usbd_dump_queue: pipe=0xc40eca80 usb_insert_transfer: pipe=0xc40eca80 running=0 timeout=1000 usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc40eca80 xfer=0xc5494400 status=0 actlen=32 usb_transfer_complete: repeat=0 new head=0 usbd_start_next: pipe=0xc40eca80, xfer=0 usbd_free_xfer: 0xc5494400 usbd_open_pipe: iface=0xc42616e0 address=0x1 flags=0x0 usbd_setup_pipe: dev=0xc4357880 iface=0xc42616e0 ep=0xc426184c pipe=0xe6c8a968 usbd_open_pipe_intr: address=0x81 flags=0x4 len=64 usbd_open_pipe: iface=0xc42616e0 address=0x81 flags=0x1 usbd_setup_pipe: dev=0xc4357880 iface=0xc42616e0 ep=0xc4261840 pipe=0xe6c8a93c usbd_alloc_xfer() = 0xc5494400 usbd_transfer: xfer=0xc5494400, flags=4, pipe=0xc56aca80, running=0 usbd_dump_queue: pipe=0xc56aca80 usb_insert_transfer: pipe=0xc56aca80 running=0 timeout=0 usbd_alloc_xfer() = 0xc525fe00 usbd_intr_transfer: start transfer 64 bytes usbd_transfer: xfer=0xc525fe00, flags=0, pipe=0xc55a6080, running=0 usbd_dump_queue: pipe=0xc55a6080 usb_insert_transfer: pipe=0xc55a6080 running=0 timeout=10000 usb_event_thread: woke up usb_discover usb_event_thread: woke up usb_discover usbd_intr_transfer: tsleep=4 usbd_ar_pipe: pipe=0xc55a6080 usbd_dump_queue: pipe=0xc55a6080 xfer=0xc525fe00 usbd_ar_pipe: pipe=0xc55a6080 xfer=0xc525fe00 (methods=0xc0b447e4) usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc55a6080 xfer=0xc525fe00 status=6 actlen=0 usb_transfer_complete: repeat=0 new head=0 usbd_free_xfer: 0xc525fe00 usbd_ar_pipe: pipe=0xc55a6080 usbd_dump_queue: pipe=0xc55a6080 usbd_ar_pipe: pipe=0xc56aca80 usbd_dump_queue: pipe=0xc56aca80 xfer=0xc5494400 usbd_ar_pipe: pipe=0xc56aca80 xfer=0xc5494400 (methods=0xc0b447e4) usb_schedsoftintr: polling=0 usb_transfer_complete: pipe=0xc56aca80 xfer=0xc5494400 status=6 actlen=0 usb_transfer_complete: repeat=0 new head=0 usb_event_thread: woke up usb_discover usb_event_thread: woke up usb_discover usb_event_thread: woke up usb_discover
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a276da400711032207r5b2ad396y869454f156322bc8>