Hello,
My provider (mts mblaze) gave me a ZTE AC2746 USB modem to connect to
the internet. It works fine with WinDOS but OpenBSD just recognized it
as umass device.
Attached is a patch against 4.9 sources which adds support for ZTE
AC2746 to the umsm driver. I also attached a patch which changes the
return value of ucom_match from (1) to UMATCH_GENERIC.
Here is the dmesg output after booting a GENERIC kernel with the patch
applied:
umsm0 at uhub0 port 2 configuration 1 interface 0 "ZTE, Incorporated USB
Storage" rev 1.10/0.00 addr 3
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
root on wd0a swap on wd0b dump on wd0b
umsm0 detached
umsm0 at uhub0 port 2 configuration 1 interface 0 "ZTE, Incorporated ZTE
CDMA Tech" rev 1.10/0.00 addr 3
ucom0 at umsm0
umsm1 at uhub0 port 2 configuration 1 interface 1 "ZTE, Incorporated ZTE
CDMA Tech" rev 1.10/0.00 addr 3
ucom1 at umsm1
umsm2 at uhub0 port 2 configuration 1 interface 2 "ZTE, Incorporated ZTE
CDMA Tech" rev 1.10/0.00 addr 3
ucom2 at umsm2
umsm3 at uhub0 port 2 configuration 1 interface 3 "ZTE, Incorporated ZTE
CDMA Tech" rev 1.10/0.00 addr 3
ucom3 at umsm3
umsm4 at uhub0 port 2 configuration 1 interface 4 "ZTE, Incorporated ZTE
CDMA Tech" rev 1.10/0.00 addr 3
ucom4 at umsm4
umass0 at uhub0 port 2 configuration 1 interface 5 "ZTE, Incorporated
ZTE CDMA Tech" rev 1.10/0.00 addr 3
umass0: using SCSI over Bulk-Only
scsibus2 at umass0: 2 targets, initiator 0
sd0 at scsibus2 targ 1 lun 0: <ZTE, USB Storage FFF1, 2.31> SCSI2
0/direct removable
sd0: drive offline
I don't know why it adds so many umsm/ucom devices, but using cuaU0
works fine. Here's the ppp.conf entry for MTS:
MTS:
set device /dev/cuaU0
set speed 115200
set dial "ABORT ERROR ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" ATZ OK-ATZ-OK ATD\\T TIMEOUT 40 CONNECT"
set hangup "\"\" AT OK-AT-OK ATZ OK"
set phone "#777"
set authname [email protected]
set authkey mts
set redial 15 4
set timeout 0
set reconnect 15 20
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR
enable dns
If you have any advice how to find out why it adds so many devices
please tell me.
Please CC my since I'm not on the list.
Thanks,
Martin
diff -ur sys49/dev/usb/umsm.c sys/dev/usb/umsm.c
--- sys49/dev/usb/umsm.c Tue Feb 22 08:34:37 2011
+++ sys/dev/usb/umsm.c Thu Jun 9 05:51:56 2011
@@ -114,8 +114,9 @@
#define DEV_UMASS4 0x0080
#define DEV_UMASS5 0x0100
#define DEV_UMASS6 0x0200
+#define DEV_UMASS7 0x0400
#define DEV_UMASS (DEV_UMASS1 | DEV_UMASS2 | DEV_UMASS3 | DEV_UMASS4 | \
- DEV_UMASS5 | DEV_UMASS6)
+ DEV_UMASS5 | DEV_UMASS6 | DEV_UMASS7)
};
static const struct umsm_type umsm_devs[] = {
@@ -161,6 +162,8 @@
{{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_MF112 }, DEV_UMASS4},
{{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_MF633 }, 0},
{{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_MF637 }, 0},
+ {{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_AC2746 }, 0},
+ {{ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_UMASS_INSTALLER3 }, DEV_UMASS7},
{{ USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_EXPRESSCARD }, 0},
{{ USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_MERLINV620 }, 0},
@@ -705,6 +708,12 @@
cbw.CBWCDB[7] = 0x01;
cbw.CBWCDB[8] = 0x01;
cbw.CBWCDB[9] = 0x01;
+ break;
+ case DEV_UMASS7: /* ZTE */
+ USETDW(cbw.dCBWDataTransferLength, 0xc0);
+ cbw.bCBWFlags = CBWFLAGS_IN;
+ cbw.CBWCDB[0] = 0x9f;
+ cbw.CBWCDB[1] = 0x03;
break;
default:
DPRINTF(("%s: unknown device type.\n", sc->sc_dev.dv_xname));
diff -ur sys49/dev/usb/usbdevs.h sys/dev/usb/usbdevs.h
--- sys49/dev/usb/usbdevs.h Tue Feb 22 08:34:37 2011
+++ sys/dev/usb/usbdevs.h Thu Jun 9 05:37:32 2011
@@ -3121,6 +3121,8 @@
#define USB_PRODUCT_ZTE_UMASS_INSTALLER2 0x0103 /* ZTE
USB MSM installer */
#define USB_PRODUCT_ZTE_MF112 0x0117 /* ZTE MF112 HSUPA USB
modem */
#define USB_PRODUCT_ZTE_UMASS_INSTALLER 0x2000 /* ZTE USB MSM
installer */
+#define USB_PRODUCT_ZTE_AC2746 0xfff1 /* AC2746 CDMA2000 USB
modem */
+#define USB_PRODUCT_ZTE_UMASS_INSTALLER3 0xfff5 /* ZTE
USB CDMA installer */
#define USB_PRODUCT_ZTE_AC8700 0xfffe /* AC8700 CDMA USB
modem */
/* Quanta products */
diff -ur sys49/dev/usb/usbdevs_data.h sys/dev/usb/usbdevs_data.h
--- sys49/dev/usb/usbdevs_data.h Tue Feb 22 08:34:37 2011
+++ sys/dev/usb/usbdevs_data.h Thu Jun 9 05:39:50 2011
@@ -7558,6 +7558,14 @@
"ZTE USB MSM installer",
},
{
+ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_AC2746,
+ "AC2746 CDMA2000 USB modem",
+ },
+ {
+ USB_VENDOR_ZTE, USB_PRODUCT_ZTE_UMASS_INSTALLER3,
+ "ZTE USB MSM installer",
+ },
+ {
USB_VENDOR_ZTE, USB_PRODUCT_ZTE_AC8700,
"AC8700 CDMA USB modem",
},
diff -ur sys49/dev/usb/ucom.c sys/dev/usb/ucom.c
--- sys49/dev/usb/ucom.c Mon Nov 29 21:56:11 2010
+++ sys/dev/usb/ucom.c Wed Jun 8 12:39:50 2011
@@ -176,7 +176,7 @@
int
ucom_match(struct device *parent, void *match, void *aux)
{
- return (1);
+ return UMATCH_GENERIC;
}
void