yangxuan8282 / phicomm-n1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

修复断网问题

RuralHunter opened this issue · comments

兄弟,
我在5.60以上的内核使用你的meson-gxl-s905d-phicomm-n1.dtb还是有断网问题。我调查了一下,看到有这个修复:
https://patchwork.kernel.org/patch/10712159/
把你的dtb转成dts后,是在这里:

> grep -n -a3 dwmac meson-gxl-s905d-phicomm-n1.dts
1102-		};
1103-
1104-		ethernet@c9410000 {
1105:			compatible = "amlogic,meson-gx-dwmac", "amlogic,meson-gxbb-dwmac", "snps,dwmac";
1106-			reg = <0x0 0xc9410000 0x0 0x10000 0x0 0xc8834540 0x0 0x4>;
1107-			interrupts = <0x0 0x8 0x1>;
1108-			interrupt-names = "macirq";

把1107行的"interrupts = <0x0 0x8 0x1>"改成"interrupts = <0x0 0x8 0x4>"应该就行了,也就是1换成4。

本来我也可以自己生成,但dtc命令在我的机器上编译你的dts文件有几个警告:

# dtc -I dts -O dtb -o meson-gxl-s905d-phicomm-n1-fixnet.dtb meson-gxl-s905d-phicomm-n1.dts
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /scpi/clocks/scpi_clocks@0 has a unit name, but no reg property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /soc/bus@c8100000/pinctrl@14 has a unit name, but no reg property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/rng has a reg or ranges property, but no unit name
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/pinctrl@4b0 has a unit name, but no reg property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /soc/periphs@c8834000/eth-phy-mux has a reg or ranges property, but no unit name
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /soc/usb@c9000000 has a unit name, but no reg property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (unit_address_vs_reg): Node /sound/simple-audio-card,dai-link@0 has a unit name, but no reg property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (simple_bus_reg): Node /soc/bus@c8100000/pinctrl@14 missing or empty reg/ranges property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/rng simple-bus unit address format error, expected "0"
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/pinctrl@4b0 missing or empty reg/ranges property
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (simple_bus_reg): Node /soc/periphs@c8834000/eth-phy-mux simple-bus unit address format error, expected "55c"
meson-gxl-s905d-phicomm-n1-fixnet.dtb: Warning (simple_bus_reg): Node /soc/usb@c9000000 missing or empty reg/ranges property

最后生成的dtb文件会变小,我怕有别的影响。

你用的是这个 dtb 吗:https://github.com/yangxuan8282/phicomm-n1/releases/download/dtb/meson-gxl-s905d-phicomm-n1.dtb
那个我记得是很久之前在 4.18 的内核上编译的,不一定适用于最新的内核,建议在你用你发行版当前的内核源码从新编译一下,比如 armbian 的话是这个源码仓库: https://github.com/150balbes/Amlogic_s905-kernel ,用哪个 tag 对照你自己的 armbian 版本在这个文件的 history 里翻一下, config 可以在你 /boot 分区下找到 ( ls -l /boot/config* )
我日常使用比较多的是 alpine ,alpine 下自从禁用 EEE 后没有再遇到断网问题
其实这个 dtb 主要就有两个部分,一个是禁用掉 cvbs,另外一个是禁用掉 EEE,如果你用的不是 deepin 的话不需要考虑第一个,只要禁用掉 EEE 就好了,既可以从 dtb 里禁用,也可以用 ethtool 禁用,如果不想通过 dtb 禁用就直接用 ethtool ,禁用之后可以用 iperf 或者传输大文件来测试一下
你提到的那个最近的 patch 是为了解决 RTL8211F 长久以来存在的启用 EEE 就会碰到断网的问题(这也是为什么用 RTL8211F 的设备一般 dtb 里会加上 eee-broken-1000t,比如 odroid c2,看 mailing list 另一个解决办法是把最大速度限制到 100),我还没有测试,不过应该是有效的,如果你打了那个 patch 就不需要再禁用 EEE 了,直接用 p230 的 dtb 就可以了
至于编译我都是用的 make dtbs 命令,没用过 dtc,所以你提到的 warning 没有遇到过

对,我用的是你链接的dtb。从我使用的情况来看(armbian ubuntu版),你这个dtb在4.19以上的内核起码解决了两个问题:一个是负载不正常问题,一个是syslog里有一个tty不存在的错误。虽然禁用了eee,但是断网问题没有解决,4.18的内核我正在测试。另外,4.19以上我用ethtool居然禁用不掉eee,禁用命令执行没有报错,但看一下显示还是启用的。
断网问题从目前我的观察来看,好像是跟网卡的总流量有关系。ifconfig里看到网卡总流量达到二三十G以后就会出现问题,超过这个值就会越来越慢,最终断掉,似乎是什么地方有资源泄漏。
linux/armbian的内核我还不熟悉,我会尝试去重新编译一下。请教一下make dtbs生成的dtb文件是在哪个目录下?我跑这个命令会出现一堆选项类似这种:

 IP: IPComp transformation (INET_IPCOMP) [N/m/y/?] n
  IP: IPsec transport mode (INET_XFRM_MODE_TRANSPORT) [Y/n/m/?] y
  IP: IPsec tunnel mode (INET_XFRM_MODE_TUNNEL) [Y/n/m/?] y
  IP: IPsec BEET mode (INET_XFRM_MODE_BEET) [Y/n/m/?] y
  INET: socket monitoring interface (INET_DIAG) [Y/n/m/?] y
    UDP: socket monitoring interface (INET_UDP_DIAG) [N/m/?] n
    RAW: socket monitoring interface (INET_RAW_DIAG) [N/m/?] n
    INET: allow privileged process to administratively close sockets (INET_DIAG_DESTROY) [N/y/?] n
  TCP: MD5 Signature Option support (RFC2385) (TCP_MD5SIG) [N/y/?] n
  NetLabel subsystem support (NETLABEL) [N/y/?] n
Security Marking (NETWORK_SECMARK) [N/y/?] n
Timestamping in PHY devices (NETWORK_PHY_TIMESTAMPING) [N/y/?] n

我全部默认值结果make命令执行完成了,但没有找到生成的dtb。

就像我之前回复的,拿 4.18 的 dtb 直接放到 4.19 下是无法保证能正常运行的
至于你说的禁用不掉 eee 是不太可能的,应该是你使用的命令不对
断网和总流量应该没什么关系,就像 mailing list 里多个相关主题提到的主要是一次传输大文件时候会遇到
建议你直接写入我的 alpine 镜像测试网络情况
另外看起来你对编译内核不是很熟悉,你使用的是哪个版本的 armbian

嗯,我现在可以在4.19下重新编译生成dtb了,我加上你的patch,后面再测试一下新的dtb有没有问题。
我用的就是这个:https://github.com/150balbes/Amlogic_s905-kernel
ethtool命令没有问题,我反复检查过了。也有可能只是某个版本的核心有问题,我当时只测试了这个版本:https://yadi.sk/d/pHxaRAs-tZiei/5.67/20181207
不过这个问题关系不大,用了你的dtb后就可以看到eee禁用掉了。
我在4.19下用你的dtb,除了断网问题还是老样子,其它没有发现任何问题。所以你的dbt应该是可用的,有可能断网问题不是eee的原因。

@RuralHunter 麻烦给一个生成好的dtb可以么?新手不会编译内核,我用的是最新的1218版本

我放在这里了:https://pan.baidu.com/s/11VCuy_nl4sSRlrPrmxL_Nw
这个dtb集成了yangxuan的patch和上面我链接里提到的patch
你可以测试一下能不能解决4.19下的断网问题。我自己还在测4.18

@RuralHunter 谢谢! 如何测试断网呢?新手该用什么命令?

你正常使用就可以了,时间长了看看会不会出现网络问题。

新发布了一个 4.19 的 dtb: https://github.com/yangxuan8282/phicomm-n1/releases/download/dtb/meson-gxl-s905d-phicomm-n1.dtb_armbian-5.67

目前测试下来网络比较稳定

用 scp 从电脑向 n1 传输大小为 1.4G 的文件,速度稳定在 23MB/s ,无明显掉速

tim 20181231101724

用 sftp 从 n1 向电脑传输大小为 1.4G 的文件,速度稳定在 18MB/s ,无明显掉速
tim 20181231101707

使用meson-gxl-s905d-phicomm-n1.dtb_armbian-5.67 后开机一段时间无线会搜不到5G网络,只能搜到2.4G的无线,系统内核版本是4.19.6,armbian5.67

@maxmib
是什么时间下的

@maxmib
是什么时间下的
今天下的

@maxmib
刚试了下,我这里是可以搜到并连接 5G wifi 的

pi@aml:~$ sudo iwconfig
lo        no wireless extensions.

docker0   no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11  ESSID:"@PHICOMM_18_5G"  
          Mode:Managed  Frequency:5.745 GHz  Access Point: 2C:B2:1A:5C:E0:1A   
          Bit Rate=433.3 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=70/70  Signal level=-25 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

你看下你下的 dtb md5sum 是否是 232907334e89058458d2ed6fb1773b61

@yangxuan8282 核对了一下md5是一致的,是刚开机的时候能够搜索到5g,过一段时间后就搜索不到了,和内核版本不知道有没有关系,顺带想问一下armbian怎么升级内核,或者相关的资料也可以,谢谢

找内核的deb包,主要就是一个image,一个header,用dpkg -i 命令安装就行了。例如这个:
https://yadi.sk/d/pHxaRAs-tZiei/5.67/20181228/deb

我现在用的armbian ubuntu 5.60+yangxuan4.18的dtb好像不断网了,目前已经运行9天

~> ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.166.37  netmask 255.255.255.0  broadcast 192.168.166.255
        inet6 fe80::b86:3df5:5310:9fa  prefixlen 64  scopeid 0x20<link>
        ether fc:7c:02:4c:99:fc  txqueuelen 1000  (Ethernet)
        RX packets 123575400  bytes 137817465343 (137.8 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 138184166  bytes 169891327594 (169.8 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19

@RuralHunter deb包也可以降级吗,我用deb装了4.19.7,用yangxuan4.19的包无线是没问题了,但是开机七个小时左右有线网口就会延迟变很大

可以的,我就是从5.67一路降下去测试降到5.60的,你的现象跟我是一样的,一定流量后有线延迟就越来越大最终连不上。

@RuralHunter 能否分享一下你目前使用的这个版本的deb安装包,网盘里找不到5.60搭配4..18内核的镜像和deb包了,谢谢

我也是在恩山上找的,刚找了一下,这里有一个:
https://share.weiyun.com/5TVHe3N

@RuralHunter 谢谢,目前用那个网盘里的image的deb包把内核降到4.18.7,armbian还是5.67,还没有出现延迟增大的现象,

新版dtb md5sum 232907334e89058458d2ed6fb1773b61,有线网络10~20小时候后ping掉包超多,ssh上去反应更是“超级迟缓”近乎死机一般(键盘敲入登录密码后,再输sudo reboot敲回车需要等待很久才能看到看到结果)

新版dtb md5sum 232907334e89058458d2ed6fb1773b61,有线网络10~20小时候后ping掉包超多,ssh上去反应更是“超级迟缓”近乎死机一般(键盘敲入登录密码后,再输sudo reboot敲回车需要等待很久才能看到看到结果)

我也刷的4.19系统,同样现象,在考虑要不要改回4.18

那看来新的4.19上的dtb还是不能解决断网问题。或者你们可以试一下我这个4.19的dtb:
https://pan.baidu.com/s/11VCuy_nl4sSRlrPrmxL_Nw
这个是基于yangxuan4.18,加了一个网络的修改,跟yangxuan的4.19不同。

有断网问题的加我qq 920196849 发测试版试一下,4.19的一开始release里那个和4.18的dts是一致的,后来为了解决负载稍微改动了一下,我都测试过iperf和scp,群里反应网络问题主要是下pt时候

目前这个 issues 里的信息比较杂,不利于问题的解决和帮助其他用户
新开了一个 issues,仍然碰到断网的统一到这里按格式来提:#17