Ubuntu – How to enable USB type C connectors on 15.10

15.10usb

Does linux support usb-c yet? So far only the power function seems to work, my phone will start charging when I plug it in.

I'm wondering if Ubuntu supports USB-C yet – in my experience, only the charging feature works when I connect my phone.

Are there extra program needed to enable it?

If it is not available at all yet, is there a good place to follow progress on the development?

Best Answer

  • There are multiple parts to answer this question, first is does the linux kernel support USB Type-C; the answer is yes. The next thing to consider is, does the kernel you're currently using have that functionality yet? That's probably yes unless you're using a really old version of Ubuntu.

    The next part is the important part: Does your USB host controller have a driver in the kernel? To find the answer you can type lspci -d ::0c03 -k you should find output like this:

    00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
        Subsystem: CLEVO/KAPOK Computer 8 Series/C220 Series Chipset Family USB xHCI
        Kernel driver in use: xhci_hcd
    00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
        Subsystem: CLEVO/KAPOK Computer 8 Series/C220 Series Chipset Family USB EHCI
        Kernel driver in use: ehci-pci
    

    Intel chipsets usually have the best support, and most usb chipset makers claim to have linux support on their websites for their USB Type-C chipsets. If you need more specific information about your type of usb controller, you can ask a question with this information in it.

    If you have a driver, then the next part is to see what happens when you plug something in in the kern.log file, type tail -f /var/log/kern.log and plug and unplug some usb type-c device. For a usb-2 device, this is the kind of output one would see:

    Jun  3 14:29:24 delen kernel: [10007.452686] usb 3-2: new low-speed USB device number 4 using xhci_hcd
    Jun  3 14:29:24 delen kernel: [10007.584351] usb 3-2: New USB device found, idVendor=13ee, idProduct=0001
    Jun  3 14:29:24 delen kernel: [10007.584356] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    Jun  3 14:29:24 delen kernel: [10007.584359] usb 3-2: Product: AND 
    Jun  3 14:29:24 delen kernel: [10007.584361] usb 3-2: Manufacturer: MOON
    Jun  3 14:29:24 delen kernel: [10007.584363] usb 3-2: SerialNumber: @…ĆAB
    Jun  3 14:29:24 delen kernel: [10007.584567] usb 3-2: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
    Jun  3 14:29:24 delen kernel: [10007.599137] hidraw: raw HID events driver (C) Jiri Kosina
    Jun  3 14:29:24 delen kernel: [10007.604255] usbcore: registered new interface driver usbhid
    Jun  3 14:29:24 delen kernel: [10007.604258] usbhid: USB HID core driver
    Jun  3 14:29:24 delen kernel: [10007.606568] input: MOON AND  as /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/0003:13EE:0001.0001/input/input26
    Jun  3 14:29:24 delen kernel: [10007.606725] hid-generic 0003:13EE:0001.0001: input,hidraw0: USB HID v1.00 Mouse [MOON AND ] on usb-0000:00:14.0-2/input0
    Jun  3 14:29:27 delen kernel: [10010.189280] usb 3-2: USB disconnect, device number 4
    

    If you see nothing happening, then you don't have a driver or it doesn't really work (or the thing you're trying to plug in is switch off or broken).

    You can use the log information above to understand what might be happening, it documents things like device use switching (power vs. data vs. display) and can tell you a lot about why the mode you want isn't being used.

    The last part of usb type-c is as a display port. I could only find information about Google Chromebooks which have this port and no information about if the functionality had made its way into the mailline kernel (google does not always push for upstream patches of it's kernel code).