一,指示灯
指示灯的gpip为85。通过如下指令使指示灯变蓝:
echo 85 > /sys/class/gpio/export
echo “high” > /sys/class/gpio/gpio85/direction
echo 85 > /sys/class/gpio/unexport
通过如下指令使指示灯变红:
echo 85 > /sys/class/gpio/export
echo “low” > /sys/class/gpio/gpio85/direction
echo 85 > /sys/class/gpio/unexport
二、风扇
风扇的gpio为70,通过如下命令启动:
echo 70 > /sys/class/gpio/export
echo “high” > /sys/class/gpio/gpio70/direction
echo 70 > /sys/class/gpio/unexport
通过如下命令关闭:
echo 70 > /sys/class/gpio/export
echo “low” > /sys/class/gpio/gpio70/direction
echo 70 > /sys/class/gpio/unexport
echo 79 > /sys/class/gpio/export
echo high > /sys/class/gpio/gpio79/direction
echo 79 > /sys/class/gpio/unexport
echo 79 > /sys/class/gpio/export
echo low > /sys/class/gpio/gpio79/direction
echo 79 > /sys/class/gpio/unexport
我写了个脚本(/usr/local/bin/fans),根据cpu温度自动启停风扇,用法如下:
/usr/local/bin/fans 开启温度 停止温度
温度单位是1/1000度,如高于70度开启,低于60度停止,则可以这样执行命令
/usr/local/bin/fans 70000 60000
如果不加参数,则默认为高于70度开启,低于65度停止。
三、硬盘休眠
通过如下命令设置为5分钟不用则硬盘休眠
/sbin/hdparm–S60 /dev/sda
四、自动执行
将以下2行命令添加到/etc/rc.local文件,以便每次重启后自动执行:
/sbin/hdparm–S60 /dev/sda
/usr/local/bin/fans&
五、说明
1,以上均在Armbian_5.75和联想ss2中测试通过;
2,我家云L1pro不支持指示灯灯光控制;
3,如果升级 Armbian,则要首先执行如下命令,将内核版本固定,否则风扇不能控制:
apt-mark hold linux-dtb-rockchip64
apt-mark hold linux-image-rockchip64
如果已经升级,将通过如下命令将内核降级:
apt-get install linux-dtb-rockchip64=5.75 linux-image-rockchip64=5.75
4,也许我的机器是个案,有时不能启动;有时开机时风扇不转,则上面的脚本无效,此时只能多次启动才行,因为对硬件不了解,不明原因。
5,fans脚本首先启动/停止风扇3次,作为指示之用。
六、下一步建议
1,建议研究手动编译内核,使得开机时不出现随机因素;
2,建议研究dts设置,通过pwm进行风扇调速,降低噪音;
3,建议研究找出前面板的开机按键的gpio端口,可以自如控制机器。
附fans脚本,请将其放到/usr/local/bin下面,并置为可执行:
#!/bin/bash
if [ -n "$1" ]; then
max=$1
else
max=70000
fi
if [ -n "$2" ]; then
min=$2
else
min=65000
fi
echo $max, $min
echo 70 > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio70/direction
i=0
for j in 1 2 3 4 5 6
do
echo $i > /sys/class/gpio/gpio70/value
i=$(( 1 - $i ))
sleep 2
done
while true
do
t=`/bin/cat /sys/class/thermal/thermal_zone0/temp`
if [ $t -gt $max ]; then
echo 1 > /sys/class/gpio/gpio70/value
echo "$t > $max"
fi
if [ $t -lt $min ]; then
echo 0 > /sys/class/gpio/gpio70/value
echo "$t < $min"
fi
sleep 10
done
echo 70 > /sys/class/gpio/unexport
----------------------------------------------------
| 我写了个脚本,可以死循环读gpio口的值(按ctlr-c退出),运行后点按按键,看数值是否有变化,有变化则就找到其gpio口。 将以下脚本保存为 rr, 运行 chmod +x rr 将其置为可执行,然后运行(比如读取35口) ./rr 35 即可。 rk3328共有128个,如果有兴趣,建议每位测试一组12个,(0到11,12到23... ),大家共同努力,把按键端口找出来。读的过程中如果死机,可能需要重启动或重刷系统。
#!/bin/bash echo $1 > /sys/class/gpio/export echo $1 if [ -e /sys/class/gpio/gpio$1 ]; then echo "in" > /sys/class/gpio/gpio$1/direction while true do cat /sys/class/gpio/gpio$1/value done fi echo $1 > /sys/class/gpio/unexport ------------------------------------------------------------------------- 上面有朋友 说通过轮询查询128个GPIO,那是不准确的。那是再你刷的系统里定义的,其实硬GPIO 就20多个,GPIO是可以复用的,所以在你刷的固件里70是风扇,但官方是79 82 85, 82是对比反馈电压,。 本主板是通过pinctrl 来驱动的。 如果你想编译安卓或者armbian,都要重新定义这些GPIO,目前第三方都是不完整的,希望对重新编译的朋友有用。 有问题留言。 ayufan-rock64 发布的 stretch-minimal-rock64-0.8.3-1141-arm64.img, 79 可以启停风扇!感谢23楼!! ------------------------ |