yanhy的学习记录匣 - 教程 https://yanhy.top/index.php/tag/%E6%95%99%E7%A8%8B/ zh-CN Sun, 30 Mar 2025 17:12:00 +0800 Sun, 30 Mar 2025 17:12:00 +0800 海信HiSense A2Pro 刷国际版系统 刷入面具root https://yanhy.top/index.php/archives/437/ https://yanhy.top/index.php/archives/437/ Sun, 30 Mar 2025 17:12:00 +0800 yanhy2000 前段时间折腾墨水屏,最后发现还不如直接买个成品当阅读器来的快,于是在小黄鱼发现了这个玩意...

整机参数

百度百科图片

  • 系统:Vision 5
  • 安卓版本:Android 7.1.2
  • 存储配置:LPDDR3 4+64GB
  • 屏幕:5.5英寸(AMOLED 1920x1080) + 5.2英寸(墨水屏 960x540)
  • 电池:约3000mah
  • CPU:高通骁龙625
  • 特性:支持侧边指纹、NFC、红外、双频WIFI、3G/4G移动网络

工具资源

通过网盘分享的文件:海信A2Pro
链接: https://pan.baidu.com/s/1mqOTiOcziVDVPRBFGtoIiA?pwd=afuu 提取码: afuu
--来自百度网盘超级会员v5的分享

工具资源列表:

  • [原始]boot.img
  • [修补]magisk_patched-28100_psVzP.img
  • [刷机软件]QPST.2.7.438.zip
  • [国际版]LA8627E1-Hisense-A2T-A2M_GMS_L1413.6.07.04.GMS_MultiDownload_201804102357_user.zip
  • [Fastboot解锁工具]windows-x86.zip
  • [ADB原版工具]platform-tools-latest-windows.zip
  • [9008驱动]Win10_Qualcomm.rar
  • Magisk-v28.1.apk

其他工具(见文章末尾):

  • 国行卡刷包
  • 提取软件
  • [解包Bin2Img工具]sdat2img-master
  • [提取system.img工具]ext2explore-2.2.71

工具资源列表
简单介绍:

  1. 教程均在Windows系统上运行,理论支持win7\8\10\11
  2. 刷机包为全量国际版刷机包,这个版本内没有人脸解锁,但包含谷歌全家桶。
  3. [Fastboot解锁工具]windows-x86.zip 这个工具来自hisense-a9/unlockbootloader,经过测试,发现A2Pro(A2T)也可以解锁,无需联网验证、登陆账号等任何操作,只需要一条指令即可。
  4. Magisk-v28.1.apk软件来自GitHub项目Magisk
  5. [原始]boot.img[修补]magisk_patched-28100_psVzP.img 为原版国际版包中的boot和面具修补过的boot,面具版本为 Magisk-v28.1.apk,解锁后可直接刷入修改后的boot以获取root,或者自行修补boot。
  6. [刷机软件]QPST.2.7.438.zip 建议使用文章提供的版本,由于网上教程和刷机包都是很多年前的,我自己没试过新版能不能刷入,因此建议和文章的版本一样。

刷机与解锁

我自己的尝试是先刷入国际版系统,然后解锁BootLoader,最后刷入修补后的boot以实现root,因此该教程按我自己尝试路线进行。
刷机包提供的是国际版固件全量刷机包,如想刷其他国行固件,解锁等教程理论上都适用。
国际版系统我认为的几个好处:广告少,预置乱七八糟软件少,安装器很精简没有杀毒等,低耗电等。

一. 刷机

1. 环境部署

  • 安装软件 [刷机软件]QPST.2.7.438.zip
  • 解压刷机包 [国际版]LA8627E1-Hisense-A2T-A2M_GMS_L1413.6.07.04.GMS_MultiDownload_201804102357_user.zipA2T 文件夹
  • 安装驱动 [9008驱动]Win10_Qualcomm.rar
  • 解压工具 [ADB原版工具]platform-tools-latest-windows.zip[Fastboot解锁工具]windows-x86.zip

2. 连接手机

注意:如果手机A2P是二手购买且恢复过出厂设置的,务必在恢复出厂设置后插入一次正常的SIM卡以激活USB(不消耗流量,可以不开数据流量),海信A2Pro手机有USB防护,必须插入一次SIM激活才能连接电脑传数据,否则只支持充电,无法用数据传输、安装驱动、USB调试等功能。
  • 将手机USB连接到电脑(确保USB线材是可以传输数据的,而非仅充电线)
  • 选择连接方式:安装光盘 ,此时电脑出现新的盘,打开后安装驱动(可选是否重启,如后面无法识别手机可以重启)
  • 开启开发者选项,开启USB调试
  • 打开手机拨号,输入 *1973461# ,会跳出一个系统信息(界面),点击调试设置,勾选自动加载USB设备。
    工程模式截图1
    工程模式截图2

3.配置刷机

  • 重新插入手机,选择仅充电,下面确保打开USB调试开关
  • 打开解压后[ADB原版工具]platform-tools-latest-windows 文件夹,在上方地址栏输入cmd并回车
    ADB工具文件夹
  • 在cmd窗口内输入指令确保已经识别到设备 以重启手机到刷机模式(BootLoader Mode)

    adb devices

    查看ADB设备
    如果显示未信任并且手机有弹窗选择是否信任计算机,需勾选信任并确认,然后再次执行指令和上图差不多

  • 在cmd窗口内输入指令以重启手机到9008刷机模式(EDL Mode)

    adb reboot edl
  • 打开软件QFIL(一般安装QPST后会在开始菜单内出现图标,或者在开始菜单-QPST文件夹内)
    QPST文件夹
  • 选择端口,打开软件后一般会自动识别到9008端口,如果未显示可手动点击按钮 SelectPort 来选择端口。
  • 在第一栏 Select Build Type 中选择 Flat Build
  • 在第二栏 Select Programmer 点击按钮 Browse ,选择前面解压刷机包文件夹内的prog_emmc_firehose_8953_ddr_000460e1.mbn
  • 在第四栏 Download 点击按钮 LoadXML ,第一次弹窗选择刷机包文件夹内的rawprogram_000460e1.xml,第二次弹窗选择patch0.xml
  • 注意:在选择配置完成后,拔掉手机的SIM卡与TF卡,断开电脑的互联网连接(如拔掉网线、从路由器那边禁用设备外网等)
  • 点击蓝色的Download按钮,即可开始下载固件。几分钟后下载完成后显示success字样,并确保进度条走满后断开usb,手动长按电源键重启。(按理来说会自动重启,但是刷机时未能重启)

QFIL完整配置

  • 重启后进入国际版系统,可自行选择删除预置软件。

二. 解锁与Root

在开机状态下,打开开发者选项,勾选USB调试,勾选OEM解锁

如果想自己根据刷机包的boot来修补以root可以看下面这段,如果用文章内修补后的boot可跳过这段直接到刷入部分

1. 修补boot

  • 连接手机USB到电脑,选择文件传输,将 Magisk-v28.1.apk[原始]boot.img(或刷机包内的boot.img)复制到手机内,在手机文件管理内安装面具
  • 打开面具,点击Magisk一栏的安装按钮,点击下一步,方式栏点击 选择并修补一个文件 ,使用文件管理器选择boot.img文件,开始修补
  • 修补后的文件会在Downloads文件夹内,使用数据线传到电脑上

