PocketBeagle 2: not reachable using local network via usb tethering on MacOS (26.5)

Dear community,

I flashed the pb2 board with the latest image using the Beagle Board Imaging Utility:
pocketbeagle2-debian-13.5-base-v6.12-arm64-2026-05-19-8gb.img.xz on MacOS Tahoe 26.5.

The connection is possbile via USB Serial console, but the connection via local network over usb fails.

Apparently the assigned IP is prefixed with 192.168… and it appears with a yellow dot (as opposed to a green dot) in the network devices overview.

The same board with a Debian 12 Image for Bela Gem is working and connecting flawless.

Looking forward for error replications and your expertise!

Kind regards, Andy

So there is a new flag in bb-imager-rs, enable-usb-dhcp… Please try with that enabled… As long as you have Internet connection sharing enabled, the USB port should get an IP address from your Mac.. (it takes 3 reboots to resize and setup first user, so give it a minute or two on boot up)

Dear Robert,

Thanks for the quick reply. The flag was set and I waited 5- 10 minutes and did several reboots of the board. The bela Denian 12 worked, so might it be related to some changes in Debian 13 regarding the usb networking?

Cheers, Andreas

I’m so confused, it should be up.. On Mac there should be a usb-serial interface that comes up with the board on bootup.. Using a serial terminal can you login into the PB2 run, sudo ifconfig -a so we can we what ip address have gotten from your Mac..

Regards,

Hello again,

I had a little AI chat via CoPilot, which should be accessable under this link:
BeagleBoard USB Network Issue on macOS

tl;dr:

The manual assign of an IP worked and the board could be ping worked. Any ideas?

Dear Robert, here is the output of the ifconfig cmd via serial console:

dummy0: flags=130<BROADCAST,NOARP>  mtu 1500

        ether 0a:d5:e4:78:b6:c9  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1000  (Local Loopback)

        RX packets 98  bytes 9113 (8.8 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 98  bytes 9113 (8.8 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet6 fe80::debe:4ff:feb1:12b6  prefixlen 64  scopeid 0x20<link>

        ether dc:be:04:b1:12:b6  txqueuelen 1000  (Ethernet)

        RX packets 78  bytes 27937 (27.2 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 31  bytes 6888 (6.7 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Locally on my macos ifconfig -a returns this entry for the device, matched by MAC address of the board:

en12: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

options=404<VLAN_MTU,CHANNEL_IO>

ether dc:be:04:b1:12:b5

inet6 fe80::10b6:59b1:481d:3f7a%en12 prefixlen 64 secured scopeid 0x16 

inet 169.254.51.239 netmask 0xffff0000 broadcast 169.254.255.255

nd6 options=201<PERFORMNUD,DAD>

media: autoselect (100baseTX <full-duplex>)

status: active

That looks like a local assignment from Mac… Do you have Internet connections sharing or tether enabled? I’m away from home and my Mac mini, will double check later tonight

Hello Robert, as requested here some more infos:

As already mentioned I have an identical pb2 with a Bela Gem Stereo Head and it works out of the box with my local Mac (and the Debian 12 based bela image). So I guess the origin of the problem lies with the pb2 board rather than the mac.

The Debian 13 Image for the pb2 (without bela header) was configured with enabled usb dhcp and disabled shared internet. Should be good, right?

The auto DHCP checkbox is new, old images didn’t have that

Are there MacOS users that can reproduce the error using the latest PocketBeagle2 Firmware with DHCP checkbox on? I am kind of lost what to do, or if I should just create a startup script that binds the address with the commands from my previous post, but it looks not very sunstainable and needs to be done after each install of the firmware …

Do you do this something like this - e.g. use the systemd way of dhcp server - IIRC I added this by hand …

[Network]
DNS=8.8.8.8
DHCPServer=true
IPv6PrivacyExtensions=true
IPv6AcceptRA=true

[Address]
Address=192.168.7.2/30

[Route]
Gateway=192.168.7.1

[DHCPServer]
EmitDNS=false
EmitNTP=false
EmitSIP=false
EmitRouter=false

Thank you David for your anwer.

I did not try your peoposed solution yet. In case it works: how can this be reported as bugfix to be added for the next release of the bb2 image?

Cheers and kind regards,

Andreas

You should be able to follow the procedure outlined here:

You’ll know it works when the little “led” on MacOS turns green…

The issue arrises because there can be two DHCP server offers,
so if the card picks the wrong one, it won’t work.
The important bit are the two commands at the end of the MacOS instructions:
Those will make the board “click into place”…

Right now the defaults are:

  • usb0-DHCP.network
[Match]
Name=usb0

[Link]
RequiredForOnline=no

[Network]
DHCP=ipv4
  • usb0-DHCPServer.network
[Match]
Name=usb0

[Link]
RequiredForOnline=no

[Network]
DHCP=no
Address=192.168.7.2/24
DHCPServer=on

[DHCPServer]
EmitDNS=no
EmitRouter=no
EmitTimezone=no
MaxLeaseTimeSec=20min
PoolSize=1

What changes does everyone want to see for Windows, Mac and Linux..

the missing:

[Route]
Gateway=192.168.7.1

seems like a good idea..

Regards,

Ah yes - the gateway bit only works if you set the address as 192.168.7.2/30 then the only valid address are 192.168.7.1 and 192.168.7.2 (0 and 3 have special meaning). This means when the DHCP server runs - it can only ever give one number, and that machine must be the gateway.

and by setting /30 we are doing really the same thing, but actually forcing the network to 2 usable ip’s vs /24 which was 254 (even thou we lock it to 1 other with dhcp (poolsize)..

yeah i like /30 lock better..

looking more at:

[Route]
Gateway=192.168.7.1

If any device had wifi, this would then force usb0 the default route..

This is the optimized version: (if wifi or eth0 could exist..)

[Match]
Name=usb0

[Network]
Address=192.168.7.2/30
DHCP=no
RequiredForOnline=no

[DHCPServer]
PoolSize=1
MaxLeaseTimeSec=20min
EmitDNS=no
EmitRouter=yes
EmitTimezone=no

Do we need a third, no wifi, no eth option…

Yes if the device can have other internet connections they are almost certainly better that USB OTG, which is far from a complete connection (e.g. the host machine needs to forward).

This said this was my solution on BBB PB and PB2 none of which have any connection other than the USB OTG.

Yeap very good point, quick walk was thinking the same thing and you reconfirmed, the whole point of this, is when there isn’t anything else!

[Match]
Name=usb0

[Network]
Address=192.168.7.2/30
DHCP=no
RequiredForOnline=yes

[Route]
Gateway=192.168.7.1

[DHCPServer]
PoolSize=1
MaxLeaseTimeSec=20min
EmitDNS=no
EmitRouter=yes
EmitTimezone=no

okay pushed armhf side.. bb-usb-gadgets (1.20260706.0) · beagleboard/repos-armhf@6704937 · GitHub

Seperated into 3 files:

debian/usb0-DHCP.network /etc/bbb.io/templates/
(default) debian/usb0-DHCPServer.network /etc/bbb.io/templates/
debian/usb0-only-DHCPServer.network /etc/bbb.io/templates/

on am335x, we use a unified image, so pb and bbb boot on the same image, that’ll default to usb0-DHCPServer.network i need to work with @ayush1325 to find a way to make this selectable..

On PB2 it’ll be usb0-only-DHCPServer.network by default, BBAI64, Play, and BeagleY-AI it’ll be usb0-DHCPServer.network

arm64: bb-usb-gadgets (1.20260706.0) · beagleboard/repos-arm64@24d49a2 · GitHub

riscv64: bb-usb-gadgets (1.20260706.0) · beagleboard/repos-riscv64@997b876 · GitHub

Do you need

[Network]
DHCPServer=true

Its been several years since I read how to set network in systemd. IIRC you switch on the DHCPServer in [Network] and configure it in [DHCPServer]. I’ll have to look up PoolSize - I can guess what it does, but it wasn’t something I set.

Thank you all for your answers and solution proposals.

If I use the BeagleBone2 together with Bela Gen Audio Header and their Debian 12 based Image, usb-c tethering works out of the box.

On the same Macbook Pro with the Debian 13 image on thecBeaglebone2, it doesn’t. So something had changed for the worse in the new Debian 13 image for BB2.