分类目录归档:编译固件

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.

今天在复制一个代码库的时候报错。

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

系统使用的是 Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-111-generic x86_64)

解决办法。

$ sudo apt-get purge git
$ sudo apt-get install git

问题解决。

极路由HC5962编译openwrt如何增大overlay分区空间

手里有一台粉丝送我的HC5962,编译了一个AdGuardHome,结果运行的时候居然无法启动,查看日志发现原来是overlay空间已满,这就很不爽了。

解决办法也很简单,修改HC5962的dts文件,把label=ubi里面的终止地址改下就可以了。

以下是修改后的参数。

partition@340000 {
label = “ubi”;
reg = <0x340000 0x4d00000>;
};

保存后重新编译即可。

移植小米4 NAND闪存全千兆版到openwrt

./base-files/lib/upgrade/platform.sh: mir4|\
./base-files/lib/ramips.sh: name=”mir4″
./base-files/etc/board.d/01_leds:mir4)
./base-files/etc/board.d/02_network: mir4)
./base-files/etc/board.d/02_network: mir4)
./dts/MIR4.dts: compatible = “xiaomi,mir4”, “mediatek,mt7621-soc”;
./image/mt7621.mk:define Device/mir4
./image/mt7621.mk:TARGET_DEVICES += mir4

dts文件。 继续阅读

给一台便携路由器升级内存并适配openwrt

最近因为疫情呆在家,甚是无聊,于是把热风枪电烙铁以及一些工具搬回去了,闲在家里,总得做一些有趣的事情才好,不是吗?

于是翻抽屉找出来一台便携路由器来,说是便携路由器,其实它只有一个网口,只能算是无线AP吧。

这个无线AP的外观是这样的,圆润可人,内置5000mah锂电池,似乎很像某种女性用品。。。

以上是主板的拆机图片,可以看出,CPU是MT7628NN,内存是64MB,闪存好像我之前已经升级成16MB了,查了一下MT7628的芯片手册,发现这个CPU支持DDR1和DDR2内存,最大分别可支持128MB/256MB内存,不过手边好像只有DDR2的128MB内存,那么咱就因陋就简,改成128MB内存吧,DDR1肯定改不了,因为这个机器只有DDR2的焊盘。DDR1是TSOP封装的,就是两边有管脚那种,而DDR2是BGA封装的。两者外观区别蛮大的。

OK,既然已经确定了要改内存,接下来的事情就是拆下原来主板的内存,换上大容量的上去,由于已经刷好了breed,可以自动识别内存容量,这就很方便了。

继续阅读

吐槽一下,果然不能盲目更新openwrt代码啊

朋友送我一个坏的小米路由器4,他也不知道故障是如何产生的,总之就是坏了,丢家里很久了,过年清理杂物终于翻出来,知道我喜欢折腾路由器,就丢给我研究了。

这个路由器很奇葩,路由器背面写着小米路由器4,硬件是MT7621+ MT7612EN+MT7603EN ,内存128MB,闪存128MB NAND,小米官网没有这个型号。唯一一个型号相近的是小米路由器4A千兆版。网上搜了下小米路由器4A的参数,发现小米路由器4A除了闪存换成了16MB的spi闪存,其他硬件和这个没有区别。但是主板布局走线有很大不同。小米路由器4A已经改成电解电容了。而我手里这个仍旧是固态电容。

正好赶上肺炎肆虐,呆在家里没有事情,就拿出来研究下,琢磨了很久发现可能是CPU坏了,于是吭哧吭哧折腾着换了一个MT7621CPU,刷了R3G的老毛子固件,正常。唯一不爽的是,R3G的内存是256MB的,而这个路由器是128MB内存,刷了R3G的毛子固件以后,内存显示256MB,这样很不稳定的,一旦超过物理内存,就会内核崩溃。老毛子固件的机制是直接把内存大小写在固件里,这个和openwrt完全不同,openwrt是读取bootloader提供的内存大小。

