network – Ethernet-over-usb not working with usb-c to usb-c cable, working with adapter

I have an OTG device that exposes a network interface over USB-C, providing a DHCP server (think a raspberry pi or similar). When I plug it into my Linux computer (USB-A on the computer, USB-C in the device), then Linux shows a new interface with an IP, and I can SSH into the device.

On a Macbook (where the Macbook also has USB-C connectors), it does not always work:

  1. If I take a usb-c to usb-c cable and use it to connect the Macbook to the device, it does not seem to get recognized (the network interface is not appearing in ifconfig).
  2. If I connect a USB adapter to the Macbook (one of those USB hubs exposing 3 USB-A sockets), and then I connect a usb-a to usb-c cable between the hub and the device (so it’s usb-c <–> usb-a <–> usb hub <–> usb-c), then it is recognized.

My first thought was that the hub was definitely a USB device/gadget, and maybe that helped because both the Macbook and the device were USB hosts. But I am pretty sure that the device is OTG, and the fact that the device can connect directly to the Linux shows that it can run as a gadget (and for sure the Macbook can run as a host).

What could be the reason for that issue? And optionally: is it correct to think that the Macbook USB ports are not OTG but always host (I have never heard of an OTG port in a computer, not sure if that’s a thing)?

Note: it seems similiar to this old unanswered question.