Help with Dell Dw5821e WWAN card



  • I have a Dell Dw5821e card as the basis of hot spot. I have a mini-box APU.4D4 (GX-412TC quad core / 4GB / 4 Intel GigE / 3 miniPCI express / mSATA / USB / RTC battery). I have it loaded with the latest 64bit AMD kernel based PFSense. All boots up proper but I can't figure out how to get the card to actually work so far. It is seen in the configuration screen and there are a pair of ports presented to chose from. But I haven't been able to get it to bring up the connection. I have a SIM card configured but so far I can't bring up connection. Anyone that can help with the basics of setting up the WWAN modem on Verizon would be great. Thanks in advance.


  • Netgate Administrator

    @mikeiver said in Help with Dell Dw5821e WWAN card:

    Dell Dw5821e

    What ports does it present?

    Everything I can find about that card shows it as either an MBIM or QMI device, neither of which are supported by pfSense/FreeBSD.

    Steve


  • Netgate Administrator

    Hmm, maybe not. The QMI mode appears to also present an AT port:
    https://patchwork.kernel.org/patch/10483913/

    However the device IDs are not listed so it probably won't be recognised:
    https://github.com/pfsense/FreeBSD-src/blob/devel-12/sys/dev/usb/usbdevs#L1647

    Steve



  • @stephenw10

    Hi and thanks allot. Was on the phone with Verizon tech support but not much help there. They did try really hard but they simply don't have the information available to them. Kinda figured as much to be honest.

    Here is the output at boot from the serial port output.

    PC Engines apu4
    coreboot build 20193012
    BIOS version v4.11.0.2
    4080 MB ECC DRAM
    HeaBIOS (version rel-1.12.1.3-0-g300e8b7)

    ugen1.3: <Dell Inc. DW5821e Snapdragon X20 LTE> at usbus1
    uhid0 on uhub2
    uhid0: <Dell Inc. DW5821e Snapdragon X20 LTE, class 239/2, rev 2.10/3.18, addr 3> on usbus1

    I think that is the relevant parts you are looking for.

    I have tried just about everything I could to get it to dial out and make a connection but to no avail. At this point I am kind of lost. I have an adapter on the way so I can throw it in a USB port on a Win10 pro machine and see if I can get it up and working there. Maybe it needs a firmware flash? It did come from a seller in Korea so... They are GSM there I believe.

    Thanks again for the effort so far and any suggestions that might help.

    Mike


  • Netgate Administrator

    The output from usbconfig dump_all_desc may be revealing.

    That should show us if there is more than one config index available, which one it's running now and what interfaces are in each.

    Steve



  • So here is the output after running the command.

    ugen1.3: <DELL DW5821e Snapdragon X20 LTE> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (0mA)

    The Dw5821e appears twice in the listing but they appear to be the same listing. I put them next to each other and checked. It is running at USB2.0 rather than 3.0 so even if there was a link to the cell tower capable of 1.0Gbps DS it would be capped by the USB bandwidth. I can live with that. I stripped out the other lines as I spam filter on the site is flagging it and won't let me upload it complete. If need be I will convert to GIF and upload it that way.

    I ordered a couple different NGFF to USB adapters so I can plug it into my desktop machine and attempt to get it working under windows. The Dell drivers and firmware are available for it and I have the downloaded. There is a firmware update as well so I will try to get that into the modem. It states that it is an LTE update and since the modem comes from Korea this may well be the problem. It may have GSM firmware loaded. That is a WAG though. Will know more by Wednesday evening. If need be I will cut and run, don't want to but would like to get this working.

    As always, thanks a whole bunch for your efforts so far.

    Mike

    Hope this helps a little.


  • Netgate Administrator

    I expect to see much, much more output than that. For example here's the output from just the modem in a test box here:

    ugen0.2: <Sierra Wireless, Incorporated Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A> at, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
    
      bLength = 0x0012 
      bDescriptorType = 0x0001 
      bcdUSB = 0x0210 
      bDeviceClass = 0x0000  <Probed by interface class>
      bDeviceSubClass = 0x0000 
      bDeviceProtocol = 0x0000 
      bMaxPacketSize0 = 0x0040 
      idVendor = 0x1199 
      idProduct = 0x9071 
      bcdDevice = 0x0006 
      iManufacturer = 0x0001  <Sierra Wireless, Incorporated>
      iProduct = 0x0002  <Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A>
      iSerialNumber = 0x0003  <LF71922973041020>
      bNumConfigurations = 0x0001 
    
     Configuration index 0
    
        bLength = 0x0009 
        bDescriptorType = 0x0002 
        wTotalLength = 0x00be 
        bNumInterfaces = 0x0005 
        bConfigurationValue = 0x0001 
        iConfiguration = 0x0000  <no string>
        bmAttributes = 0x00a0 
        bMaxPower = 0x00fa 
    
        Interface 0
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0000 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0002 
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x00ff 
          bInterfaceProtocol = 0x00ff 
          iInterface = 0x0000  <no string>
    
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0081  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0001  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
    
        Interface 1
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0001 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0003 
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump: 
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x01
           RAW dump: 
           0x00 | 0x05, 0x24, 0x01, 0x00, 0x00
    
    
          Additional Descriptor
    
          bLength = 0x04
          bDescriptorType = 0x24
          bDescriptorSubType = 0x02
           RAW dump: 
           0x00 | 0x04, 0x24, 0x02, 0x02
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x06
           RAW dump: 
           0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
    
    
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0083  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x000a 
            bInterval = 0x0009 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0082  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 2
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0002  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
    
        Interface 2
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0002 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0003 
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x0000 
          bInterfaceProtocol = 0x0000 
          iInterface = 0x0000  <no string>
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x00
           RAW dump: 
           0x00 | 0x05, 0x24, 0x00, 0x10, 0x01
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x01
           RAW dump: 
           0x00 | 0x05, 0x24, 0x01, 0x00, 0x00
    
    
          Additional Descriptor
    
          bLength = 0x04
          bDescriptorType = 0x24
          bDescriptorSubType = 0x02
           RAW dump: 
           0x00 | 0x04, 0x24, 0x02, 0x02
    
    
          Additional Descriptor
    
          bLength = 0x05
          bDescriptorType = 0x24
          bDescriptorSubType = 0x06
           RAW dump: 
           0x00 | 0x05, 0x24, 0x06, 0x00, 0x00
    
    
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0085  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x000a 
            bInterval = 0x0009 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0084  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 2
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0003  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
    
        Interface 3
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0003 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0003 
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x00ff 
          bInterfaceProtocol = 0x00ff 
          iInterface = 0x0000  <no string>
    
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0087  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x0008 
            bInterval = 0x0009 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0086  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 2
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0004  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
    
        Interface 4
          bLength = 0x0009 
          bDescriptorType = 0x0004 
          bInterfaceNumber = 0x0004 
          bAlternateSetting = 0x0000 
          bNumEndpoints = 0x0003 
          bInterfaceClass = 0x00ff  <Vendor specific>
          bInterfaceSubClass = 0x00ff 
          bInterfaceProtocol = 0x00ff 
          iInterface = 0x0000  <no string>
    
         Endpoint 0
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0089  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x0008 
            bInterval = 0x0009 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 1
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0088  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    
         Endpoint 2
            bLength = 0x0007 
            bDescriptorType = 0x0005 
            bEndpointAddress = 0x0005  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0200 
            bInterval = 0x0000 
            bRefresh = 0x0000 
            bSynchAddress = 0x0000 
    

    We need to see the USB IDs, the config indexes and interface types from that really.

    I will also say that you will never see anything close to Gigabit in current pfSense using the AT connection if it's available. Something in the 50Mbps range is far more likely.

    Steve



  • No mater what I try I can't seem to get it to not be flagged as spam! WTF!!!

    Edit: After a bit of searching I noticed that I need a rep point of 5 or more to not get flagged. So I suspect that it will be some time since I am at a "0" right now and will likely stay there for some time to come. Guess I will have to find another way to post or get help elsewhere at this point. What a pain spammers are and cause.

    50Mbps, I could live with that. But one thing at a time first. Gotta get this working! LOL

    Mike



  • Sent them to you in pieces via the chat window. Only way they would go as there is a 1000 character limit to each message.

    Thanks again,

    Mike


  • Netgate Administrator

    ugen1.3: <DELL DW5821e Snapdragon X20 LTE> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (0mA)
    
    bLength = 0x0012
    bDescriptorType = 0x0001
    bcdUSB = 0x0200
    bDeviceClass = 0x0000 <Probed by interface class>
    bDeviceSubClass = 0x0000
    bDeviceProtocol = 0x0000
    bMaxPacketSize0 = 0x0040
    idVendor = 0x413c
    idProduct = 0x81d6
    bcdDevice = 0x0100
    iManufacturer = 0x0001 <DELL>
    iProduct = 0x0002 <DW5821e Snapdragon X20 LTE>
    iSerialNumber = 0x0003 <f1bf4810>
    bNumConfigurations = 0x0001
    
    Configuration index 0
    
    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x0020
    bNumInterfaces = 0x0001
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00c0
    bMaxPower = 0x0000
    
    Interface 0
    bLength = 0x0009
    bDescriptorType = 0x0004
    bInterfaceNumber = 0x0000
    bAlternateSetting = 0x0000
    bNumEndpoints = 0x0002
    bInterfaceClass = 0x00ff <Vendor specific>
    bInterfaceSubClass = 0x0042
    bInterfaceProtocol = 0x0003
    iInterface = 0x0007 <fastboot>
    
     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000
    
    Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000
    

    Hmm, that's the full output from ugen1.3? That's disappointing if so. Only one config index and no useful interfaces really.....



  • So by your response I take it that I am screwed and likely it will not work?


  • Netgate Administrator

    Not without changing the card in some way. The presented default interfaces are not anything pfSense can use.

    Via usb_mode_switch perhaps. Or a different firmware version.

    The thread I linked above seems to imply it might be possible:

    This module exposes two USB configurations: a QMI+AT capable setup on
    USB config #1 and a MBIM capable setup on USB config #2.
    

    If it had presented 2 config indexes we could have changed it. That might have given us an AT port and that can be used.

    Steve



  • @stephenw10 Well I have a usb adapter coming in tomorrow and I will pull the modem and see if I can get it flashed with new firmware i pulled from Dell. Then see if I can get it up in windows 10 pro with the drivers provided by Dell. If that works i might be able to find the indexes and note them. Fingers crossed and thanks again. I will post back when I have more.

    Mike


Log in to reply