Does F41 (KDE Spin) support USB Dual Role devices?

Context

Question

I’m familiar with the USB stack, so I’ll ask here to ensure that:

  1. If it does necessitate OS support, I know whether it is in Fedora (like Windows 11);
  2. and, if it doesn’t, I’m corrected that my premise is irrelevant to Fedora, because it’s purely a hardware and/or file manager concern (although the latter would be improbable).

Someone asked a similar question on Framework Discourse two months ago and never got an answer. Question for the Framework hardware engineers: Does the Framework 16 motherboard support USB Dual Role Data features? - Framework Laptop 16 - Framework Community

Maybe someone on their Discord could have a look into their settings to find out what controller they use?

1 Like

Thank you, @theprogram. I’ve linked them.

I don’t see any particular reason to believe that asking somewhere synchronous is more likely to provide answers that somewhere asynchronous doesn’t, unless I’ve misunderstood how such communities operate.

Irrespective, I intend to posit this to Support.

1 Like

It is not as I see it a matter of likelyhood, but of ‘where the community is’. Different communities maintain spaces and followings in different places. Personally I find the barrier of entry to Discord a little annoying, and the conversation a little childish.
One reason though that syschronous communication sometimes works better is the ‘stream of consciousness’ that forces a feedback (response). The downfall is that response mught be of lower quality.


I asked a friend to look up their Framework USB controller. Then I though '“Roke has a Framework”, so can you identify your controller with

lsusb

to find the name or device ID of the controller, and see if it supports USB Dual Role from that?

Mine lists

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

or

sudo lshw

Which returns for me

 *-usb:0
                description: USB controller
                product: Renoir/Cezanne USB 3.1
                vendor: Advanced Micro Devices, Inc. [AMD]
                physical id: 0.3
                bus info: pci@0000:04:00.3
                version: 00
                width: 64 bits
                clock: 33MHz
                capabilities: pm pciexpress msi msix xhci bus_master cap_list
                configuration: driver=xhci_hcd latency=0
                resources: irq:32 memory:fca00000-fcafffff
1 Like

@theprogram, indeed. Ideally, we should be discussing hardware at FW’s Discourse instance, but I’ll take the assistance where I can, and what these tools return is vaguely Fedora-specific.

Summaries

On that note, lsusb and lshw -businfo | grep -E usb don’t provide much:

    1.  #!/usr/bin/env sh
       lsusb
      
    2. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
      Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
      Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. Hub
      Bus 001 Device 005: ID 32ac:0014 Framework Laptop 16 Numpad Module
      Bus 001 Device 006: ID 0e8d:e616 MediaTek Inc. Wireless_Device
      Bus 001 Device 007: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix Fingerprint USB Device
      Bus 001 Device 008: ID 32ac:0018 Framework Laptop 16 Keyboard Module - ISO
      Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub
      Bus 002 Device 003: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
      Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      
    1.  #!/usr/bin/env sh
       lshw -businfo | grep -E usb
      
    2. I’ve converted it to text/tab-separated-values:

      usb@1    	usb1          	bus          	xHCI Host Controller
      usb@1:2  	              	bus          	USB2.1 Hub
      usb@1:3  	              	bus          	USB2.0 Hub
      usb@1:3.2	input10       	input        	Framework Laptop 16 Numpad Module Consumer Control
      usb@1:4  	              	bus          	USB2.0 Hub
      usb@1:4.1	              	generic      	Goodix Fingerprint USB Device
      usb@1:4.2	input12       	input        	Framework Laptop 16 Keyboard Module - ISO Keyboard
      usb@1:5  	              	communication	Wireless_Device
      usb@2    	usb2          	bus          	xHCI Host Controller
      usb@2:2  	              	bus          	USB3.2 Hub
      usb@2:2.1	              	generic      	USB 10/100/1G/2.5G LAN
      usb@3    	usb3          	bus          	xHCI Host Controller
      usb@4    	usb4          	bus          	xHCI Host Controller
      usb@5    	usb5          	bus          	xHCI Host Controller
      usb@6    	usb6          	bus          	xHCI Host Controller
      usb@7    	usb7          	bus          	xHCI Host Controller
      usb@8    	usb8          	bus          	xHCI Host Controller
      usb@2:2.1	enp193s0f3u2u1	network      	USB 10/100/1G/2.5G LA
      

