随身wifi编译Openwrt的ImmortalWrt分支

背景:

    之前用酷安上下载的苏苏亮亮版友提供的Openwrt,在高通410棒子上刷机成功,但编译一直就没搞定。近期听说又出了个分支版本ImmortalWrt,刷了个版本,感觉界面清爽不少,内核也升级,遂打算搞定编译+刷机

过程记录如下:

1.Ubuntu版本要求

不能用Ubuntu18.04,./scripts/feeds update过程会报错,推荐用20.04

Ubuntu 20.04.6版本pve下安装没问题,hyper-v下iso怎么也无法进入安装界面,后来下载安装了20.04版本就成功在hyper-v下安装完成,特此说明下。

2. 安装依赖

大多数教程都明确需要如下:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync

实际还缺如下两个:

sudo apt-get -y install mkbootimg img2simg

3. 编译过程

   下载代码命令行:

    git clone https://github.com/lkiuyu/immortalwrt.git

    这个版本编译内核过程中会需要手动操作,所以多线程编译会报错。暂时没有想到办法解决,只能先-j1编译一次后,再-j8编译。

    后续,如果menuconfig里修改了内核模块,也会出现上述确认过程,解决方案一样。

编译配置:

[Targe Images:]

Kernel partition size (in MiB)    32

Root filesystem partition size (in MiB)  900


[Protocols]

luci-proto-modemmanager=y

[Utilities]

android-tools-adbd=y

gc=y

编译完成后,把如下两个文件拷贝到openwrt的刷机包中,改名

immortalwrt-msm89xx-msm8916-openstick-ufi001c-ext4-system.img   ==》 对应rootfs.img

immortalwrt-msm89xx-msm8916-openstick-ufi001c-ext4-boot.img ==》对应boot.img

其他的文件不要动,就用原来的,至此,刷机包准备完毕!

4. 刷机

      刷机过程没有什么可说的,如果本身固件是Android,或者已经刷成Openwrt/debian,执行adb reboot bootloader后,进入fastboot模式后,按提示刷机即可。如果是Android,记得备份,建议全量备份。

     万一已经刷坏了,没有adb端口(排除驱动未安装导致的没有adb),可以进9008模式后,用高通工具(Qualcomm Premium Tool)擦除boot分区,然后就自动进fastboot模式了。如果还不行,刷回全量备份回到Android系统。

     刷机过程中,请拔出SIM卡,避免烧卡!!

      注意,如果用SIM卡,建议先在Android下插入SIM卡,确保可以上网,刷入Openwrt后,就可以上网,不需要备份或者恢复任何文件。如果不能,执行/etc/init.d/network restart即可

     

5. 其他

     关于ImmortalWrt的性能,因为之前苏苏亮亮的op是5.x内核,而且编译的插件较多。我跑ffmpeg采集编码720p视频,cpu占用率大概40%多,而且用一段时间后,ffmpeg就会卡顿。

    切换ImmortalWrt后,idle状态cpu占用3%, 开启ffmpeg后无视频解码,cpu占用5%; 720p视频静态页面编码,cpu占用12%;720p动态视频编码20%多,综合看,挺满意,而且运行稳定,跑4g网络+ffmpeg,4个小时,视频依旧稳定。

   关于usb模式,因为要使用usb摄像头,所以要让随身wifi工作于从模式,gadget模式,所以在开机脚本中增加了如下代码

##注册adb和rndis
/etc/init.d/gc restart 

##重新连接modem,确保sim卡工作
sleep 25 && /etc/init.d/network restart

##根据所连的外部设备切换gadget或者host,默认是gadget
sleep 3
grep 0 /sys/kernel/debug/usb/ci_hdrc.0/device | grep speed
if [ $? -eq 0 ]
then
echo host > /sys/kernel/debug/usb/ci_hdrc.0/role
fi
exit 0

openwrt的USB主从模式,参考了如下文章:

控制usb行为 · OpenStick项目 · 看云基于msm8916的逆向工程与主线linux移植icon-default.png?t=N7T8https://www.kancloud.cn/handsomehacker/openstick/2637561

 在Openwrt上,如果usb处于从模式(gadget模式),是通过gc工具静态注册rndis和adb设备节点的,所以上述menuconfig配置中,需要安装gc工具,并且开机脚本中增加了重启gc的代码,确保adb端口可以正常工作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值