Jump to content

Odroid C2: No USB after upgrading armbian


Go to solution Solved by Igor,

Recommended Posts

Posted

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.

Posted

From these logs I cannot see any recent packages installed. Everything seems to be 23.02 which cannot be supported.

Posted

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.

Posted

I am having the same issue. Its almost as if the usbs on boot dont get any power. I can boot and use a regular keyboard. Once in i can then plug in the wifi usb and get online. But i cant remote in or use wireless keyboard.

Posted

Unfortunately i don`t know what caused the magic of self-repair of my device.

So I can`t give you an advice what to do.

Posted

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.

Posted

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

Posted
Zitat

@IgorIts known issue. We don't have a fix yet.

 

i have a backup img only after the upgrade.

Can i downgrade it?

 

if it is possible, i will restore my newest backup -> downgrade to a version which works perfect and lock any upgrades

thank you

Posted

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

Posted (edited)

@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
Posted
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.

Posted

@Igor

 

Thank you for your help!

 

Since a few weeks i tried to run it with dietpi.... because i found a lot of pposts, that it woul be work...

Fail.... dietpi use kernel 6.6.37 current meson64

 

same problem.

 

i don't found any solution, after a lot of searching in the web and some other posts in other forums.

 

But i didn't give up. Today i tried it again.

 

Always the same problem:

during booting, after loading kernel, the odroid lost all usb device an wrote a fail about the onboard usb. (it doesn't matter if something is connected or all ports are disconnected).

 

My solution:

wrote a script to restart the usb detecting, after loading kernel, but before mount root. 

it took a long time, because i'm not so good about linux programming, and initframes not allow installed tools like usbreset. But at the end i did it.   🙂

 

I think the problem is on all os with this (or newer) kernel the same. so i think it should be work which the most of os.

 

Here are my steps:

it starts at STEP 8

 

i need to edit and update the initframes to bridge the "kernel losing usb" 

 

https://forum.odroid.com/viewtopic.php?p=390023&sid=29998009e29d3b1cd7dca29038534f15#p390023

 

best regards 

jumbo

Posted
14 hours ago, jumbo125 said:

because i found a lot of pposts, that it woul be work


Project you are mentioning is one person pirating Armbian authors. Dietpi is not contributing to common work. He is making up an impression of development and support. They are even selling fabricated / falsified comparison between dietpi, debian and armbian for years. Most of people buys this as they have either no ability to understand or they don't even think why would someone, in providing software that is free, has a motive to cheat and lie.

 

14 hours ago, jumbo125 said:

dietpi use kernel 6.6.37 current meson64

 

You are running our work, bugs included, ... while you are paying him and promoting his (our) work on our forums? Why? Since you didn't know nothing about this, it means he also successfully stole credits from our work. If this happens to one person, its perhaps nothing, what about if 10.000 people thinks this is their work?

 

What would you do when someone would sign himself under 100 hours of work you will be doing for work in public good? What if you will donate 10.000 of your private hours or more and he will keep providing your work under his name? Software support, stabilisation, ... is the core value here. We do provide you good and stable operation and we lost tens of thousands of hours. While most of their users compliment them for this work, while they never contributed anything to that. This is how piracy works in open source world and they use this to great extend.


There are many solutions as your hack, but they are lost on forums. If you really want to help others, you need to implement a fix into a build framework https://github.com/armbian/build

 

Why you and not us? Because small team, people don't support not even close to what is needed to keep up. And we have to fight bad people / projects, you might be supporting, within time that is available. When we lost that hour(s), everyone will gain with our sacrifice, while copycat project will not suffer any loss. Multiply this by 1000 cases (Hypothetical) for example which we financially (your share is < 0.5%) and mentally cover in certain time frame.

 

Informing you about piracy is also not a convincing argument as it is hard to understand and hard to accept. It is a lot easier to say that this is our fault and our choice. You seek gain and profits too. It is natural. If you use Armbian, you will only get less proprietary scripts, less vendor locking-in as a technical value. We need to invest a lot more into something that generates us only a loss. We can't do that without your help.

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