然后去下载了padavan的代码,一顿编译,固件是做出来了,但是没有我想要的功能,加上不太熟悉毛子固件编译的修改,弃坑转而研究openwrt。

有人可能会问,R3G在breed下面不是不能刷openwrt吗,实际上这个问题已经解决了,这里先挖个坑,一篇讲不完,咱们下篇再说。

然后1月2号的时候更新了某大雕的源码,编译了X86的固件,正常使用没有问题。于是就操刀开始编译R3G的openwrt固件。结果刷进去之后,LAN口死活无法获取IP地址。ifconfig显示lan口的IP地址是192.168.127.1,而WAN可以获取IP地址,这就很奇葩了。由于从来没有怀疑是源码有bug,一度让我以为是不是换上去的MT7621内部集成的交换机有问题,差点想重新再换一片CPU试试,幸好手里没有多余的CPU芯片而作罢。

不死心,以为小米更改了设计,也许这个R4千兆版和R3G的网口硬件顺序定义不同导致R3G默认的VLAN划分不适合这个机器。结果试了各种组合,故障依旧。最后编译一个新三的固件,刷到新三一看,LAN口同样无法获取IP地址,这才如梦初醒,原来是他喵的源码有问题!

当然我这里不是吐槽某大雕,毕竟这不是他的锅,根源在于openwrt的snapshot本来就是实验版本,bug多少几乎是必然的,只是没想到让我在这里中招了,浪费了许多时间。另外要赞一下大雕,他的开源精神值得所有的openwrt爱好者学习。具体名字这里就不方便说了,懂的自然懂,不懂的也不需要懂,哈哈哈。

现在开始回退到之前比较老的版本重新编译,希望问题能解决。

肺炎肆虐,呆在家里研究padavan编译

研究的源代码来自 https://github.com/hanwckf/rt-n56u

这个源码默认编译出来固件的IP地址是192.168.2.1,这个刚好和我家里的路由器冲突,于是研究下哪里可以更改这个设置,发现在/opt/rt-n56u/trunk/user/shared/defaults.h:#define DEF_LAN_ADDR,更改这里的参数就行了。

经过测试,不行。先留个坑吧,有兴趣再研究这个。

PADAVAN编译小米路由器4千兆版的网口设置

此路由器无线芯片是MT7612EN+MT7603EN,CPU是MT7621AT ,除了没有USB接口,闪存是128MB NAND ,内存128MB,其他和小米路由器3G硬件一样。但是网口定义不同。

# CONFIG_RAETH_ESW_IGMP_SNOOP_HW is not set
CONFIG_RAETH_ESW_PORT_WAN=4
CONFIG_RAETH_ESW_PORT_LAN1=2
CONFIG_RAETH_ESW_PORT_LAN2=1
CONFIG_RAETH_ESW_PORT_LAN3=0
CONFIG_RAETH_ESW_PORT_LAN4=3

此路由器刷了HC5962增强版(B70)的BOOTLOADER,可以刷B70的固件,WAN口仍旧是WAN口,不反序。

小米路由器4千兆版有两种硬件,另外一种的闪存芯片是16MB的SPI芯片,其余参数和这个NAND版本的相同。

使用RT-AC55U的官方源码编译固件

首先去下载gpl源码,http://dlcdnets.asus.com/pub/ASUS/wireless/RT-AC55U/FW_RT_AC55U_300438250702.ZIP

然后解压,按说明操作。

由于AC55U采用的是高通的芯片组,所以我们照这个去设置环境即可。

Qualcomm QCA9557/QCA953x/QCA956x MIPS SoC models
================================

       Others: (For example, RT-AC55U, 4G-AC55U.)
            - extract tools/openwrt-gcc463.mips.tar.bz2 directory to /opt
        - add /opt/openwrt-gcc463.mips/bin to your path
        - If you want to build small utilities out of asuswrt box,
          add STAGING_DIR environment variable as below:

          export STAGING_DIR=/opt/openwrt-gcc463.mips

然后就可以make rt-ac55u开始编译了。

需要注意的是,最好是切换为root编译,这样可以省去很多问题。