From my uboot env:
usb_args_0=boot_dev='usb 0:1'; dev_args='root=/dev/sda1 rootdelay=10'
usb_args_1=boot_dev='usb 1:1'; dev_args='root=/dev/sda1 rootdelay=10'
usb_args_2=boot_dev='usb 2:1'; dev_args='root=/dev/sdc1 rootdelay=10'
usb_args_3=boot_dev='usb 3:1'; dev_args='root=/dev/sdd1 rootdelay=10'
Note, if I load off usb 1:1 or 0:1, I set root as sda1. I have to do this as my usb dock detects as a mass storage device to uboot, but (properly) as a Displaylink video adapter to the kernel so it doesn't get allocated a mass storage entry. If using the ALARM provided uboot setup, THAT is where you need to change the device to match what your kernel will see. When I'm booting with my SATA drive in place but booting USB first, those entries get changed to /dev/sdb1. If your uboot env is setup differently, you'll have to adjust yours as needed.
You're playing with an embedded device that was never meant to have the end user mucking with the OS. There are annoying limitations as a result. This will never be as purty as Ubuntu + grub with a graphical menu and hand holds at every step. The provided setup works predictably and reliably which is the goal, if you want it to work differently that's AWESOME, do it up. Don't however complain that the current setup is busted because it's not, it's working 100% as intended. Once you stop screaming 'BUG!' at everything that either doesn't work the way you want, or don't understand, you'll find more people will be willing to help you out.