Skip to content

Instantly share code, notes, and snippets.

@c5e3 c5e3/thinkmorse.sh
Last active Jul 21, 2019

Embed
What would you like to do?
#!/bin/bash
modprobe -r ec_sys
modprobe ec_sys write_support=1
on="\x8a"
off="\x0a"
led(){
echo -n -e $1 | dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null
# thx to u/vali20
# https://www.reddit.com/r/thinkpad/comments/7n8eyu/thinkpad_led_control_under_gnulinux/
}
dit(){
led $on
sleep 0.1
led $off
sleep 0.1
}
dah(){
led $on
sleep 0.3
led $off
sleep 0.1
}
morse(){
case $1 in
"0") dah; dah; dah; dah; dah;;
"1") dit; dah; dah; dah; dah;;
"2") dit; dit; dah; dah; dah;;
"3") dit; dit; dit; dah; dah;;
"4") dit; dit; dit; dit; dah;;
"5") dit; dit; dit; dit; dit;;
"6") dah; dit; dit; dit; dit;;
"7") dah; dah; dit; dit; dit;;
"8") dah; dah; dah; dit; dit;;
"9") dah; dah; dah; dah; dit;;
"a") dit; dah;;
"b") dah; dit; dit; dit;;
"c") dah; dit; dah; dit;;
"d") dah; dit; dit;;
"e") dit;;
"f") dit; dit; dah; dit;;
"g") dah; dah; dit;;
"h") dit; dit; dit; dit;;
"i") dit; dit;;
"j") dit; dah; dah; dah;;
"k") dah; dit; dah;;
"l") dit; dah; dit; dit;;
"m") dah; dah;;
"n") dah; dit;;
"o") dah; dah; dah;;
"p") dit; dah; dah; dit;;
"q") dah; dah; dit; dah;;
"r") dit; dah; dit;;
"s") dit; dit; dit;;
"t") dah;;
"u") dit; dit; dah;;
"v") dit; dit; dit; dah;;
"w") dit; dah; dah;;
"x") dah; dit; dit; dah;;
"y") dah; dit; dah; dah;;
"z") dah; dah; dit; dit;;
" ") sleep 0.6;;
#*) echo "done";;
esac
sleep 0.2;
}
parse(){
tmp=$1
for i in $(seq 0 ${#tmp})
do
echo "current letter: ${tmp:$i:1}"
morse ${tmp:$i:1}
done
}
led $off
read -p "enter a word: " input
echo "blinking \"$input\""
parse "$input"
sleep 1
led $on
modprobe -r ec_sys
@hirschnase

This comment has been minimized.

Copy link

commented May 7, 2018

Cool idea. And this ec_sys kernel module is available where?

@kachini

This comment has been minimized.

Copy link

commented May 8, 2018

doesn't work on Fedora27/ Thinkpad L460

@RoelAdriaans

This comment has been minimized.

Copy link

commented May 11, 2018

https://gist.github.com/c5e3/e0264a546b249b635349f2ee6c302f36#file-thinkmorse-sh-L82 Should be
led $off

ec_sys is a stock kernel module: https://github.com/torvalds/linux/blob/master/drivers/acpi/ec_sys.c
Script has to run as root, input must be lower case.
Tested on T580, works.

@c5e3

This comment has been minimized.

Copy link
Owner Author

commented May 17, 2018

@hirschnase: it is included in ubuntu, not sure about other distros
@kachini: your os might lack ec_sys too. let me know, if you figure out, how to write raw data to your laptop's gpio without ec_sys

@c5e3

This comment has been minimized.

Copy link
Owner Author

commented May 17, 2018

@hirschnase: what distro?

@Taki-B

This comment has been minimized.

Copy link

commented May 19, 2018

Cool! Works fine with opensuse 42.3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.