Jump to content

[ODROID C2] USB ports are (again?) not working properly


teknoid

Recommended Posts

 

no WiFi Adapter after fresh installation. usbcore.autosuspend=-1 fixes it:

 

  ___      _           _     _    ____ ____  
 / _ \  __| |_ __ ___ (_) __| |  / ___|___ \ 
| | | |/ _` | '__/ _ \| |/ _` | | |     __) |
| |_| | (_| | | | (_) | | (_| | | |___ / __/ 
 \___/ \__,_|_|  \___/|_|\__,_|  \____|_____|
                                             
Welcome to Armbian 24.2.1 Bookworm with Linux 6.6.16-current-meson64

System load:   46%           	Up time:       0 min	
Memory usage:  7% of 1.82G  	IP:	       192.168.25.252
CPU temp:      28°C           	Usage of /:    66% of 3.0G   	

[ Menu-driven system configuration (beta): sudo apt update && sudo apt install armbian-config ]

root@odroid:~# cat /boot/armbianEnv.txt 
verbosity=1
console=both
overlay_prefix=meson
rootdev=UUID=1cf10f1a-aa21-4ff0-875d-c59f57c87173
rootfstype=ext4
extraboardargs=fastboot noswap isolcpus=3 usbcore.autosuspend=-1
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u

 

root@odroid:~# lsusb 
Bus 001 Device 007: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Bus 001 Device 006: ID 7392:7822 Edimax Technology Co., Ltd EW-7612UAn V2 802.11n Wireless Adapter [Realtek RTL8192CU]
Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

Link to comment
Share on other sites

Since todays update to kernel 6.6 on my odroid c2, usb was broken.

lsusb shows that no devices are found anymore using the new kernel:

 

lsusb
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

dmesg shows the following error during boot:

 

[    5.777103] onboard-usb-hub 1-1: can't set config #1, error -71

 

Adding the "extraboardargs" option to /boot/armbianEnv.txt as described above, solved the problem for me.

 

Edit: This recent kernel change might be connected: https://lore.kernel.org/lkml/1jleciyahv.fsf@starbuckisacylon.baylibre.com/T/

Edited by Scritch
Link to comment
Share on other sites

I have a rather janky fix for this issue. Basically, we reset all USB devices on the bus after boot. I created a systemd service file with the following contents:

 

$ cat /etc/systemd/system/usb-reset.service 
[Unit]
Description=Reset USB devices before SDDM
Before=sddm.service

[Service]
Type=oneshot
ExecStart=/root/usbreset.sh

[Install]
WantedBy=multi-user.target

 

And the script is this:

 

$ cat ~/usbreset.sh
#!/usr/bin/env bash
# Resets USB devices in a specified path.
# Use with caution, as this may reset devices currently in use. 

base_path="/sys/bus/usb/devices/"

# Function to reset a single USB device
reset_usb_device() {
    dev_path="$1"   
    echo "Resetting device at '$dev_path' ..."
    echo 0 | sudo tee "$dev_path/authorized" > /dev/null  # Deactivate
    sleep 1  # Short delay
    echo 1 | sudo tee "$dev_path/authorized" > /dev/null  # Reactivate
}

# Find USB devices
echo "Looking for USB devices in '$base_path'..."
for dev_path in "$base_path"/*
do
    reset_usb_device "$dev_path"
done

echo "Done."

 

Enable and start this service and your USB devices will be re-initialized after boot.

 

I've also verified that adding the "extraboardargs" as in the first post works for me as well.

Edited by all2
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines