随身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.rhkb.cn/news/182598.html

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

相关文章

产品经理入门学习(二):产品经理问题思考维度

参考引用 黑马-产品经理入门基础课程 1. 抓住核心用户 1.1 为什么要抓住核心用户 什么是用户? 所有和产品有关系的群体就是用户,他们是一群既有共性,又有差异的群体组合 做产品为什么要了解用户? 了解用户的付费点、更好的优化产…

Linux Vim撤销和恢复撤销快捷键

使用 Vim 编辑文件内容时,经常会有如下 2 种需求: 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子。 将文件内容恢复之后,经过仔细考虑,又感觉还是刚才修改…

python 机器学习 常用函数

一 np.random.randint "randint" 是 "random integer" 的缩写,表示生成随机整数。 np.random.randint 是 NumPy 库中的一个函数,用于生成随机整数。以下是该函数的一般语法: np.random.randint(low, high, size)其中…

tp6使用Spreadsheet报错:Class ‘PhpOffice\PhpSpreadsheet\Spreadsheet‘ not found

问题提示如下: 可能vendor下的 phpoffice是从别的项目拷贝过来的,所以咋都不行 解决办法是删掉vendor下的phpoffice,用composer重新下载 具体操作:1、在项目根目录下cmd执行下面这条命令 composer require phpoffice/phpspread…

【实践篇】一次Paas化热部署实践分享 | 京东云技术团队

前言 本文是早些年,Paas化刚刚提出不久时,基于部门内第一次Paas化热部署落地经验所写,主要内容是如何构建一些热部署代码以及一些避雷经验。 一、设计-领域模型设计 1.首先,确定领域服务所属的领域 2.其次,确定垂直…

【C++】STL容器适配器——stack类的使用指南(含代码使用)(17)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一、stack 类——基本介绍二、stack 类…

CreateProcess error=206, 文件名或扩展名太长

IDEA编译启动springboot项目时,提示这个异常,可以使用以下方式解决: 打开run-->edit configurations-->选择你启动报错的AppLication,如下图配置即可(仅限于楼主的解决方式,不保证百分百覆盖&#x…

『亚马逊云科技产品测评』活动征文|如何搭建低成本亚马逊aws云服务器

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 0. 环境 win10 火狐浏览器 1. 登录 https://aws.amazon.com/cn/ ->…

6 从物理层到MAC层

1、实现局域网中玩游戏 在早期的80后的大学宿舍中,组件一个宿舍的局域网,以便于宿舍内部可以玩游戏. 第一层(物理层) 1.首先是实现电脑连接电脑,需要依靠网线,有两个头。 2.一头插在一台电脑的网卡上&am…

火山引擎实时、低延时拥塞控制算法的优化实践

摘要 火山引擎智能拥塞控制算法 VICC(Volcano Intelligent Congestion Control)是一种自适应的拥塞控制算法,旨在解决全球不同网络环境下,不同音视频应用对带宽利用率和延时的差异化要求。它结合了传统拥塞控制算法(如…

华为RS设备状态及接口配置命令

1、查看硬件信息 ①查看序列号 查看整机序列号 display esn display sn ②、查看功率 电源功率 display power 查看光模块功率 display transceiver interface gigabitethernet 1/0/0 verbose ③、查看风扇 display fan ④、查看温度 display temperature all ⑤、查看硬…

行业追踪,重构代码,把数据库数据搞坏了

自动复盘 2023-11-06 最近行情好,又有动力搞了,重构了数据库方面的代码,力求更快更稳定的更新数据,结果把数据库数据搞坏了,图有点问题。 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是…

【flutter no devices】

1.在环境变量增加 ANDROID_HOME 值为:C:\Users\Administrator\AppData\Local\Android\Sdk (Android sdk 位置) 2 环境变量的path里面增加2个值: %ANDROID_HOME%\platform-tools %ANDROID_HOME%\tools 3 打开cmd,或者在Android st…

开关电源怎么进行老化测试?有哪些测试方法?

一、开关电源老化测试原理 开关电源老化测试是检测电源长期稳定性和可靠性的重要测试方法。通过模拟开关电源在实际工作环境(如高负荷、高温等)中的长时间使用,来验证其性能、稳定性和可靠性。老化测试的原理主要基于以下概念: 1. 加速老化原理 老化测试…

管理类联考——写作——技巧篇——书写标点符号使用要求规范文档

写作答题卡书写标点符号使用要求规范文档 常用标点符号有逗号、句号、叹号、问号等 11 种,下面一一列举其用法和书写规范。 一、句号 用法:用于陈述句的末尾。 占格情况:占一格,写在格子左下方。 举例: 我看见妈妈走…

g.Grafana之Gauge的图形说明

直接上操作截图 1. 创建一个新的Dashboard 2.为Dashboard创建变量 【General】下的Name与Label的名称自定义 【Query options】 下的Group可以填写Zabbix内的所有组/.*/ , 然后通过Regex正则过滤需要的组名 3.设置Dashboard的图形 我使用文字来描述下这个图 1.我们在dash…

Python用RoboBrowser库写一个通用爬虫模版

目录 一、引言 二、RoboBrowser库介绍 三、通用爬虫模板设计 1、初始化浏览器对象 2、通用页面解析函数 3、爬取流程控制 四、模板应用与实践 总结 一、引言 随着互联网数据的爆炸式增长,网络爬虫已成为获取有价值信息的重要手段。Python作为一门简洁易懂的…

React实现一个拖拽排序组件 - 支持多行多列、支持TypeScript、支持Flip动画、可自定义拖拽区域

一、效果展示 排序: 丝滑的Flip动画 自定义列数 (并且宽度会随着屏幕宽度自适应) 自定义拖拽区域:(扩展性高,可以全部可拖拽、自定义拖拽图标) 二、主要思路 Tip: 本代码的CSS使用…

FreeRTOS_任务通知

目录 1. 任务通知简介 2. 发送任务通知 2.1 函数 xTaskNotify() 2.2 函数 xTaskNotifyFromISR() 2.3 函数 xTaskNotifyGive() 2.4 函数 vTaskNotifyGiveFromISR() 2.5 函数 xTaskNotifyAndQuery() 2.6 函数 xTaskNotifyAndQueryFromISR() 3. 任务通知通用发送函数 3.…

MySQL数据脱敏(Data masking plugin functions)

对于企业而言,数据脱敏可以在数据共享或测试时用于保护敏感数据(如信用卡,社保卡,地址等)。通过对敏感数据进行脱敏处理,组织可以最大限度地降低数据泄露和未经授权访问的风险,同时仍能够使用真…