BBW Device_tree problem with Debian 2014-04-14

Happy Easter to all!

I’m testing last release of Debian for BBB (http://debian.beagleboard.org/images/bone-debian-7.4-2014-04-14-2gb.img.xz), and I want use my device_tree overlay written and working for other platform (Angstrom) with 3.8.13 kernel.

It work fine if I enable it from command line after boot (logged as root) with this command:
root@beaglebone:/# echo BB-BONE-BRT-Tdl2 > /sys/devices/bone_capemgr.8/slots

but I can’t do that:
debian@beaglebone:~$ echo BB-BONE-BRT-Tdl2 > /sys/devices/bone_capemgr.8/slots
-bash: /sys/devices/bone_capemgr.8/slots: Permission denied
or that
debian@beaglebone:~$ sudo echo BB-BONE-BRT-Tdl2 > /sys/devices/bone_capemgr.8/slots
-bash: /sys/devices/bone_capemgr.8/slots: Permission denied
but I get success if I do that:
debian@beaglebone:~$ sudo su
root@beaglebone:/home/debian# echo BB-BONE-BRT-Tdl2 > /sys/devices/bone_capemgr.8/slots

The problem is that I’m not able to load any overlay at boot!
If I put
optargs=capemgr.enable_partno=BB-BONE-BRT-Tdl2
in uEnv.txt
I get this (partial) dmesg:

root@beaglebone:~# dmesg | grep cape
[ 0.000000] Kernel command line: console=tty0 console=ttyO0,115200n8 capemgr.enable_partno=BB-BONE-BRT-Tdl2 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait fixrtc
[ 1.538133] bone-capemgr bone_capemgr.8: Baseboard: ‘A335BONE,00A6,0613BB001068’
[ 1.545970] bone-capemgr bone_capemgr.8: compatible-baseboard=ti,beaglebone
[ 1.584209] bone-capemgr bone_capemgr.8: slot #0: No cape found
[ 1.621317] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 1.658425] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 1.695534] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 1.701836] bone-capemgr bone_capemgr.8: enabled_partno part_number ‘BB-BONE-BRT-Tdl2’, version ‘N/A’, prio ‘0’
[ 1.712444] bone-capemgr bone_capemgr.8: slot #4: generic override
[ 1.718975] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 4
[ 1.727061] bone-capemgr bone_capemgr.8: slot #4: ‘Override Board Name,00A0,Override Manuf,BB-BONE-BRT-Tdl2’
[ 1.737823] bone-capemgr bone_capemgr.8: initialized OK.
[ 1.743458] bone-capemgr bone_capemgr.8: loader: before slot-4 BB-BONE-BRT-Tdl2:00A0 (prio 0)
[ 1.752479] bone-capemgr bone_capemgr.8: loader: check slot-4 BB-BONE-BRT-Tdl2:00A0 (prio 0)
[ 1.780996] bone-capemgr bone_capemgr.8: loader: after slot-4 BB-BONE-BRT-Tdl2:00A0 (prio 0)
[ 1.795993] bone-capemgr bone_capemgr.8: slot #4: Requesting part number/version based 'BB-BONE-BRT-Tdl2-00A0.dtbo
[ 1.827216] bone-capemgr bone_capemgr.8: slot #4: Requesting firmware ‘BB-BONE-BRT-Tdl2-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 2.710647] bone-capemgr bone_capemgr.8: failed to load firmware ‘BB-BONE-BRT-Tdl2-00A0.dtbo’
[ 2.719771] bone-capemgr bone_capemgr.8: loader: failed to load slot-4 BB-BONE-BRT-Tdl2:00A0 (prio 0)

but it is present, as you can see:
root@beaglebone:~# ls -l /lib/firmware/BB-BONE-BRT-Tdl2-00A0.dtbo
-rw-rw-r-- 1 root root 3901 Apr 20 22:33 /lib/firmware/BB-BONE-BRT-Tdl2-00A0.dtbo

If I load any existing capes overrides (like BB-BONE-LCD4-01) it works, also if I remove the file (BB-BONE-LCD4-01-00A0.dtbo) from /lib/firmware, olso if I remove the entire directory!!!
BUT THEN: WHERE KERNEL LOAD/SEARCH .dtbo FILE AT START-UP?
Thank you in advance.
Francesco.

Using the kernel command line won’t work when the boot process uses an initrd.

you can load a dtbo file during boot by adding it’s name in /etc/default/capemgr

This is because the redirection happens in the shell as a normal user
before sudo runs and elevates your permissions. You need to move the
redirction into the sudo command, one option is:

sudo su -c "echo BB-BONE-BRT-Tdl2 > /sys/devices/bone_capemgr.*/slots"

Thank you very much!!!
work perfectly!!!
…I wasted so much time trying to make it work … and it was so easy…
But: where I would have to read to find it?

And: why “standard capes” as LCD4, LCD7, etc. can be loaded unless .dtbo file in /lib/firmware? are them “built-in” ?

Thanks again!
Francesco.