PC Engines APU3 with Quectel EC25-E speed



  • Hi everyone,
    I have an APU3 unit from PC engines and I've put there a quectel EC25-E PCI device for the LTE internet. The thing is, that if I check via command line, it shows only spd=FULL (12Mbps), which is actually very bad, because the (theoretical) speed should hit 480Mbps. So when I then check the internet speed, it is just something around 5Mbps in reality.
    If I check it with the same SIM card inserted into mobile, it easily goes up to 50Mbps. Based on a thread I opened on a Quectel forum, it looks like this might be a software issue, because the card as such should be quick enough and as I understood even the connection to the APU3 unit should be fast enough.
    Does anyone have any idea/hint/anything, that could help me to increase the speed of this LTE device, please?
    Thank you.


  • Netgate Administrator

    Check the full usbconfig output. So maybe: usbconfig dump_all_desc

    Check the boot log.

    Steve



  • Hello, I did the usbconfig dump_all_desc and I would love to paste here the output, but the forum says: Post content was flagged as spam by Akismet.com
    Any advice how could I put it here into a comment, please? It is true it is quite long.
    Thanks


  • Netgate Administrator

    You can always just put it on pastebin or some equivalent site and link to it.

    That output will include all the USB devices in the system, we only actually need the modem details.

    Steve



  • @stephenw10
    Thank you. I've pasted the output here: https://pastebin.com/L3p0A2i1
    I've copied all, as I was not sure which of the whole content is important.
    The Quectel device should be ugen1.3. As already mentioned, it shows only spd=FULL (12Mbps), but I think it should be spd=HIGH (480Mbps).
    Is there anything coming to your mind I could do to 'put' the speed to the correct level?
    Marian


  • Netgate Administrator

    For reference:

    ugen1.3: <Android Android> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)
    
      bLength = 0x0012
      bDescriptorType = 0x0001
      bcdUSB = 0x0200
      bDeviceClass = 0x00ef  <Miscellaneous device>
      bDeviceSubClass = 0x0002
      bDeviceProtocol = 0x0001
      bMaxPacketSize0 = 0x0040
      idVendor = 0x2c7c
      idProduct = 0x0125
      bcdDevice = 0x0318
      iManufacturer = 0x0001  <Android>
      iProduct = 0x0002  <Android>
      iSerialNumber = 0x0000  <no string>
      bNumConfigurations = 0x0001
    
     Configuration index 0
    
        bLength = 0x0009
        bDescriptorType = 0x0002
        wTotalLength = 0x00d1
        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 = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 1
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0001  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            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 = 0x0020
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 1
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0082  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 2
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0002  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            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 = 0x0020
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 1
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0084  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 2
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0003  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
    
        Interface 3
          bLength = 0x0009
          bDescriptorType = 0x0004
          bInterfaceNumber = 0x0003
          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 = 0x0087  <IN>
            bmAttributes = 0x0003  <INTERRUPT>
            wMaxPacketSize = 0x000a
            bInterval = 0x0020
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 1
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0086  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 2
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0004  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            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 = 0x0020
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 1
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0088  <IN>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    
         Endpoint 2
            bLength = 0x0007
            bDescriptorType = 0x0005
            bEndpointAddress = 0x0005  <OUT>
            bmAttributes = 0x0002  <BULK>
            wMaxPacketSize = 0x0040
            bInterval = 0x0000
            bRefresh = 0x0000
            bSynchAddress = 0x0000
    

    It's running Android? That's fun!

    How do you have it configured in pfSense currently? Is it a PPP connection or USB Ethernet?

    Do you have a link to the discussion on the Quectel forum?

    Steve



  • Well ... truly I don't know if it is running Android. It seems so. I've just plugged in to the APU3 device, put the screw and turned on :)
    The configuration is now via PPP connection.
    And the Quectel forum discussion is here: https://forums.quectel.com/t/ec25-e-speed-after-connecting-to-apu3/4778/5


  • Netgate Administrator

    Hmm, interesting. Most of that discussion is about the LTE connection speed, not the USB side. The first thing I would do here is try moving the modem to the other mPCIe slot in the APU. If there is something fixing the USB speed it could be a physical connection issue.

    What interfaces does the modem provide when it's present?

    At least one com port, cuaU0, I assume. Maybe more USB com ports? USB Ethernet too?
    Check the boot logs when it is initialised.

    Steve



  • @stephenw10
    In the other mPCIe slot, there is already a SATA drive. I have pretty much the same configuration as it is metioned here: https://teklager.se/en/knowledge-base/apu3-pfsense-lte-3g-modem-configuration/
    Based on the above I cannot use the last 3rd slot as that one is intended for Wifi.
    So the only thing I could do is to remove the drive, but then I would have to install the pfsense to a SDcard.
    Related to the question about the interfaces ... how do I find that out, please? Do you mean the general boot logs or are there any other - LTE device specific?
    Marian


  • Netgate Administrator

    Hmm, yeah, that's unfortunate. If you can test the other slot using an SD boot it would be a good test.

    If you reboot you will see that in the system log. Otherwise check /var/log/dmesg.boot.

    Steve



  • So I tried to remove the SATA drive and move the Quectel device there. I found out interesting things:

    1. If I move it to the mPCIe 3 slot (most right one), where the SATA disk was ... it is not detected at all. So seems in my APU device it was probably changed somehow and this slot is not dedicated to the LTE devices.
    2. If I move it to the mPCIe 2 slot - this is the one where it was originally and it is detected as ugen1.3: <Android Android> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA)
    3. And if moved to the mPCIe 1 slot (the one on the left hand side), Quectel is detected as ugen1.3: <Android Android> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (500mA), as in the previous case, HOWEVER it is not detecting the SIM card in either of the slots.

    Based on the above it seems the only slot I can insert this is the mPCIe 2 (in the middle) as it was done originally. In that case, however, it leads me to the original question ... how can I speed up the device (if possible - drivers? some commands? Different init string? ...)?


Log in to reply