Back to blog
FILE 0xCA·USB 2.0 BILLBOARD MEANS THE CABLE IS CHARGE-ONLY

USB 2.0 Billboard means the cable is charge-only

April 28, 2026 · hardware, usb, macos

Plugged an ESP32-class dev board into the Mac. Instead of a serial port, macOS showed it as a USB 2.0 BILLBOARD device from VLI Inc., vendor ID 0x2109. No /dev/cu.usbmodem* to be found.

What was happening

$ ls /dev/cu.*
/dev/cu.Bluetooth-Incoming-Port
$ ioreg -p IOUSB -l -w 0 | grep -A2 -i 'billboard\|cp210\|ch9102'
+-o USB 2.0 BILLBOARD@01100000  <class IOUSBHostDevice...
    | "USB Vendor Name" = "VLI Inc."
    | "Product ID" = 0x2109

No CP210x. No CH9102. No serial port at all. The device had power, the LEDs came up, but there was nothing on the USB bus to talk to.

What I found

A Billboard device is what USB-C cables report when the alternate-mode negotiation fails. It's the spec's way of saying "I'm a cable that can't do what you tried to do." For a dev board, that almost always means data lines are missing in the cable. Charge-only USB-C cables only wire the two power pairs and CC; they leave the USB 2.0 D+/D- and the SuperSpeed pairs unpopulated. The device powers up, but the host enumerates the cable as a passive Billboard device instead of letting the chip downstream of it speak USB.

Cables I've confirmed work fine in this scenario:

Cables that have consistently failed:

The fix

Swap the cable. That's the whole fix. If you still get a Billboard device with a known-good data cable, then it's worth troubleshooting the device — try force-download mode (usually a button combo specific to the board), check whether the onboard USB-serial chip is healthy, etc.

Diagnostic one-liner I keep around:

ioreg -p IOUSB -l -w 0 | grep -B1 -A4 -i 'billboard'

If anything shows up, the cable is lying to your computer.

What I'd do differently

I now keep two cables physically zip-tied to my dev bench labeled "DATA" so I don't grab the wrong one off the desk. Sounds dumb, but I've burned an hour more than once on this exact problem.