fhh 发表于 2021-3-5 11:18:42

猫盘 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的控制方法见楼下)

废话不多说,上图

panghu0603 发表于 2021-3-5 12:48:26

绑定:lol:lol:lol:lol

fhh 发表于 2021-3-5 12:57:13

大致设置了一下,写了一个简单的脚本,可以用来控制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后重启即可。

四川大海 发表于 2021-3-5 13:39:18

好贴帮顶,顺便得渣金

monster233 发表于 2021-3-5 14:27:29

太厉害了之前还花钱改uboot解决 帮顶

fhh 发表于 2021-3-6 08:57:08

获取网卡温度:
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:

adiao 发表于 2021-3-6 10:06:23


好贴帮顶,顺便得渣金

Cp0204 发表于 2021-3-6 11:45:21

好贴帮顶,顺便得渣金

adiao 发表于 2021-3-8 09:06:55


好贴帮顶,顺便得渣金
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 猫盘 linux 解决掉IP问题