| From 638148e20c7f8f6e95017fdc13bce8549a6925e0 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn@mork.no> |
| Date: Wed, 18 Nov 2015 21:12:33 +0100 |
| Subject: USB: option: add XS Stick W100-2 from 4G Systems |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 638148e20c7f8f6e95017fdc13bce8549a6925e0 upstream. |
| |
| Thomas reports |
| " |
| 4gsystems sells two total different LTE-surfsticks under the same name. |
| .. |
| The newer version of XS Stick W100 is from "omega" |
| .. |
| Under windows the driver switches to the same ID, and uses MI03\6 for |
| network and MI01\6 for modem. |
| .. |
| echo "1c9e 9b01" > /sys/bus/usb/drivers/qmi_wwan/new_id |
| echo "1c9e 9b01" > /sys/bus/usb-serial/drivers/option1/new_id |
| |
| T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 4 Spd=480 MxCh= 0 |
| D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 |
| P: Vendor=1c9e ProdID=9b01 Rev=02.32 |
| S: Manufacturer=USB Modem |
| S: Product=USB Modem |
| S: SerialNumber= |
| C: #Ifs= 5 Cfg#= 1 Atr=80 MxPwr=500mA |
| I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option |
| I: If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option |
| I: If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option |
| I: If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan |
| I: If#= 4 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage |
| |
| Now all important things are there: |
| |
| wwp0s29f7u2i3 (net), ttyUSB2 (at), cdc-wdm0 (qmi), ttyUSB1 (at) |
| |
| There is also ttyUSB0, but it is not usable, at least not for at. |
| |
| The device works well with qmi and ModemManager-NetworkManager. |
| " |
| |
| Reported-by: Thomas Schäfer <tschaefer@t-online.de> |
| Signed-off-by: Bjørn Mork <bjorn@mork.no> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Zefan Li <lizefan@huawei.com> |
| --- |
| drivers/usb/serial/option.c | 9 +++++++++ |
| 1 file changed, 9 insertions(+) |
| |
| --- a/drivers/usb/serial/option.c |
| +++ b/drivers/usb/serial/option.c |
| @@ -352,6 +352,7 @@ static void option_instat_callback(struc |
| /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * |
| * It seems to contain a Qualcomm QSC6240/6290 chipset */ |
| #define FOUR_G_SYSTEMS_PRODUCT_W14 0x9603 |
| +#define FOUR_G_SYSTEMS_PRODUCT_W100 0x9b01 |
| |
| /* iBall 3.5G connect wireless modem */ |
| #define IBALL_3_5G_CONNECT 0x9605 |
| @@ -525,6 +526,11 @@ static const struct option_blacklist_inf |
| .sendsetup = BIT(0) | BIT(1), |
| }; |
| |
| +static const struct option_blacklist_info four_g_w100_blacklist = { |
| + .sendsetup = BIT(1) | BIT(2), |
| + .reserved = BIT(3), |
| +}; |
| + |
| static const struct option_blacklist_info alcatel_x200_blacklist = { |
| .sendsetup = BIT(0) | BIT(1), |
| .reserved = BIT(4), |
| @@ -1621,6 +1627,9 @@ static const struct usb_device_id option |
| { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), |
| .driver_info = (kernel_ulong_t)&four_g_w14_blacklist |
| }, |
| + { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W100), |
| + .driver_info = (kernel_ulong_t)&four_g_w100_blacklist |
| + }, |
| { USB_DEVICE_INTERFACE_CLASS(LONGCHEER_VENDOR_ID, SPEEDUP_PRODUCT_SU9800, 0xff) }, |
| { USB_DEVICE(LONGCHEER_VENDOR_ID, ZOOM_PRODUCT_4597) }, |
| { USB_DEVICE(LONGCHEER_VENDOR_ID, IBALL_3_5G_CONNECT) }, |