From csp@csperkins.org  Mon Jan 20 15:26:19 2003
Return-Path: <csp@csperkins.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 5B38237B401
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 20 Jan 2003 15:26:19 -0800 (PST)
Received: from purple.nge.isi.edu (dial161.east.isi.edu [65.114.169.161])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 42A8C43EB2
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 20 Jan 2003 15:26:17 -0800 (PST)
	(envelope-from csp@csperkins.org)
Received: from purple.nge.isi.edu (localhost [127.0.0.1])
	by purple.nge.isi.edu (8.12.6/8.12.6) with ESMTP id h0KNQEOd000880
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 20 Jan 2003 18:26:14 -0500 (EST)
	(envelope-from csp@purple.nge.isi.edu)
Received: (from csp@localhost)
	by purple.nge.isi.edu (8.12.6/8.12.6/Submit) id h0KNQDaB000879;
	Mon, 20 Jan 2003 18:26:13 -0500 (EST)
	(envelope-from csp)
Message-Id: <200301202326.h0KNQDaB000879@purple.nge.isi.edu>
Date: Mon, 20 Jan 2003 18:26:13 -0500 (EST)
From: Colin Perkins <csp@csperkins.org>
Reply-To: Colin Perkins <csp@csperkins.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: umodem update to support motorola v66 phone
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         47274
>Category:       kern
>Synopsis:       umodem update to support motorola v66 phone
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    joe
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 20 15:30:01 PST 2003
>Closed-Date:    Mon Jan 12 05:20:00 PST 2004
>Last-Modified:  Mon Jan 12 05:20:00 PST 2004
>Originator:     Colin Perkins
>Release:        FreeBSD 4.7-STABLE i386
>Organization:
USC/ISI
>Environment:
System: FreeBSD purple.nge.isi.edu 4.7-STABLE FreeBSD 4.7-STABLE #1: Mon Jan 20 17:22:56 EST 2003 root@purple.nge.isi.edu:/usr/obj/usr/src/sys/PURPLE i386
IBM ThinkPad X22 laptop with Motorola V66e phone

>Description:

The umodem device in 4.7-STABLE does not correctly detect and attach to 
a Motorola V66e phone. Patch enclosed updates the umodem driver, as per 
NetBSD, and allows the phone to work as a USB modem.

>How-To-Repeat:

Attach phone to USB port on a 4.7-STABLE system, with hw.usb.umodem.debug=1 
in /etc/sysctl.conf. Something similar to the following will be logged, and
the device will fail to attach.

  Jan 20 17:10:39 purple /kernel: umodem0: Motorola Inc. Motorola Phone (V.series 66), rev 1.10/0.01, addr 2, iclass 2/2
  Jan 20 17:10:39 purple /kernel: umodem0: data interface 1, has CM over data, has no break
  Jan 20 17:10:39 purple /kernel: umodem0: umodem_set_comm_feat: feature=1 failed, err=13
  Jan 20 17:10:39 purple /kernel: umodem_attach: BAD -> DYING
  Jan 20 17:10:39 purple /kernel: device_probe_and_attach: umodem0 attach returned 6
  Jan 20 17:10:39 purple /kernel: ugen0:  product 0x1005, rev 1.10/0.01, addr 2
  Jan 20 17:10:44 purple /kernel: ugen0: setting configuration index 0 failed
  Jan 20 17:10:44 purple /kernel: device_probe_and_attach: ugen0 attach returned 6

>Fix:

Apply patch below to /usr/src/sys/dev/usb/umodem.c (patch inspired by
NetBSD sources). The device is now correctly detected when attached, 
and appears to function correctly.


*** umodem.c.orig       Mon Jan 20 17:14:33 2003
--- umodem.c    Mon Jan 20 17:18:37 2003
***************
*** 319,326 ****
                sc->sc_cm_over_data = 1;
        } else {
        if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
!               err = umodem_set_comm_feature(sc, UCDC_ABSTRACT_STATE,
!                                           UCDC_DATA_MULTIPLEXED);
                if (err)
                        goto bad;
                sc->sc_cm_over_data = 1;
--- 319,329 ----
                sc->sc_cm_over_data = 1;
        } else {
        if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
!               if (sc->sc_acm_cap & USB_CDC_ACM_HAS_FEATURE) {
!                       err = umodem_set_comm_feature(sc, UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED);
!               } else {
!                       err = 0;
!               }
                if (err)
                        goto bad;
                sc->sc_cm_over_data = 1;

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->joe 
Responsible-Changed-By: kris 
Responsible-Changed-When: Thu Jul 17 18:01:21 PDT 2003 
Responsible-Changed-Why:  
Assign to USB maintainer 

http://www.freebsd.org/cgi/query-pr.cgi?pr=47274 
State-Changed-From-To: open->closed 
State-Changed-By: sanpei 
State-Changed-When: Mon Jan 12 05:19:18 PST 2004 
State-Changed-Why:  
Commited umodem.c rev. 1.17.2.10, Thanks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=47274 
>Unformatted:
