0

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.

EDIT: as required, the System Report when it works. When it doesn't (i.e. with the usb-c-only cable), then the line just does not appear in "USB 3.0 Bus"...

Device is detected

3
  • As far as I understand you're using a MacBook Pro and you're plugging this into the USB-C port on it. In this case, this is not called "OTG" (On-The-Go) anymore, instead you're looking at DRD ports (Dual-Role-Data). The MacBook Pro definitely supports DRD on all ports - so that's not the problem. When you have plugged in the device, open System Report and take a screenshot of the relevant portion of the USB section. Do this for both scenarios (directly attached and attached via hub), and add those screenshots to this question). – jksoegaard Apr 9 at 10:16
  • On a seperate note, there exists several standards for doing ethernet over USB like this. Some are support by macOS by default, and some are not. The same can be said for Linux for example. Can you detail which of these methods you're using? (ECM, EEm, NCM, RNDIS, etc.) Is your OTG device actually a Linux device? or some embedded hardware? – jksoegaard Apr 9 at 10:18
  • Thanks for the comments! I added an image of the System Report already, I need to check which module is used on the device. The device is a custom embedded hardware running Linux. – JonasVautherin Apr 9 at 23:44
2

I think the problem is that your USB-C to USB-C cable is in fact power only.

The setup you have should work when you connect it directly, but you write the USB part of System Report gives no indication that anything at all is plugged in. If you have used a charger cable that has no data lines, this is what would happen.

Try with a different USB-C to USB-C cable and it should hopefully work.

UPDATE: Based on your comments, the problem seems to be that the device itself doesn't actually support USB-C fully. You'll need to configure the Linux kernel with the CONFIG_TYPEC option in make menuconfig in order to have support for USB-C build.

13
  • Very good point, I should have asked that first (it's not happening to me) =/. Let me ask and come back to you! :-). If that was a data cable, something should appear in the System Report? I am used to Linux where I would expect to see something in dmesg... – JonasVautherin Apr 10 at 12:30
  • 1
    Well, you can just run dmesg on macOS as well, if you prefer. – jksoegaard Apr 10 at 14:08
  • So this issue is encountered when using a USB-C to USB-C cable that is used for iOS development between a macbook and an iPad, and therefore has the data lines, right? =/ – JonasVautherin Apr 12 at 15:07
  • No? The issue is encountered when using a charger cable that does not have data signaling. Using a USB-C to USB-C cable with data is perfectly okay. The cable used for iOS development is just such a standard cable - nothing special. – jksoegaard Apr 12 at 18:02
  • Sorry, I was unclear. What I meant was that I got confirmation that the issue happens when using a data cable. The proof that it is a data cable is that the person in question uses it for iOS development. So it suggests that there is another problem somewhere... – JonasVautherin Apr 12 at 21:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .