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

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

    Hardware
    11
    22
    5.4k
    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.
    • R
      rite2dinesh
      last edited by

      Hi,

      We managed to successfully setup the PPP connection with the Huawei ME909u modem. I have no issues with the connection itself. However, when we reboot the system the PPP connection never tries to reconnect automatically.

      After some analysis, we found that the modem is not detected properly on warm/cold boot. As you can see from the dmesg output : ugen1.3: <unknown>at usbus1 (disconnected)</unknown> , the usb device is not recognized correctly.

      dmesg after boot:

      usbus0: 5.0Gbps Super Speed USB v3.0
      usbus1: 480Mbps High Speed USB v2.0
      ugen0.1: <0x1022> at usbus0
      uhub0: <0x1022 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
      ugen1.1: <amd> at usbus1
      uhub1: <amd 1="" 9="" ehci="" root="" hub,="" class="" 0,="" rev="" 2.00="" 1.00,="" addr=""> on usbus1
      uhub0: 4 ports with 4 removable, self powered
      uhub1: 2 ports with 2 removable, self powered
      ugen1.2: <vendor 0x0438=""> at usbus1
      uhub2: <vendor 2="" 9="" 0x0438="" product="" 0x7900,="" class="" 0,="" rev="" 2.00="" 0.18,="" addr=""> on usbus1
      uhub2: 4 ports with 4 removable, self powered
      ugen1.3: <unknown> at usbus1 (disconnected)</unknown></vendor></vendor></amd></amd>
      

      If we unplug and plug it again, the modem is detected correctly with all the serial ports available.

      dmesg after unplug and plug:

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

      We tried to manually load u3g module, but it look like it is part of the kernel itself and it is not necessary.

      > kldload u3g
      kldload: can't load u3g: module already loaded or in kernel
      

      The system we are using is

      System:	PC Engines APU2
      Version: 2.3.3-RELEASE (amd64)
      

      content of /boot/loader.conf

      autoboot_delay="3"
      umodem_load="YES"
      u3g_load="YES"
      ucom_load="YES"
      boot_serial="YES"
      console="comconsole"
      comconsole_speed="115200"
      hw.usb.no_pf="1"
      

      Could some one please tell me setup procedure so that the modem is detected correctly on warm/cold boot? and eventually establishing the PPP connection.

      1 Reply Last reply Reply Quote 0
      • R
        rite2dinesh
        last edited by

        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
        • Z
          z3n0
          last edited by

          @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.

          I have the same problem.
          Could you explain what do I do?
          Thank u

          1 Reply Last reply Reply Quote 0
          • 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
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.