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