2.解锁BootLoader

  • 打开解压后[ADB原版工具]platform-tools-latest-windows 文件夹,在上方地址栏输入cmd并回车
  • 在cmd窗口内输入指令以重启手机到BL模式(BootLoader Mode)(备注:经踩坑测试,发现重启到fastboot会正常开机,只有BootLoader下可以刷机,也就是不存在fastboot)

    adb reboot bootloader
    # 刷机后仍需要插入SIM卡来激活USB,并且需要重新在弹窗勾选信任计算机
    # 等待两秒后,输入指令查看手机是否进入了BootLoader模式
    fastboot devices
    # 如果列表中有设备则为正常

    Fastboot设备列表

  • 打开解压后的文件夹[Fastboot解锁工具]windows-x86 ,进入文件夹\windows-x86\bin,在上方地址栏输入cmd并回车打开
  • 在新的cmd窗口输入指令以解锁手机

    fastboot Hisense unlock
  • 出现OKEY字样即为解锁成功,可关闭该cmd窗口。

3.刷入修补后的Boot

回到之前的CMD窗口,输入指令来刷入修补后的boot镜像

fastboot flash boot <敲空格后将boot镜像文件直接拖入>

刷入Boot镜像

如显示OKEY且没有错误信息,则刷入成功,输入指令重启

fastboot reboot

4.开机验证

开机后,打开Magisk软件,即可看到安装成功的版本信息

面具软件内信息

可正常授权root权限
面具授权MT管理器
MT管理员可正常调用SU权限
DevCheck检测出Root

关于该手机其他资料补充

连接USB到电脑没反应

海信的手机(不确定是不是都这样)在恢复出厂设置后需要 插入一次正常的SIM卡以激活USB (不消耗流量,可以不开数据流量),海信A2Pro手机有USB防护,必须插入一次SIM激活才能连接电脑传数据,否则只支持充电,无法用数据传输、安装驱动、USB调试等功能。

不小心卸载一些软件如何找回

在内置的应用商店-应用恢复可以安装找回
如果为了精简系统禁用了应用商店或者单纯不想使用,可以在拨号盘输入 *#*#20019994#*#* 打开预置应用找回设置

刷了国际版没有天气小工具

刷机后发现墨水屏的天气一栏和主屏幕的时间与天气小组件,无法获取天气,说是要安装,但是安装总会失败,是因为国际版固件没有天气APP,只有Google提供的新闻与天气。在本文提供的资料文件里面已经从国行版固件提取出天气APP了,Chinaweather.apk,直接安装后即可使用,小组件也可以正常获取天气。

提取方法

国行更新包目前只有卡刷OTA包,我找到一个相对全的Full包 A2T_L1467.6.07.01.00_full.zip,里面有Boot.img与更新的system.new.dat(或许也可以通过这个包9008刷入后,通过修补boot来实现国行固件root)。因此需要两个工具,[解包Bin2Img工具]sdat2img-master.zip该工具可以将更新文件合并到system.img,使用方法:

python sdat2img.py system.transfer.list system.new.dat system.img

转换为system.img后,使用工具[提取system.img工具]ext2explore-2.2.71,加载该文件,即可看到内部全部文件。右键文件点击save,可将文件提取到外面。

其他有用的记录

*#*#4636#*#* ——服务菜单
*1973460# - FTMode
*1973461#或*#*#3647#*#* - 系统信息
*1973462# -操作员测试
*#0000# ——系统信息
*#06# -IMEI

参考资料

本文参考资料:

]]>
0 https://yanhy.top/index.php/archives/437/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
[联想MiiX2-11]旧WIN平板折腾记-解锁BIOS https://yanhy.top/index.php/archives/421/ https://yanhy.top/index.php/archives/421/ Wed, 30 Oct 2024 17:01:00 +0800 yanhy2000 接上文,从社区发帖中发现该平板温度高了后降频严重,同时期同配置其他厂家平板则能稳定性能,因此可能是工程师性能调教问题。从社区发现一篇外网文章,以解锁BIOS高级选项,或许有些帮助。
注:本文内容为翻译转载,原贴:https://patrikesn.wordpress.com/2015/01/11/guide-unlocking-the-hidden-bios-pages-on-lenovo-miix-2-11/

(中文翻译)[GUIDE] 解锁联想Miix 2 11隐藏的BIOS页面

在联想社区论坛上,我的用户名是‘iseon’,我们一直在讨论Miix 2 11的性能问题。似乎这款平板电脑的性能问题源于固件设定的电源限制。我一直试图寻找一种方法来绕过这个电源限制,并认为可能在BIOS设置中。我已经发现了一种解锁BIOS所有高级设置的方法,并进行了一些初步的实验。但遗憾的是,我还没有在解锁的BIOS中找到可以移除电源限制的设置。

所以,如果你只是想提高平板电脑的性能,那么这个BIOS解锁并不能保证你能够做到这一点!尽管如此,隐藏的BIOS高级页面包含了一个巨大的设置列表,可能有一些设置对其他用途很有用——那些想要完全控制平板电脑设置的人可能会想要这样做。我强烈建议只有高级用户继续操作——但我已经用初学者友好的方式编写了这份指南,以便任何感兴趣的人都可以跟随。对于你因操作不当导致设备故障,我概不负责。请谨慎操作,我能保证的只是这在我的平板电脑上有效。

这个BIOS修改不会使你的保修失效,这里所做的任何更改都可以通过加载默认BIOS设置或移除电池重置BIOS来恢复。我在BIOS版本97CN37WW上测试了这个修改,但它可能也适用于97CN39WW(解压缩的BIOS设置页面看起来是一样的)——如果你想尝试其他版本,由你决定,可能会成功,也可能不会。版本97CN39WW增加了一些额外的UEFI安全措施,这可能会阻止你进行此操作——我没有尝试过。它应该适用于i3和i5版本(我使用的是i5)。

在开始之前,这里有一些解锁的BIOS图片(我最近重置了BIOS,所以日期都是错误的):
pic1
pic2
pic3


指南开始:

  1. 为了解锁隐藏的BIOS高级设置,我们需要使用Linux来访问UEFI变量——但Windows用户不用担心,不需要安装Linux,你只需要将可启动的Linux版本放在USB驱动器上并从那里启动。Ubuntu用户友好,可以从USB驱动器启动,并且拥有我们需要的所有工具,所以我们将在这个指南中使用它。从这里下载Ubuntu 14.10 64位桌面版本,大约1GB:Ubuntu下载链接

我们将使用Rufus将Ubuntu ISO放到USB驱动器上,下载链接:Rufus下载链接

  1. 下载完成后,插入一个空的USB驱动器(或者装满无用数据的驱动器),确保它足够大以容纳Ubuntu镜像。启动Rufus并使用它将镜像文件复制到USB驱动器——以下设置对我来说有效:
    pic4
  2. 复制完成后,关闭平板电脑,插入你的Ubuntu USB驱动器(如果尚未插入)。按住音量增加按钮和电源按钮几秒钟,直到你看到屏幕亮起,松开按钮,你应该会看到一个启动选项屏幕(可能需要尝试几次才能正确操作)。选择Boot Menu,在下一个屏幕上选择你的USB驱动器以启动Ubuntu。(如果你没有看到USB驱动器或者平板电脑提示Secure boot问题,用同样的方法启动平板电脑并进入BIOS设置,禁用Secure Boot,并确保启用USB启动)。在下一个屏幕上,选择“Try ubuntu without installing”。
  3. 启动Ubuntu后,你首先要做的是让WiFi工作(因为我们需要下载一些软件),WiFi默认不工作,所以按Win+Tab打开一个新的终端并搜索‘Terminal’。
    pic5
    在终端窗口中,输入以下内容:
    pic6
  4. 现在你可以点击右上角的WiFi图标,登录到你的WiFi网络。
    接下来,你需要启用一些软件仓库以能够下载所需的软件。按Win+Tab并输入software,点击出现的第一个图标:
    pic7
    启用“community-maintained free and open source software”。
    pic8
    关闭窗口,当询问是否更新软件源时,点击“是”。
  5. 进入现有的终端窗口(或打开一个新的终端窗口),执行‘apt-get update’并安装Ghex应用程序(我们将需要它来编辑一些UEFI BIOS变量),在所有提示中都回答“是”:

    sudo -i
    apt-get update
    apt-get install ghex
  6. 接下来,在终端窗口中输入以下内容(你可以输入部分目录名并按Tab键自动补全,特别是文件名,只需输入‘OilSetup-’并按TAB键,你将得到正确的文件)。

    ghex /sys/firmware/efi/efivars/OilSetup-88d1911c-ab4a-4335-9e9a-26be9081acc3

    pic9

  7. 现在我们已经打开了ghex应用程序,并且直接编辑UEFI BIOS变量(小心操作!)。在这个文件中,每对十六进制数字(在这种情况下包含0和1)代表一个字节的数据,这个文件包含UEFI BIOS设置数据,字节值为1表示启用,值为0表示禁用。这个文件中的一个字节值为‘1’隐藏了一个包含BIOS高级设置的页面。我们只需将这个‘1’翻转为‘0’,就能看到隐藏的页面。我已经使用UEFI BIOS IFR提取器来找到这个设置字节在这个文件中的位置。所以你只需要像下面所示将‘1’设置为‘0’。用指针点击值并输入0。请非常小心,确保你只按照下面所示进行编辑:
    pic10
    pic11

