Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

umodem(4) with "no pointer to data interface"



Hi,

I have gotten strange dmesg output for umodem(4).
How to avoid this strangeness?

My Conexant USB modem is not detected as umodem(4).
I have added the following lines like ubt(4) like
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/usb/ubt.c.diff?r1=1.48&r2=1.49

Index: umodem.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umodem.c,v
retrieving revision 1.65
diff -u -r1.65 umodem.c
--- umodem.c    3 Oct 2012 07:07:04 -0000       1.65
+++ umodem.c    20 Jan 2014 09:17:08 -0000
@@ -91,12 +91,33 @@
 CFATTACH_DECL_NEW(umodem, sizeof(struct umodem_softc), umodem_match,
     umodem_attach, umodem_detach, umodem_activate);
 
+/*
+ * To match or ignore forcibly, add
+ *
+ *     { { VendorID, ProductID }, UMATCH_VENDOR_PRODUCT|UMATCH_NONE }
+ *
+ * to the umodem_dev list.
+ */
+const struct umodem_devno {
+       struct usb_devno        devno;
+       int                     match;
+} umodem_dev[] = {
+       { { USB_VENDOR_CONEXANT, USB_PRODUCT_CONEXANT_USB56KMODEM1}, 
+         UMATCH_VENDOR_PRODUCT},
+};
+#define umodem_lookup(vendor, product) \
+       ((const struct umodem_devno *)usb_lookup(umodem_dev, vendor, product))
+
 int 
 umodem_match(device_t parent, cfdata_t match, void *aux)
 {
        struct usbif_attach_arg *uaa = aux;
        usb_interface_descriptor_t *id;
        int cm, acm;
+       const struct umodem_devno *dev;
+
+       if ((dev = umodem_lookup(uaa->vendor, uaa->product)) != NULL)
+               return dev->match;
 
        if (uaa->class != UICLASS_CDC ||
            uaa->subclass != UISUBCLASS_ABSTRACT_CONTROL_MODEL ||



Strange dmesg output is here.

umodem0 is detected, but "no pointer to data interface" and it cannot
connect to ucom(4).
Of course, my modem should be recognized as one device.

umodem0 at uhub3 port 2 configuration 1 interface 0
umodem0: Conexant USB Modem, rev 1.10/1.00, addr 11, iclass 2/2
umodem0: no pointer to data interface
umodem1 at uhub3 port 2 configuration 1 interface 1
umodem1: Conexant USB Modem, rev 1.10/1.00, addr 11, iclass 10/0
umodem1: data interface 1, has CM over data, has break
ucom0 at umodem1


How to avoid such strangeness?

umodem1 and ucom0 works fine with comms/efax-gtk.

Thank you.

--
Ryo ONODERA // ryo_on%yk.rim.or.jp@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3


Home | Main Index | Thread Index | Old Index