Using kernel LED class - Raspberry Pi Forums
hello,
tried use pi's onboard led "heartbeat" indicator. when change trigger source led, pi stops responding after while (about 10sec).
pi's kernel led class broken?
best regards
piotr
tried use pi's onboard led "heartbeat" indicator.
code: select all
insmod ledtrig-heartbeat.ko echo heartbeat > /sys/class/leds/mmc0::/trigger pi's kernel led class broken?
best regards
piotr
this kind of overengineered response, in deals couple of other things, should able rip relevant bits out application.
written big red button thingy here:
http://www.youtube.com/user/kronalias
code: select all
#!/usr/bin/perl # name flash-ok-led.pl # author kronalias # provides flashes rpi ok (green) led confidence tone # flashing heartbeat = usb device cheeky big red button found # flashing pattern = unplugged # # crontab run on boot # @reboot sleep 15; /usr/bin/perl /home/pi/my/scripts/flash-ok-led.pl # # version 1.01 - base version # 1.02 - allows crontab start use strict; use warnings; use time::hires ('usleep'); # can usleep(microseconds) $version = 1.02; $path = '/mnt/ramdisk/'; $name = 'flash-ok-led'; use posix "strftime"; $pid = "$$"; print strftime("%h:%m:%s %a %d %b %y", localtime(time())), " $path$name ver:$version pid: $pid\n"; # if script started crontab may need find pid, store in file $pid_file = "$path$name.pid"; `echo $$ > "$pid_file"`; while (1) { if ( &red_button_exists() ) { &ok_led_timer(); } else { &ok_led_heartbeat(); } } # never here exit; sub ok_led_heartbeat(){ # default trigger led 'mmc0'. # before using led have deactivate trigger. `sudo sh -c "echo none >/sys/class/leds/led0/trigger"`; # `echo none >/sys/class/leds/led0/trigger`; # attach heartbeat module trigger if (index(`lsmod`, 'ledtrig_heartbeat') == -1) { `sudo modprobe ledtrig_heartbeat`; } # start heartbeat: `sudo sh -c "echo heartbeat >/sys/class/leds/led0/trigger"`; # `echo heartbeat >/sys/class/leds/led0/trigger`; while ( !&red_button_exists() ) { sleep 1; } # restore original functionality: `sudo sh -c "echo mmc0 > /sys/class/leds/led0/trigger"`; #`echo mmc0 > /sys/class/leds/led0/trigger`; # clean `sudo rmmod ledtrig_heartbeat`; return 1; } sub ok_led_timer(){ # default trigger led 'mmc0'. # before using led have deactivate trigger. `sudo sh -c "echo none >/sys/class/leds/led0/trigger"`; #`echo none >/sys/class/leds/led0/trigger`; # attach ledtrig_timer module trigger if (index(`lsmod`, 'ledtrig_timer') == -1) { `sudo modprobe ledtrig_timer`; } # turn on timer control: `sudo sh -c "echo timer >/sys/class/leds/led0/trigger"`; # `echo timer >/sys/class/leds/led0/trigger`; # start flashing @ ~4hz , speed $delay = 256; # /var/log/auth.log catches sudo commands # make things world writeable not log write `sudo chmod 666 /sys/class/leds/led0/delay_on`; `sudo chmod 666 /sys/class/leds/led0/delay_off`; $done = 0; while (!$done) { #`sudo sh -c "echo $delay >/sys/class/leds/led0/delay_on"`; #`sudo sh -c "echo $delay >/sys/class/leds/led0/delay_off"`; `echo $delay >/sys/class/leds/led0/delay_on`; `echo $delay >/sys/class/leds/led0/delay_off`; $delay = int($delay/2); if ($delay <= 10) { $delay = 256; } usleep(500000); # 0.5 seconds if ( !&red_button_exists() ) { $done = 1; } } # restore original functionality `sudo sh -c "echo mmc0 > /sys/class/leds/led0/trigger"`; # `echo mmc0 > /sys/class/leds/led0/trigger`; # clean `sudo rmmod ledtrig_timer`; return 1; } sub red_button_exists(){ # returns true cheeky stress big red button, vendor/product id of 04f3:04a0, otherwise returns false # lsusb returns this: "bus 003 device 002: id 04f3:04a0 elan microelectronics corp." # following lines work, load cpu # $result = 0; # if (index(`lsusb`, '04f3:04a0') != -1) { # $result = 1; # } # following line not cpu intensive $result = (-e '/dev/input/by-id/usb-04f3_panic_button-event-kbd'); return $result; } http://www.youtube.com/user/kronalias
raspberrypi
Comments
Post a Comment