现在执行文件->保存并关闭应用程序,你就完成了BIOS的编辑!恭喜!
关闭计算机,拔掉USB驱动器,再次按住电源+音量上键启动计算机,进入BIOS,你将在BIOS启动屏幕上找到两个新的红色页面!太棒了!高级页面包含许多与电源、热管理、芯片组功能等相关的设置。主页面包含一些常规设置,类似于默认存在的主页面。在更改高级设置时要非常小心,特别是处理器电源屏幕上的自定义TDP设置——我发现这个特定设置会使平板电脑无法启动(到目前为止我更改的其他设置没有使平板电脑无法启动)。

如果你更改了某些设置并且平板电脑无法启动,你需要打开后盖并将电池从主板上拔下(小圆形电池和主电池都要拔下),这将重置BIOS,你可能需要使用Windows救援USB驱动器来使你的Windows安装再次可启动。如果你打算进行实验,请提前制作Windows/Linux恢复USB。

如果你已经解锁了BIOS并尝试了设置,请发表评论分享你的发现!

转载结束

]]>
0 https://yanhy.top/index.php/archives/421/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
[联想MiiX2-11]旧WIN平板折腾记-初步了解 https://yanhy.top/index.php/archives/416/ https://yanhy.top/index.php/archives/416/ Wed, 30 Oct 2024 16:38:00 +0800 yanhy2000 去年同事送了我一个平板,联想MiiX2-11触控平板笔记本。当初玩了一下,性能很低,出厂默认win8.1。由于屏幕边角老化和电池鼓包,当平板可玩性也不大就一直在吃灰。前段时间收拾东西再次发现这玩意,查了一下配置还行,试试看能不能做个小服务器~

机型图片

图片来自网络

配置

图吧工具箱配置信息

介绍

发售于2014年,机身11.6寸屏幕,带有配套键盘;机身上有一个USB接口,可传数据或者充电(没错这玩意充电接口是usb)。通过接上键盘后可以拓展两个usb,键盘左右侧各一个usb2.0接口,不能充电。
续航这一块暂且不看,电池已经鼓包,后续要拆卸下来的。屏幕后续也不需要了,计划用上面的MicroHDMI接口进行调试,其余使用远程控制。
机身有扬声器麦克风,和前后摄像头。不过也就是能用的程度。板载网卡仅支持2.4Ghz频段。
我这台是i5的配置,市面上也有四代i3的配置。i5这款理论主频1.6Ghz,最高2.0Ghz。核显为Intel HD 4200,显存128MB,理论可以看H264解码4k视频,不支持h265等新编解码技术。
内存为ddr3 4GB,不可拆卸。硬盘内置128GB SATA,据社区分享是MSATA,或许可以自行更换扩容。

来自百度:
1、支持windows 8.1操作系统,办公娱乐无障碍;2、超强的双核
3、全高清ISP屏;4、WIFI网络无极限,更有3G版本
5、超长8小时待机;6、轻薄的机身
7、多功能键盘底座;8、拥有前后设想图
9、Intel Hasewell 双核处理器

系统与驱动

我这台已经刷入了tiny10,系统镜像链接:https://archive.org/details/tiny-10_202301
刷入后仍需打一堆驱动,所幸官方驱动入口还没有关闭,官网服务入口:https://newsupport.lenovo.com.cn/products_index.html?fromsource=products_index&selname=IdeaPad%20MIIX2-11

以防万一官网下架,导致老设备没得折腾,备份了一手(仅备份了官方win10的驱动)
主:https://www.123865.com/s/Dpq0Vv-8ueHd?提取码:Lj2E
备:https://www.123684.com/s/Dpq0Vv-8ueHd?提取码:Lj2E

折腾方向

1、挂机宝 功耗仅10w左右的挂机宝,办公性能还可以
2、win服务器 系统支持虚拟化,可以用wsl、docker等挂一些简单的服务
3、linux服务器 实测刷入ubuntu后,wifi等外设可以免驱驱动,但亮度、电池等仍无法识别,不过也方便折腾了
4、小型nas 虽然只有一个硬盘位,但可以作为一个小型文件站,低功耗也挺不错的

本文先到这里,简单介绍了这个板子。后续会有更多折腾,比如解除BIOS高级菜单等。这块板子社区普遍反应温度高了降频严重,因此计划拆出来主板,设计个简单外壳并加上风扇,尝试让其稳定运行服务。

]]>
0 https://yanhy.top/index.php/archives/416/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
推荐一个Windows激活工具 HEU-KMS https://yanhy.top/index.php/archives/381/ https://yanhy.top/index.php/archives/381/ Thu, 27 Jun 2024 18:33:00 +0800 yanhy2000 写个文章做个记录,便于以后查找,顺便也推荐下这个稳定的软件~

软件界面

截图版本:42.0.4

软件打开后界面

可能听名字有人有点耳熟,但是对这个软件本体很陌生,那么切换一种UI,就眼熟很多了
在软件右上角 三条横 的设置中,选择“经典界面”,即可打开

软件的“经典界面”

眼熟了吗?
没错,作者至今一直在更新,更新在微信公众号和Github上

如何还原到新版本界面:删除同目录下的Set.ini,再重新打开软件即可恢复

软件与配置文件

下载链接

Github: https://github.com/zbezj/HEU_KMS_Activator/releases/
公众号:《更新:HEU KMS Activator v42.0.4》
附图:公众号获取方式
公众号获取方式

简单的使用说明

激活Windows系统与Office套件

打开软件后,什么都不需要做(记得同意使用协议),点 开始 按钮即可开始自动激活。如检测到电脑上没安装Office则会自动跳过。

直接点开始即可自动激活

点击按钮后,软件下方会出现进度条,静静等待即可(个人经验约1-5分钟,可不联网)。
激活完成后,会弹窗结果。演示机未安装Office因此显示只有Windows激活结果。可重复激活,不担心掉激活或者覆盖等。

激活成功弹窗

验证激活结果

Windows:打开系统设置 - 更新与安全 - 激活,即可看到激活结果。演示机使用精简的win10系统,因此激活部分有bug可忽略。

正常情况下系统显示激活序列号等

Office:随便打开个软件如word,点左上角文件 - 左下角账户,可以看到右侧产品已激活且显示激活的版本

用自己电脑的Office的局部截图

