Here is a patch to support some newer LTE umsm devices Yes, the 313U actually has an SD card slot. And yes, it actually changes vendor ID to Airprime after the umsm_truinstall_changemode takes place.
Matching ifaceno == 9 for newer USB_PRODUCT_SIERRA_TRUINSTALL devices is necessary. They don't show up as 0. (It's possible that Huawei will will need the same treatment in umsm_attach if they use newer umsm chips) ok? Aircard 313U: umsm0 at uhub5 port 3 configuration 1 interface 9 "Sierra Wireless, Incorporated USB MMC Storage" rev 2.00/0.00 addr 5 umsm0: truinstall mode. need to reattach umsm0 detached umsm0 at uhub5 port 3 configuration 1 interface 0 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom1 at umsm0 umsm1 at uhub5 port 3 configuration 1 interface 1 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom2 at umsm1 umsm2 at uhub5 port 3 configuration 1 interface 2 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom3 at umsm2 umsm3 at uhub5 port 3 configuration 1 interface 3 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom4 at umsm3 umsm4 at uhub5 port 3 configuration 1 interface 4 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom5 at umsm4 umass1 at uhub5 port 3 configuration 1 interface 9 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 umass1: using SCSI over Bulk-Only scsibus3 at umass1: 2 targets, initiator 0 sd5 at scsibus3 targ 1 lun 0: <SWI, SD Card, 2.31> SCSI2 0/direct removable serial.0f3d68aa615000291196 umsm5 at uhub5 port 3 configuration 1 interface 7 "Sierra Wireless, Incorporated AirCard 313U" rev 2.00/0.06 addr 5 ucom6 at umsm5 Aircard 770S: umsm0 at uhub5 port 3 configuration 1 interface 9 "NETGEAR, Inc. AirCard 770S" rev 2.00/0.06 addr 5 umsm0: truinstall mode. need to reattach umsm0 detached umsm0 at uhub5 port 3 configuration 1 interface 3 "NETGEAR, Inc. AirCard 770S" rev 2.00/0.06 addr 5 ucom1 at umsm0 umsm1 at uhub5 port 3 configuration 1 interface 8 "NETGEAR, Inc. AirCard 770S" rev 2.00/0.06 addr 5 ucom2 at umsm1 umsm2 at uhub5 port 3 configuration 1 interface 0 "NETGEAR, Inc. AirCard 770S" rev 2.00/0.06 addr 5 ucom3 at umsm2 Index: umsm.c =================================================================== RCS file: /cvs/src/sys/dev/usb/umsm.c,v retrieving revision 1.104 diff -u -p -u -r1.104 umsm.c --- umsm.c 29 Sep 2015 08:34:28 -0000 1.104 +++ umsm.c 20 May 2016 02:05:54 -0000 @@ -115,6 +115,7 @@ struct umsm_type { static const struct umsm_type umsm_devs[] = { {{ USB_VENDOR_AIRPRIME, USB_PRODUCT_AIRPRIME_PC5220 }, 0}, + {{ USB_VENDOR_AIRPRIME, USB_PRODUCT_AIRPRIME_AIRCARD_313U }, 0}, {{ USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_A2502 }, 0}, {{ USB_VENDOR_ANYDATA, USB_PRODUCT_ANYDATA_ADU_500A }, 0}, @@ -247,6 +248,7 @@ static const struct umsm_type umsm_devs[ {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_USB305}, 0}, {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_TRUINSTALL }, DEV_TRUINSTALL}, {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_MC8355}, 0}, + {{ USB_VENDOR_SIERRA, USB_PRODUCT_SIERRA_AIRCARD_770S}, 0}, {{ USB_VENDOR_TCTMOBILE, USB_PRODUCT_TCTMOBILE_UMASS }, DEV_UMASS3}, {{ USB_VENDOR_TCTMOBILE, USB_PRODUCT_TCTMOBILE_UMASS_2 }, DEV_UMASS3}, @@ -359,7 +361,7 @@ umsm_attach(struct device *parent, struc printf("%s: umass only mode. need to reattach\n", sc->sc_dev.dv_xname); } else if ((sc->sc_flag & DEV_TRUINSTALL) && - uaa->ifaceno == 0) { + (uaa->ifaceno == 0 || uaa->ifaceno == 9)) { umsm_truinstall_changemode(uaa->device); printf("%s: truinstall mode. need to reattach\n", sc->sc_dev.dv_xname);