Hi Johan, I originally sent this to Bjørn Mork as he added MC73xx support to the qcserial driver in commit 70a3615fc07c2330ed7c1e922f3c44f4a67c0762 ("usb: qcserial: add Sierra Wireless MC73xx") but he asked me to forward this this to you. When using a MC7304 with firmware revision SWI9X15C_05.05.16.02 on Knoppix 7.4.2 with Linux kernel 3.16.3 and the qcserial driver I noticed that AT unsolicited response codes (URCs) like +CREG were missing (the mobile has been set to AT+CREG=2 before and <LACx>/<CIx> is used instead of the real LACs/CIs): # switching from GSM to UMTS at+creg? +CREG: 2,1,"<LAC1>","<CI1>",0 OK at+cops=1,2,"26207",2 OK at+creg? +CREG: 2,1,"<LAC2>","<CI2>",2 OK Switching the mobile back to the option driver # rmmod qcserial # modprobe option # echo 1199 68c0 > /sys/bus/usb-serial/drivers/option1/new_id # cat /proc/tty/driver/usbserial ... 4: module:option name:"GSM modem (1-port)" vendor:1199 product:68c0 num_ports:1 port:0 path:usb-0000:00:1d.7-5.2 5: module:option name:"GSM modem (1-port)" vendor:1199 product:68c0 num_ports:1 port:0 path:usb-0000:00:1d.7-5.2 6: module:option name:"GSM modem (1-port)" vendor:1199 product:68c0 num_ports:1 port:0 path:usb-0000:00:1d.7-5.2 caused the missing +CREG: to reappear: at+creg? +CREG: 2,1,"<LAC1>","<CI1>",0 OK at+cops=1,2,"26207",2 OK +CREG: 1,"<LAC2>","<CI2>",2 at+creg? +CREG: 2,1,"<LAC2>","<CI2>",2 OK The URCs are also present when using the vendor GobiSerial driver. Besides +CREG: other URCs like e.g. +CUSD: or +CMT: are also affected. MC7710 devices with VID/PID 0x1199/0x68a2 which I cross-checked for comparison do not show this problem. >From comparing option.c and qcserial.c the only difference in initialization visible to me is the option_send_setup code. The proposed patch below for kernel 3.19 or later moves Sierra Wireless VID/PID 0x1199/0x68c0 devices from the qcserial to the option driver using an appropriate blacklist for the QMI/network interfaces (8..11) and the USB audio interfaces (16..18) present in some firmwares. An alternative to this patch would be to add the option_send_setup code to qcserial.c for Sierra Wireless VID/PID 0x1199/0x68c0 devices. Regards, Reinhard --- drivers/usb/serial/option.c.~1~ 2014-12-21 17:36:21.000000000 +0100 +++ drivers/usb/serial/option.c 2014-12-21 22:25:44.000000000 +0100 @@ -236,2 +236,4 @@ +#define SIERRA_VENDOR_ID 0x1199 + #define CMOTECH_VENDOR_ID 0x16d8 @@ -514,3 +516,3 @@ -#define MAX_BL_NUM 8 +#define MAX_BL_NUM 18 struct option_blacklist_info { @@ -603,2 +605,6 @@ +static const struct option_blacklist_info sierra_mc73xx_blacklist = { + .reserved = BIT(8) | BIT(10) | BIT(11) | BIT(16) | BIT(17) | BIT(18), +}; + static const struct usb_device_id option_ids[] = { @@ -1100,2 +1106,4 @@ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ + { USB_DEVICE(SIERRA_VENDOR_ID, 0x68c0), + .driver_info = (kernel_ulong_t)&sierra_mc73xx_blacklist }, /* MC73xx */ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, --- drivers/usb/serial/qcserial.c.~1~ 2014-12-21 17:35:59.000000000 +0100 +++ drivers/usb/serial/qcserial.c 2014-12-21 21:18:05.000000000 +0100 @@ -144,3 +144,2 @@ {DEVICE_SWI(0x1199, 0x68a2)}, /* Sierra Wireless MC7710 */ - {DEVICE_SWI(0x1199, 0x68c0)}, /* Sierra Wireless MC73xx */ {DEVICE_SWI(0x1199, 0x901c)}, /* Sierra Wireless EM7700 */ -- 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