Re: [PATCH] rndis_host: support Novatel Verizon USB730L — Linux USB

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

 



The following was used to switch the Novatel USB730L from user mode
(product ID 0x9030) into enterprise mode (product ID 0x9032):
* Tested with Linux kernel 3.14.15 on a 32bit ARM machine (kernel is
compiled without IPV6) and with static HID driver
* Kernel patches 1: ignore HID interface of Novatel USB730L modem to
allow a USB modeswitch when the HID driver is statically compiled into
the kernel.

    $ git show HEAD
    commit 23231636db13c8c47d64aaa75347b3c184dd6387
    Author: Gal Shalif <gals@xxx>
    Date:   Thu Oct 19 17:28:13 2017 +0300

        HID: ignore Novatel USB730L modem

          Ignore the Novatel USB730L modem - otherwise,
          a kernel that is compile with a static HID driver
          will not allow a USB mode switch of the modem from the default
          user mode (product ID: 9030) into enterprise mode (producr ID: 9032).

    diff --git drivers/hid/hid-core.c drivers/hid/hid-core.c
    index 9bc9116..08be36d7b 100644
    --- drivers/hid/hid-core.c
    +++ drivers/hid/hid-core.c
    @@ -2772,6 +2772,9 @@ static const struct hid_device_id
hid_ignore_list[] = {
            { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS,
USB_DEVICE_ID_SYNAPTICS_DPAD) },
     #endif
            { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK,
USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) },
    +       { HID_USB_DEVICE(USB_VENDOR_ID_NOVATEL,
USB_DEVICE_ID_NOVATEL_USB730L_USER_MODE) },
    +       { HID_USB_DEVICE(USB_VENDOR_ID_NOVATEL,
USB_DEVICE_ID_NOVATEL_USB730L_ENTERPRISE_MODE) },
    +
            { }
     };

    diff --git drivers/hid/hid-ids.h drivers/hid/hid-ids.h
    index a989191..b6908d0 100644
    --- drivers/hid/hid-ids.h
    +++ drivers/hid/hid-ids.h
    @@ -1145,6 +1145,10 @@
     #define USB_DEVICE_ID_PRIMAX_MOUSE_4D22        0x4d22
     #define USB_DEVICE_ID_PRIMAX_KEYBOARD  0x4e05

    +#define USB_VENDOR_ID_NOVATEL 0x1410                           /*
blacklist Novatel Wireless USB730L */
    +#define USB_DEVICE_ID_NOVATEL_USB730L_USER_MODE 0x9030         /*
blacklist Novatel Wireless USB730L */
    +#define USB_DEVICE_ID_NOVATEL_USB730L_ENTERPRISE_MODE 0x9032   /*
blacklist Novatel Wireless USB730L */
    +

     #define USB_VENDOR_ID_RISO_KAGAKU      0x1294  /* Riso Kagaku
Corp. */
     #define USB_DEVICE_ID_RI_KA_WEBMAIL    0x1320  /* Webmail Notifier */

* Kernel patches 2: add Novatel USB730L enterprise mode serial interface

    $ git show 9bacb30
    commit 9bacb3082a90fc39047721a0887d5414f5e7008d
    Author: Gal Shalif <gals@xxx>
    Date:   Thu Oct 19 17:18:48 2017 +0300

        USB: serial: option: add support for Novatel USB730L enterprise mode

          Add device ID for Novatel USB730L enterprise mode
          See details at:
https://www.verizonwireless.com/dam/support/pdf/verizon-usb730l-integration-guide.pdf

    diff --git drivers/usb/serial/option.c drivers/usb/serial/option.c
    index 54bfef1..bf5f637 100644
    --- drivers/usb/serial/option.c
    +++ drivers/usb/serial/option.c
    @@ -162,6 +162,7 @@ static void option_instat_callback(struct urb *urb);
     #define NOVATELWIRELESS_PRODUCT_E362           0x9010
     #define NOVATELWIRELESS_PRODUCT_E371           0x9011
     #define NOVATELWIRELESS_PRODUCT_U620L          0x9022
    +#define NOVATELWIRELESS_PRODUCT_ENTERPRISE_U730L 0x9032 /* Novtel
USB730L enterprize mode (from
https://www.verizonwireless.com/dam/support/pdf/verizon-usb730l-integration-guide.pdf)
*/
     #define NOVATELWIRELESS_PRODUCT_G2             0xA010
     #define NOVATELWIRELESS_PRODUCT_MC551          0xB001

    @@ -1120,6 +1121,7 @@ static const struct usb_device_id option_ids[] = {
            { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID,
NOVATELWIRELESS_PRODUCT_E362, 0xff, 0xff, 0xff) },
            { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID,
NOVATELWIRELESS_PRODUCT_E371, 0xff, 0xff, 0xff) },
            { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID,
NOVATELWIRELESS_PRODUCT_U620L, 0xff, 0x00, 0x00) },
    +       { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID,
NOVATELWIRELESS_PRODUCT_ENTERPRISE_U730L, 0xff, 0x00, 0x00) }, /*
Novtel USB730L enterprize mode (from
https://www.verizonwireless.com/dam/support/pdf/verizon-usb730l-integration-guide.pdf)
*/

            { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
            { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },

* Mode switch file is:
    $ cat 1410:9030
    # Novatel Wireless MiFi USB730L
    DefaultVendor=0x1410
    DefaultProduct=0x9030
    TargetVendor=0x1410
    TargetProduct=0x9032
    NeedResponse=0
    Configuration=0x03

Notes:
* Tested with Linux kernel 3.14.15 on a 32bit ARM machine (kernel is
compiled without IPV6) and with static HID driver
* Novatel Linux integration guide -
https://www.verizonwireless.com/dam/support/pdf/verizon-usb730l-integration-guide.pdf
* Unlike the Novatel paper above - the mode switch configuration for
the enterprise mode is 3 and NOT 4
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux