猫盘 linux 解决掉IP问题
本帖最后由 fhh 于 2021-3-23 14:04 编辑发现了几乎完美的解决方案,此贴终结
https://bbs.nasdiyer.com/thread-7843-1-1.html
刷机完成后,如果希望从emmc启动,只需更改bootcmd环境变量即可。
------------原内容------------------------------------
首先声明一点:
猫盘掉IP并不是所谓的“网卡虚焊”
(不然为什么X3P可以正常使用)
掉IP的真正的原因是H大提供的驱动(u-boot/Linux)存在问题,导致网卡没有被正常初始化
(比对了一下x3p的dts和H大的dts发现基本上完全不一样,可能是硬件版本区别?)
所以,临时的解决方法如下:
1.刷X3P
2.将H大提供的系统img(debian/ubuntu/archlinuxarm均可,我用的是Archlinux)写入U盘
3.将U盘插入猫盘,进入ttl,清除emmc的mmcblk0p2分区,将U盘的文件系统复制到这个分区;
4.重启,在uboot中修改启动命令,从emmc的mmcblk0p2分区启动
5.启动alpine后,将U盘挂载(比如/mnt)
6.将/dev和/proc挂载到/mnt/dev和/mnt/proc
7.将/boot中的Image和dtb文件复制到/mnt备份
8.将/lib/modules文件夹复制到/mnt备份
9.chroot进/mnt,执行emmc-install.sh
10.挂载/dev/mmcblk0p1(安装完成的系统),备份当前的Image和dtb,将x3p的备份复制进去
11.将x3p的/lib/modules复制到当前系统
12.重启
应该直接就能进去了,并且100%获取IP
内核也不会有crc错误的提示
问题:
与之前的内核相同,无法控制风扇
(LED的控制方法见楼下)
废话不多说,上图
绑定:lol:lol:lol:lol 大致设置了一下,写了一个简单的脚本,可以用来控制LED:
/usr/bin/led
#! /usr/bin/bash
if [ ! -f "/sys/class/leds/c1/brightness" ]; then
insmod /lib/modules/4.4.52-armada-17.10.1/leds-aw2013.ko
fi
if [ $# -eq 3 ]; then
echo $1 > /sys/class/leds/c1/brightness
echo $2 > /sys/class/leds/c2/brightness
echo $3 > /sys/class/leds/c3/brightness
else
echo 23 > /sys/class/leds/c1/brightness
echo 147 > /sys/class/leds/c2/brightness
echo 209 > /sys/class/leds/c3/brightness
fi
使用方法:
led R G B
不传RGB值默认是Arch蓝
为了让这个脚本开机启动,添加一个systemd脚本:
/usr/lib/systemd/system/led.service
Description=LED enable
Before=basic.target
After=sysinit.target local-fs.target
DefaultDependencies=no
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/led
TimeoutStartSec=1min
WantedBy=basic.target
systemctl enable led后重启即可。 好贴帮顶,顺便得渣金 太厉害了之前还花钱改uboot解决 帮顶 获取网卡温度:
1.按照https://blog.csdn.net/han_dawei/article/details/9427033这个教程,编译一个操作网卡接口的程序;
2.按照Marvell的官方datasheet,编写以下脚本:
/usr/bin/phytemp
#! /usr/bin/bash
mdio eth0 22 6
raw=$(mdio eth0 26)
mdio eth0 22 0
echo $(((raw&31)*5-25))
3.直接执行即可。
风扇控制:
编写以下脚本:
/usr/bin/gpiofan
if [ $# -eq 1 ]; then
case $1 in
high) echo 0 > /sys/class/gpio/gpio38/value
echo 1 > /sys/class/gpio/gpio40/value;;
low) echo 1 > /sys/class/gpio/gpio38/value
echo 0 > /sys/class/gpio/gpio40/value;;
off) echo 0 > /sys/class/gpio/gpio38/value
echo 0 > /sys/class/gpio/gpio40/value;;
init) if [ ! -d "/sys/class/gpio/gpio38" ]; then
echo 38 > /sys/class/gpio/export
echo out >/sys/class/gpio/gpio38/direction
fi
if [ ! -d "/sys/class/gpio/gpio40" ]; then
echo 40 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio40/direction
fi;;
*) echo $0 "high|low|off|init";;
esac
else
echo $0 "high|low|off|init"
exit 127
fi
用systemd调用gpiofan init即可启动。
支持以下参数:
off:完全关闭
high:高速度运行
low:低速度运行
init:初始化,在调用其他功能之前,必须init!
至此,终于是完美实现功能了:loveliness:
好贴帮顶,顺便得渣金 好贴帮顶,顺便得渣金
好贴帮顶,顺便得渣金