Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Feb 2012 16:21:00 -0500
From:      Mike Tancsa <mike@sentex.net>
To:        freebsd-usb@freebsd.org
Subject:   FreeBSD and Sierra Wireless AirCard 313U
Message-ID:  <4F3AD03C.1040705@sentex.net>

next in thread | raw e-mail | index | archive | help
In case anyone else is looking to get this LTE card working on FreeBSD,
the following simple device patches work for me. I submitted a PR as
well (http://www.freebsd.org/cgi/query-pr.cgi?pr=165154)


ugen3.3: <AirCard 313U Sierra Wireless, Incorporated> at usbus3, cfg=0
md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x1199
  idProduct = 0x68aa
  bcdDevice = 0x0006
  iManufacturer = 0x0003  <Sierra Wireless, Incorporated>
  iProduct = 0x0002  <AirCard 313U>
  iSerialNumber = 0x0004  <012698000027166>
  bNumConfigurations = 0x0001




ugen3.3: <AirCard 313U Sierra Wireless, Incorporated> at usbus3, cfg=0
md=HOST spd=HIGH (480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x00bf
    bNumInterfaces = 0x0007
    bConfigurationValue = 0x0001
    iConfiguration = 0x0001  <Sierra Configuration>
    bmAttributes = 0x00a0
    bMaxPower = 0x00fa

    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 2
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0002
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0003  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0003
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0003
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0084  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040
        bInterval = 0x0005
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0085  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 2
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0004  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0003
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0086  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040
        bInterval = 0x0005
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0087  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 2
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0005  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 5
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0005
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x0008
      bInterfaceSubClass = 0x0006
      bInterfaceProtocol = 0x0050
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0006  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0088  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 6
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0006
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0003
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0000  <no string>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0089  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0040
        bInterval = 0x0005
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x008a  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 2
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0007  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0020
        bRefresh = 0x0000
        bSynchAddress = 0x0000



ugen3.3: <Sierra Wireless, Incorporated> at usbus3
ugen3.3: <Sierra Wireless, Incorporated> at usbus3 (disconnected)
ugen3.3: <Sierra Wireless, Incorporated> at usbus3
umass0: <Sierra Wireless, Incorporated AirCard 313U, class 0/0, rev
2.00/0.06, addr 3> on usbus3
umass0:  SCSI over Bulk-Only; quirks = 0x0000
umass0:2:0:-1: Attached to scbus2
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not
present)
da0 at umass-sim0 bus 0 scbus2 target 0 lun 0
da0: <SWI SD Card 2.31> Removable Direct Access SCSI-2 device
da0: 40.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based
forwarding disabled, default to accept, logging disabled
u3g0: <Sierra Wireless, Incorporated AirCard 313U, class 0/0, rev
2.00/0.06, addr 3> on usbus3
u3g0: Found 6 ports.




 ls -l /dev/cuaU*
crw-rw----  1 uucp  dialer  -   0, 106 Feb 14 15:12 /dev/cuaU0.0
crw-rw----  1 uucp  dialer  -   0, 107 Feb 14 15:12 /dev/cuaU0.0.init
crw-rw----  1 uucp  dialer  -   0, 108 Feb 14 15:12 /dev/cuaU0.0.lock
crw-rw----  1 uucp  dialer  -   0, 112 Feb 14 15:12 /dev/cuaU0.1
crw-rw----  1 uucp  dialer  -   0, 113 Feb 14 15:12 /dev/cuaU0.1.init
crw-rw----  1 uucp  dialer  -   0, 114 Feb 14 15:12 /dev/cuaU0.1.lock
crw-rw----  1 uucp  dialer  -   0, 118 Feb 14 15:12 /dev/cuaU0.2
crw-rw----  1 uucp  dialer  -   0, 119 Feb 14 15:12 /dev/cuaU0.2.init
crw-rw----  1 uucp  dialer  -   0, 120 Feb 14 15:12 /dev/cuaU0.2.lock
crw-rw----  1 uucp  dialer  -   0, 124 Feb 14 15:12 /dev/cuaU0.3
crw-rw----  1 uucp  dialer  -   0, 125 Feb 14 15:12 /dev/cuaU0.3.init
crw-rw----  1 uucp  dialer  -   0, 126 Feb 14 15:12 /dev/cuaU0.3.lock
crw-rw----  1 uucp  dialer  -   0, 130 Feb 14 15:12 /dev/cuaU0.4
crw-rw----  1 uucp  dialer  -   0, 131 Feb 14 15:12 /dev/cuaU0.4.init
crw-rw----  1 uucp  dialer  -   0, 132 Feb 14 15:12 /dev/cuaU0.4.lock
crw-rw----  1 uucp  dialer  -   0, 136 Feb 14 15:12 /dev/cuaU0.5
crw-rw----  1 uucp  dialer  -   0, 137 Feb 14 15:12 /dev/cuaU0.5.init
crw-rw----  1 uucp  dialer  -   0, 138 Feb 14 15:12 /dev/cuaU0.5.lock

The following PPP entry works form me


pppgprs:
 set device /dev/cuaU0.3
 set server /var/run/gprs-internet "" 0177
 #set speed 921600
 set timeout 0
 set authname wapuser1
 set authkey wap
 set dial "ABORT BUSY TIMEOUT 2 \
        \"\" \
        AT OK-AT-OK \
        AT+CFUN=1 OK-AT-OK \
        AT+CMEE=2 OK-AT-OK \
        AT+CSQ OK \
        AT+CGDCONT=1,\\\"IP\\\",\\\"internet.com\\\" OK \
        AT+CGACT? OK-AT-OK \
        AT+CGATT? OK \
        AT+CGCLASS? OK \
        AT+COPS? OK \
        AT+CNUM OK \
        AT&v OK \
        ATD*99# CONNECT"
 set crtscts on
 #set mtu maximum 296
 #set mru maximum 296
 disable vjcomp
 disable acfcomp
 disable deflate
 disable deflate24
 disable pred1
 disable protocomp
 disable mppe
 disable ipv6cp
 disable lqr
 disable echo
 nat enable yes
 enable dns
 resolv writable
 set dns 8.8.8.8
 set ifaddr 10.1.0.2/0 10.1.0.1/0 255.255.255.255 0.0.0.0
 add default HISADDR          # See ppp.link*


# diff -u usbdevs.prev usbdevs
--- usbdevs.prev        2012-02-14 15:06:33.000000000 -0500
+++ usbdevs     2012-02-14 15:13:29.000000000 -0500
@@ -2974,6 +2974,7 @@
 product SIERRA MC8790          0x683C  MC8790
 product SIERRA MC8791          0x683D  MC8791
 product SIERRA MC8792          0x683E  MC8792
+product SIERRA AC313U          0x68aa  Sierra Wireless AirCard 313U
 product SIERRA AC880           0x6850  Sierra Wireless AirCard 880
 product SIERRA AC881           0x6851  Sierra Wireless AirCard 881
 product SIERRA AC880E          0x6852  Sierra Wireless AirCard 880E

# diff -u u3g.c.prev u3g.c
--- u3g.c.prev  2012-02-14 15:05:02.000000000 -0500
+++ u3g.c       2012-02-14 15:13:52.000000000 -0500
@@ -432,6 +432,7 @@
        U3G_DEV(QUANTA, Q111, 0),
        U3G_DEV(SIERRA, AC402, 0),
        U3G_DEV(SIERRA, AC595U, 0),
+       U3G_DEV(SIERRA, AC313U, 0),
        U3G_DEV(SIERRA, AC597E, 0),
        U3G_DEV(SIERRA, AC875E, 0),
        U3G_DEV(SIERRA, AC875U, 0),



	---Mike


-- 
-------------------
Mike Tancsa, tel +1 519 651 3400
Sentex Communications, mike@sentex.net
Providing Internet services since 1994 www.sentex.net
Cambridge, Ontario Canada   http://www.tancsa.com/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F3AD03C.1040705>