From: Xiaofan C. <xia...@gm...> - 2012-04-24 13:40:20
|
On Tue, Apr 24, 2012 at 9:13 PM, Xiaofan Chen <xia...@gm...> wrote: > Okay I modified hidtest.cpp to be suitable for the Microchip > Simple HID Demo firmware (next step is to modify it to be > suitable to Jan Axelson's generic HID demo) and it seems to > work fine but there is a catch, maybe due to bug from my > modification, HIDAPI or or maybe Microchip firmware has > a bug which somewhat comes out in FreeBSD 9. > > I tend to think my modification is not correct since I tested > it under Mac OS X Lion and everything works fine there. > > Running log: first time successful, second time the non-blocking > HID read never returns. This is quite strange. > > 1) After reset, the test program works fine. Hi Hans, Hopefully you can identify the problems from the following ugen debug logs from both good and bad run. Debug log for the good run (from resetting the device). sudo sysctl hw.usb.ugen.debug=15 sudo ./hidtest dmesg uhid0: at uhub0, port 1, addr 2 (disconnected) ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01055c5 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=0 aframes=0 ugen_ioctl: error=0 ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_ioctl: cmd=0x4004557e ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0x4004557e ugen_ioctl_post: error=0 ugen_ioctl: cmd=0x40045564 ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0x40045564 ugen_ioctl_post: error=0 ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_ioctl: cmd=0x4004557e ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0x4004557e ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01c556d ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc01c556d ugen_get_cdesc: ugen_get_cdesc: len=9 ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01c556d ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc01c556d ugen_get_cdesc: ugen_get_cdesc: len=607 ugen_ioctl_post: error=0 ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01055c5 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=0 aframes=0 ugen_ioctl: error=0 ugen_ctrl_fs_callback: st=1 alen=64 aframes=1 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=64 aframes=1 ugen_ioctl: error=0 ugen_ctrl_fs_callback: st=1 alen=64 aframes=1 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_ctrl_fs_callback: st=1 alen=64 aframes=1 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=64 aframes=1 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c1 ugen_ioctl: error=0 ugen_ctrl_fs_callback: st=2 alen=0 aframes=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_ioctl: cmd=0x800155c6 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c6 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c4 ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0x800155c4 ugen_ioctl_post: error=0 ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs The subsequent run will fail at the non-blocking hid_read. ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_open: flag=0x1 ugen_open: flag=0x2 ugen_ioctl: cmd=0x4004557e ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0x4004557e ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01c556d ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc01c556d ugen_get_cdesc: ugen_get_cdesc: len=9 ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01c556d ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc01c556d ugen_get_cdesc: ugen_get_cdesc: len=607 ugen_ioctl_post: error=0 ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc014556f ugen_ioctl: error=-3 ugen_ioctl_post: cmd=0xc014556f ugen_ioctl_post: error=0 ugen_ioctl: cmd=0xc01055c5 ugen_ioctl: error=0 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=0 aframes=0 ugen_ioctl: error=0 ugen_ctrl_fs_callback: st=1 alen=64 aframes=1 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_ioctl: cmd=0x800155c0 ugen_ctrl_fs_callback: st=0 alen=64 aframes=1 ugen_ioctl: error=0 ugen_ctrl_fs_callback: st=1 alen=64 aframes=1 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=0 ugen_ioctl: cmd=0x400155c2 ugen_ioctl: error=16 ugen_close: flag=0x1 ugen_close: no FIFOs ugen_close: flag=0x2 ugen_close: no FIFOs ugen_close: flag=0x1 ugen_ctrl_fs_callback: st=2 alen=0 aframes=0 ugen_fs_set_complete: out of buffers ugen_close: flag=0x2 ugen_close: no FIFOs -- Xiaofan |