Failure loading device tree overlay into BBB Ubuntu, seems to be loading incorrect *.tbo file?

Kernel Version: ubuntu-armhf 3.8.13-bone20

Overlay File: BB-BONE-PRU-00A0.dts (shown below)

Compile: sudo sh -c “dtc -@ -O dtb -o BB-BONE-PRU-00A0.dtbo BB-BONE-PRU-00A0.dts”
worked as far as I can tell

Loading:

/lib/firmware> echo $SLOTS
/sys/devices/bone_capemgr.9/slots

sudo sh -c “echo BB-BONE-PRU > $SLOTS”

worked as far as I can tell except when dmesg examined

Tail of dmesg

[14899.144156] bone-capemgr bone_capemgr.9: part_number ‘BB-BONE-PRU’, version ‘N/A’
[14899.144246] bone-capemgr bone_capemgr.9: slot #10: specific override
[14899.144271] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 10
[14899.144289] bone-capemgr bone_capemgr.9: slot #10: ‘Bone-Black-PRU,00A0,na,BB-BONE-PRU’
[14899.144402] bone-capemgr bone_capemgr.9: slot #10: Requesting firmware ‘cape-bone-pru-00A0.dtbo’ for board-name ‘Bone-Black-PRU’, version ‘00A0’
[14899.154045] bone-capemgr bone_capemgr.9: failed to load firmware ‘cape-bone-pru-00A0.dtbo’
/lib/firmware>

any ideas? Thanks.
Bit Pusher

/lib/firmware> cat BB-BONE-PRU-00A0.dts
/*

  • pru dts file BB-BONE-PRU-00A0.dts
    */
    /dts-v1/;
    /plugin/;

/ {
compatible = “ti,beaglebone”, “ti,beaglebone-black”;

/* identification */
part-number = “BB-BONE-PRU”;
version = “00A0”;

exclusive-use =
“P8.12”;

fragment@0 {
target = <&am33xx_pinmux>;
overlay {
mygpio: pinmux_mygpio{
pinctrl-single,pins = <
0x30 0x06

;
};
};
};

fragment@1 {
target = <&ocp>;
overlay {
test_helper: helper {
compatible = “bone-pinmux-helper”;
pinctrl-names = “default”;
pinctrl-0 = <&mygpio>;
status = “okay”;
};
};
};

fragment@2{
target = <&pruss>;
overlay {
status = “okay”;
};
};
};

Care to retry with: v3.8.13-bone28 ?

Regards,

I have an awful lot of work installed in bone20, retrying with 29 would first require a few days of additional work to get back to where I am now; will do if necessary.
Bit Pusher

Update, recompiled with different name, and then overlay load appears to work

/lib/firmware> sudo sh -c “dtc -@ -O dtb -o cape-bone-pru-00A0.dtbo BB-BONE-PRU-00A0.dts”

[19392.918341] bone-capemgr bone_capemgr.9: part_number ‘BB-BONE-PRU’, version ‘N/A’
[19392.918537] bone-capemgr bone_capemgr.9: slot #11: specific override
[19392.918610] bone-capemgr bone_capemgr.9: bone: Using override eeprom data at slot 11
[19392.918662] bone-capemgr bone_capemgr.9: slot #11: ‘Bone-Black-PRU,00A0,na,BB-BONE-PRU’
[19392.918969] bone-capemgr bone_capemgr.9: slot #11: Requesting firmware ‘cape-bone-pru-00A0.dtbo’ for board-name ‘Bone-Black-PRU’, version ‘00A0’
[19392.919456] bone-capemgr bone_capemgr.9: slot #11: dtbo ‘cape-bone-pru-00A0.dtbo’ loaded; converting to live tree

/lib/firmware> cat $SLOTS
0: 54:PF—
1: 55:PF—
2: 56:PF—
3: 57:PF—
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
11: ff:P-O-L Bone-Black-PRU,00A0,na,BB-BONE-PRU

/lib/firmware> sudo cat $PINS | g 44e10830
pin 12 (44e10830) 00000006 pinctrl-single

I don’t understand why unless the name cape-bone-pru-00A0.dtbo is compiled into device driver as an over-ride, but since this seems to work, I will go on. Still any clarifications or ideas would be appreciated. Thanks.
Bit Pusher

For your info to finish off: as suggested by Robert Nelson, I upgraded to v3.8.13-bone28. After spending time to get back to where I used to be in bone20, I can now compile and load the overlay as expected:

sudo sh -c “dtc -@ -O dtb -o BB-BONE-PRU-00A0.dtbo BB-BONE-PRU-00A0.dts”
sudo sh -c “echo BB-BONE-PRU > $SLOTS”
pin 12 (44e10830) 00000006 pinctrl-single

and all is well.

Any suggestions on how to load the overlay and have the output come up low? Thanks.

Hi Robert,

I’ve got some serious overlay problems too – and I’d like to try this also.
How do you upgrade the kernel? I tried this:

sudo apt-get install linux-generic-lts-raring linux-headers-3.8.13-bone28 linux-headers-3.8.13-bone28-generic linux-headers-generic-lts-raring linux-image-3.8.13-bone28-generic linux-image-generic-lts-raring

But these packages do not exist on the repository.

Kind regards

Matt

They aren't in the repo, as that is ubuntu's repo...

But anyways, you are running "ubuntu-armhf"'s image.. Which is
in-compatible with the upgrade method i've been pushing for
ubuntu/debian images for over 5 years..

wget http://rcn-ee.net/deb/raring-armhf/v3.8.13-bone28/install-me.sh
sudo /bin/bash install-me.sh

But it's broken for his image, patches welcome:
https://github.com/rcn-ee/farm/blob/master/install-me-template.sh

Regards,

Thanks for the reply Robert,

patching this would be beyond my skill level. However
I would like to contribute to documenting the use of device trees on Ubuntu.
Since I can’t get this to work…it’s not looking good for my contributions ;>) !

I think I can get the one wire interface to work on an mbed, or raspi py, and just use that –
so it is no big loss at the moment. Or even set up a DS2480B driver chip to do the on-wire coms,
and avoid device trees.

What image would I need to install to be able to patch appropriately to have a better chance.

Thanks

Matt

Thanks for the reply Robert,

patching this would be beyond my skill level. However
I would like to contribute to documenting the use of device trees on Ubuntu.
Since I can't get this to work....it's not looking good for my contributions
;>) !

I think I can get the one wire interface to work on an mbed, or raspi py,
and just use that --
so it is no big loss at the moment. Or even set up a DS2480B driver chip to
do the on-wire coms,
and avoid device trees.

That would be cool and useful to do..
Here's some hints..
http://dominion.thruhere.net/koen/cms/using-1-wire-on-a-beaglebone

What image would I need to install to be able to patch appropriately to have
a better chance.

This one for flashing the eMMC:
http://elinux.org/BeagleBoardUbuntu#eMMC:_BeagleBone_Black

or the microSD: (need to run the microSD setup script on linux..)
http://elinux.org/BeagleBoardUbuntu#Demo_Image

Regards,

Robert,

My device tree overlay took a dump and my Beaglebone Black would no longer allow me to import the ADC portion of the Adafruit_BBIO library.

<type ‘exceptions.RuntimeError’> Unable to setup ADC system. Possible causes are: - A cape with a conflicting pin mapping is loaded - A device tree object is loaded that uses the same name for a fragment: helper

Running your script fixed my issue partially.
I can run this command from the command line with no problem.

import Adafruit_BBIO.ADC as ADC

When I run the same code from my simple web2py app the ADC cape error comes back.
Any ideas?

Kevin