Linkstationにdebian 10 (buster)インストール:ファンとLEDコントロール

f:id:khoshi3:20140524004633j:plain

img-buffalo-nas-lsvl-y2014


かなり前から、Linkstationにdebian標準インストーラにてDebianを突っ込んで、NAS(smbサーバその他)にしています。

google先生に「ls-vl debian」などと聞いて出てくる諸先輩方の成果を参考にさせていただいているわけで、この場をお借りして感謝の意を表(ひょう)します。

さて、Debian 8(Jessie)から 10(buster)にしたのですが、DeviceFileが変更になっていて、旧来のスクリプト(echo "hoge"> /sys/class/gpio/~ するやつ)ではファンコントロールとLED制御ができなくなっていました。(device busyになります):

 root@buster:~# LANG=C echo 16 > /sys/class/gpio/export
-bash: echo: write error: Device or resource busy

linuxカーネルコード内を探す(ソースコードをDownloadしなくともGithubを見ればよくなったのは嬉しい)と、いわゆる玄箱Pro系のコードが機種ごとに分割されていて、gpioをたたく必要なしに、専用のDeviceができていました。うちのls-vlくんでは、下記のようにすればOKでした。

(そういえば、Jessie以前はDeviceはこんなでした。 -> /sys/class/leds/lsxl\:blue\:func/brightness ) :

#!/bin/bash
# [ /usr/local/etc/LedOff ]
# http://forum.buffalo.nas-central.org/viewtopic.php?f=73&t=25941
#
# https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/kirkwood-linkstation-6282.dtsi
# https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/kirkwood-linkstation-lswvl.dts
# https://community.nxp.com/thread/459695
# https://patchwork.kernel.org/patch/8081861/
#
# fan-speed-is-slow.
FanSpeed=1
if [ $FanSpeed == 0 ]; then
FanHL=( 5000 "stop" )
elif [ $FanSpeed == 1 ]; then
FanHL=( 3250 "slow")
elif [ $FanSpeed == 2 ]; then
FanHL=( 1500 "fast")
elif [ $FanSpeed == 3 ]; then
FanHL=( 0 "Full")
fi
#: echo = ${FanHL[1]} = ${FanHL[0]}

#--// 00-fan-speed@ls-vl ----------------------
# fan-speed (ls-vl@buster):
echo "${FanHL[0]}" > /sys/devices/platform/gpio_fan/hwmon/hwmon0/fan1_target
sleep 0.4

#--// 01-top-orange-led@ls-vl ----------------------
# see also your "cat /sys/class/leds/linkstation\:amber\:info/trigger"
#
#: echo "timer" > /sys/class/leds/linkstation\:amber\:info/trigger
echo "none" > /sys/class/leds/linkstation\:amber\:info/trigger
echo 0 > /sys/class/leds/linkstation\:amber\:info/brightness
sleep 0.2

#--// 02-top-red-led@ls-vl --------------------------
echo "none" > /sys/class/leds/linkstation\:red\:alarm/trigger
echo 0 > /sys/class/leds/linkstation\:red\:alarm/brightness
sleep 0.2

#--// 03-function-blue-led@ls-vl --------------------
echo "none" > /sys/class/leds/linkstation\:blue\:function/trigger
echo 0 > /sys/class/leds/linkstation\:blue\:function/brightness
sleep 0.2

#--// 04-function-blue-led@ls-vl ----------------------
echo "none" > /sys/class/leds/linkstation\:red\:function/trigger
echo 0 > /sys/class/leds/linkstation\:red\:function/brightness
sleep 0.2

#--// 05-function-light-blue-led@ls-vl ----------------------
echo "none" > /sys/class/leds/linkstation\:blue\:power/trigger
echo 255 > /sys/class/leds/linkstation\:blue\:power/brightness
sleep 0.2

#:: root@buster:~# cat /sys/kernel/debug/gpio
#:: gpiochip0: GPIOs 0-31, parent: platform/f1010100.gpio, f1010100.gpio:
#:: gpio-8 (HDD0 Power ) out hi
#:: gpio-12 (USB Power ) out hi
#:: gpio-16 (gpio_fan ) out lo
#:: gpio-17 (gpio_fan ) out hi
#::
#:: gpiochip1: GPIOs 32-49, parent: platform/f1010140.gpio, f1010140.gpio:
#:: gpio-36 (linkstation:red:alar) out lo
#:: gpio-37 (linkstation:red:func) out lo
#:: gpio-38 (linkstation:amber:in) out lo
#:: gpio-39 (linkstation:blue:fun) out lo
#:: gpio-40 (linkstation:blue:pow) out lo
#:: gpio-43 (alarm ) in lo (act hi) - IRQ edge (clear )
#:: gpio-45 (Function Button ) in hi (act lo) - IRQ edge (clear )
#:: gpio-46 (Power-on Switch ) in lo (act hi) - IRQ edge (clear )
#:: gpio-47 (Power-auto Switch ) in hi (act lo) - IRQ edge (clear )
#::EOF

いまどきls-vl系いじってる方はいらっしゃらないかもですが、参考になれば幸いです。ではでは。

※追記(2019/11/26): 昔のものですが、ls-vlのHDD写真を追加。