R0b0t1 Posted September 17, 2020 Share Posted September 17, 2020 Hello, using the image provided at https://www.armbian.com/rockpro64/ the board works when booted via uSD card but not via MMC. There appears to be no device mode USB drivers installed. I pulled the kernel sources with `armbian-config` and compiled them myself making sure to select dual-mode support for the DWC2 and DWC3 drivers. The kernel boots after install, but I still see nothing in /sys/class/udc and am unable to see any dwc2/3 drivers (save dwc2_pci and some dwc3 i3c drivers). I'm able to load libcomposite, the configfs driver, but that does not pull in a USB device mode driver. I'm unable to attach armbian monitor status right now but will update my post with it. Board: Not on the list 0 Quote Link to comment Share on other sites More sharing options...
R0b0t1 Posted September 19, 2020 Author Share Posted September 19, 2020 I made progress. The default device tree sets the first dwc3 controller as "otg." Unfortunately this seems to not have much effect. I've tried looking for a software switch and also tried plugging the board in as a device. How do you set this without needing a reboot? Changing the two DWC3 nodes in the file "arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi:" &usbdrd3_0 { status = "okay"; }; &usbdrd_dwc3_0 { status = "okay"; dr_mode = "peripheral"; }; &usbdrd3_1 { status = "okay"; }; &usbdrd_dwc3_1 { status = "okay"; dr_mode = "peripheral"; }; They are both listed in /sys/class/udc: # ls /sys/class/udc fe800000.usb fe900000.usb But, again, I'd like to change mode without needing to reboot. I'm also unsure how compatible the Type-C port is. 0 Quote Link to comment Share on other sites More sharing options...
R0b0t1 Posted September 19, 2020 Author Share Posted September 19, 2020 I've some more observations. Checking the code in drivers/usb/dwc3/core.c I was unable to find what actually allows you to select the mode if specifying OTG. I have devices in /sys/class/udc and they function properly via configfs when plugged into a USB2 only port. If I plug them into a superspeed port I get nothing in dmesg on the host side. At first, I did get a response on the host, in the form of: [591550.770819] usb 1-1.2: new full-speed USB device number 76 using xhci_hcd [591550.870962] usb 1-1.2: device descriptor read/64, error -32 [591551.078865] usb 1-1.2: device descriptor read/64, error -32 [591551.286875] usb 1-1.2: new full-speed USB device number 77 using xhci_hcd [591551.386873] usb 1-1.2: device descriptor read/64, error -32 [591551.594859] usb 1-1.2: device descriptor read/64, error -32 [591551.703160] usb 1-1-port2: attempt power cycle However now I get no driver activity when binding the UDC in configfs or loading or unloading the respective modules. Kernel is 5.7.15 w/ patches. It doesn't seem like bad USB-C wiring fried port or tripped a polyfuse, the port still works after attempting USB3 device mode. 0 Quote Link to comment Share on other sites More sharing options...
flatmax Posted April 12, 2022 Share Posted April 12, 2022 I got this working on an M4B but should be the same for you. fe800000.usb is USB phy 0 fe900000.usb is USB phy 1 Make sure you're setting up the UDC with the correct phy. When I setup my gadgets manually I do : echo fe800000.usb > UDC # phy 0 This is the output of dmesg on my PC when I connect : [970432.082528] usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [970432.082529] usb 1-2.3: Product: Ethernet/audio [970432.082530] usb 1-2.3: Manufacturer: Audio Injector.net 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.