Jump to content

Odroid C2: No USB after upgrading armbian


aqw
Go to solution Solved by Igor,

Recommended Posts

Hello,

after upgrading the Odroid C2 to the current Version on 16.08.2024 the USB-devices do not work at all.

 

According to the diagnosis information they are recognized during during bootup. But later they are disconnected for an unknown reason.

https://paste.armbian.com/jucovipaxo

 

lsusb only lists two devices:

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

The suggested hack "usbcore.autosuspend=-1" for USB-problems is already activated, but USB doesn't work anyway


Maybe there is a solution for this strange behavior of my C2.

Link to comment
Share on other sites

Armbian & Khadas are rewarding contributors

Werner and Igor, thank you for your answers!

 

Some unknown magic happened during the last three days while the computer being switched off:

All USB-devices are working fine now.

 

Why it did not work last friday -- even after some reboots -- will always remain a mystery.

Link to comment
Share on other sites

Hello,

 

I have the problem that every few years my SD card fails due to frequent read and write operations.

Therefore, I wanted to use an SSD as the system root and use the SD card just for booting.

 

Step 1: Backup the SD card.

Step 2: Perform update and upgrade.

Step 3: Connect the SSD. At this point, I noticed that the USB fan was no longer working. After searching for a while, I found this:

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

So I added it with -1. Now the SSD and the fan were working again.

Step 4: Run nand-sata-install.

Step 5: Select the SSD.

Step 6: Format the SSD.

Step 7: Done. Reboot -Y

 

Now it attempts to boot 3 times but always fails. At least the fan, which is powered by USB 5V, restarts 3 times.

After that, it shows:

"... is now current device"

5 minutes later, it changes to:

"scanning for BTRFS"

"initramfs"

Does anyone have an idea? Thanks.

Link to comment
Share on other sites

Hello

when i try to boot my odroid from SD-card ( root system is on ssd),

it will always restart.

i set:

setenv rootdev UUID=f8003b55-227a-429c-b1c2-484017a3a916 (uuid from ssd)

extraargs=usbcore.autosuspend=-1 usbcore.old_scheme_first=Y usbcore.use_both_schemes=Y to disable usb shutdown

 

 

 

this is my armbianEnv:

verbosity=1
console=both
overlay_prefix=meson
rootdev=UUID=f8003b55-227a-429c-b1c2-484017a3a916
rootfstype=ext4
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u,0x152d:0x0583:u
extraargs=usbcore.autosuspend=-1 usbcore.old_scheme_first=Y usbcore.use_both_schemes=Y

my boot.cmd

# DO NOT EDIT THIS FILE
#
# Please edit /boot/armbianEnv.txt to set supported parameters
#

setenv scriptaddr "0x32000000"
setenv kernel_addr_r "0x34000000"
setenv fdt_addr_r "0x4080000"
setenv overlay_error "false"
# default values
setenv rootdev UUID=f8003b55-227a-429c-b1c2-484017a3a916
setenv verbosity "1"
setenv console "both"
setenv bootlogo "false"
setenv rootfstype "ext4"
setenv docker_optimizations "on"

setenv boot_targets "mmc0 usb0 pxe dhcp"
saveenv

# Set devtype and devnum for SD card (boot device)
setenv devtype "mmc"
setenv devnum "0"

# odroid c4 legacy kernel values from boot.ini

setenv dtb_loadaddr "0x1000000"
setenv k_addr "0x1100000"
setenv loadaddr "0x1B00000"
setenv initrd_loadaddr "0x4080000"

