BBB/jessie/4.1.10-ti-r21 -- bone_capemgr: loader: failed to load slot-0 BB-SERIAL:00A0 (prio 0)

I’m trying to sync up with the latest & greatest image-builder work by Robert Nelson. So far so good, I have my debian jessie 4.1.10-ti-r21 BBB image built and flashed; I’ve converted my .dts back into an overlay for the 4.1 capemgr with the kernels.

The cape EEPROM is properly flashed, but while capemgr detects it, it doesn’t seem to be able to load the BB-SERIAL-00A0.dtbo located in /lib/firmware:

[ 3.588753] bone_capemgr bone_capemgr: Baseboard: ‘A335BNLT,0A6A,xxxxBBBKxxxx’
[ 3.588789] bone_capemgr bone_capemgr: compatible-baseboard=ti,beaglebone-black - #slots=4
[ 3.632229] bone_capemgr bone_capemgr: slot #0: ‘Serial Util Board,00A0,WinstonSmith,BB-SERIAL’
[ 3.688184] bone_capemgr bone_capemgr: slot #1: No cape found
[ 3.748178] bone_capemgr bone_capemgr: slot #2: No cape found
[ 3.808177] bone_capemgr bone_capemgr: slot #3: No cape found
[ 3.814213] bone_capemgr bone_capemgr: initialized OK.

[ 4.838440] bone_capemgr bone_capemgr: loader: failed to load slot-0 BB-SERIAL:00A0 (prio 0)

[ 9.857097] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)

Basically, the .dts simply enables UART1,2,4,5 and a DS1307 RTC.

I know the .dts is ok as I can manually load the .dtbo with:

echo ‘BB-SERIAL’ > /sys/devices/platform/bone_capemgr/slots

But I can’t get it to automatically load, I’ve tried the EEPROM detection, adding it to uEnv.txt and even /etc/default/capemgr (which used to be the only solution for 3.8).

Back in the 3.8 days, there was an issue with the root filesystem not being mounted when the capemgr did it’s detection … is this still an issue (see last line of dmesg output above – I did try adding rootwait to the kernel cmdline). In 3.8, this was easily resolved by adding CAPE=BB-SERIAL to the /etc/default/capemgr (which doesn’t seem to work now).

Any ideas?

-W

This isn't an issue anymore.. Make sure your *.dtbo is under
/lib/firmware then run:

sudo update-initramfs -uk `uname -r`

to make sure the *.dtbo get's copied to the intrd. (it'll still read
it from the /lib/firmware)

otherwise, dmesg | grep cape

Regards,

Magic! That resolved it.

Many thanks!!!

-W

I'm a little confused. Are they read from /lib/firmware always? Why do they have to be in initrd? And how does the behavior differ between 3.8 and 4.1?

Thanks,

It's a race... For capes with eeprom, the *.dtbo's need to be inside
the initrd (or kernel vmlinuz), as by the time root gets mounted
(/lib/firmware) the kernel's already given up trying to load them.
(of course once you hit userspace a manual load works fine)

Back in the initial 3.8/wheezy day's we had the have the *.dtbo's
built-into the kernel for them to work with eeprom devices.

Well, earlier this summer we realized we weren't actually loading the
*.dtbo's into the initrd..

Now we ship this script:

https://github.com/rcn-ee/repos/blob/master/bb-customizations/suite/jessie/debian/dtbo

by default for 3.8-wheezy/4.1-jessie images...

So "today" the behavior is the same.. But the big difference, 3.8 99%
of the available *.dtbo's are built into the "vmlinuz", with 4.1 they
are all loaded from the initrd (or /lib/firmware with no initrd), as
none are patched to be built into the kernel..

Regards,

Hello Guys,

I am also working on the BBB and with a Texas instruments cape TIDA-00560E1 16-bit LED driver.
I also get the same error, this cape fails to be LOADED.

