Device Overlay to Disable USR0 LED

HI Forum,

I am attempting to create a device over lay for BBB “Linux beaglebone 3.8.13-bone70” that will disable the linux heartbeat LED.

I am interested to do this primary as a learning process for device tree, but I plan to use the BBB in a room where I don’t want a LED to flash.

I followed the guide at BeagleBone and the 3.8 Kernel - eLinux.org.

dtc -O dtb -o BBB-LEDS.dtbo -b 0 -@ BBB-LEDS-00A0.dts

sudo cp BBB-LEDS.dtbo /lib/firmware/

sudo sh -c “echo BBB-LEDS > /sys/devices/bone_capemgr.9/slots”

However the LED continues to flash.

Could someone point me how to get the overlay to work?

Thanks

Joshua

/dts-v1/;
/plugin/;
/
{
compatible = “ti,beaglebone”, “ti,beaglebone-black”;
part-number = “BBB-LEDS”;
version = “00A0”;

fragment@0
{
target = <&am33xx_pinmux>;
overlay
{
userled_pins: pinmux_userled_pins {
pinctrl-single,pins = <
0x54 0x7 /* gpmc_a5.gpio1_21, OUTPUT | MODE7 */

;
};
};
};

fragment@1
{
target = <&ocp>;
overlay
{
gpio-leds {
compatible = “gpio-leds”;
pinctrl-names = “default”;
pinctrl-0 = <&userled_pins>;
led0 {
label = “beaglebone:green:usr0”;
gpios = <&gpio2 21 0>;
linux,default-trigger = “none”;
default-state = “off”;
};
};
};
};
};

Just shut them down via a script from userspace:

BASE=/sys/class/leds/beaglebone\:green\:usr

echo none > ${BASE}0/trigger
echo none > ${BASE}1/trigger
echo none > ${BASE}2/trigger
echo none > ${BASE}3/trigger

echo 0 > ${BASE}0/brightness
echo 0 > ${BASE}1/brightness
echo 0 > ${BASE}2/brightness
echo 0 > ${BASE}3/brightness

Regards,

Hello Joshua,

Not sure if you’ll see this but here goes.

You can modify the base dtb file at /boot/dtbs/3.8.XX-boneXX/am335x-boneblack.dtb by converting to dts, modifying, and converting back. I followed the guide here, specifically “What is the device tree?” and step 1:http://www.element14.com/community/community/designcenter/single-board-computers/next-gen_beaglebone/blog/2013/05/22/bbb--working-with-the-pru-icssprussv2

cd /boot/dtbs/3.8.13-bone70/ # navigate to dtb directory, may have to change version numbers cp am335x-boneblack.dtb am335x-boneblack.dtb_orig # create a backup of the dtb incase anything goes wrong dtc -I dtb -O dts am335x-boneblack.dtb > am335x-boneblack.dts_noled # convert dtb file to dts (human readable) nano am335x-boneblack.dts_noled # open the file for editing with your favorite editor

Search for “led0”. Should be line no. ~946

`

946 led0 {
947 label = “beaglebone:green:usr0”;
948 gpios = <0x5 0x15 0x0>;
949 linux,default-trigger = “heartbeat”;
950 default-state = “off”;
951 };
952
953 led1 {
954 label = “beaglebone:green:usr1”;
955 gpios = <0x5 0x16 0x0>;
956 linux,default-trigger = “mmc0”;
957 default-state = “off”;
958 };
959
960 led2 {
961 label = “beaglebone:green:usr2”;
962 gpios = <0x5 0x17 0x0>;
963 linux,default-trigger = “cpu0”;
964 default-state = “off”;
965 };
966
967 led3 {
968 label = “beaglebone:green:usr3”;
969 gpios = <0x5 0x18 0x0>;
970 default-state = “off”;
971 linux,default-trigger = “mmc1”;
972 };

`

All you have to do is change this line in led0

`
linux,default-trigger = “heartbeat”;

`

to

`
linux,default-trigger = “none”;

`

You can also repeat for leds 1,2, and 3 if desired.

Now just convert the dts back to dtb:

`
dtc -I dts -O dtb am335x-boneblack.dts_noled > am335x-boneblack.dtb_noled
cp am335x-boneblack.dtb_noled am335x-boneblack.dtb

`

and reboot! Your leds should now be disabled.

If anything goes wrong you can always start over with your original backup copy.