setenv display_autodetect "true"
# HDMI Mode
# Resolution Configuration
#    Symbol             | Resolution
# ----------------------+-------------
#    "480x272p60hz"     | 480x272 Progressive 60Hz
#    "480x320p60hz"     | 480x320 Progressive 60Hz
#    "480p60hz"         | 720x480 Progressive 60Hz
#    "576p50hz"         | 720x576 Progressive 50Hz
#    "720p60hz"         | 1280x720 Progressive 60Hz
#    "720p50hz"         | 1280x720 Progressive 50Hz
#    "1080p60hz"        | 1920x1080 Progressive 60Hz
#    "1080p50hz"        | 1920x1080 Progressive 50Hz
#    "1080p30hz"        | 1920x1080 Progressive 30Hz
#    "1080p24hz"        | 1920x1080 Progressive 24Hz
#    "1080i60hz"        | 1920x1080 Interlaced 60Hz
#    "1080i50hz"        | 1920x1080 Interlaced 50Hz
#    "2160p60hz"        | 3840x2160 Progressive 60Hz
#    "2160p50hz"        | 3840x2160 Progressive 50Hz
#    "2160p30hz"        | 3840x2160 Progressive 30Hz
#    "2160p25hz"        | 3840x2160 Progressive 25Hz
#    "2160p24hz"        | 3840x2160 Progressive 24Hz
#    "smpte24hz"        | 3840x2160 Progressive 24Hz SMPTE
#    "2160p60hz420"     | 3840x2160 Progressive 60Hz YCbCr 4:2:0
#    "2160p50hz420"     | 3840x2160 Progressive 50Hz YCbCr 4:2:0
#    "640x480p60hz"     | 640x480 Progressive 60Hz
#    "800x480p60hz"     | 800x480 Progressive 60Hz
#    "800x600p60hz"     | 800x600 Progressive 60Hz
#    "1024x600p60hz"    | 1024x600 Progressive 60Hz
#    "1024x768p60hz"    | 1024x768 Progressive 60Hz
#    "1280x800p60hz"    | 1280x800 Progressive 60Hz
#    "1280x1024p60hz"   | 1280x1024 Progressive 60Hz
#    "1360x768p60hz"    | 1360x768 Progressive 60Hz
#    "1440x900p60hz"    | 1440x900 Progressive 60Hz
#    "1600x900p60hz"    | 1600x900 Progressive 60Hz
#    "1600x1200p60hz"   | 1600x1200 Progressive 60Hz
#    "1680x1050p60hz"   | 1680x1050 Progressive 60Hz
#    "1920x1200p60hz"   | 1920x1200 Progressive 60Hz
#    "2560x1080p60hz"   | 2560x1080 Progressive 60Hz
#    "2560x1440p60hz"   | 2560x1440 Progressive 60Hz
#    "2560x1600p60hz"   | 2560x1600 Progressive 60Hz
#    "3440x1440p60hz"   | 3440x1440 Progressive 60Hz
setenv hdmimode "1080p60hz"
setenv monitor_onoff "false"
setenv overscan "100"
setenv sdrmode "auto"
setenv voutmode "hdmi"
setenv disablehpd "false"
setenv cec "false"
setenv disable_vu7 "true"
setenv max_freq_a55 "1908"
#setenv max_freq_a55 "2100"
setenv maxcpus "4"

# Show what uboot default fdtfile is
echo "U-boot default fdtfile: ${fdtfile}"
echo "Current variant: ${variant}"
# there is a mismatch between u-boot and kernel in the n2-plus/n2_plus DTB filename.
# Also u-boot can't seem to decide between having, or not, 'amlogic/' in there.
if test "${variant}" = "n2_plus"; then
	setenv fdtfile "amlogic/meson-g12b-odroid-n2-plus.dtb"
	echo "For variant ${variant}, set default fdtfile: ${fdtfile}"
fi

if test "${variant}" = "n2-plus"; then
	setenv fdtfile "amlogic/meson-g12b-odroid-n2-plus.dtb"
	echo "For variant ${variant} (dash version, 2021.07 or up), set default fdtfile: ${fdtfile}"
fi

# legacy kernel values from boot.ini

if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
	load ${devtype} ${devnum} ${scriptaddr} ${prefix}armbianEnv.txt
	env import -t ${scriptaddr} ${filesize}
fi

# get PARTUUID of first partition on SD/eMMC it was loaded from
# mmc 0 is always mapped to device u-boot (2016.09+) was loaded from
if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi
if test "${console}" = "display"; then setenv consoleargs "console=tty1"; fi

echo "Current fdtfile after armbianEnv: ${fdtfile}"

if test -e ${devtype} ${devnum} ${prefix}zImage; then
	# legacy kernel boot

	if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; fi
	if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=ttyS0,115200 console=tty1"; fi
	if test "${console}" = "serial"; then setenv consoleargs "console=ttyS0,115200"; fi
	if test "${bootlogo}" = "true"; then
		setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}"
	else
		setenv consoleargs "splash=verbose ${consoleargs}"
	fi

	setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 coherent_pool=2M loglevel=${verbosity} ${amlogic} no_console_suspend fsck.repair=yes net.ifnames=0 elevator=noop hdmimode=${hdmimode} cvbsmode=576cvbs max_freq_a55=${max_freq_a55} maxcpus=${maxcpus} voutmode=${voutmode} ${cmode} disablehpd=${disablehpd} cvbscable=${cvbscable} overscan=${overscan} ${hid_quirks} monitor_onoff=${monitor_onoff} ${cec_enable} sdrmode=${sdrmode} usbcore.autosuspend=-1 usbcore.old_scheme_first=Y usbcore.use_both_schemes=Y usbcore.autosuspend_delay_ms=0"

	echo "Legacy bootargs: ${bootargs}"

	load ${devtype} ${devnum} ${k_addr} boot/zImage
	load ${devtype} ${devnum} ${dtb_loadaddr} boot/dtb/${fdtfile}
	load ${devtype} ${devnum} ${initrd_loadaddr} boot/uInitrd
	fdt addr ${dtb_loadaddr}
	unzip ${k_addr} ${loadaddr}
	booti ${loadaddr} ${initrd_loadaddr} ${dtb_loadaddr}