I have certain questions:

  1. Where can I find the .dts file for this cape?
  2. I think it fails to LOAD as it has no .dtbo file in /lib/firmware
  3. Does it mean , this cape is not LOADED , is that it is not enabled ? And I cant communicate with this cape?

Please answer asap.

BR
Adit

I am having a similar problem as described above. I am trying to load a custom cape.

I am trying to load a copy of BB-BONE-LCD4.dts. Eventually I plan to modify this overlay to include an LCD panel, but for now i’ve cloned the dts file, changed the part number to DOPTOCAPE1, and renamed the file DOPTOCAPE1.dts

I placed the file in /src/arm directory, then ran install.sh

I cheked that DOPTOCAPE1.dtbo is now in /lib/firmware

Then I made the changes in my uEnv.txt file, and rebooted.

Here is debug from the boot process:

[ 0.000000] Kernel command line: console=ttyO0,115200n8 capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=dev_OPTOCAPE root=UUID=509a5094-05c2-4cf0-803d-945708cd72b5 ro rootfstype=ext4 rootwait coherent_pool=1M quiet net.ifnames=0
[ 0.610669] bone-capemgr bone_capemgr.9: Baseboard: ‘A335BNLT,000C,3914BBBK2717’
[ 0.610691] bone-capemgr bone_capemgr.9: compatible-baseboard=ti,beaglebone-black
[ 0.610729] bone-capemgr bone_capemgr.9: Skipping disabled cape with part# BB-BONELT-HDMI
[ 0.610773] bone-capemgr bone_capemgr.9: Skipping disabled cape with part# BB-BONELT-HDMIN
[ 0.641898] bone-capemgr bone_capemgr.9: slot #0: No cape found
[ 0.679000] bone-capemgr bone_capemgr.9: slot #1: No cape found
[ 0.716114] bone-capemgr bone_capemgr.9: slot #2: No cape found
[ 0.753223] bone-capemgr bone_capemgr.9: slot #3: No cape found
[ 0.759455] bone-capemgr bone_capemgr.9: slot #4: specific override
[ 0.759476] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 4
[ 0.759492] bone-capemgr bone_capemgr.9: slot #4: ‘Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G’
[ 0.759565] bone-capemgr bone_capemgr.9: slot #5: specific override
[ 0.759582] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 5
[ 0.759595] bone-capemgr bone_capemgr.9: slot #5: ‘Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI’
[ 0.759667] bone-capemgr bone_capemgr.9: slot #6: specific override
[ 0.759683] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 6
[ 0.759696] bone-capemgr bone_capemgr.9: slot #6: ‘Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN’
[ 0.759755] bone-capemgr bone_capemgr.9: enabled_partno part_number ‘dev_OPTOCAPE’, version ‘N/A’, prio ‘0’
[ 0.759768] bone-capemgr bone_capemgr.9: slot #7: generic override
[ 0.759779] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 7
[ 0.759792] bone-capemgr bone_capemgr.9: slot #7: ‘Override Board Name,00A0,Override Manuf,dev_OPTOCAPE’
[ 0.759896] bone-capemgr bone_capemgr.9: Skipping loading of disabled cape with part# BB-BONELT-HDMI
[ 0.759908] bone-capemgr bone_capemgr.9: Skipping loading of disabled cape with part# BB-BONELT-HDMIN
[ 0.760092] bone-capemgr bone_capemgr.9: loader: before slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 0.760107] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 0.760134] bone-capemgr bone_capemgr.9: initialized OK.
[ 0.762291] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 0.764081] bone-capemgr bone_capemgr.9: loader: before slot-7 dev_OPTOCAPE:00A0 (prio 0)
[ 0.764094] bone-capemgr bone_capemgr.9: loader: check slot-7 dev_OPTOCAPE:00A0 (prio 0)
[ 0.764109] bone-capemgr bone_capemgr.9: loader: after slot-7 dev_OPTOCAPE:00A0 (prio 0)
[ 0.764124] bone-capemgr bone_capemgr.9: slot #7: Requesting part number/version based 'dev_OPTOCAPE-00A0.dtbo
[ 0.764139] bone-capemgr bone_capemgr.9: slot #7: Requesting firmware ‘dev_OPTOCAPE-00A0.dtbo’ for board-name ‘Override Board Name’, version ‘00A0’
[ 1.239617] bone-capemgr bone_capemgr.9: failed to load firmware ‘dev_OPTOCAPE-00A0.dtbo’
[ 1.248179] bone-capemgr bone_capemgr.9: loader: failed to load slot-7 dev_OPTOCAPE:00A0 (prio 0)
[ 1.257645] bone-capemgr bone_capemgr.9: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.257662] bone-capemgr bone_capemgr.9: loader: after slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.257685] bone-capemgr bone_capemgr.9: slot #4: Requesting firmware ‘cape-bone-2g-emmc1.dtbo’ for board-name ‘Bone-LT-eMMC-2G’, version ‘00A0’
[ 1.257702] bone-capemgr bone_capemgr.9: slot #4: dtbo ‘cape-bone-2g-emmc1.dtbo’ loaded; converting to live tree
[ 1.257911] bone-capemgr bone_capemgr.9: slot #4: #2 overlays
[ 1.286653] bone-capemgr bone_capemgr.9: slot #4: Applied #2 overlays.
[ 1.286678] bone-capemgr bone_capemgr.9: loader: done slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
(initramfs) :

