From owner-freebsd-current@FreeBSD.ORG Sun Jun 23 08:33:37 2013 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id C7D4A9DF for ; Sun, 23 Jun 2013 08:33:37 +0000 (UTC) (envelope-from ianf@clue.co.za) Received: from zcs04.jnb1.cloudseed.co.za (zcs04.jnb1.cloudseed.co.za [41.154.0.161]) by mx1.freebsd.org (Postfix) with ESMTP id C75BD137C for ; Sun, 23 Jun 2013 08:33:36 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by zcs04.jnb1.cloudseed.co.za (Postfix) with ESMTP id 82B582A831DD; Sun, 23 Jun 2013 10:33:27 +0200 (SAST) X-Virus-Scanned: amavisd-new at zcs04.jnb1.cloudseed.co.za Received: from zcs04.jnb1.cloudseed.co.za ([127.0.0.1]) by localhost (zcs04.jnb1.cloudseed.co.za [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hK55isD4r4AP; Sun, 23 Jun 2013 10:33:25 +0200 (SAST) Received: from clue.co.za (unknown [41.154.88.19]) by zcs04.jnb1.cloudseed.co.za (Postfix) with ESMTPSA id 231442A831B9; Sun, 23 Jun 2013 10:33:25 +0200 (SAST) Received: from localhost ([127.0.0.1] helo=zen.clue.co.za) by clue.co.za with esmtp (Exim 4.80.1 (FreeBSD)) (envelope-from ) id 1Uqfje-0000Ka-I2; Sun, 23 Jun 2013 10:33:22 +0200 To: Hans Petter Selasky From: Ian FREISLICH Subject: Re: usb ACM device doesn't work In-Reply-To: <51C6159D.3080205@bitfrost.no> References: <51C6159D.3080205@bitfrost.no> <8316A74D-7816-497C-851E-9D13A658C835@gsoft.com.au> X-Attribution: BOFH Date: Sun, 23 Jun 2013 10:33:22 +0200 Message-Id: Cc: current@freebsd.org X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jun 2013 08:33:37 -0000 Hans Petter Selasky wrote: > On 06/22/13 20:54, Ian FREISLICH wrote: > > "Daniel O'Connor" wrote: > >> > >> On 22/06/2013, at 4:10, Ian FREISLICH wrote: > >>> I bought a relay control board that has a USB interface. It presents > >>> a serial port to Linux on /dev/ttyACMx. However when I plug it > >>> into my FreeBSD host, it detects as follows: > >>> > >>> ugen0.2: at usbus0 > >>> umodem0: on usbus0 > >>> umodem0: data interface 1, has no CM over data, has no break > >>> > >>> and I cannot communicate with it. Any ideas how to communicate with it? > >> > >> Have you tried anything? > >> It should create /dev/cuaUx and /dev/ttyUx (where x is 0 in your case) > > > > I'w sorry, I should have been more specific. > > > > I have a device that controls a bunch of relays with commands issued > > to it over a serial port. This serial port is CDC-ACM on a USB > > interface. The device uses a PIC microcontroller and PICKIT2 from > > Microchip Technology Inc (vendorID 0x04d8). Linux correctly detects > > the device with "CM over data" and I'm able to communicate with it > > on /dev/ttyACM0 and the TX/RX LEDs on the device blink when > > transferring data. > > > > FreeBSD on the other hand detects it as having no "CM over data" > > and while I can open /dev/cuaU0 and write data to it, the RX/TX > > lights on the device don't blink and reads time out. As previously > > stated "I cannot communicate with it". I tried adding the quirk > > UQ_ASSUME_CM_OVER_DATA, but then the terminal program locks up and > > won't exit until I pull the USB cable. The same happens when I > > force the CM over Data capability in the umodem driverwhen attaching > > the device, so there's some issue with our CDC/ACM support or Linux > > is working harder to make non-compliant usb hardware work. > > > > Also, our usbdevs is incorrect in listing vedor 0x04d8 as I-Tuner > > Networks. It is in fact licensed to Microchip Tochnology Inc. which > > then sub-licenses productIDs royalty free to third parties providing > > certain conditions are met. See: > > > > http://ww1.microchip.com/downloads/en/DeviceDoc/APPLICATION%20FOR%20SUBLICE NSE%20TO%20USB%20VID%20revised%2012110.pdf > > > > I don't have the knowledge to fix the FreeBSD USD driver and for > > the $45 it cost me it's not worth the effort to reinstall the host > > I'm using with linux. If there's no fix forthcoming I'll just get > > the EIA-485 version of the device with no hard feelings. > > > > Ian > > > > Hi Ian, > > Have you tried using usbdump to capture the USB traffic? It might be > something like clear-stall which fails, and make the device broken: > > usbdump -i usbusX -f Y -vvv -s 65536 I can't see anything obvious. As I plug the device in: 10:23:59.519700 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 01 00 00 08 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 8 bytes flags 0x10 status 0xca1a3 10:23:59.521660 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 8 bytes 0000 12 01 10 01 02 00 00 08 -- -- -- -- -- -- -- -- |........ | flags 0x10 status 0xca1a1 10:23:59.521694 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 01 00 00 12 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 18 bytes flags 0x10 status 0xea1a3 10:23:59.522736 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=20,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 18 bytes 0000 12 01 10 01 02 00 00 08 D8 04 F9 FE 00 01 01 02 |................| 0010 00 01 -- -- -- -- -- -- -- -- -- -- -- -- -- -- |.. | flags 0x10 status 0xea1a1 10:23:59.522769 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 03 00 00 02 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 2 bytes flags 0x10 status 0xca1a3 10:23:59.523344 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 2 bytes 0000 04 03 -- -- -- -- -- -- -- -- -- -- -- -- -- -- |.. | flags 0x10 status 0xca1a1 10:23:59.523371 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 03 00 00 04 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 4 bytes flags 0x10 status 0xea1a3 10:23:59.524106 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 4 bytes 0000 04 03 09 04 -- -- -- -- -- -- -- -- -- -- -- -- |.... | flags 0x10 status 0xea1a1 10:23:59.524128 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 01 03 09 04 02 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 2 bytes flags 0x10 status 0xca1a3 10:23:59.524620 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 2 bytes 0000 08 03 -- -- -- -- -- -- -- -- -- -- -- -- -- -- |.. | flags 0x10 status 0xca1a1 10:23:59.524640 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 01 03 09 04 08 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 8 bytes flags 0x10 status 0xea1a3 10:23:59.525396 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 8 bytes 0000 08 03 4B 00 4D 00 54 00 -- -- -- -- -- -- -- -- |..K.M.T. | flags 0x10 status 0xea1a1 10:23:59.525415 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 02 03 09 04 02 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 2 bytes flags 0x10 status 0xca1a3 10:23:59.525914 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 2 bytes 0000 18 03 -- -- -- -- -- -- -- -- -- -- -- -- -- -- |.. | flags 0x10 status 0xca1a1 10:23:59.525927 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 02 03 09 04 18 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 24 bytes flags 0x10 status 0xea1a3 10:23:59.526951 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=24,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 24 bytes 0000 18 03 55 00 53 00 42 00 20 00 43 00 44 00 43 00 |..U.S.B. .C.D.C.| 0010 20 00 43 00 4F 00 4D 00 -- -- -- -- -- -- -- -- | .C.O.M. | flags 0x10 status 0xea1a1 10:23:59.526975 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 02 00 00 09 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 9 bytes flags 0x10 status 0xca1a3 10:23:59.527718 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=12,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 9 bytes 0000 09 02 43 00 02 01 00 C0 00 -- -- -- -- -- -- -- |..C...... | flags 0x10 status 0xca1a1 10:23:59.527735 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 06 00 02 00 00 43 00 -- -- -- -- -- -- -- -- |......C. | frame[1] READ 67 bytes flags 0x10 status 0xea1a3 10:23:59.530048 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=68,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 67 bytes 0000 09 02 43 00 02 01 00 C0 00 09 04 00 00 01 02 02 |..C.............| 0010 01 00 05 24 00 10 01 04 24 02 02 05 24 06 00 01 |...$....$...$...| 0020 05 24 01 00 01 07 05 81 03 08 00 FA 09 04 01 00 |.$..............| 0030 02 0A 00 00 00 07 05 02 02 40 00 01 07 05 82 02 |.........@......| 0040 40 00 01 -- -- -- -- -- -- -- -- -- -- -- -- -- |@.. | flags 0x10 status 0xea1a1 10:23:59.530084 usbus0.2 SUBM-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 80 00 00 00 00 00 02 00 -- -- -- -- -- -- -- -- |........ | frame[1] READ 2 bytes flags 0x10 status 0xca1a3 10:23:59.530568 usbus0.2 DONE-CTRL-EP=00000080,SPD=FULL,NFR=2,SLEN=4,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] READ 2 bytes 0000 01 00 -- -- -- -- -- -- -- -- -- -- -- -- -- -- |.. | flags 0x10 status 0xca1a1 10:23:59.530830 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 00 09 01 00 00 00 00 00 -- -- -- -- -- -- -- -- |........ | flags 0x10 status 0xea1a3 10:23:59.531395 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0 frame[0] WRITE 8 bytes flags 0x10 status 0xea1a1 ================= On onening /dev/cuaU0: 10:27:11.183141 usbus0.2 SUBM-INTR-EP=00000081,SPD=FULL,NFR=1,SLEN=0,IVAL=250 frame[0] READ 8 bytes flags 0x8a status 0xcb023 10:27:11.183145 usbus0.2 SUBM-BULK-EP=00000082,SPD=FULL,NFR=1,SLEN=0,IVAL=0 frame[0] READ 1024 bytes flags 0xa status 0xeb023 10:27:11.183152 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 21 22 03 00 00 00 00 00 -- -- -- -- -- -- -- -- |!"...... | flags 0x10 status 0xca1a3 10:27:11.183481 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0 frame[0] WRITE 8 bytes flags 0x10 status 0xca1a1 10:27:11.183494 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=8,IVAL=0 frame[0] WRITE 8 bytes 0000 21 22 03 00 00 00 00 00 -- -- -- -- -- -- -- -- |!"...... | flags 0x10 status 0xea1a3 10:27:11.183989 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=0,IVAL=0,ERR=0 frame[0] WRITE 8 bytes flags 0x10 status 0xea1a1 10:27:11.183996 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=2,SLEN=16,IVAL=0 frame[0] WRITE 8 bytes 0000 21 20 00 00 00 00 07 00 -- -- -- -- -- -- -- -- |! ...... | frame[1] WRITE 7 bytes 0000 80 25 00 00 00 00 08 -- -- -- -- -- -- -- -- -- |.%..... | flags 0x10 status 0xca1a3 10:27:11.184507 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=2,SLEN=0,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] WRITE 7 bytes flags 0x10 status 0xca1a1 ================= On writing data to /dev/cuaU0: 10:29:03.220028 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=2,SLEN=16,IVAL=0 frame[0] WRITE 8 bytes 0000 21 20 00 00 00 00 07 00 -- -- -- -- -- -- -- -- |! ...... | frame[1] WRITE 7 bytes 0000 80 25 00 00 00 00 08 -- -- -- -- -- -- -- -- -- |.%..... | flags 0x10 status 0xea1a3 10:29:03.220622 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=2,SLEN=0,IVAL=0,ERR=0 frame[0] WRITE 8 bytes frame[1] WRITE 7 bytes flags 0x10 status 0xea1a1 10:29:19.903977 usbus0.2 SUBM-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=8,IVAL=50 frame[0] WRITE 8 bytes 0000 02 01 00 00 02 00 00 00 -- -- -- -- -- -- -- -- |........ | flags 0 <0> status 0x6a1a3 10:29:19.904422 usbus0.2 DONE-CTRL-EP=00000000,SPD=FULL,NFR=1,SLEN=0,IVAL=50,ERR=0 frame[0] WRITE 8 bytes flags 0 <0> status 0xea1a1 10:29:19.904434 usbus0.2 SUBM-BULK-EP=00000002,SPD=FULL,NFR=1,SLEN=4,IVAL=0 frame[0] WRITE 1 bytes 0000 6F -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |o | flags 0x9 status 0x4a023 -- Ian Freislich