Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    PC Engines APU3 with Quectel EC25-E speed

    Scheduled Pinned Locked Moved Hardware
    11 Posts 2 Posters 962 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      MarianHlusek
      last edited by

      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.

      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator
        last edited by stephenw10

        Check the full usbconfig output. So maybe: usbconfig dump_all_desc

        Check the boot log.

        Steve

        1 Reply Last reply Reply Quote 0
        • M
          MarianHlusek
          last edited by

          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

          1 Reply Last reply Reply Quote 0
          • stephenw10S
            stephenw10 Netgate Administrator
            last edited by

            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

            M 1 Reply Last reply Reply Quote 0
            • M
              MarianHlusek @stephenw10
              last edited by

              @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

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                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

                1 Reply Last reply Reply Quote 0
                • M
                  MarianHlusek
                  last edited by

                  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

                  1 Reply Last reply Reply Quote 0
                  • stephenw10S
                    stephenw10 Netgate Administrator
                    last edited by

                    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

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      MarianHlusek @stephenw10
                      last edited by

                      @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

                      1 Reply Last reply Reply Quote 0
                      • stephenw10S
                        stephenw10 Netgate Administrator
                        last edited by

                        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

                        1 Reply Last reply Reply Quote 0
                        • M
                          MarianHlusek
                          last edited by

                          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? ...)?

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.