I’d say that they lack names to such an extent that they’re difficult to investigate. [1]

Detail

However, I see quite a lot of relevant information via lshw:

  1. Firmware USB Support

    	  *-firmware
    			 description: BIOS
    			 vendor: INSYDE Corp.
    			 physical id: 0
    			 version: 03.05
    			 date: 11/13/2024
    			 size: 128KiB
    			 capacity: 32MiB
    			 capabilities: pci upgrade shadowing cdboot bootselect int9keyboard int10video acpi usb biosbootspecification uefi
    
  2. PCI TB Support

    		  *-pci:2
    				 description: PCI bridge
    				 product: Family 19h USB4/Thunderbolt PCIe tunnel
    				 vendor: Advanced Micro Devices, Inc. [AMD]
    				 physical id: 3.1
    				 bus info: pci@0000:00:03.1
    				 version: 00
    				 width: 32 bits
    				 clock: 33MHz
    				 capabilities: pci pm pciexpress msi ht normal_decode bus_master cap_list
    				 configuration: driver=pcieport
    				 resources: irq:40 ioport:6000(size=16384) memory:78000000-8fffffff ioport:6c00000000(size=68719476736)
    		  *-pci:3
    				 description: PCI bridge
    				 product: Family 19h USB4/Thunderbolt PCIe tunnel
    				 vendor: Advanced Micro Devices, Inc. [AMD]
    				 physical id: 4.1
    				 bus info: pci@0000:00:04.1
    				 version: 00
    				 width: 32 bits
    				 clock: 33MHz
    				 capabilities: pci pm pciexpress msi ht normal_decode bus_master cap_list
    				 configuration: driver=pcieport
    				 resources: irq:41 ioport:2000(size=16384) memory:60000000-77ffffff ioport:5c00000000(size=68719476736)
    
  3. USB Controllers

    1. 			  *-usb:0
      					 description: USB controller
      					 product: Advanced Micro Devices, Inc. [AMD]
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.3
      					 bus info: pci@0000:c1:00.3
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix xhci bus_master cap_list
      					 configuration: driver=xhci_hcd latency=0
      					 resources: irq:45 memory:90200000-902fffff
      				  *-usbhost:0
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 0
      						 bus info: usb@1
      						 logical name: usb1
      						 version: 6.13
      						 capabilities: usb-2.00
      						 configuration: driver=hub slots=5 speed=480Mbit/s
      					  *-usb:0
      							 description: USB hub
      							 product: USB2.1 Hub
      							 vendor: GenesysLogic
      							 physical id: 2
      							 bus info: usb@1:2
      							 version: 34.04
      							 capabilities: usb-2.10
      							 configuration: driver=hub slots=4 speed=480Mbit/s
      					  *-usb:1
      							 description: USB hub
      							 product: USB2.0 Hub
      							 vendor: Genesys Logic, Inc.
      							 physical id: 3
      							 bus info: usb@1:3
      							 version: 61.60
      							 capabilities: usb-2.00
      							 configuration: driver=hub maxpower=100mA slots=3 speed=480Mbit/s
      						  *-usb
      								 description: Keyboard
      								 product: Framework Laptop 16 Numpad Module Consumer Control
      								 vendor: Framework
      								 physical id: 2
      								 bus info: usb@1:3.2
      								 logical name: input10
      								 logical name: /dev/input/event8
      								 logical name: input11
      								 logical name: /dev/input/event9
      								 logical name: input11::capslock
      								 logical name: input11::compose
      								 logical name: input11::kana
      								 logical name: input11::numlock
      								 logical name: input11::scrolllock
      								 logical name: input7
      								 logical name: /dev/input/event5
      								 logical name: input7::capslock
      								 logical name: input7::compose
      								 logical name: input7::kana
      								 logical name: input7::numlock
      								 logical name: input7::scrolllock
      								 logical name: input8
      								 logical name: /dev/input/event6
      								 logical name: input9
      								 logical name: /dev/input/event7
      								 version: 0.29
      								 serial: FRAKDKEN0100000000
      								 capabilities: usb-2.10 usb
      								 configuration: driver=usbhid maxpower=500mA speed=12Mbit/s
      					  *-usb:2
      							 description: USB hub
      							 product: USB2.0 Hub
      							 vendor: Genesys Logic, Inc.
      							 physical id: 4
      							 bus info: usb@1:4
      							 version: 61.60
      							 capabilities: usb-2.00
      							 configuration: driver=hub maxpower=100mA slots=4 speed=480Mbit/s
      						  *-usb:0 UNCLAIMED
      								 description: Generic USB device
      								 product: Goodix Fingerprint USB Device
      								 vendor: Goodix Technology Co., Ltd.
      								 physical id: 1
      								 bus info: usb@1:4.1
      								 version: 1.00
      								 serial: UID658D803B_XXXX_MOC_B0
      								 capabilities: usb-2.00
      								 configuration: maxpower=100mA speed=12Mbit/s
      						  *-usb:1
      								 description: Keyboard
      								 product: Framework Laptop 16 Keyboard Module - ISO Keyboard
      								 vendor: Framework
      								 physical id: 2
      								 bus info: usb@1:4.2
      								 logical name: input12
      								 logical name: /dev/input/event10
      								 logical name: input12::capslock
      								 logical name: input12::compose
      								 logical name: input12::kana
      								 logical name: input12::numlock
      								 logical name: input12::scrolllock
      								 logical name: input13
      								 logical name: /dev/input/event11
      								 logical name: input14
      								 logical name: /dev/input/event12
      								 logical name: input15
      								 logical name: /dev/input/event13
      								 logical name: input16
      								 logical name: /dev/input/event14
      								 logical name: input16::capslock
      								 logical name: input16::compose
      								 logical name: input16::kana
      								 logical name: input16::numlock
      								 logical name: input16::scrolllock
      								 version: 0.29
      								 serial: FRAKDKEN0100000000
      								 capabilities: usb-2.10 usb
      								 configuration: driver=usbhid maxpower=500mA speed=12Mbit/s
      					  *-usb:3
      							 description: Bluetooth wireless interface
      							 product: Wireless_Device
      							 vendor: MediaTek Inc.
      							 physical id: 5
      							 bus info: usb@1:5
      							 version: 1.00
      							 serial: 000000000
      							 capabilities: usb-2.10 bluetooth
      							 configuration: driver=btusb maxpower=100mA speed=480Mbit/s
      				  *-usbhost:1
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 1
      						 bus info: usb@2
      						 logical name: usb2
      						 version: 6.13
      						 capabilities: usb-3.10
      						 configuration: driver=hub slots=2 speed=10000Mbit/s
      					  *-usb
      							 description: USB hub
      							 product: USB3.2 Hub
      							 vendor: GenesysLogic
      							 physical id: 2
      							 bus info: usb@2:2
      							 version: 34.04
      							 capabilities: usb-3.20
      							 configuration: driver=hub slots=3 speed=10000Mbit/s
      						  *-usb
      								 description: Generic USB device
      								 product: USB 10/100/1G/2.5G LAN
      								 vendor: Realtek
      								 physical id: 1
      								 bus info: usb@2:2.1
      								 version: 31.04
      								 serial: 4013000001
      								 capabilities: usb-3.20
      								 configuration: driver=r8152 maxpower=256mA speed=5000Mbit/s
      			  *-usb:1
      					 description: USB controller
      					 product: Advanced Micro Devices, Inc. [AMD]
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.4
      					 bus info: pci@0000:c1:00.4
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix xhci bus_master cap_list
      					 configuration: driver=xhci_hcd latency=0
      					 resources: irq:47 memory:90300000-903fffff
      				  *-usbhost:0
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 0
      						 bus info: usb@3
      						 logical name: usb3
      						 version: 6.13
      						 capabilities: usb-2.00
      						 configuration: driver=hub slots=1 speed=480Mbit/s
      				  *-usbhost:1
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 1
      						 bus info: usb@4
      						 logical name: usb4
      						 version: 6.13
      						 capabilities: usb-3.10
      						 configuration: driver=hub slots=1 speed=10000Mbit/s
      
    2. 			  *-usb:0
      					 description: USB controller
      					 product: Advanced Micro Devices, Inc. [AMD]
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.3
      					 bus info: pci@0000:c3:00.3
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix xhci bus_master cap_list
      					 configuration: driver=xhci_hcd latency=0
      					 resources: irq:49 memory:90600000-906fffff
      				  *-usbhost:0
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 0
      						 bus info: usb@5
      						 logical name: usb5
      						 version: 6.13
      						 capabilities: usb-2.00
      						 configuration: driver=hub slots=1 speed=480Mbit/s
      				  *-usbhost:1
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 1
      						 bus info: usb@6
      						 logical name: usb6
      						 version: 6.13
      						 capabilities: usb-3.10
      						 configuration: driver=hub slots=1 speed=10000Mbit/s
      			  *-usb:1
      					 description: USB controller
      					 product: Advanced Micro Devices, Inc. [AMD]
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.4
      					 bus info: pci@0000:c3:00.4
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix xhci bus_master cap_list
      					 configuration: driver=xhci_hcd latency=0
      					 resources: irq:51 memory:90700000-907fffff
      				  *-usbhost:0
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 0
      						 bus info: usb@7
      						 logical name: usb7
      						 version: 6.13
      						 capabilities: usb-2.00
      						 configuration: driver=hub slots=1 speed=480Mbit/s
      				  *-usbhost:1
      						 product: xHCI Host Controller
      						 vendor: Linux 6.13.7-200.fc41.x86_64 xhci-hcd
      						 physical id: 1
      						 bus info: usb@8
      						 logical name: usb8
      						 version: 6.13
      						 capabilities: usb-3.10
      						 configuration: driver=hub slots=1 speed=10000Mbit/s
      			  *-usb:2
      					 description: USB controller
      					 product: Pink Sardine USB4/Thunderbolt NHI controller #1
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.5
      					 bus info: pci@0000:c3:00.5
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix usb4_host_interface bus_master cap_list
      					 configuration: driver=thunderbolt latency=0
      					 resources: irq:77 memory:90800000-9087ffff
      			  *-usb:3
      					 description: USB controller
      					 product: Pink Sardine USB4/Thunderbolt NHI controller #2
      					 vendor: Advanced Micro Devices, Inc. [AMD]
      					 physical id: 0.6
      					 bus info: pci@0000:c3:00.6
      					 version: 00
      					 width: 64 bits
      					 clock: 33MHz
      					 capabilities: pm pciexpress msi msix usb4_host_interface bus_master cap_list
      					 configuration: driver=thunderbolt latency=0
      					 resources: irq:94 memory:90880000-908fffff
      

  1. unix.stackexchange.com/q/103302 ↩︎

