随身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端口可以正常工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python面向对象编程:魔方法和内置属性

__init__(self)是初始化方法,初始化实例的时候自动调用,方法有一个参数 self,代表当前创建的实例对象。__init__方法在 __new__方法的基础上完成一些初始化工作,不需要返回值。 __new__(cls)是一个静态方法,当实例化一…

【Redis】SSM整合Redis注解式缓存的使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Redis》。🎯🎯 &#x1f4…

C++特殊类与单例模式

一、特殊类 类的特殊设计方式 ①不能被拷贝的类 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝, 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可 在C98中,需要将拷贝构造设置成…

uni-app android picker选择默认月份

微信小程序选中月份后下次再点开是上次的选中的月份&#xff0c;而编译的android应用只默认当前月份 <picker mode"date" ref"picker" :disabled"disabled" :value"date" fields"month" change"bindDateChange&quo…

【ML】分类问题

分类问题 classification&#xff1a;根据已知样本特征&#xff0c;判断输入样本属于哪种已知样本类。 常用入门案例&#xff1a;垃圾邮件检测、图像分类、手写数字识别、考试通过预测。 分类问题和回归问题的明显区别&#xff1a; 分类问题的结果是非连续型标签&#xff0c…

Netty入门指南之传统通信的问题

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言多线程…

基于APM(PIX)飞控和missionplanner制作遥控无人车-从零搭建自主pix无人车无人坦克

前面的步骤和无人机调试一样&#xff0c;可以参考无人机相关专栏。这里不再赘述。 1.安装完rover的固件后&#xff0c;链接gps并进行校准。旋转小车不同方向&#xff0c;完成校准&#xff0c;弹出成功窗口。 2.校准遥控器。 一定要确保遥控器模式准确&#xff0c;尤其是使用没…

轻量封装WebGPU渲染系统示例<20>- 美化一下元胞自动机(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifePretty.ts 系统特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据(内外部相关资源)和渲染机制分离…

redis-plus-plus访问REDIS集群

编程语言&#xff1a;C 开源库&#xff1a;redis-plus-plus 接口类&#xff1a;RedisCluster 初始化需要输入任意一个结点的IP和端口&#xff0c;如果设置了密码&#xff0c;还需要密码的明文并使用ConnectionOptions类。 初始化完成后可以直接进行读/写操作。 RedisClust…

网络唤醒(Wake-on-LAN, WOL)

远程唤醒最简单的方法&#xff1a;DDNSTOOpenwrt网络唤醒&#xff0c;完美实现。 原帖-远程唤醒_超详细windows设置远程唤醒wol远程连接&#xff08;远程开机&#xff09; WOL Web# 访问 Wake on Lan Over The Interweb by Depicus 可以无需借助软件很方便的从网页前端唤醒远…

使用Anaconda安装TensorFlow环境以及没有搜到的报错的解决方法

1.在官网下载Anaconda 这一步几乎不会有人报错 下稳定的版本 或者最新的版本都可以 2.TensorFlow分两个版本 一个是用cpu跑 另一个是用gpu跑 显而易见 cpu的计算性能已经比不上现在主流的显卡了 所以有独显的电脑尽量安装gpu版本 CPU版本: 先给出cpu版本的安装方法: 打开A…

描述低轨星座的特点和通信挑战,以及它们在5G和B5G中的作用。

文章目录 2章4 章5章&#xff08;没看&#xff09;6章&#xff08;没看&#xff09; 2章 将卫星星座中每个物理链路中可实现的数据速率、传播延迟和多普勒频移与3GPP技术报告中的参数进行分析和比较[3]。 相关配置 面向连接的网络&#xff0c;预先简历链路 卫星和地面终端有…

Unraid 无法远程访问 Web UI 的解决方法

在将 Unraid 系统升级到 6.12.1 版本之后&#xff0c;发现无法通过 ZeroTier 或蒲公英在外网访问 Unraid 的 Web 页面&#xff0c;但是直接访问 Docker 的端口可以正常访问。 初步判断&#xff0c;这很有可能是默认的 80 端口出现了问题。Unraid 的 Web 服务器默认监听 80 端口…

自动化测试--验证邮件内容

场景 业务上有许多发送邮件的场景&#xff0c;发送的邮件基本上都是自动发送的&#xff0c;而且邮件内容是很重要的&#xff0c;对于邮件发没发送&#xff0c;发送的时间点对不对每次回归测试工作量太大了&#xff0c;所以考虑把这部分内容加入到自动化测试中 工具 python g…

了解计算机的大小端存储模式

我们在计算机中存储数据时&#xff0c;数据是如何组织和表示的是一个重要的问题。其中一个关键概念是 大小端存储模式&#xff08;Endianness&#xff09;&#xff0c;它描述了多字节数据在内存中的存储方式。本文将介绍大小端存储模式的原理、应用和区别。 什么是大小端存储模…

通过全流量查看部门或客户端网络使用情况

近年来&#xff0c;随着数字化转型和云计算服务的广泛应用&#xff0c;组织和企业对于网络带宽和性能的需求也在不断增长。 网络的稳定性、性能和安全性对于业务流程的顺畅运行至关重要。因此&#xff0c;了解部门或客户端网络的使用情况是网络管理和优化的关键。本文将通过Ne…

Docker数据管理、网络与Cgroup资源限制

目录 一、Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 2.1Docker网络实现原理 2.2Docker 的网络模式 3.3网络模式详解&#xff1a; host模式 container模式 none模式 bridge模式 自定义网络 创建自定义网络 三、Cgroup资源…

Maven修改仓库和镜像地址

目录 1、修改仓库地址2、修改镜像地址 1、修改仓库地址 使用IDEA时,如果不指定自己下载的Maven,idea会默认使用自带的Maven 3&#xff08;bundle)。maven 3默认的仓库路径一般是在c盘的用户文件夹中的.m2目录下&#xff1a; 当maven下的pom文件中的依赖逐渐增加时,maven仓库下…

k8s报错pause 3.2 解决方案

报错 Failed to create pod sandbox: rpc error: code Unknown desc failed to get sandbox image "k8s.gcr.io/pause:3.2": failed to pull image "k8s.gcr.io/pause:3.2": failed to pull and unpack image "k8s.gcr.io/pause:3.2": failed…

Hook函数

在嵌入式系统中&#xff0c;hook函数&#xff08;也被称为钩子函数&#xff09;是一种特殊类型的函数&#xff0c;它会在特定的事件发生时被操作系统内部调用。例如&#xff0c;在实时操作系统&#xff08;RTOS&#xff09;中&#xff0c;如果删除了一个任务&#xff0c;就会调…