Then I repeated the process, loading “BB-BONE-LCD4-01” instead. I rebooted, and this overlay loaded with no problems.

Then I tried loading manually with:

echo BB-BONE-LCD4-01 >/sys/devices/bone_capemgr.9/slots

This worked also. When I tried the same with my custom file, the shell returned:

sh: I/O error

So it seems I am having a problem loading custom .dtbo files.

My kernel info is:

Linux beaglebone 3.8.13-xenomai-r81 #1 Fri Oct 14 16:24:43 UTC 2016 armv7l GNU/Linux

Do I need to upate my kernel?

I solved the problem by installing the latest image from beaglebone.org. Now I can load capes no problem.

Thanks anyway.

Same problem here and don’t work the Robert steps:

debian@beaglebone:~$ dmesg | grep bone

[ 1.512813] bone_capemgr bone_capemgr: Baseboard: ‘A335BNLT,00C0,2016BBBK1E9B’

[ 1.512843] bone_capemgr bone_capemgr: compatible-baseboard=ti,beaglebone-black - #slots=4

[ 1.559472] bone_capemgr bone_capemgr: slot #0: ‘4D 7.0 LCD CAPE- 4DCAPE-70T ,00A3,4D SYSTEMS ,BB-BONE-LCD7-01’

[ 1.583593] bone_capemgr bone_capemgr: Invalid signature ‘ffffffff’ at slot 1

[ 1.590816] bone_capemgr bone_capemgr: slot #1: No cape found

[ 1.614882] bone_capemgr bone_capemgr: Invalid signature ‘ffffffff’ at slot 2

[ 1.622085] bone_capemgr bone_capemgr: slot #2: No cape found

[ 1.646135] bone_capemgr bone_capemgr: Invalid signature ‘ffffffff’ at slot 3

[ 1.653336] bone_capemgr bone_capemgr: slot #3: No cape found

[ 1.653628] bone_capemgr bone_capemgr: initialized OK.

[ 1.658522] bone_capemgr bone_capemgr: loader: failed to load slot-0 BB-BONE-LCD7-01:00A3 (prio 0)

debian@beaglebone:~$ uname -a

Linux beaglebone 4.14.71-ti-r80 #1 SMP PREEMPT Fri Oct 5 23:50:11 UTC 2018 armv7l GNU/Linux

debian@beaglebone:~$

Any idea? is the latest image BTW,

bone-debian-9.5-lxqt-armhf-2018-10-07-4gb

Best regards