1 Like

I had to double check I wasn’t hallucinating that one!

I am going to go out on a limb and say that any USB-C or USB3 can support dual role if the OS supports it. (Back to your question, Does F41 KDE Support USB Dual Role?) I have not found the answer to that yet.

https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/tiger-lake-mobile-y/intel-500-series-chipset-family-on-package-platform-controller-hub-datasheet-v/003/usb-dual-role-support-extensible-device-controller-interface-xdci-controller/

Now back to your question: I think that based on the Intel link above we are looking for driver support for xDCI, or for evidence that Thunderbolt or USB3 drivers also support Dual Role ‘out of the box’.

1 Like

Here is a fellow that enabled his xDCI via a hidden advanced settings in the ThinkPad BIOS.

Hence I speculate that the Framework BIOS would have to support xDCI.

The good new though " the kernel even automatically loaded the dwc3 UDC driver (remember that xDCI is based on DWC3), and a new entry appeared in the list of UDC devices"

1 Like

The Intel FW13s do, but they also support 4 TB ports, so they’re using slightly different USB implementations. #page=2:~:text=Dual-Role USBInsyde SoftwareInsyde Software of the undermentioned appears to corroborate this:


I’ve posted it at SE SU, since I don’t mind losing a little karma over this if it’s not a well-enough fleshed-out question for this topic:


I believe that the UEFI firmware is fairly uncustomised Insyde software, solely modified insofar as is necessary to function on the hardware. Consequently, I’ll attempt to ascertain whether Insyde ever exposes this.

1 Like

I’ve confirmation that it can involve device-specific kernel support:

However, that patch is not for an FW laptop, and it might be reasonable to expect that the vendor’s USB implementation was deficient.

1 Like