else
	# modern kernel boot

	if test "${console}" = "serial"; then setenv consoleargs "console=ttyAML0,115200"; fi
	if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=ttyAML0,115200 console=tty1"; fi
	if test "${console}" = "serial"; then setenv consoleargs "console=ttyAML0,115200"; fi
	if test "${bootlogo}" = "true"; then
		setenv consoleargs "splash plymouth.ignore-serial-consoles ${consoleargs}"
	else
		setenv consoleargs "splash=verbose ${consoleargs}"
	fi
	if test "${disable_vu7}" = "false"; then setenv usbhidquirks "usbhid.quirks=0x0eef:0x0005:0x0004"; fi

	setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 coherent_pool=2M loglevel=${verbosity} ubootpart=${partuuid} libata.force=noncq usb-storage.quirks=${usbstoragequirks} ${usbhidquirks} ${extraargs} usbcore.autosuspend=-1 usbcore.old_scheme_first=Y usbcore.use_both_schemes=Y usbcore.autosuspend_delay_ms=0 ${extraboardargs}"


	if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=memory swapaccount=1"; fi
	echo "Mainline bootargs: ${bootargs}"

	load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
	load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
	load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
	fdt addr ${fdt_addr_r}
	fdt resize 65536
	for overlay_file in ${overlays}; do
		if load ${devtype} ${devnum} ${scriptaddr} ${prefix}dtb/amlogic/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
			echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
			fdt apply ${scriptaddr} || setenv overlay_error "true"
		fi
	done

	for overlay_file in ${user_overlays}; do
		if load ${devtype} ${devnum} ${scriptaddr} ${prefix}overlay-user/${overlay_file}.dtbo; then
			echo "Applying user provided DT overlay ${overlay_file}.dtbo"
			fdt apply ${scriptaddr} || setenv overlay_error "true"
		fi
	done

	if test "${overlay_error}" = "true"; then
		echo "Error applying DT overlays, restoring original DT"
		load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
	else
		if load ${devtype} ${devnum} ${scriptaddr} ${prefix}dtb/amlogic/overlay/${overlay_prefix}-fixup.scr; then
			echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
			source ${scriptaddr}
		fi
		if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
			load ${devtype} ${devnum} ${scriptaddr} ${prefix}fixup.scr
			echo "Applying user provided fixup script (fixup.scr)"
			source ${scriptaddr}
		fi
	fi

	booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
fi

# Recompile with:
# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr

 

 

 

Screenshot_20240905-130410_Gallery.jpg

Link to comment
Share on other sites

The problem can't be the newest upgrade!!! I set it back.

 

The usb ports works without any troubles.

 

When I start the odroid, it will be boot, try it again and again and at the end, I'm in intframes and got the error: uuid not found.

But it is the correct id from the ssd partition

Link to comment
Share on other sites

@Igor

Is there any solution to use a ssd for the root and boot from the sd?

 

I try it since a few days, but it didn't work. The usb device would be found, but it didn't boot.

Does it work with bookworm? Should I change from jammy

 

Thank you a lot

Edited by jumbo125
Link to comment
Share on other sites

14 hours ago, jumbo125 said:

Should I change


No, there is no difference on hardware interface. You can try kernel 6.10.y, daily builds, ... those brings changes. 
 

14 hours ago, jumbo125 said:

Is there any solution to use a ssd for the root and boot from the sd?

 

It is always:
 

armbian-install

 

https://docs.armbian.com/User-Guide_Getting-Started/#how-to-install-to-emmc-sata-nvme-usb

 

I don't have this device on my desk, so I checked with Odroid M1, boot from SD card, root on USB. Works as expected, so there are no troubles at armbian-install part, but USB is probably too flaky on C2 (since ever).

 

Use older image and freeze kernel upgrades is a valid workaround.

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