Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login
    Introducing Netgate Nexus: Multi-Instance Management at Your Fingertips.

    iPhone 16e USB tethering on pfSense CE 2.8.1: ue0 appears, but no DHCP / ARP reply

    Scheduled Pinned Locked Moved General pfSense Questions
    27 Posts 4 Posters 9.1k Views 4 Watching
    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.
    • A Offline
      alfredo
      last edited by

      iPhone 16e USB tethering on pfSense CE 2.8.1: ue0 appears but no DHCP / connectivity

      I’m trying to use an iPhone 16e (latest iOS) as a USB WAN connection on pfSense CE 2.8.1 (FreeBSD 15 based). The iPhone is detected correctly and usbconfig shows that only Configuration 3 exposes AppleUSBEthernet. After running usbconfig -d ugenX.Y set_config 3, the iPhone immediately shows the “Trust This Computer?” prompt. ue0 is then created and can be assigned as OPT3. The interface comes up and shows UP/RUNNING. if_ipheth.ko was manually copied to /boot/kernel/; kldload if_ipheth now reports module already loaded or in kernel.

      However, DHCP never succeeds. The DHCP log repeatedly shows DHCPDISCOVER on ue0 followed by No DHCPOFFERS received. I also tried bypassing DHCP completely by configuring ue0 statically as 172.20.10.2/28 with gateway 172.20.10.1 (the network that the iPhone gives to a MacBook). Even then, ping 172.20.10.1 fails with sendto: Host is down, and arp -an shows 172.20.10.1 as incomplete on ue0, suggesting ARP requests are sent but never answered.

      To verify the phone itself is working, I connected the same iPhone with the same cable directly to a MacBook. The Mac immediately receives 172.20.10.2/28, gateway 172.20.10.1, and Internet access works normally. So the iPhone, cable, hotspot, and carrier connection all appear to be fine.

      Has anyone successfully used a recent iPhone (iPhone 15/16 generation, current iOS) with pfSense 2.8.1? Is there anything else required beyond if_ipheth and forcing Configuration 3? Has anyone seen a situation where ue0 is created successfully but the iPhone never responds to DHCP or even ARP? Any ideas would be appreciated.

      1 Reply Last reply Reply Quote 0
      • tinfoilmattT Offline
        tinfoilmatt LAYER 8
        last edited by

        Does a packet capture on OPT3 show any traffic whatsoever originating from the iPhone?

        1 Reply Last reply Reply Quote 0
        • A Offline
          alfredo
          last edited by

          Not yet. So far I have confirmed that pfSense transmits DHCPDISCOVER packets on ue0, but no DHCPOFFER is received. A static IP test (172.20.10.2/28, gateway 172.20.10.1) also fails, with ARP for 172.20.10.1 remaining incomplete. I will run a packet capture on OPT3/ue0 next to determine whether any traffic at all is being received from the iPhone.

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

            Does ue0 come up with a valid MAC address?

            1 Reply Last reply Reply Quote 0
            • A Offline
              alfredo
              last edited by

              @stephenw10 said in iPhone 16e USB tethering on pfSense CE 2.8.1: ue0 appears, but no DHCP / ARP reply:

              Does ue0 come up with a valid MAC address?

              Yes. ue0 comes up with a valid-looking MAC address:

              92:5f:7a:a7:3c:6a

              It is UP/RUNNING, but it does not receive DHCP offers, and static ARP to 172.20.10.1 remains incomplete.

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

                Hmm, I'd expect that to work. Though I have no way to test it here.

                What do you see logged when you connect the iphone? Any errors shown?

                1 Reply Last reply Reply Quote 0
                • A Offline
                  alfredo
                  last edited by alfredo

                  No obvious errors. When the iPhone is connected and Configuration 3 is selected, ue0 is created successfully with a valid MAC address (92:5f:7a:a7:3c:6a) and can be assigned to OPT3. The interface comes up as UP/RUNNING. DHCP repeatedly sends DISCOVER packets but never receives an OFFER. A static configuration (172.20.10.2/28, gateway 172.20.10.1) also fails, with ARP for 172.20.10.1 remaining permanently “incomplete”. On the iPhone, Personal Hotspot is enabled with both Allow Others to Join and Maximum Compatibility enabled. One thing I am wondering about is whether current pfSense/FreeBSD builds still include and use the proper if_ipheth driver path for modern iPhones. Initially kldload if_ipheth reported the module was missing, and I had to manually obtain and install if_ipheth.ko. I can post the relevant dmesg output if that would be helpful.

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

                    Yeah, where did you get that module?

                    Though if it loads correctly then it must be compatible.

                    But that's why I wanted to see the logs shown when it loads because it sounds like it might be using a generic driver., However that can't be the case if it failed to connect before you added the module.

                    I also note that if_ipheth.ko is incliuded in the 2.8.1 install. You should not have needed to load anything unless it needed a newer driver perhaps.

                    1 Reply Last reply Reply Quote 1
                    • A Offline
                      alfredo
                      last edited by

                      I re-ran the diagnostics before and after selecting config 3. The important part seems to be:

                      KLD if_ipheth.ko: depends on kernel - not available or version mismatch

                      So the manually copied if_ipheth.ko is not loading correctly. After running usbconfig -d ugen6.2 set_config 3, usbconfig shows the iPhone at cfg=3 and dump_curr_config_desc shows:

                      PTP + Apple Mobile Device + Apple USB Ethernet
                      Interface 2: AppleUSBEthernet

                      However, no ue0 is created:

                      ifconfig -l -> em0 em1 em2 em3 enc0 lo0 pflog0 pfsync0 ovpns1
                      ifconfig ue0 -> interface ue0 does not exist

                      So it looks like the iPhone exposes AppleUSBEthernet correctly, but no compatible if_ipheth driver is actually attaching.

                      1 Reply Last reply Reply Quote 0
                      • A Offline
                        alfredo
                        last edited by alfredo

                        I removed the manually copied if_ipheth.ko and repeated the test from a clean reboot, so this is now without any manually added driver.
                        System:
                        pfSense CE 2.8.1-RELEASE
                        FreeBSD 15.0-CURRENT #21 RELENG_2_8_1-n256095-47c932dcc0e9 amd64
                        iPhone:
                        iPhone 16e, current iOS
                        Personal Hotspot enabled
                        Allow Others to Join enabled
                        Maximum Compatibility enabled
                        After connecting the iPhone, usbconfig shows:
                        ugen6.2: <iPhone 5/5C/5S/6/SE/7/8/X/XR Apple, Inc.> at usbus6, cfg=3 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)
                        I then force configuration 3 with:
                        usbconfig -d ugen6.2 set_config 3
                        The current config descriptor then shows the expected Apple Ethernet interface:
                        Configuration index 3
                        bConfigurationValue = 0x0004
                        iConfiguration = <PTP + Apple Mobile Device + Apple USB Ethernet>
                        Interface 2
                        bInterfaceClass = 0x00ff <Vendor specific>
                        bInterfaceSubClass = 0x00fd
                        bInterfaceProtocol = 0x0001
                        iInterface = <AppleUSBEthernet>
                        So the iPhone appears to expose AppleUSBEthernet correctly.
                        However, no network interface is created:
                        ifconfig -l
                        returns only:
                        em0 em1 em2 em3 enc0 lo0 pflog0 pfsync0 ovpns1
                        There is no ue0.
                        Also:
                        ifconfig ue0
                        returns:
                        ifconfig: interface ue0 does not exist
                        The relevant dmesg output only shows the USB device itself:
                        ugen6.2: <Apple Inc. iPhone> at usbus6
                        There are no ipheth0, ue0, cdce0, uether, or urndis attach messages.
                        kldstat also shows no USB Ethernet related modules loaded. It only shows:
                        kernel
                        cpuctl.ko
                        ichsmb.ko
                        smbus.ko
                        aesni.ko
                        cryptodev.ko
                        coretemp.ko
                        Earlier, when I had manually copied an external if_ipheth.ko, dmesg showed:
                        KLD if_ipheth.ko: depends on kernel - not available or version mismatch
                        so that copied module was clearly not compatible. I have removed it again and am now testing only the clean pfSense 2.8.1 installation.
                        So the current clean state is:

                        • iPhone is detected by USB
                        • config 3 is selected
                        • config 3 exposes AppleUSBEthernet
                        • but pfSense does not attach any driver to it
                        • no ue0 interface is created
                          At this stage the issue no longer appears to be DHCP, ARP, gateway, or OPT3 configuration. The problem seems to be earlier: AppleUSBEthernet is visible in the USB descriptor, but no driver attaches to Interface 2.
                          Is there a specific module or loader setting required on pfSense 2.8.1 for if_ipheth / AppleUSBEthernet to attach here? Or should if_ipheth already attach automatically once config 3 exposes AppleUSBEthernet?
                        tinfoilmattT 1 Reply Last reply Reply Quote 0
                        • A Offline
                          alfredo
                          last edited by

                          One thing that confuses me is that earlier in troubleshooting I did have a ue0 interface. pfSense showed:

                          OPT3 (opt3) -> ue0 -> 172.20.10.2/28

                          and I was able to configure and test that interface. At that stage DHCP failed and ARP to 172.20.10.1 remained incomplete.

                          After rebooting, removing the manually copied if_ipheth.ko, and repeating the test from a clean state, the iPhone is still detected and AppleUSBEthernet is still exposed in Configuration 3, but no ue0 interface is now created at all.

                          So there seem to be two different states:

                          1. Earlier: ue0 existed but no connectivity.
                          2. Current: no ue0 is created despite AppleUSBEthernet being present.

                          I'm not sure what changed between those states, but perhaps that difference is itself a clue.

                          1 Reply Last reply Reply Quote 0
                          • tinfoilmattT Offline
                            tinfoilmatt LAYER 8 @alfredo
                            last edited by

                            Why not load the 'stock' pfSense kernel module with:

                            kldload -n /boot/kernel/if_ipheth.ko
                            

                            As @stephenw10 mentions, I also see it included on an 2.8.1. install. The difference would be, earlier, you were using a module apparently copied from a different system?

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

                              You probably still need to load the kernel module, either manually at the CLI for testing or via /boot/loader.conf.local once it's working.

                              It should load cleanly and return nothing like:

                              [2.8.1-RELEASE][admin@t70.stevew.lan]/root: kldload if_ipheth.ko
                              [2.8.1-RELEASE][admin@t70.stevew.lan]/root: kldstat
                              Id Refs Address                Size Name
                               1   47 0xffffffff80200000  2dc8ee0 kernel
                               2    1 0xffffffff82fc9000     8808 cryptodev.ko
                               3    1 0xffffffff82fd2000   60a278 zfs.ko
                               4    1 0xffffffff83e20000     23a0 cpuctl.ko
                               5    1 0xffffffff83e23000     4250 ichsmb.ko
                               6    1 0xffffffff83e28000     2178 smbus.ko
                               7    1 0xffffffff83e2b000     6060 ig4.ko
                               8    1 0xffffffff83e32000     20f0 coretemp.ko
                               9    1 0xffffffff83e35000    138a0 dummynet.ko
                              10    1 0xffffffff83e49000     21e0 if_ipheth.ko
                              
                              1 Reply Last reply Reply Quote 0
                              • A Offline
                                alfredo
                                last edited by

                                On my 2.8.1 install the stock module does not appear to be present:

                                /root: kldload -n /boot/kernel/if_ipheth.ko
                                kldload: can't load /boot/kernel/if_ipheth.ko: No such file or directory

                                tinfoilmattT 1 Reply Last reply Reply Quote 0
                                • A Offline
                                  alfredo
                                  last edited by alfredo

                                  [2.8.1-RELEASE][admin@fwr.......]/root: kldload if_ipheth.ko
                                  kldload: if_ipheth.ko is not in the module path
                                  [2.8.1-RELEASE][admin@fwr...........]/root:

                                  1 Reply Last reply Reply Quote 0
                                  • tinfoilmattT Offline
                                    tinfoilmatt LAYER 8 @alfredo
                                    last edited by

                                    On the system I'm looking at:

                                    [2.8.1-RELEASE][admin@edge]/root: ls -alh /boot/kernel | grep if_ipheth.ko
                                    -r--r--r--   1 root wheel   32K Aug 28  2025 if_ipheth.ko
                                    
                                    stephenw10S 1 Reply Last reply Reply Quote 0
                                    • A Offline
                                      alfredo
                                      last edited by

                                      @tinfoilmatt said in iPhone 16e USB tethering on pfSense CE 2.8.1: ue0 appears, but no DHCP / ARP reply:

                                      ls -alh /boot/kernel | grep if_ipheth.ko

                                      [2.8.1-RELEASE][admin@fwr1................]/root: ls -alh /boot/kernel | grep if_ipheth.ko
                                      [2.8.1-RELEASE][admin@fwr1................]/root:

                                      Nothing here...

                                      tinfoilmattT 1 Reply Last reply Reply Quote 0
                                      • tinfoilmattT Offline
                                        tinfoilmatt LAYER 8 @alfredo
                                        last edited by

                                        Maybe it got overwritten (and then that copy removed)?

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

                                          Hmm, I wonder if you accidentally overwrote it somehow?

                                          Anyway try this: if_ipheth.ko.txt (remove the txt extension)

                                          1 Reply Last reply Reply Quote 0
                                          • A Offline
                                            alfredo
                                            last edited by

                                            Update: I now have the stock driver loading correctly and ue0 being created. Thanks.

                                            After reboot:

                                            kldload if_ipheth.ko

                                            loads cleanly, and kldstat shows:

                                            8 1 0xffffffff8383d000 21e0 if_ipheth.ko

                                            After:

                                            usbconfig -d ugen6.2 set_config 3

                                            the iPhone exposes AppleUSBEthernet and ue0 is created:

                                            ifconfig -l

                                            returns:

                                            em0 em1 em2 em3 enc0 lo0 pflog0 pfsync0 ovpns1 ue0

                                            and:

                                            ifconfig ue0

                                            shows:

                                            ue0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>
                                            ether 92:5f:7a:a7:3c:6a

                                            So the driver loads, attaches, and creates a working interface with a valid MAC address.

                                            However, DHCP still fails. Running:

                                            dhclient ue0

                                            only produces repeated:

                                            DHCPDISCOVER on ue0 to 255.255.255.255 port 67

                                            and never receives a DHCPOFFER.

                                            One additional data point: this does not appear to be only a DHCP problem.

                                            Earlier in troubleshooting I manually configured:

                                            ue0 = 172.20.10.2/28
                                            gateway = 172.20.10.1

                                            (which is the same addressing my MacBook receives when tethered to this iPhone).

                                            Even with that static configuration, communication still failed. ARP for 172.20.10.1 remained incomplete and the gateway could not be reached. No IPv4 traffic passed.

                                            So the current state appears to be:

                                            • if_ipheth loads correctly
                                            • AppleUSBEthernet is detected
                                            • ue0 is created and comes UP/RUNNING
                                            • DHCP receives no replies
                                            • Static IPv4 communication also fails

                                            which makes me suspect the remaining issue may be below DHCP, perhaps at the Ethernet/frame exchange level between the iPhone and the driver.

                                            The iPhone is an iPhone 16e running the latest iOS. Personal Hotspot is enabled with both “Allow Others to Join” and “Maximum Compatibility” enabled. The same phone and cable work correctly when connected directly to a MacBook.

                                            tinfoilmattT 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2026 Rubicon Communications LLC (Netgate). All rights reserved.
                                            Privacy Policy · Cookie Policy