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

    3G/LTE Modem (Huawei ME909u -521) on boot - USB driver not loading

    Scheduled Pinned Locked Moved Hardware
    22 Posts 11 Posters 5.4k 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.
    • S
      Slam
      last edited by

      Thanks, this worked.

      Slam

      @rite2dinesh:

      This could be a possible workaround.

      By resetting the usb bus number 1 early in the boot process triggers the modem to reload. On reload the drivers are loaded again, and the serial port are exposed properly.

      https://doc.pfsense.org/index.php/Executing_commands_at_boot_time

      <earlyshellcmd>usbconfig -u 1 reset</earlyshellcmd>
      

      There are two other products on this bus, we don't know yet if there are any side-effects.

      ugen0.1: <xhci root="" hub="" 0x1022=""> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=SAVE (0mA)
      ugen1.1: <ehci root="" hub="" amd=""> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA)
      ugen1.2: <product 0x7900="" vendor="" 0x0438=""> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (100mA)
      ugen1.3: <huawei mobile="" huawei="" technology=""> at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)</huawei></product></ehci></xhci>
      

      If some one has a better solution/suggestion, please update us.

      1 Reply Last reply Reply Quote 0
      • N
        nop
        last edited by

        I installed a shellcmd

        php -r 'require_once("shaper.inc"); require_once("filter.inc"); interface_ppps_configure('opt2');'

        to fix this issue.

        Replace opt2 with the optx you are using.

        1 Reply Last reply Reply Quote 0
        • A
          arundsis
          last edited by

          I have exactly same problem. ME909u-521 not recognized.

          Board: PC Engines APU3B4 (with 1 mSATA and 2 mPCIe slots)
          pdSense 2.4.0 amd64, FreeBSD 11.1-realease-p1
          LTE modem: Huawei ME909u-521

          Dmesg says: ugen2.3: <unknown>at usbus2 (disconnected).

          I added <earlyshellcmd>usbconfig -u 2 reset</earlyshellcmd> above <system>-part to config.xml.
          Rebooted. I get still the same 'unknown' message.

          I tried manually run that 'usbconfig -u 2 reset' from command line, then I get
          'usbconfig: could not open device: No error: 0'

          What is going wrong here?</system></unknown>

          1 Reply Last reply Reply Quote 0
          • ?
            Guest
            last edited by

            @arundsis:

            I have exactly same problem. ME909u-521 not recognized.

            Board: PC Engines APU3B4 (with 1 mSATA and 2 mPCIe slots)
            pdSense 2.4.0 amd64, FreeBSD 11.1-realease-p1
            LTE modem: Huawei ME909u-521

            Dmesg says: ugen2.3: <unknown>at usbus2 (disconnected).

            I added <earlyshellcmd>usbconfig -u 2 reset</earlyshellcmd> above <system>-part to config.xml.
            Rebooted. I get still the same 'unknown' message.

            I tried manually run that 'usbconfig -u 2 reset' from command line, then I get
            'usbconfig: could not open device: No error: 0'

            What is going wrong here?</system></unknown>

            Are you sure you are using the correct device id?

            1 Reply Last reply Reply Quote 0
            • Z
              z3n0
              last edited by

              Set delay to 40s

              1 Reply Last reply Reply Quote 0
              • A
                arundsis
                last edited by

                I have changed the delay from 3 s to 41 s, even 63 - no help.

                I changed the Huawei module to another mPCIe slot, no change.

                If the module is removed, then the ' <unknown>at usbus2…' line in dmesg disappears.

                Updated pfSense to the newest 2.4.2. No change :-(

                Clearly the system can not identify the Huawei module or the module is broken.
                Or the module is an uncompatible subversion or something.

                Any good ideas ? Is it possible the module is in some strange mode?
                It is not very easy to test the module/MB combination with some other OS.</unknown>

                1 Reply Last reply Reply Quote 0
                • A
                  arundsis
                  last edited by

                  @johnkeates:

                  @arundsis:

                  I have exactly same problem. ME909u-521 not recognized.

                  Board: PC Engines APU3B4 (with 1 mSATA and 2 mPCIe slots)
                  pdSense 2.4.0 amd64, FreeBSD 11.1-realease-p1
                  LTE modem: Huawei ME909u-521

                  Dmesg says: ugen2.3: <unknown>at usbus2 (disconnected).

                  I added <earlyshellcmd>usbconfig -u 2 reset</earlyshellcmd> above <system>-part to config.xml.
                  Rebooted. I get still the same 'unknown' message.

                  I tried manually run that 'usbconfig -u 2 reset' from command line, then I get
                  'usbconfig: could not open device: No error: 0'

                  What is going wrong here?</system></unknown>

                  Are you sure you are using the correct device id?

                  No I am not :-(

                  But how can I get one ?

                  usbconfig dump_device_desc :

                  ugen1.1: <amd ehci="" root="" hub="">at usbus1, cfg=0 md=HOST spd=HIGH (480Mbps)
                  pwr=SAVE (0mA)

                  bLength = 0x0012
                    bDescriptorType = 0x0001
                    bcdUSB = 0x0200
                    bDeviceClass = 0x0009  <hub>bDeviceSubClass = 0x0000
                    bDeviceProtocol = 0x0001
                    bMaxPacketSize0 = 0x0040
                    idVendor = 0x0000
                    idProduct = 0x0000
                    bcdDevice = 0x0100
                    iManufacturer = 0x0001  <amd>iProduct = 0x0002  <ehci root="" hub="">iSerialNumber = 0x0000  <no string="">bNumConfigurations = 0x0001

                  ugen2.1: <amd ehci="" root="" hub="">at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps)
                  pwr=SAVE (0mA)

                  bLength = 0x0012
                    bDescriptorType = 0x0001
                    bcdUSB = 0x0200
                    bDeviceClass = 0x0009  <hub>bDeviceSubClass = 0x0000
                    bDeviceProtocol = 0x0001
                    bMaxPacketSize0 = 0x0040
                    idVendor = 0x0000
                    idProduct = 0x0000
                    bcdDevice = 0x0100
                    iManufacturer = 0x0001  <amd>iProduct = 0x0002  <ehci root="" hub="">iSerialNumber = 0x0000  <no string="">bNumConfigurations = 0x0001

                  ugen0.1: <0x1022 XHCI root HUB> at usbus0, cfg=0 md=HOST spd=SUPER
                  (5.0Gbps) pwr=SAVE (0mA)

                  bLength = 0x0012
                    bDescriptorType = 0x0001
                    bcdUSB = 0x0300
                    bDeviceClass = 0x0009  <hub>bDeviceSubClass = 0x0000
                    bDeviceProtocol = 0x0003
                    bMaxPacketSize0 = 0x0009
                    idVendor = 0x0000
                    idProduct = 0x0000
                    bcdDevice = 0x0100
                    iManufacturer = 0x0001  <0x1022>
                    iProduct = 0x0002  <xhci root="" hub="">iSerialNumber = 0x0000  <no string="">bNumConfigurations = 0x0001

                  ugen1.2: <vendor 0x0438="" product="" 0x7900="">at usbus1, cfg=0 md=HOST spd=HIGH
                  (480Mbps) pwr=SAVE (100mA)

                  bLength = 0x0012
                    bDescriptorType = 0x0001
                    bcdUSB = 0x0200
                    bDeviceClass = 0x0009  <hub>bDeviceSubClass = 0x0000
                    bDeviceProtocol = 0x0001
                    bMaxPacketSize0 = 0x0040
                    idVendor = 0x0438
                    idProduct = 0x7900
                    bcdDevice = 0x0018
                    iManufacturer = 0x0000  <no string="">iProduct = 0x0000  <no string="">iSerialNumber = 0x0000  <no string="">bNumConfigurations = 0x0001

                  ugen2.2: <vendor 0x0438="" product="" 0x7900="">at usbus2, cfg=0 md=HOST spd=HIGH
                  (480Mbps) pwr=SAVE (100mA)

                  bLength = 0x0012
                    bDescriptorType = 0x0001
                    bcdUSB = 0x0200
                    bDeviceClass = 0x0009  <hub>bDeviceSubClass = 0x0000
                    bDeviceProtocol = 0x0001
                    bMaxPacketSize0 = 0x0040
                    idVendor = 0x0438
                    idProduct = 0x7900
                    bcdDevice = 0x0018
                    iManufacturer = 0x0000  <no string="">iProduct = 0x0000  <no string="">iSerialNumber = 0x0000  <no string="">bNumConfigurations = 0x0001</no></no></no></hub></vendor></no></no></no></hub></vendor></no></xhci></hub></no></ehci></amd></hub></amd></no></ehci></amd></hub></amd>

                  1 Reply Last reply Reply Quote 0
                  • U
                    uno12
                    last edited by

                    Hi,

                    i had the same problem… the ME909u-521 was not found with usbconfig. I got the message "...(disconnected)" for the USB Device in the log file (dmesg).
                    also the usbreset did not work for me..

                    I asume this is a timing problem.
                    My original installation was on a 16G mSATA SSD. Boot was very fast and everything was o.k. but the huawei card was not detected.
                    I tried Linux boot from USB Stick, and the card was found correct.
                    also, if i boot pfsense from usb stick.... much slower than Sata SSD, the ME909 is found and works. I have rebooted this config several times and had no more issues that the device cuaU0.0-4 devices not available.

                    i will try to put some delays in the boot process, to bring my ME909 card online even with the SATA SSD....

                    regards

                    1 Reply Last reply Reply Quote 0
                    • A
                      arundsis
                      last edited by

                      Do you have found how to slow boot down?

                      /boot/loader.conf setting increases the wait time in boot OK, but does not resolve the original problem - identifying the 909u-521 :-/

                      I have run out of ideas.

                      1 Reply Last reply Reply Quote 0
                      • A
                        arundsis
                        last edited by

                        I installed pfSense on a slow USB-memory-stick, and booted from that.
                        ME909u-521 gets identified and shows 5 serial ports, from cuaU0.0 to 0.4
                        Configured PPP to port /dev/cuaU0.0, and added &F0E1Q0 to init string.
                        Yes, it connects and works.

                        Now the problem still lies how to make it work from much faster SSD-disk…

                        1 Reply Last reply Reply Quote 0
                        • J
                          jsrobinson3
                          last edited by

                          @arundsis:

                          I installed pfSense on a slow USB-memory-stick, and booted from that.
                          ME909u-521 gets identified and shows 5 serial ports, from cuaU0.0 to 0.4
                          Configured PPP to port /dev/cuaU0.0, and added &F0E1Q0 to init string.
                          Yes, it connects and works.

                          Now the problem still lies how to make it work from much faster SSD-disk…

                          Have you figured out how to solve this I am having what seems to be the same problem with a Sierra MC7355

                          1 Reply Last reply Reply Quote 0
                          • N
                            nora
                            last edited by

                            Hi guys.

                            I have here the same problem.
                            On the running system, plugged off the miniPCIe modem, plugged it in again an its recognized.
                            But that can't be the plan.
                            Any new advisories to get the modem recognized?

                            Tried all the recommendations, no luck.

                            Cheers
                            Nora

                            1 Reply Last reply Reply Quote 0
                            • N
                              nora
                              last edited by

                              Hi
                              some more output:
                              After plugged off and plugged in the modem.

                              
                              ugen2.3: <huawei technology="">at usbus2
                              u3g0: <huawei mobile="" connect="" -="" modem="">on usbus2
                              u3g0: Found 5 ports.
                              ugen2.3: <huawei technology="">at usbus2 (disconnected)
                              u3g0: at uhub4, port 3, addr 3 (disconnected)
                              ugen2.3: <huawei technology="">at usbus2
                              u3g0: <huawei mobile="" connect="" -="" modem="">on usbus2
                              u3g0: Found 5 ports.</huawei></huawei></huawei></huawei></huawei> 
                              

                              then the usbconfig dump_device_desc

                              
                              ..
                              ..
                              ugen2.3: <huawei mobile="" huawei="" technology="">at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
                              
                                bLength = 0x0012
                                bDescriptorType = 0x0001
                                bcdUSB = 0x0200
                                bDeviceClass = 0x0000  <probed by="" interface="" class="">bDeviceSubClass = 0x0000
                                bDeviceProtocol = 0x0000
                                bMaxPacketSize0 = 0x0040
                                idVendor = 0x12d1
                                idProduct = 0x1573
                                bcdDevice = 0x0228
                                iManufacturer = 0x0001  <huawei technology="">iProduct = 0x0002  <huawei mobile="">iSerialNumber = 0x0003  <0123456712ABCA17>
                                bNumConfigurations = 0x0003</huawei></huawei></probed></huawei> 
                              

                              Where can we do some configuration to recognize this card?
                              I found an other peace of documentation here:
                              I don't know if i'm allowed to post an foreign URL ?
                              But I don't know if this could help?

                              Any help is greatly appreciated

                              Nora

                              1 Reply Last reply Reply Quote 0
                              • A
                                arundsis
                                last edited by

                                Usbmodeswitch is needed with some usb-type modemsticks, it can change the stick's mode to modem, from the original usb-memory-mode offering typically some installer software for Windows.

                                As far as I know, ME909 mPCIe-module does not need usbmodeswitch, at least not for it's original purpose.

                                But maybe it can still be possible to help or re-run the recognition procedure with usbmodeswitch, I don't know.

                                I quess the core of this problem is somewhere in FreeBSD code, maybe some driver or other USB-related thing causing a timing problem and locking the bus/module.
                                The best alternative would be if some BSD- or pfSense developer looked at it…

                                1 Reply Last reply Reply Quote 0
                                • W
                                  wireless
                                  last edited by

                                  @nora:

                                  I have here the same problem.
                                  On the running system, plugged off the miniPCIe modem, plugged it in again an its recognized.
                                  But that can't be the plan.
                                  Any new advisories to get the modem recognized?

                                  I've spent a substantial amount of time struggling with this issue: APU board, Huawei ME909u-521, boot from SSD disk. It doesn't matter if the modem is plugged into the motherboard connector or into a USB connector using adapter. Neither this is pfSense-spesific, OPNsense does the same, actually it's the underlying up-to-date freeBSD. AFAIK, old enough (maybe 9.x?) freeBSD did work. But it seems to be essential that 1) the board used is APU and 2) having the Huawei module plugged in during cold boot, the result will be a failure. Plug it in when the system is running, it works.

                                  I've been in touch with PC Engines' support, last week I heard they were able to reproduce the problem and promised to investigate it. So I'll keep my fingers crossed there will be a bios update to fix this some day.

                                  As a workaround I'm using Sierra MC7455 in my most urgent application. It works out-of-the-box, needs no init strings. Unfortunately I've found no way how to get any info about the radio link quality while the connection is active.

                                  1 Reply Last reply Reply Quote 0
                                  • N
                                    nora
                                    last edited by

                                    Hi

                                    I've been in touch with PC Engines' support, last week I heard they were able to reproduce the problem and promised to investigate it. So I'll keep my fingers crossed there will be a bios update to fix this some day.

                                    Is this topic covered in some forum / git on pcengines?
                                    Any news about it?

                                    As a workaround I'm using Sierra MC7455 in my most urgent application. It works out-of-the-box, needs no init strings. Unfortunately I've found no way how to get any info about the radio link quality while the connection is active.

                                    I hope there is a solution nearly.
                                    I don't want to spend an other 100$ for an other LTE card.

                                    Best regards
                                    Nora

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      nora
                                      last edited by

                                      Hello again

                                      Any further tries.

                                      I updated the BIOS of the apu3b4 from legacy 4.0.7.1 to legacy apu3 v4.0.12
                                      I tought it might be helping.
                                      Created the USB install media
                                      and made the install.
                                      While booting the install media it sees the Huawai modem:

                                      
                                      ..
                                      ugen1.3: <huawei technology="">at usbus1
                                      u3g0: <huawei mobile="" connect="" -="" modem="">on usbus1
                                      u3g0: Found 5 ports.
                                      ..</huawei></huawei> 
                                      

                                      After install is competed, it doesn't recognise it anymore:

                                      
                                      ..
                                      ugen1.3: <unknown>at usbus1 (disconnected)
                                      ..</unknown> 
                                      

                                      What can be done to reslove this issue?

                                      I read on pcengines, there's a new board revision, Version apu3c:

                                      • Improve compatibility with LTE modem modules: Disconnect SMB_DAT / SMB_CLK signals (1.8V level on Quectel).
                                      • Improve compatibility with LTE modem modules: No stuff diodes D4 / D17, option resistor bypass (extremely low VIL on Huawei modems, sensitive to incoming EMI).
                                      • Optional SIM presence indicator / SIM card detect.
                                      • Disable non-functional NCT5104D watchdog timer.
                                      • Increase 3.3V current limit to allow for two simultaneous LTE modems.
                                      • Some DFM changes.

                                      Any help is appreciated
                                      Cheers
                                      Nora

                                      1 Reply Last reply Reply Quote 0
                                      • W
                                        wireless
                                        last edited by

                                        @nora:

                                        I updated the BIOS of the apu3b4 from legacy 4.0.7.1 to legacy apu3 v4.0.12

                                        What can be done to reslove this issue?

                                        I recommend trying v4.0.16 bios. After the very first tests I've made, it looks promising. The bios seems to be already available on PC Engines' page, I got it directly from their support a few days ago. But I believe it's exactly the same version…

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

                                          So the problem here is simply that the modem is not given enough time to initialise at boot?

                                          You could try increasing the value of kern.cam.boot_delay or autoboot_delay in loader.conf(.local).

                                          Steve

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