From owner-freebsd-usb@FreeBSD.ORG Sat Apr 26 03:50:20 2008 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2D2F1065675 for ; Sat, 26 Apr 2008 03:50:20 +0000 (UTC) (envelope-from xiaofanc@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.152]) by mx1.freebsd.org (Postfix) with ESMTP id 3043C8FC12 for ; Sat, 26 Apr 2008 03:50:19 +0000 (UTC) (envelope-from xiaofanc@gmail.com) Received: by fg-out-1718.google.com with SMTP id 16so4315885fgg.35 for ; Fri, 25 Apr 2008 20:50:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; bh=ol0LMzmBdwGlZbxCx2oEja5cEN9jLqKHwE5PBX7Lgk8=; b=efAnwTUH8iU0DGoWSrgPQCQfg1dcewzPHDYbQrudGLW/cKPOBoIioQbdCshCFnHs1r3R176GyAv3fmosU4sKVABWJXM+WPh8Si49xSNhfZ24ehYRJ2BCs8eOU8FI0q3hkJg2+DyuRhMWuU3gJAMDKp506gsVGjxfSWTMt4bD8l0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=SdEQfnMhRIBeyfoD0VdKJDiUcrvC3ODn/xCkZNF6DL8QO1lsTpmmJf/sNhplaxc719aa3wYJ5qIlkOFh0YdVI0jVx4F4EljtGpv+nUZ9On9UD/CdWWqTLcz44XmQdhpaBnms2+O2aXzjJd88z7Pa/LPxSYZjTRZte0unPhfjH8g= Received: by 10.78.168.1 with SMTP id q1mr3451503hue.104.1209181818538; Fri, 25 Apr 2008 20:50:18 -0700 (PDT) Received: by 10.78.176.18 with HTTP; Fri, 25 Apr 2008 20:50:18 -0700 (PDT) Message-ID: Date: Sat, 26 Apr 2008 11:50:18 +0800 From: "Xiaofan Chen" To: "Hans Petter Selasky" In-Reply-To: <200804251849.11283.hselasky@c2i.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200804251849.11283.hselasky@c2i.net> Cc: freebsd-usb@freebsd.org Subject: Re: PICDEM FS USB Bootloader under FreeBSD X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 26 Apr 2008 03:50:20 -0000 On Sat, Apr 26, 2008 at 12:49 AM, Hans Petter Selasky wrote: > Hi, > > 1) Try to get debugging from USB instead of OHCI. > > sysctl hw.usb.ohci.debug=0 > > sysctl hw.usb.debug=15 > > Retry. [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ sudo sysctl hw.usb.debug=15 Password: hw.usb.debug: 0 -> 15 [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ sudo usbdev s addr 1: OHCI root HUB, nVidia addr 2: PICkit 2 Microcontroller Programmer, Microchip Technology Inc. addr 1: OHCI root HUB, nVidia addr 2: product 0x000b, I-Tuner Networks addr 1: EHCI root HUB, nVidia addr 2: Mass Storage, USB [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ ./fsusb fsusb: Software for "PICDEM Full Speed USB" demo board fsusb program board with and verify fsusb --program program board with and verify fsusb --verify verify board against fsusb --read read board, saving result in [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ ./fsusb --v erify demo.hex Locating USB Microchip(tm) PICDEM-FS USB(tm) (vendor 0x04d8/product 0x000b) Found USB PICDEM-FS USB as device '/dev/ugen1' on USB bus /dev/usb1 Communication established. Onboard firmware version is 1.0 ^C after I went out for shoping for 30 minutes and came back ;-) [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ dmesg ... ugen1: on usb1 ugenopen: flag=1, mode=8192 ugenioctl: cmd=40125569 ugenclose: flag=1, mode=8192 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0029 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=49, slen=49, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0201 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0201 wIndex=0x0000 wLength=0x0020 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=40, slen=40, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenclose: flag=3, mode=8192 ugenopen: flag=1, mode=8192 ugenioctl: cmd=40125569 ugenclose: flag=1, mode=8192 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc4c6c800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc46d8070, pipe=0xc4c6c9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc46d8070 pipe=0xc4c6c9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc4c6c800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0020 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc46d8070, pipe=0xc4c6c9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc46d8070 pipe=0xc4c6c9b0 sts=0 alen=40, slen=40, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenclose: flag=3, mode=8192 usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up ugenopen: flag=1, mode=8192 ugenioctl: cmd=40125569 ugenclose: flag=1, mode=8192 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0029 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=49, slen=49, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0201 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc40bc800 bmRequestType=0x80 bRequest=0x06 wValue=0x0201 wIndex=0x0000 wLength=0x0020 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc4272070, pipe=0xc40bc9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc40bc9b0 edesc=0xc40bcc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc40bc9b0 usbd_transfer_dequeue: xfer=0xc4272070 pipe=0xc40bc9b0 sts=0 alen=40, slen=40, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenclose: flag=3, mode=8192 ugenopen: flag=1, mode=8192 ugenioctl: cmd=40125569 ugenclose: flag=1, mode=8192 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc4c6c800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0008 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc46d8070, pipe=0xc4c6c9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc46d8070 pipe=0xc4c6c9b0 sts=0 alen=16, slen=16, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenioctl: cmd=80045572 ugenioctl: cmd=c018556f usbd_do_request_flags: udev=0xc4c6c800 bmRequestType=0x80 bRequest=0x06 wValue=0x0200 wIndex=0x0000 wLength=0x0020 usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc46d8070, pipe=0xc4c6c9b0, nframes=2, dir=read usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc46d8070 pipe=0xc4c6c9b0 sts=0 alen=40, slen=40, afrm=2, nfrm=2 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugenclose: flag=3, mode=8192 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045565 ugen_set_config: configno 1, sc=0xc4e74000 ugenclose: flag=0, mode=0 ugenopen: flag=3, mode=8192 ugenioctl: cmd=80045572 ugenwrite: usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x1 type=0x2 dir=0x0 index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x0 type=0x0 dir=0xff index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x1 type=0x2 dir=0x0 index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x0 type=0x0 dir=0xff index=0 ugenwrite: transferred 5 bytes usbd_callback_wrapper: case 1 usbd_callback_wrapper: case 1 usbd_clear_data_toggle: udev=0xc4c6c800 pipe=0xc4c6c9c4 usbd_start_hardware: xfer=0xc5bb7140, pipe=0xc4c6c9b0, nframes=1, dir=write usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=0 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc5bb7140 pipe=0xc4c6c9b0 sts=22 alen=8, slen=8, afrm=1, nfrm=1 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugen_write_clear_stall_callback: sce=0xc4e74084: stall cleared usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc5ba7070, pipe=0xc4c6c9c4, nframes=1, dir=write usbd_dump_pipe: pipe=0xc4c6c9c4 edesc=0xc4294792 isoc_next=0 toggle_next=0 bEndpointAddress=0x01 usbd_dump_queue: pipe=0xc4c6c9c4 usbd_transfer_dequeue: xfer=0xc5ba7070 pipe=0xc4c6c9c4 sts=0 alen=5, slen=5, afrm=1, nfrm=1 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugen_default_write_callback: waking 0xc4e74084 ugenioctl: cmd=80045572 ugenioctl: cmd=80045571 ugenread: usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x1 type=0x2 dir=0x80 index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x0 type=0x0 dir=0xff index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x1 type=0x2 dir=0x80 index=0 usbd_get_pipe: udev=0xc4c6c800 iface_index=0 address=0x0 type=0x0 dir=0xff index=0 usbd_callback_wrapper: case 1 usbd_callback_wrapper: case 1 usbd_clear_data_toggle: udev=0xc4c6c800 pipe=0xc4c6c9d8 usbd_start_hardware: xfer=0xc5bc8140, pipe=0xc4c6c9b0, nframes=1, dir=write usbd_dump_pipe: pipe=0xc4c6c9b0 edesc=0xc4c6cc7d isoc_next=0 toggle_next=1 bEndpointAddress=0x00 usbd_dump_queue: pipe=0xc4c6c9b0 usbd_transfer_dequeue: xfer=0xc5bc8140 pipe=0xc4c6c9b0 sts=22 alen=8, slen=8, afrm=1, nfrm=1 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugen_read_clear_stall_callback: sce=0xc4e74084: stall cleared usbd_callback_wrapper: case 1 usbd_start_hardware: xfer=0xc5bb8070, pipe=0xc4c6c9d8, nframes=1, dir=read usbd_dump_pipe: pipe=0xc4c6c9d8 edesc=0xc4294799 isoc_next=0 toggle_next=0 bEndpointAddress=0x81 usbd_dump_queue: pipe=0xc4c6c9d8 usbd_transfer_dequeue: xfer=0xc5bb8070 pipe=0xc4c6c9d8 sts=0 alen=4, slen=4, afrm=1, nfrm=1 usbd_callback_wrapper: case 5 usbd_callback_wrapper: case 4 ugen_default_read_callback: waking 0xc4e74084 ugenread: got 4 of 4 bytes usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up usb_event_thread: woken up ugenclose: flag=3, mode=8192 ugenclose: flag=3, mode=8192 usbd_transfer_dequeue: xfer=0xc5bb8070 pipe=0xc4c6c9d8 sts=5 alen=4, slen=4, afrm=1, nfrm=1 usbd_transfer_dequeue: xfer=0xc5bc8140 pipe=0xc4c6c9b0 sts=5 alen=8, slen=8, afrm=1, nfrm=1 usbd_transfer_dequeue: xfer=0xc5ba7070 pipe=0xc4c6c9c4 sts=5 alen=5, slen=5, afrm=1, nfrm=1 usbd_transfer_dequeue: xfer=0xc5bb7140 pipe=0xc4c6c9b0 sts=5 alen=8, slen=8, afrm=1, nfrm=1 By the way, lsusb can read the VID/PID correctly but usbdevs does not do it correctly. There is no string descriptor for the bootloader device since it has limited storage (0x800 Bytes only). ugen1: on usb1 [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ lsusb Bus /dev/usb0 Device /dev/ugen0: ID 04d8:0033 Microchip Technology, Inc. Bus /dev/usb1 Device /dev/ugen1: ID 04d8:000b Microchip Technology, Inc. [mcuee@freebsd7 /usr/home/mcuee/Desktop/build/fsusb/fsusb-0.1.11-2]$ sudo usbdevs addr 1: OHCI root HUB, nVidia addr 2: PICkit 2 Microcontroller Programmer, Microchip Technology Inc. addr 1: OHCI root HUB, nVidia addr 2: product 0x000b, I-Tuner Networks addr 1: EHCI root HUB, nVidia addr 2: Mass Storage, USB > 2) Patch /sys/dev/usb/ugen.c > > Change all lines looking like the following, that are not in a function > named "xxx_callback": > > sce->read_stall = 1; > sce->write_stall = 1; > > Into: > > sce->read_stall = 0; > sce->write_stall = 0; > > Recompile ugen an try again. Maybe this is a stupid question but how do I compile ugen only and not the whole kernel? Normally I will use the following command with this modifications. [root@freebsd7 /usr/src]# make buildkernel installkernel KERNCONF=custom -DNOCLEAN -DNO_CLEAN -DNO_KERNELDEPEND But with major updates I will just use make buildkernel installkernel KERNCONF=custom I will try this out and report back. Xiaofan