[ 1.619295] bone-capemgr bone_capemgr.8: Baseboard: 'A335BNLT,0A5A,1613BBBK2649'
[ 1.627084] bone-capemgr bone_capemgr.8: compatible-baseboard=ti,beaglebone-black
[ 1.659113] bone-capemgr bone_capemgr.8: slot #0: 'Home Automation Cape,0001,IBB Robert Budde,ibb'
[ 1.698749] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 1.735857] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 1.772966] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 1.779219] bone-capemgr bone_capemgr.8: slot #4: specific override
[ 1.785819] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 4
[ 1.793855] bone-capemgr bone_capemgr.8: slot #4: 'Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'
[ 1.804003] bone-capemgr bone_capemgr.8: slot #5: specific override
[ 1.810600] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 5
[ 1.818633] bone-capemgr bone_capemgr.8: slot #5: 'Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'
[ 1.828671] bone-capemgr bone_capemgr.8: slot #6: specific override
[ 1.835267] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 6
[ 1.843302] bone-capemgr bone_capemgr.8: slot #6: 'Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN'
[ 1.853925] bone-capemgr bone_capemgr.8: loader: before slot-0 ibb:0001 (prio 0)
[ 1.861713] bone-capemgr bone_capemgr.8: loader: check slot-0 ibb:0001 (prio 0)
[ 1.869517] bone-capemgr bone_capemgr.8: loader: before slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.878378] bone-capemgr bone_capemgr.8: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.887249] bone-capemgr bone_capemgr.8: loader: before slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.896016] bone-capemgr bone_capemgr.8: loader: check slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.904720] bone-capemgr bone_capemgr.8: initialized OK.
[ 1.910323] bone-capemgr bone_capemgr.8: loader: before slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.919173] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.941732] bone-capemgr bone_capemgr.8: loader: after slot-0 ibb:0001 (prio 0)
[ 1.949423] bone-capemgr bone_capemgr.8: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.958196] bone-capemgr bone_capemgr.8: loader: check slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.973258] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.982040] bone-capemgr bone_capemgr.8: slot #0: Requesting part number/version based 'ibb-0001.dtbo
[ 1.997835] bone-capemgr bone_capemgr.8: slot #0: Requesting firmware 'ibb-0001.dtbo' for board-name 'Home Automation Cape', version '0001'
[ 2.829291] bone-capemgr bone_capemgr.8: failed to load firmware 'ibb-0001.dtbo'
[ 2.837120] bone-capemgr bone_capemgr.8: loader: failed to load slot-0 ibb:0001 (prio 0)
[ 2.845627] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
root@arm:~# echo ibb-0001 > /sys/devices/bone_capemgr.8/slots
-bash: echo: write error: No such file or directory
First, is the filesystem that has ibb-0001.dtbo mounted at the time
where the firmware load failure occurs? I just was curious if the file
even had a chance to load.
I was also wondering whether there were any conflicts in ibb-0001.dtbo
with the other capes. It's interesting that your cape seems to get
loaded after the HDMI and EMMC capes, since my custom cape gets loaded
first.
Did you look at dmesg when you get the write error? Sometimes I get
more details there when I get the "write error".
My next thought is to incrementally modify BB-UART until it looks like
ibb-0001.dts to see what lines causing the problem.
/dts-v1/;/plugin/;/ {compatible = "ti,beaglebone", "ti,beaglebone-black";part-number = "ibb";version = "00A0";exclusive-use = "P9.24", "P9.26", "uart1","P9.21", "P9.22", "uart2","P9.13", "P9.11", "uart4";fragment@0 {target = <&am33xx_pinmux>;__overlay__ {bb_uart1_pins: pinmux_bb_uart1_pins {pinctrl-single,pins = <0x180 0x20 0x184 0x00>;};bb_uart2_pins: pinmux_bb_uart2_pins {pinctrl-single,pins = <0x150 0x21 0x154 0x01>;};bb_uart4_pins: pinmux_bb_uart4_pins {pinctrl-single,pins = <0x70 0x26 0x74 0x06>;};};};fragment@1 {target = <&uart2>; /* really uart1 */__overlay__ {status = "okay";pinctrl-names = "default";pinctrl-0 = <&bb_uart1_pins>;};};fragment@2 {target = <&uart3>; /* really uart2 */__overlay__ {status = "okay";pinctrl-names = "default";pinctrl-0 = <&bb_uart2_pins>;};};fragment@3 {target = <&uart5>; /* really uart4 */__overlay__ {status = "okay";pinctrl-names = "default";pinctrl-0 = <&bb_uart4_pins>;};};};
[ 1938.691200] bone-capemgr bone_capemgr.8: part_number 'ibb', version 'N/A'[ 1938.701292] bone-capemgr bone_capemgr.8: slot #8: generic override[ 1938.708018] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 8[ 1938.716197] bone-capemgr bone_capemgr.8: slot #8: 'Override Board Name,00A0,Override Manuf,ibb'[ 1938.726094] bone-capemgr bone_capemgr.8: slot #8: Requesting part number/version based 'ibb-00A0.dtbo[ 1938.735943] bone-capemgr bone_capemgr.8: slot #8: Requesting firmware 'ibb-00A0.dtbo' for board-name 'Override Board Name', version '00A0'[ 1938.773112] bone-capemgr bone_capemgr.8: slot #8: dtbo 'ibb-00A0.dtbo' loaded; converting to live tree[ 1938.786162] bone-capemgr bone_capemgr.8: slot #8: #4 overlays
optargs=capemgr.enable_partno=cape-bone-ibb,BB-UART1,BB-UART2,BB-UART4
No that's not enough.
There's a requirement that the images used for booting are the same both for the emmc & the external sd card.
Using your prescribed method would mean that those images should be different.
This particular thread looks promising, but I am not sure how the two patches Pantelis posted fit into a solution. Pantelis says "This should fix kind of problem when the dtbo is not included in the kernel image." which seems to be my issue. Does that mean we still have to recompile the kernel to have our cape firmware changes included? What is the purpose of the /lib/firmware folder in that case? I am pretty new to this and it would be appreciated if Pantelis (or anyone else who's been successful at this) could share how they got their custom dtbo files loaded and working with more detail. Thanks.
Hi!
I am working on a new Home Automation cape using three uarts (1,2,4). The eeprom is set up according to the current SRM with format A1 and gets read correctly on startup. The device tree overlay was compiled using the patch allowing for overlays (so dtc knows -@ and \plugin\). After that I placed the resulting "ibb-0001.dtbo" in /lib/firmware.
This is what I get on startup:[ 1.619295] bone-capemgr bone_capemgr.8: Baseboard: 'A335BNLT,0A5A,1613BBBK2649'
[ 1.627084] bone-capemgr bone_capemgr.8: compatible-baseboard=ti,beaglebone-black
[ 1.659113] bone-capemgr bone_capemgr.8: slot #0: 'Home Automation Cape,0001,IBB Robert Budde,ibb'
[ 1.698749] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 1.735857] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 1.772966] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 1.779219] bone-capemgr bone_capemgr.8: slot #4: specific override
[ 1.785819] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 4
[ 1.793855] bone-capemgr bone_capemgr.8: slot #4: 'Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'
[ 1.804003] bone-capemgr bone_capemgr.8: slot #5: specific override
[ 1.810600] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 5
[ 1.818633] bone-capemgr bone_capemgr.8: slot #5: 'Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'
[ 1.828671] bone-capemgr bone_capemgr.8: slot #6: specific override
[ 1.835267] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 6
[ 1.843302] bone-capemgr bone_capemgr.8: slot #6: 'Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN'
[ 1.853925] bone-capemgr bone_capemgr.8: loader: before slot-0 ibb:0001 (prio 0)
[ 1.861713] bone-capemgr bone_capemgr.8: loader: check slot-0 ibb:0001 (prio 0)
[ 1.869517] bone-capemgr bone_capemgr.8: loader: before slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.878378] bone-capemgr bone_capemgr.8: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.887249] bone-capemgr bone_capemgr.8: loader: before slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.896016] bone-capemgr bone_capemgr.8: loader: check slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.904720] bone-capemgr bone_capemgr.8: initialized OK.
[ 1.910323] bone-capemgr bone_capemgr.8: loader: before slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.919173] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.941732] bone-capemgr bone_capemgr.8: loader: after slot-0 ibb:0001 (prio 0)
[ 1.949423] bone-capemgr bone_capemgr.8: loader: check slot-4 BB-BONE-EMMC-2G:00A0 (prio 1)
[ 1.958196] bone-capemgr bone_capemgr.8: loader: check slot-5 BB-BONELT-HDMI:00A0 (prio 1)
[ 1.973258] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 1.982040] bone-capemgr bone_capemgr.8: slot #0: Requesting part number/version based 'ibb-0001.dtbo
[ 1.997835] bone-capemgr bone_capemgr.8: slot #0: Requesting firmware 'ibb-0001.dtbo' for board-name 'Home Automation Cape', version '0001'
[ 2.829291] bone-capemgr bone_capemgr.8: failed to load firmware 'ibb-0001.dtbo'
[ 2.837120] bone-capemgr bone_capemgr.8: loader: failed to load slot-0 ibb:0001 (prio 0)
[ 2.845627] bone-capemgr bone_capemgr.8: loader: check slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
But - the dtbo exists in /lib/firmware and the rights are ok as well.
I tried to manually enabling the overlay:root@arm:~# echo ibb-0001 > /sys/devices/bone_capemgr.8/slots
-bash: echo: write error: No such file or directory
(same for just "ibb" or "/lib/firmware/ibb" and so on)
Enabling the BB-UART by this way works as intended.
Do I have to register the dtbo somewhere to get it found?
Thank you very much!
Robert