154995ae9SAlexander Hansen# phosphor-led-sysfs 254995ae9SAlexander Hansen 354995ae9SAlexander HansenThis project exposes physical LEDs on dbus. 454995ae9SAlexander Hansen 554995ae9SAlexander Hansen## Example 654995ae9SAlexander Hansen 754995ae9SAlexander HansenSay we have 'identify' LED in our system, which may be declared in devicetree. 854995ae9SAlexander Hansen 9*0e157e9aSGeorge Liu```text 1054995ae9SAlexander Hansenleds { 1154995ae9SAlexander Hansen compatible = "gpio-leds"; 1254995ae9SAlexander Hansen 1354995ae9SAlexander Hansen identify { 1454995ae9SAlexander Hansen gpios = <&gpio ASPEED_GPIO(S, 6) GPIO_ACTIVE_HIGH>; 1554995ae9SAlexander Hansen }; 1654995ae9SAlexander Hansen}; 1754995ae9SAlexander Hansen``` 1854995ae9SAlexander Hansen 19e6239da8SAlexander HansenWe can add an LED via the helper program. The main service is then started via 20e6239da8SAlexander Hansendbus-activation. 2154995ae9SAlexander Hansen 22*0e157e9aSGeorge Liu```sh 23e6239da8SAlexander Hansen./add-led-action --path /sys/class/leds/identify 2454995ae9SAlexander Hansen``` 2554995ae9SAlexander Hansen 2654995ae9SAlexander Hansenwhich will expose following dbus objects: 2754995ae9SAlexander Hansen 28*0e157e9aSGeorge Liu```text 29e6239da8SAlexander Hansenbusctl tree xyz.openbmc_project.LED.Controller 3054995ae9SAlexander Hansen`- /xyz 3154995ae9SAlexander Hansen `- /xyz/openbmc_project 3254995ae9SAlexander Hansen `- /xyz/openbmc_project/led 3354995ae9SAlexander Hansen `- /xyz/openbmc_project/led/physical 3454995ae9SAlexander Hansen `- /xyz/openbmc_project/led/physical/identify 3554995ae9SAlexander Hansen 36e6239da8SAlexander Hansenbusctl introspect xyz.openbmc_project.LED.Controller /xyz/openbmc_project/led/physical/identify 3754995ae9SAlexander HansenNAME TYPE SIGNATURE RESULT/VALUE FLAGS 3854995ae9SAlexander Hansen... 3954995ae9SAlexander Hansenxyz.openbmc_project.Led.Physical interface - - - 4054995ae9SAlexander Hansen.Color property s "xyz.openbmc_project.Led.Physical.Pal... emits-change writable 4154995ae9SAlexander Hansen.DutyOn property y 50 emits-change writable 4254995ae9SAlexander Hansen.Period property q 1000 emits-change writable 4354995ae9SAlexander Hansen.State property s "xyz.openbmc_project.Led.Physical.Act... emits-change writable 4454995ae9SAlexander Hansen``` 4554995ae9SAlexander Hansen 4654995ae9SAlexander HansenIn the above output, the usual org.freedesktop.\* interfaces have been removed 4754995ae9SAlexander Hansento keep it readable. 4854995ae9SAlexander Hansen 4954995ae9SAlexander Hansen## Example: using the dbus interface 5054995ae9SAlexander Hansen 5154995ae9SAlexander HansenQuery the LED State 5254995ae9SAlexander Hansen 53*0e157e9aSGeorge Liu```text 54e6239da8SAlexander Hansenbusctl get-property xyz.openbmc_project.LED.Controller \ 5554995ae9SAlexander Hansen/xyz/openbmc_project/led/physical/identify \ 5654995ae9SAlexander Hansenxyz.openbmc_project.Led.Physical State \ 5754995ae9SAlexander Hansens "xyz.openbmc_project.Led.Physical.Action.Off" 5854995ae9SAlexander Hansen``` 5954995ae9SAlexander Hansen 6054995ae9SAlexander HansenSet the LED State 6154995ae9SAlexander Hansen 62*0e157e9aSGeorge Liu```text 63e6239da8SAlexander Hansenbusctl set-property xyz.openbmc_project.LED.Controller \ 6454995ae9SAlexander Hansen/xyz/openbmc_project/led/physical/identify \ 6554995ae9SAlexander Hansenxyz.openbmc_project.Led.Physical State s \ 6654995ae9SAlexander Hansen"xyz.openbmc_project.Led.Physical.Action.Off" 6754995ae9SAlexander Hansen``` 6854995ae9SAlexander Hansen 6954995ae9SAlexander Hansen## How to Build 7054995ae9SAlexander Hansen 71*0e157e9aSGeorge Liu```sh 7254995ae9SAlexander Hansenmeson setup build 7354995ae9SAlexander Hansencd build 7454995ae9SAlexander Hansenninja 7554995ae9SAlexander Hansen``` 76