到此,简单的激活方法就结束了,软件可以继续收藏吃灰或者直接删除~

部分问题的处理

KMS激活续期:在一些特殊条件下,会触发KMS激活方式。KMS的激活有180天的期限,因此要在一开始激活时勾选KMS自动续期。如激活完成后才发现是KMS激活,可以勾选后进行第二次激活。部分杀毒软件在KMS自动续期补丁安装时报毒,可以手动加白名单或者信任列表即可。

Office的盗版Banner警告:有时候在部分版本的Office软件内,打开时会在上方弹出一个Banner显示类似于“你可能是盗版的受害者”。此时可以打开HEU-KMS软件,然后选择最后一栏。

选择“其他”栏

在Office R2V/管理工具部分,选择Office版本,下方选择Fix_banner项,然后点击开始,等待修复完毕即可。

选择Fix_banner

更换Windows版本:有时候安装时手快点成了家庭版,但是家庭版阉割了很多东西(如Hyper-v、组策略管理器等),可以用HEU-KMS来转换Windows版本。
打开软件,选择“其他”栏,选择左上角的“更改Windows10/11版本”。在下拉框中,选择你想修改的版本。

Windows版本选择项

通常比较受欢迎的是ProfessonalWorkstation(专业工作站)版本,此处的演示机系统也是专业工作站版本(人均工作站(bushi))。选择完成后,点击右侧花瓣图表,点击确定按钮开始转换。为方便演示,这里选择专业版来转换。

转换Windows版本开始

转换成功后,会有弹窗提醒并要求重启计算机,一些改动也即将发生。

转换完成

如果此时打开设置查看系统版本,会发现已经转换成功,但尚未激活。重启后重新进行激活即可完成。(点击确定按钮并不会强制重启,可以保存好文件后手动点击重启)

转换到专业版成功

其他玩法还有很多,如至今半死不活的数字激活(一些曾经数字激活的电脑上还留着TPM信息,重装后仍然可以数字激活)、KMS激活(手动强制使用KMS激活)、OEM激活(模拟品牌电脑的操作)等,还能自建激活服务器,可以自行研究研究,对我来说这玩意就是在u盘里面吃灰,装完系统后第一个走过场然后继续吃灰的实用小工具

来自作者的免责声明

来自作者的免责声明

本文到此结束,希望这篇文章有帮到你~

]]>
0 https://yanhy.top/index.php/archives/381/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
windows下使用certbot续订/申请SSL域名证书 https://yanhy.top/index.php/archives/358/ https://yanhy.top/index.php/archives/358/ Wed, 19 Jun 2024 15:40:00 +0800 yanhy2000 有好一段时间没更新博客了,自从运营的MC服务器社区解散后,空余时间多起来了,可以去研究一些新的玩意了~

certbot Windows版本 Github下载链接

脚本内容

本文简单分享一下在windows系统下,使用certbot程序续订/申请SSL证书,为此我简单写了个Bat脚本可供使用。

07/10 更新:在系统用户非管理员情况下需要脚本提权才能运行,因此修改脚本使其可以打开后提权
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

echo 请确保安装了Certbot,如未安装可以前往下载 https://github.com/certbot/certbot/releases/download/v2.9.0/certbot-beta-installer-win_amd64_signed.exe
echo 脚本作者by.yanhy2000
echo 申请证书需要准备一个邮箱,邮箱第一次申请会自动注册,只需要两次输入"y"并回车即可
echo 验证证书需要手动添加修改DNS的TXT记录
set /p email="请输入您的邮箱地址: "
set /p domain="请输入您的域名: "

certbot certonly -m %email% -d "%domain%" -d %domain% --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

if %errorlevel% neq 0 (
    echo 证书申请过程中发生错误。
    pause
    exit /b %errorlevel%
)

echo 证书申请成功。
pause

其中,执行certbot程序的指令简单分析一下

certonly 安装模式
-m 申请证书所需的邮箱
-d 申请证书的域名
--manual 使用交互式或脚本钩子的方式获取证书
--preferred-challenges dns 使用 DNS 方式校验域名所有权
--server Let's Encrypt指定的V2版本接口

因此,只需要传入邮箱和域名,即可开始申请证书。

使用方法

填入邮箱和所申请的域名
如果邮箱第一次申请,会提示注册等,可以直接输入y回车(可能有两次)
随后会提示这样(域名和记录值为虚拟)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.www.test.com.

with the following value:

aaaaaaaaaaaaaaaa

Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.oooyn.top.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

此时不要按回车,前往域名注册站(如阿里云域名、腾讯云的DNSPod等),为目标域名添加一条记录:

  • 主机记录为“_acme-challenge.www.test.com.”去掉其中的主域名,也就是“_acme-challenge.www”
  • 记录类型为TXT
  • 记录值为上文中“aaaaaaaaaaaaaaaa”的内容

添加完成后,等待几分钟(最快几十秒也可能,dns解析和缓存需要时间),然后在命令行敲下回车键,等待验证。
如果不确定有没有解析好的话,可以先清理一下本地的DNS缓存,然后手动本地验证一下是否解析成功,再去回车。否则失败后需要重新解析DNS。

  • 本地清理DNS缓存方法:win+r,输入CMD回车,输入ipcondif /flushdns回车
  • 本地测试TXT解析方法: win+r,输入指令回车nslookup -qt=txt _acme-challenge.test.com

    服务器:  DNS1.aaaaaa.net
    Address:  1.2.3.4
    
    非权威应答:
    _acme-challenge.text.com       text =
    
          "aaaaaaaaaaaaaaaaaaaaaaaa"

回车后待显示以下内容即为成功,证书文件在 C:\Certbot\live 目录内,取出可部署需要的地方。

Successfully received certificate.
Certificate is saved at: C:\Certbot\live\example.top\fullchain.pem
Key is saved at:         C:\Certbot\live\example.top\privkey.pem
This certificate expires on 2023-08-05.
These files will be updated when the certificate renews.
​
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
​
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

查错

问题一

Certbot failed to authenticate some domains (authenticator: manual). The Certificate Authority reported these problems:
  Domain: www.test.com
  Type:   dns
  Detail: DNS problem: looking up TXT for _acme-challenge.www.test.com: DNSSEC: DNSKEY Missing

Hint: The Certificate Authority failed to verify the manually created DNS TXT records. Ensure that you created these in the correct location, or try waiting longer for DNS propagation on the next attempt.

Some challenges have failed.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details.
证书申请过程中发生错误。
请按任意键继续. . .

dns尚未解析好,需要多等一会。如果等很久还是失败,可以试试看清理本地的DNS缓存

问题二

Saving debug log to C:\Certbot\log\letsencrypt.log
An unexpected error occurred:
requests.exceptions.SSLError: HTTPSConnectionPool(host='acme-v02.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile C:\Certbot\log\letsencrypt.log or re-run Certbot with -v for more details.
证书申请过程中发生错误。
请按任意键继续. . .

电脑网络通讯问题,检查是否开启了代理,关闭代理即可

]]>
0 https://yanhy.top/index.php/archives/358/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
随身wifi折腾入门(番外)-- openwrt优化使用 https://yanhy.top/index.php/archives/338/ https://yanhy.top/index.php/archives/338/ Wed, 19 Apr 2023 18:18:00 +0800 yanhy2000

本篇与debian同,随缘更新,记录实用操作

使用环境

使用esim卡

使用@苏苏小亮亮的openwrt 2022-06-05

棒子板号:001B 512MB+4GB

使用电脑usb连接,wifi作为调试

刷入系统

系统发布页面:https://www.kancloud.cn/a813630449/ufi_car/2792820

刷入方式可见棒子第三章,进入fastboot后,执行压缩包内的fastboot.bat,多次回车刷入即可成功

如果进不去fastboot,可在9008模式格式化boot分区,再次上电自动进入fastboot

优化使用

由于openwrt的无线驱动尚未解决,因此连接热点网速会很慢,目前没有好的解决方法,因此本文主要满足通过usb供网,并分享ipv6地址,热点仅作为管理端。

更换modem

使用sftp连接openwrt,然后将之前系统备份的 NON-HLOS.bin 文件解压或者通过镜像软件打开,将里面全部文件提取出来,再上传到 /root 目录中(可直接通过ssh远程软件自带的文件管理器上传,原理相同)

上传完成后,执行指令,将文件移动到 /lib/firmware

mv ./IMAGE/* /lib/firmware/

切换esim卡

正常来说,这个版本的openwrt是可以直接读取外卡槽的,如果想使用esim卡,则需要手动切换。因为有些软件包和debian系统不一样,但原理相差不多,所以修改部分指令并直接扔到 rc.local 内依旧是可以使用的。

打开网页管理,进入 系统-启动项-本地启动脚本 ,加入一行在原有的指令之前:

echo 255 > /sys/class/leds/sim\:sel/brightness

重启系统,在ssh输入 mmcli -m 0 即可查看esim连接状态,此时会显示disable

再执行指令:

mmcli -m 0 -e

即可启用sim卡

此时openwrt即可使用sim卡上网,重启之后仍然正常联网

增加虚拟内存

棒子本身内存只有0.5GB,且openwrt很多服务会运行比debian多且频繁,通过虚拟内存可以增加一定的稳定性。这里由于棒子存储只有4GB,装完openwrt后仅剩余2.7GB,且重点不在于跑docker等服务,因此创建800MB的虚拟内存即可够用。

在 ssh 控制台输入指令创建个分区文件:

dd if=/dev/zero of=/usr/swap bs=1M count=800

输入指令查看创建的分区大小是否为800MB:

du -sh /usr/swap

将分区文件设置为swap分区文件,并启用分区:

mkswap /usr/swap
swapon /usr/swap

设置开机自动挂载swap分区,一键指令(如果已经添加了挂载其他分区请勿使用该指令,会覆盖全部内容):

echo /usr/swap swap swap defaults 0 0 > /etc/fstab

也可以手动在文件 vi /etc/fstab 最后一行添加: /usr/swap swap swap defaults 0 0

在openwrt网页端 系统-启动项-本地启动脚本,最后一行添加:

swapon /usr/swap

保存并执行重启后,输入 free -m 指令即可看到swap分区添加成功。

如果磁盘不够用等原因想卸载swap分区,可执行指令:

swapoff /usr/swap
rm /usr/swap

/etc/fstab 内删除前面添加的那一行内容,并删除openwrt网页端 系统-启动项-本地启动脚本 内的前面添加的指令,即可完成卸载swap。

目前先到这里,剩下的随缘更新...

资料参考

开启swap分区

debian优化使用

]]>
0 https://yanhy.top/index.php/archives/338/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
小米5刷入MIUI出现“查找手机存储损坏” https://yanhy.top/index.php/archives/337/ https://yanhy.top/index.php/archives/337/ Wed, 19 Apr 2023 15:43:00 +0800 yanhy2000

如果刷入其他系统如Los后再刷回MIUI,有概率出现“查找手机存储损坏”导致无法开启查找手机,更严重者出现“检查设备安全信息出错”而无法登陆小米账号,从而被迫变成账号锁黑机。网上查找了一下,最后通过9008线刷方式解决

下载线刷包

个人推荐一个很好的小米ROM网站,提供全部线刷包、卡刷包及国行、全球包

地址:https://xiaomirom.com/

解压修改线刷包

参考文章:https://www.hu60.cn/q.php/bbs.topic.98330.html?showBot=1

使用Bandizip或者其他压缩软件进行解压,需要解压两层,最后得到以下文件夹:

如需要解决“查找手机存储损坏”等问题,需要进入 images 文件夹,打开 rawprogram0.xml 文件,搜索 persist ,在同一行左侧的 filename="" 修改为 filename="persist.img" ,保存

下载MiFlash工具

还是在XiaomiRom网站下载,米5的话推荐下载2018版本,注意不要勾选全部删除并lock,这样会导致手机BL锁重新锁定

地址:https://xiaomirom.com/download-xiaomi-flash-tool-miflash/

下载完打开软件,选择路径 刷机包解压路径/images ,提示未找到脚本确定即可,9008刷机不需要线刷脚本

手机进入9008模式

社区内有很多方法能进,如果手机有解锁bl的话,可以用 fastboot oem edl 进入9008,否则需要拆机短接(工程线未尝试过,由于自己的米5经常拆机,所以一分钟就可以解决,没去魔改线材)

先插上手机端的typec防止不方便用力插入;电脑端usb拔出;镊子等短接右侧触点(此时需要关机,原贴说拔电池,其实不需要);短接保持,插入电脑端usb,听到设备接入声音即可松开短接;查看设备管理器是否有9008端口设备,如果有即可开始刷机;

图片来自贴吧:https://tieba.baidu.com/p/5077676617

刷机

在miflash内点击加载设备,选中设备,点击刷机即可开始,需要等待3分钟左右也可能更快

刷机结束后会显示finish,此时断开usb,手机先不急装后盖,长按电源键开机(可能需要10秒,因为要长按重启退出9008),等待3到5分钟开机进系统后,如果不提示“查找存储损坏”之类的即可正常联网登陆使用

退出小米云账号(可选)

在查看了不少地方的经验,看到有人说可以在小米云退出查找设备,再次联网即可重新登录账号。不确定是否有用,在开机之前我先退出了小米云查找设备,然后再开机,一切正常,重新登录账号即可使用

来源:https://web.vip.miui.com/page/info/mio/mio/detail?postId=3862195 评论区

]]>
0 https://yanhy.top/index.php/archives/337/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
随身wifi折腾入门(番外)-- debian优化使用 https://yanhy.top/index.php/archives/336/ https://yanhy.top/index.php/archives/336/ Tue, 18 Apr 2023 12:33:00 +0800 yanhy2000

注意:ipv6部分未完篇,但方法可行,如有建议可评论区留言,后面随缘更新...

本来这篇文章是为了ipv6热点而写的教程,后面发现方法很多但是争议也多,因此干脆作为日常使用及优化的记录篇,在本篇可以看到使用sim卡、切卡、网桥、led控制、更改usb模式等多个玩法,可按需学习使用...

环境与工具

本文使用 酷安@jsbsbxjxh66 大佬的ufi001b-debian超频版1.2Ghz Debian进行修改

使用esim卡环境(如使用实体卡可跳过切esim卡步骤)

使用电脑进行连接(需打开cmd进行adb操作,以及ssh工具)

制作网桥

本节修改内容:
网关:192.168.2.1
选卡:esim
网桥:br0

新建网桥br0

先使用 adb shell 删除全部的连接,如 nmcli c del wifi usb

使用ssh或者adb shell连接后,使用指令新建个网桥,并新建两个从机,为usb与wifi,执行指令:

nmcli c add type bridge ifname br0 con-name br0 ipv4.method manual ipv4.addresses 192.168.2.1/24 ipv4.gateway '' ipv4.dns '223.5.5.5'
nmcli c add type ethernet ifname usb0 con-name usb-share
nmcli c add type bridge-slave ifname usb-share con-name usb-share master br0

修改默认网关

修改 /etc/dnsmasq.conf 最后两行

listen-address=192.168.2.1
dhcp-range=192.168.2.10,192.168.2.254,12h

执行重启 adb reboot ,重启后再次输入 adb shell 进入终端,此时usb是无IPV4分配的,执行指令

systemctl enable dnsmasq.service
systemctl start dnsmasq.service

再次重启后,即可分配到usb的ipv4,可以通过ssh连接

添加wifi网络

通过ssh连接debian后,执行 nmtui ,选择 编辑连接 ,选择网桥br0点进去,手动添加一个wifi连接。

常用修正

接下来的内容按需采取,ipv6部分存在争议,可自行尝试

替换 HT40 驱动(可选)

将驱动文件上传到root目录,执行指令覆盖原驱动即可

mv wcn36xx.ko /lib/modules/5.15.0-handsomekernel+/kernel/drivers/net/wireless/ath/wcn36xx/

替换基带文件

使用sftp连接至debian,将之前全分区备份中的 NON-HLOS.bin 文件使用7z打开或者软碟通打开,将里面的IMAGE拖出来,并通过sftp上传到debina root目录

执行指令,替换 /lib/firmware 内的驱动文件

mv IMAGE/* /lib/firmware/

切换esim卡

sim:sel 为esim卡的位置,如果要切换到sim卡槽,一般为 sim:sel2 ,可以用指令看一下列表内是否有sim:sel2

ls /sys/class/leds/

如果没有 sim:sel2 则默认外置卡槽,可按需切换esim

输入指令 mmcli -m 0 ,如果显示有内容但显示 sim-missing ,此时则为卡槽模式,可插入自己的卡。

切换esim卡可直接修改 /etc/rc.local 文件,使开机自动修改

!/bin/sh -e
echo 255 > /sys/class/leds/sim\:sel/brightness
modprobe -r qcom-q6v5-mss
sleep 1
modprobe qcom-q6v5-mss
sleep 1
systemctl restart rmtfs
sleep 1
systemctl restart ModemManager
exit 

保存后输入 reboot 重启系统,重启后输入 mmcli -m 0 ,如出现 state: connected 即为连接正常。

同时在重启后检查wifi是否以及开启,执行 nmcli 后是否出现modem连接信息,如果出现连接ip等信息即为一切顺利(如下图)。如果前面不顺利,后面设置ipv6转发会出问题。

重启sim卡

如果出现输入 mmcli -m 0 后,显示卡未连接disconnect或者未发现卡,可以使用sim卡重启大法尝试一下。如果多次出现,可以试试看加入到开机启动脚本中 rc.local(自行添加sleep 1延时)

systemctl stop ModemManager
qmicli -d /dev/wwan0qmi0 --uim-sim-power-off=1
qmicli -d /dev/wwan0qmi0 --uim-sim-power-on=1
systemctl start ModemManager

查看emmc芯片寿命

棒子debian系统可通过执行指令查看emmc寿命,数值仅参考,也有部分型号查看为0x00的,为芯片未定义,0x01为最佳寿命,同理数值越大寿命越低,该值仅供参考

cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time

切换为USB模式

执行指令可断开棒子usb共享,更改为host主机模式,可用于棒子专用拓展坞使用

echo host > /sys/kernel/debug/usb/ci_hdrc.0/role

相反的,也可以切换回网络共享模式

echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role

快速开启一个wifi

如果棒子无wifi或者误删,可以用这个指令在adb shell内快速创建一个wifi热点,名字为4G-wifi,密码为123456789

nmcli d wifi hotspot ifname wlan0 con-name wifi ssid 4G-wifi band bg channel 11 password 123456789

关闭全部led指示灯

如果觉得led灯太闪(没壳的会显得很亮),可以执行指令关闭led,同时可以放rc.local开机启动自动关闭led灯

echo none > /sys/class/leds/red\:os/trigger
echo none > /sys/class/leds/blue\:wifi/trigger
echo none > /sys/class/leds/green\:internet/trigger

AP启用ipv6共享(待补充)

输入指令启用ipv6转发,执行过程中可能会掉线ssh,建议在 adb shell 内执行

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.proxy_ndp=1" >> /etc/sysctl.conf 
echo "net.ipv6.conf.all.accept_ra=2" >> /etc/sysctl.conf 
sysctl -p 
nmcli connection up br0
systemctl restart dnsmasq.service
nmcli connection up usb

安装依赖

apt install radvd ndppd dhcpcd5

编写配置文件

br0为要监听的网络

/etc/radvd.conf.demo
interface br0 {
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    AdvManagedFlag off;
    AdvOtherConfigFlag off;
    prefix REPLACEIPV6 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    };
};
/etc/ndppd.conf.demo
route-ttl 30000
proxy wlan0 {
    router yes
    timeout 500
    rule REPLACEIPV6  {
        auto
    }
}
/etc/dhcpcd.conf
interface br0
    ipv6
    ipv6rs
    ipv6ra_other_information

启动服务

systemctl restart radvd
systemctl restart ndppd
systemctl restart dhcpcd

理论上v6部分就结束了,但是试过不同设备有几率并不能分发地址,还存在争议,也可以参考这位大佬的文章开启v6共享:https://zyyme.com/msm8916-wifi.html

本篇暂时完结,不研究debian了,后续随缘更新...

]]>
0 https://yanhy.top/index.php/archives/336/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
随身wifi折腾入门(3)-- 简单控制GPIO https://yanhy.top/index.php/archives/334/ https://yanhy.top/index.php/archives/334/ Tue, 11 Apr 2023 17:12:00 +0800 yanhy2000

本章节待慢慢补充...

linux下的GPIO一般可以在/sys/kernel/debug/gpio下查询到信息,但是由于棒子的PCB没有开源,无法得知目前那些GPIO可以使用。但是通过表面可知,至少有3颗LED、2路SIM卡控制端口可用,且板载Uart串口调试点,因此,如果能对其中几个IO进行操作,通过IIC协议,即可可以控制多路外设,成为真正的硬件开发板...

控制LED行为

从最简单的开始,控制一颗LED的亮灭。刷了Debian系统后,板子上只有红色、蓝色灯为启用状态,而绿色灯为None状态。因此,我们可以先拿没用的绿色LED下手。

了解LED控制方法

查询目前棒子上已知的GPIO引用:ls /sys/class/leds/

查询后可得:

蓝色LED默认分配为WIFI状态

绿色LED默认分配为网络状态
红色LED默认为系统运行指示灯
SIM:EN为SIM卡启用状态,该焊盘位于ESIM底座GND处,预测SIM1同理
SIM:SEL为SIM选择状态,物理位置目前未测量

进入green的目录内,可看到以下几个文件:

主要文件为brightness、max_brightness、trigger,这三个文件即为LED引脚的属性

brightness:可读可写; 所以这个属性文件是用于设置 LED的亮度等级或者获取当前 LED 的亮度等级。
max_brightness: 该属性文件只能被读取,不能写,用于获取 LED 设备的最大亮度等级。
trigger: 触发模式,该属性文件可读可写,通过 cat 命令查看该属性文件触发模式

其中,trigger 内有以下的模式:

这里中括号选中为none,即为禁用。常见模式有:

timer:使用系统定时器控制,可用于作为伪PWM控制,定时闪烁等功能

heartbeat:心跳模式,可用于作为监控系统运行状态,定时有规律的闪烁

default-on:默认开启模式,此模式会使LED常亮,可用于寻找板载物理位置使用

mmc:读写存储器(emmc)的时候会闪烁

phy0tx(rx):接收(发送)wifi数据时会闪烁

尝试控制LED行为模式

使用echo的方式写入该文件即可控制LED的状态,如这里使它运行为心跳包闪烁模式:

echo heartbeat > /sys/class/leds/green\:internet/trigger

同理,如果写入 none 则为禁用led灯,指令如下:

echo none > /sys/class/leds/green\:internet/trigger

也可以设置led为wifi状态指示灯:

echo phy0radio > /sys/class/leds/green\:internet/trigger

仅需执行指令,即可控制led状态,重启后恢复原始模式,可写入rc.local让其每次开机都设置为该模式。

制作温控PWM风扇

可以将其设置为 timer 定时器模式,通过手动调整延时开与延时关的方式模拟PWM占空比:

echo timer >  /sys/class/leds/green\:internet/trigger
echo 90 > /sys/class/leds/green\:internet/delay_off
echo 10 > /sys/class/leds/green\:internet/delay_on

同理,可以使用绿色LED的IO用来控制风扇,实现温控风扇。以下代码为即兴发挥,可自行测试,将风扇连接至绿色LED引脚上,或者更改 GPIO_PIN 值为其他IO引脚;可以自行更改 pwm_v 的值,以1000为满值,分4个档位。代码仅供测试,如果有问题可评论区留言。

#python 3
import time
import os
pwm_v = [300,500,700,900] #档位速度设置,满值为1000
GPIO_PIN = "green\:internet"  #IO引脚设置
print("开始初始化GPIO...")
os.system(f"echo timer > /sys/class/leds/{GPIO_PIN}/trigger")
while True:
    time.sleep(1)
    try:
        temp_file=open("/sys/class/thermal/thermal_zone0/temp",'r')
        temp = int(int(temp_file.read())/1000)
        temp_file.close()
        print(f"当前温度为:{temp}")
    except OSError as e:
        print(f"打开文件出错:{str(e)}")
    if temp <25:
        print(f"温度在(0,25)区间内,关闭风扇,PWM占空比0%")
        os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_off")
    if temp >= 25 and temp <35:
        print(f"温度在[25,35)区间内,开启第一档,高电平时间{pwm_v[0]},低电平时间{1000-pwm_v[0]},PWM占空比{pwm_v[0]/1000*100}%")
        os.system(f"echo {pwm_v[0]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[0]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 35 and temp <45:
        print(f"温度在[35,45)区间内,开启第二档,高电平时间{pwm_v[1]},低电平时间{1000-pwm_v[1]},PWM占空比{pwm_v[1]/1000*100}%")
        os.system(f"echo {pwm_v[1]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[1]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 45 and temp <55:
        print(f"温度在[45,55)区间内,开启第三档,高电平时间{pwm_v[2]},低电平时间{1000-pwm_v[2]},PWM占空比{pwm_v[2]/1000*100}%")
        os.system(f"echo {pwm_v[2]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[2]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 55 and temp <65:
        print(f"温度在[55,65)区间内,开启第四档,高电平时间{pwm_v[3]},低电平时间{1000-pwm_v[3]},PWM占空比{pwm_v[3]/1000*100}%")
        os.system(f"echo {pwm_v[3]} > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo {1000-pwm_v[3]} > /sys/class/leds/green\:internet/delay_off")
    if temp >= 65:
        print(f"温度大于65摄氏度,开启最大功率,PWM占空比100%")
        os.system(f"echo 1000 > /sys/class/leds/green\:internet/delay_on")
        os.system(f"echo 0 > /sys/class/leds/green\:internet/delay_off")

除了简单的控制LED的行为以及模拟PWM,这几个引出的IO或许还可以更改输出输入模式,待本文后续更新继续探索...

参考文章

https://github.com/Yushi-Xing/openstick_fan/blob/main/main.cpp
https://gitee.com/anhui1995/ufi_auto-fan/blob/master/autofan.c
https://blog.csdn.net/qq_26226907/article/details/128027533
https://www.kancloud.cn/handsomehacker/openstick/2637560

]]>
0 https://yanhy.top/index.php/archives/334/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/
随身wifi折腾入门(2)-- 编译&amp;刷入系统 https://yanhy.top/index.php/archives/333/ https://yanhy.top/index.php/archives/333/ Wed, 05 Apr 2023 19:06:00 +0800 yanhy2000

(需更新)

社区已经有很多编译的系统可玩了,但是为了追求彻底,我还是想自己编译一个系统用用看,顺便试着调整内核进行超频...
本文参照多个文章整理后编写
编译UFI设备的Debian固件
编译410随身wifi_Debian超频版教程&经验
关于 OpenStick

如果只想刷入社区的系统镜像,可看第5节 系统刷入

系统与环境

编译需要在主机为Linux系统下进行,因此本次选择vmware虚拟机进行

系统镜像: Ubuntu2210_Desktop_amd64

编译过程中全程以普通用户进行,不能进入root用户编译,仅使用sudo提权

系统安装完成后打开终端开始换源,如果不换源后续安装软件会较慢:

sudo vi /etc/apt/sources.list

注释全部内容,更换为:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ kinetic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ kinetic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ kinetic-proposed main restricted universe multiverse

工具准备

输入指令安装软件包:

sudo apt install binfmt-support qemu-user-static gcc-10-aarch64-linux-gnu kernel-package fakeroot simg2img img2simg mkbootimg bison flex gcc-aarch64-linux-gnu pkg-config libncurses-dev libssl-dev unzip git

克隆仓库代码:

git clone https://github.com/OpenStick/linux.git --depth=1

内核超频

此时不急着去编译源码,为了获得更佳的性能,先对其进行超频修改

进入目录 linux/drivers/clk/qcom 找到 a53-pll.c文件,进行修改

打开文件后,可根据下图为参考,21-27行内,第一块为运行频率,第二块则为供电电压。根据前面的规律,大致可以判断为每提升200Mhz增加10电压值,但是由于再往后就超出了芯片设计频率,同时要考虑功耗与发热,因此往后提升时要略增加一些电压值,如 { 1841600000, 96, 0x0, 0x1, 0 }

static const struct pll_freq_tbl a53pll_freq[] = {
    {  998400000, 52, 0x0, 0x1, 0 },
    { 1094400000, 57, 0x0, 0x1, 0 },
    { 1152000000, 62, 0x0, 0x1, 0 },
    { 1209600000, 63, 0x0, 0x1, 0 },
    { 1248000000, 65, 0x0, 0x1, 0 },
    { 1363200000, 71, 0x0, 0x1, 0 },
    { 1401600000, 73, 0x0, 0x1, 0 },
    { 1621600000, 84, 0x0, 0x1, 0 },
    { 1841600000, 96, 0x0, 0x1, 0 },
    { 1951600000, 103, 0x0, 0x1, 0 },
    { }
};

找到第二个目录 linux/arch/arm64/boot/dts/qcom 修改其中的 msm8916.dtsi 文件,在220行左右出现默认频率,在此之后进行增加,增加的频率需要在前一个文件内添加好

                opp-1363200000 {
            opp-hz = /bits/ 64 <1363200000>;
        };
        opp-1401600000 {
            opp-hz = /bits/ 64 <1401600000>;
        };
        opp-1621600000 {
            opp-hz = /bits/ 64 <1621600000>;
        };
        opp-1841600000 {
            opp-hz = /bits/ 64 <1841600000>;
        };
        opp-1951600000 {
            opp-hz = /bits/ 64 <1951600000>;
        };

内核编译

编译配置

回到刚刚git拉取的终端,开始执行编译前的配置

cd linux
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=arm64
make msm8916_defconfig
make menuconfig

具体的make配置可以参考网上公共教程,也可以直接使用默认配置进行下一步

开始编译

这里的 -j4 请根据自己CPU的核心数或虚拟机分配核心数来修改

make -j4

生成软件包

生成debian格式的deb软件包:

fakeroot make-kpkg  --initrd --cross-compile aarch64-linux-gnu- --arch arm64  kernel_image kernel_headers

生成结束后,输入 ls ../ 即可查看生成的deb文件包

保留文件

在上一级目录创建bak文件夹,将必要的文件提取出来备用

路径:arch/arm64/boot/Image.gz

设备树dtb路径:arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-xxxxxx 这里要根据设备型号选择,本文使用001B设备

也可以一次性打包多个设备版本,如再拉取一个 003 的棒子的设备树(与001c通用)

mkdir ../bak
cp arch/arm64/boot/Image.gz ../bak/

cp arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-ufi001b.dtb ../bak/
cp arch/arm64/boot/dts/qcom/msm8916-handsome-openstick-ufi001c.dtb ../bak/

下载底包

下载debian底包,并将解压后的rootfs.img放到bak目录内

cd ../bak
wget https://github.com/OpenStick/OpenStick/releases/download/v1/debian.zip && unzip debian.zip
mv ./debian/rootfs.img ./

解包挂载

simg2img rootfs.img root.img
sudo mount root.img /mnt
sudo mount --bind /proc /mnt/proc 
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /sys /mnt/sys

将前面生成的deb软件包复制到 /mnt 目录

sudo cp ../linux-*.deb /mnt

使用 chroot 进入挂载的系统,移除系统内原有的linux-image包,并安装刚刚生成的deb软件包,安装后删除deb文件

sudo  chroot /mnt
dpkg -l | grep -E "linux-headers|linux-image" |awk '{print $2}'|xargs dpkg -P
dpkg -i *.deb
rm linux-*.deb 

系统优化

与正常debian系统一样进行换源等常规优化操作

换源:

cat>/etc/apt/sources.list<<EOF
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
EOF

安装常用软件并调整时区 区域:6 Asia 时区:70 Shanghai

apt install locales usbutils curl wget fdisk net-tools nano
dpkg-reconfigure locales
dpkg-reconfigure tzdata

启用Root并默认自动登录,并修改root密码(本文设置为123123)

sed -i '/PermitRootLogin /c PermitRootLogin yes' /etc/ssh/sshd_config
sed -i '/PasswordAuthentication /c PasswordAuthentication yes' /etc/ssh/sshd_config
passwd root

创建 rc.local 开机启动脚本

cat>>/etc/systemd/system/rc-local.service<<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#

exit 0
EOF

systemctl daemon-reload && systemctl enable rc-local
history -c

配置结束,输入 exit 可退出

/mnt/boot/initrd**.img 取出到 bak 文件夹内备用

cp /mnt/boot/initrd.img-* ./

取消挂载并打包

取消刚刚的boot.img的挂载

sudo umount /mnt/proc 
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt

将 boot.img 转为刷机用的 rootfs.img 格式

img2simg root.img rootfs.img

将Image和dtb合并(由于前面拉了两个设备树,这里合并两次)

cat Image.gz msm8916-handsome-openstick-ufi001b.dtb>ufi001b-kernel-dtb
cat Image.gz msm8916-handsome-openstick-ufi001c.dtb>ufi001c-kernel-dtb

将前面提取出来的 initrd**.img 改名为 initrd.img

mv initrd.img-* initrd.img

生成镜像

生成001b的镜像

mkbootimg --base 0x80000000 --kernel_offset 0x00080000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 --pagesize 2048 --second_offset 0x00f00000 --ramdisk initrd.img --cmdline "earlycon root=PARTUUID=a7ab80e8-e9d1-e8cd-f157-93f69b1d141e console=ttyMSM0,115200 no_framebuffer=true rw" --kernel ufi001b-kernel-dtb -o ufi001b-boot.img

生成001c/003的镜像

mkbootimg --base 0x80000000 --kernel_offset 0x00080000 --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 --pagesize 2048 --second_offset 0x00f00000 --ramdisk initrd.img --cmdline "earlycon root=PARTUUID=a7ab80e8-e9d1-e8cd-f157-93f69b1d141e console=ttyMSM0,115200 no_framebuffer=true rw" --kernel ufi001c-kernel-dtb -o ufi001c-boot.img

整理文件,将boot与rootfs.img整理出来(可选)

mkdir ufi_debian
mv ufi001*.img ./ufi_debian/
mv rootfs.img ./ufi_debian/

最后,将这些文件从虚拟机复制到主机,接入棒子,准备下一个环节:开始刷机

刷入系统

要想把Debian刷入到棒子内,需要在棒子的fastboot模式下刷入。如果棒子是刚做完第一章的备份工作后,只需要跳过第0节继续往下跟着做即可;如果棒子已经刷入过openwrt或者Debian等linux系统,请备份好必要资料后,看下面第0节进入fastboot模式。除了esim,务必不要插入sim卡的时候刷机,否则可能会无法检测到卡,出现这种情况重新刷入就可以了(除非刷机包有要求插卡刷入)

第0节

已刷机的棒子进fastboot

如果你的棒子是新买的并且已经做完备份工作了,可以直接跳过该小节,直接使用adb重启至fastboot

备份好必要文件后,拔下棒子

按板子上的RST按钮,并插入到电脑,此时电脑会识别到9008设备

使用第一章的软件 Qualcomm Premium Tool V2.4 ,打开后扫描分区,按下图所示格式化boot分区

格式化完成后,拔掉棒子,重新插入,即可自动进入fastboot模式

打开第一章的adb工具包 tools 文件夹,在文件夹上方地址栏输入cmd,打开cmd窗口

输入指令 fastboot devices 即可查看是否有设备连接

如果连接成功,即可开始跳转到第2节

第1节

进入到fastboot模式,如果是从第0节完成,则可以跳过这一节往下看;如果棒子刚买回来且做了备份工作后,可以看这一节进入fastboot

正常插入棒子,等待其开机,设备管理器显示adb即可

如果显示如下图,同时出现adb与9091设备,代表设备还没有完全开机,稍等片刻即可

打开第一章内的adb工具包 tools 文件夹,在文件夹上方地址栏输入cmd,打开cmd窗口

输入指令 adb devices ,查看是否有adb设备连接,如有,可继续执行指令 adb reboot bootloader

此时电脑会提示新设备接入,输入指令 fastboot devices 即可查看是否有设备连接

此时棒子成功进入fastboot模式,可以进行刷机

第2节

准备Debian\linux\openwrt刷入工具包,优先刷入ufi003(001c)

如果使用社区提供的刷机镜像压缩包,里面一般有全部分区文件和 flash.bat 刷机脚本,可以直接使用包里面的 flash.bat 一键刷入;如果只准备了rootfs.img 与 boot.img 和本文一样,那就需要下载基础包,将这俩文件放基础包内,并把 *-boot.img 改名为 boot.img 即可

基础包链接:https://www.123pan.com/s/Dpq0Vv-p9UHd.html 提取码:dkdF (本文采用这一个)

源链接:https://github.com/OpenStick/OpenStick/releases/tag/v1 (建议使用前面链接,本文有改动刷入脚本,可自动刷入lk2nd与rootfs、boot)

源链接配合源教程食用更佳:https://www.kancloud.cn/handsomehacker/openstick/2636506

将基础包下载后解压,可得到一个base文件夹。将前面生成的 rootfs.imgufi001c-boot.img 复制到该文件夹内,并将 ufi001c-boot.img 改名为 boot.img ,然后运行 flash.bat 即可开始刷入,不会超过3分钟(如果rootfs包较大,耗时也会久,如果长时间不跑进度可以尝试重新刷入,进入fastboot方法看第0节)

等显示 All done!! 之后棒子会自动重启,并尝试开机

如果在电脑里面找不到设备,可以参考文章:https://www.kancloud.cn/handsomehacker/openstick/2636506

本文结束,后续折腾请等待更新

]]>
1 https://yanhy.top/index.php/archives/333/#comments https://yanhy.top/index.php/feed/tag/%E6%95%99%E7%A8%8B/