https://github.com/xxxuuu/fnos-qb-proxy
项目原介绍
What is it?
fnOS 中自带了一个下载器(基于 qBittorrent 和 Aria2),但默认关闭了 WebUI,且采用动态密码。这使得我们无法在外部连接 fnOS 中的 qBittorrent(e.g. 接入 MoviePilot 或 NasTools 等)
该项目是一个简单的代理,能绕过这些限制,提供在外部访问 fnOS 的 qBittorrent 的能力同时不影响 fnOS 自身的下载器运行
如果按项目作者所介绍使用docker,正常方式如下:
先准备好相关文件:
yanhy2000@fnnas:~$ ls /vol1/1000/ssd/docker/docker-compose/fnos-qb-proxy
docker-compose.yml Dockerfile.txt fnos-qb-proxy_linux-amd64docker-compose.yml
services:
fnos-qbit-proxy:
build:
context: .
dockerfile: Dockerfile.txt
container_name: fnOS-qBit-Proxy
pid: "host"
network_mode: "bridge"
environment:
- PASSWORD=fnosnb
ports:
- "7111:8086"
volumes:
- /home/yanhy2000/qbt.sock:/app/qbt.sockDockerfile.txt
FROM alpine:latest
ENV LANG=C.UTF-8 \
UDS="/app/qbt.sock" \
PORT=8086 \
PASSWORD="fnosnb"
WORKDIR /app
COPY fnos-qb-proxy_linux-amd64 /usr/local/bin/fnos-qb-proxy
RUN chmod +x /usr/local/bin/fnos-qb-proxy && \
echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/main" > /etc/apk/repositories && \
echo "https://mirrors.tuna.tsinghua.edu.cn/alpine/latest-stable/community" >> /etc/apk/repositories && \
apk add --no-cache bash
CMD ["sh", "-c", "fnos-qb-proxy --uds $UDS --password $PASSWORD --port $PORT"]当系统更新重启后,哪怕将docker启动设置在dlcenter.service之后,也大概率因为qBittorrent服务未完全启动导致容器反复启动失败,只有等待服务启动后,重新构建compose启动才能恢复,不能实现完全自动。
Docker容器启动时,如果映射的Socket文件不存在,Docker可能会自动将其创建一个为目录而非文件,导致后续挂载错误。且容器的重启策略有时不如Systemd的依赖检查灵活,容易在系统启动初期因资源未就绪而进入死循环或报错停止。
将fnos-qb-proxy_linux-amd64下载到本地,并移动至/usr/bin/fnos-qb-proxy
sudo cp fnos-qb-proxy_linux-amd64 /usr/bin/fnos-qb-proxy
sudo chmod +x /usr/bin/fnos-qb-proxy创建systemd服务配置文件
sudo nano /etc/systemd/system/fnos-qb-proxy.service填充以下脚本(将用户名改成你自己的),并保存
[Unit]
Description=fnos qb proxy service
#在下载服务启动后启动
After=network.target dlcenter.service
#跟随dlcenter服务运行
Requires=dlcenter.service
[Service]
Type=simple
User=root
#脚本逻辑部分
#隔2秒检查一次qbt.sock文件是否存在且必须是Socket文件(防止被识别为文件夹,如果之前使用过docker可能会残留这个问题)
ExecStartPre=/bin/bash -c 'until [ -S "/home/用户名/qbt.sock" ]; do echo "Waiting for qbt.sock..."; sleep 2; done'
#自定义密码与端口
ExecStart=/usr/bin/fnos-qb-proxy --uds "/home/用户名/qbt.sock" --password fnosnb --port 7111
#如出错5s自动重启服务
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target重载服务,运行服务
sudo systemctl daemon-reload
sudo systemctl enable --now fnos-qb-proxy查看日志,看看是否运行成功
sudo journalctl -u fnos-qb-proxy -f如果出现类似于下文的日志则认为是运行成功
Nov 19 17:07:43 fnnas bash[1965]: Waiting for qbt.sock...
Nov 19 17:07:45 fnnas systemd[1]: Started fnos-qb-proxy.service - fnos qb proxy service.
Nov 19 17:07:45 fnnas fnqb-proxy[5675]: proxy running on port 7111修改注册表:
进入 HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID
在 CLSID 下面新建 项 {86ca1aa0-34aa-4e8b-a509-50c905bae2a2}
在该项下面再新建项 InprocServer32
双击打开右侧键值对,不修改直接点击保存或者Powershell(管理员):
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve修改后在任务管理器重启资源管理器即可
注册表:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Clipboard]
"IsCloudAndHistoryFeatureAvailable"=dword:00000001
需在 Microsoft 下新建项 Clipboard
在该项里面添加32位键值对,并将值修改为1Powershell(管理员):
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Clipboard" -Force | Out-Null; Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Clipboard" -Name "IsCloudAndHistoryFeatureAvailable" -Value 1 -Type DWordwin11可直接在设置修改,win10则需要修改注册表:
进入 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
新建 DWORD(32位)值 命名为ShowSecondsInSystemClock 数值修改为1
重启文件资源管理器
]]>DD重装本质上是利用Linux的指令来进行硬盘擦写填充文件。
菜鸟编程:Linux dd 命令用于读取、转换并输出数据。dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
本文使用Github开源项目 reinstall ,并将云电脑系统重装为Windows 10 LTSC 2021。
一键重装脚本 English 项目介绍
- 支持安装 16 种常见 Linux 发行版
- 支持用官方原版 iso 安装 Windows,并且脚本会自动查找 iso 和驱动
- 支持任意方向重装,也就是支持 Linux to Linux、Linux to Win、Win to Win、Win to Linux
- 专门适配低配小鸡,解决内存过少导致无法进行网络安装
- 自动判断动静态 IPv4 / IPv6,无需填写 IP / 掩码 / 网关
- 支持 ARM,支持 BIOS、EFI 引导,原系统支持 LVM、BTRFS
- 不含第三方自制包,所有资源均实时从源站点获得
- 有很多注释移动云电脑切记需要下载好远程软件在数据盘,并保证软件打开就可以使用,否则在无鼠标驱动下安装远程控制软件相当困难
天翼云电脑实测无需远程,重装系统后仍然可以在官方客户端键鼠操控,也无需强制数据盘
打开设置 - 更新与安全 - Windows安全中心,点击左侧病毒与威胁防护,将选项全部关闭。
如使用天翼云电脑,系统可能预装火绒等杀毒软件,直接退出杀毒软件即可。
使用快捷键Win+X,选择 Windows Powershell(管理员)打开即可

复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
certutil -urlcache -f -split https://github.299993.xyz/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat注:这里的脚本使用了Github加速源。如以后该加速源关闭,将无法正常执行脚本,可使用Github原链接,可能需要加速器。
备用链接
国内加速源
certutil -urlcache -f -split https://jihulab.com/bin456789/reinstall/-/raw/main/reinstall.bat
国外(Github原链接)
certutil -urlcache -f -split https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat执行完成
复制以下脚本,并粘贴到Powershell终端内(右键终端界面即可粘贴)
这里要安装的为Windows 10 LTSC 2021系统,稳定且性能占用较低。如有其他系统需求,可以在https://drive.massgrave.dev/网站查找所需镜像。
./reinstall.bat windows --iso='https://drive.massgrave.dev/zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso' --image-name='Windows 10 Enterprise LTSC 2021'期间会出现软件安装的窗口,无需理会,等待其自动安装和配置。
当最后几行出现下面内容时则为初期准备完成,可以重启安装:
***** INFO *****
windows
Username: administrator
Password: 123@@@
Reboot to start the installation.
You can run this command to reboot:
shutdown /r /t 0
PS C:\Users\Administrator>
在Powershell内输入以下指令,重启系统进入Linux子系统,开始自动DD重装。
shutdown /r /t 0系统重启后,无需任何操作,一直等待或者关闭云电脑客户端放后台慢慢装即可。花费时间取决于网速和硬盘读写速度,如云电脑为机械硬盘可能会慢一些。
由于我这个天翼云电脑带宽只有50M,因此下载速度特别慢,前前后后需要30到50分钟左右。
全程为脚本自动操作,请勿手动介入,可能会打断脚本。一直等待到系统开机输入密码阶段才算安装完成。

注:天翼云电脑在重装后还是原系统卸载系统软件,都不影响在官方客户端的控制使用(截至2024/7/30是可行的)。但偶尔会出现弹窗显示异常提醒建议重启,点以后再说即可。

在Linux系统部署完成后,自动重启到Windows安装中。全程无需手动操作,也不要去介入操作,会打断进程。

安装完成后自动开机,默认开机密码:123@@@

移动云电脑需要开机后用键盘打开远程软件,进行远程连接后才能控制。
使用快捷键 Win+E 打开此电脑,方向键选择D盘,并选择Todesk_lite.exe,回车键打开软件进行远程连接。
天翼云电脑可直接用官方客户端控制。

天翼云电脑可在修改分辨率手动全盘。重装后无法进行自适应分辨率、硬盘映射等等功能,有需要可使用原系统。
刚安装好的系统分辨率不对,可以手动在桌面-右键-显示设置,手动调整分辨率为1920x1080即可。
激活推荐使用HEU-KMS,可参考我前面的文章 安利个Windows激活工具 HEU-KMS
最便捷的文件传输方式可使用第三方远程控制软件,进行文件传输;也可以提供各种网盘进行传输。官方客户端文件传输能力失效。
仔细研究了一下ecloud的驱动相关,按自己需求整理出了适用于官方客户端的驱动优化
修复以下问题:
需下载以下链接内三个文件(经fiddler抓包后未发现上报连接,但不排除定时上报。程序已精简过,去除其他服务如远程录屏、打印等服务)
https://yanhy.lanzouj.com/b033zndfuj
密码:5k43
先创建好文件夹,在C:\Program Files (x86)\ctyun\clink(也不一定要指定位置,这是原系统安装路径,为确保不出错还是推荐本路径)
解压后,将64文件夹放到clink目录内,如下图

打开64文件夹,右键点击以管理员身份运行来打开clink_agent.exe和clink_cb_helper.exe。运行后没任何反应,但可以通过任务管理器看到已经在运行了。注:如不使用管理员身份运行,则在一些系统中可能因为没权限导致无法使用部分功能。

经多次测试,核心服务程序为必须运行项,否则其他程序无法正常工作,;服务程序则为跟着客户端窗口调整分辨率、剪贴板同步、文件拖拽传输等功能。
音频驱动直接双击安装即可

随意解压一个位置,打开文件夹后,选择 qxldod.inf 文件,右键-安装。安装后没有弹窗,但如果第一次安装屏幕会闪烁并修改分辨率为很低的一个状态。
如果前面有安装了守护程序,只需要缩放一下官方客户端窗口,即可自动调整云电脑分辨率大小。
如果不使用守护程序,只安装驱动,可以手动在桌面-右键-显示设置,手动调整“显示器1”的分辨率为1920x1080即可,可以修复双重鼠标指针。(单独安装除了修复双重鼠标指针好像意义不大,经过测试这个驱动貌似就是配合守护程序调整分辨率使用)
当云电脑DD重装后,会失去一些便利的特性,但是同时也有一些好处。使用全新系统,省去官方定制系统臃肿的性能占用和一堆无用的软件,删除官方监控后门,甚至部分云电脑可以重装后直接变成不休眠(天翼云还是会休眠),能更好的由自己控制。
本文部分内容摘抄自该博主(https://kui.li/989.html),如有版权问题请留言,会及时处理
补充:移动云电脑家庭版操作较麻烦,可以参考这篇文章获得更多移动云电脑相关内容:https://www.yuque.com/scynull/cloud/ikxva5t32sii3lrn
本文到此结束,如有更多感兴趣的话题可以关注本博客,不定期更新~
]]>截图版本:42.0.4

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

眼熟了吗?
没错,作者至今一直在更新,更新在微信公众号和Github上
如何还原到新版本界面:删除同目录下的Set.ini,再重新打开软件即可恢复

Github: https://github.com/zbezj/HEU_KMS_Activator/releases/
公众号:《更新:HEU KMS Activator v42.0.4》
附图:公众号获取方式
打开软件后,什么都不需要做(记得同意使用协议),点 开始 按钮即可开始自动激活。如检测到电脑上没安装Office则会自动跳过。

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

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

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

到此,简单的激活方法就结束了,软件可以继续收藏吃灰或者直接删除~
KMS激活续期:在一些特殊条件下,会触发KMS激活方式。KMS的激活有180天的期限,因此要在一开始激活时勾选KMS自动续期。如激活完成后才发现是KMS激活,可以勾选后进行第二次激活。部分杀毒软件在KMS自动续期补丁安装时报毒,可以手动加白名单或者信任列表即可。
Office的盗版Banner警告:有时候在部分版本的Office软件内,打开时会在上方弹出一个Banner显示类似于“你可能是盗版的受害者”。此时可以打开HEU-KMS软件,然后选择最后一栏。

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

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

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

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

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

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

本文到此结束,希望这篇文章有帮到你~
]]>以下内容来自该项目的Readme Github:yanhy2000/pScaleUp_plus
· 一个Typecho插件,用于文章中的图片放大,适用于一些简洁主题不支持图片放大查看的情况。
· 该分支为增强版pScaleIP,修了一些小问题并增加一些特性。
· 插件的文件夹名是 pScaleUpPlus。

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等),为目标域名添加一条记录:
添加完成后,等待几分钟(最快几十秒也可能,dns解析和缓存需要时间),然后在命令行敲下回车键,等待验证。
如果不确定有没有解析好的话,可以先清理一下本地的DNS缓存,然后手动本地验证一下是否解析成功,再去回车。否则失败后需要重新解析DNS。
本地测试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.
证书申请过程中发生错误。
请按任意键继续. . .电脑网络通讯问题,检查是否开启了代理,关闭代理即可
]]>本篇与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地址,热点仅作为管理端。
使用sftp连接openwrt,然后将之前系统备份的 NON-HLOS.bin 文件解压或者通过镜像软件打开,将里面全部文件提取出来,再上传到 /root 目录中(可直接通过ssh远程软件自带的文件管理器上传,原理相同)
上传完成后,执行指令,将文件移动到 /lib/firmware 内
mv ./IMAGE/* /lib/firmware/正常来说,这个版本的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。
目前先到这里,剩下的随缘更新...
如果刷入其他系统如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" ,保存
还是在XiaomiRom网站下载,米5的话推荐下载2018版本,注意不要勾选全部删除并lock,这样会导致手机BL锁重新锁定
地址:https://xiaomirom.com/download-xiaomi-flash-tool-miflash/
下载完打开软件,选择路径 刷机包解压路径/images ,提示未找到脚本确定即可,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 评论区
]]>注意:ipv6部分未完篇,但方法可行,如有建议可评论区留言,后面随缘更新...
本来这篇文章是为了ipv6热点而写的教程,后面发现方法很多但是争议也多,因此干脆作为日常使用及优化的记录篇,在本篇可以看到使用sim卡、切卡、网桥、led控制、更改usb模式等多个玩法,可按需学习使用...
本文使用 酷安@jsbsbxjxh66 大佬的ufi001b-debian超频版1.2Ghz Debian进行修改
使用esim卡环境(如使用实体卡可跳过切esim卡步骤)
使用电脑进行连接(需打开cmd进行adb操作,以及ssh工具)
本节修改内容:
网关:192.168.2.1
选卡:esim
网桥: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连接
通过ssh连接debian后,执行 nmtui ,选择 编辑连接 ,选择网桥br0点进去,手动添加一个wifi连接。
接下来的内容按需采取,ipv6部分存在争议,可自行尝试
将驱动文件上传到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/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转发会出问题。
如果出现输入 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棒子debian系统可通过执行指令查看emmc寿命,数值仅参考,也有部分型号查看为0x00的,为芯片未定义,0x01为最佳寿命,同理数值越大寿命越低,该值仅供参考
cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time执行指令可断开棒子usb共享,更改为host主机模式,可用于棒子专用拓展坞使用
echo host > /sys/kernel/debug/usb/ci_hdrc.0/role相反的,也可以切换回网络共享模式
echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role如果棒子无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,同时可以放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输入指令启用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.demointerface br0 {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
AdvManagedFlag off;
AdvOtherConfigFlag off;
prefix REPLACEIPV6 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
};
};/etc/ndppd.conf.demoroute-ttl 30000
proxy wlan0 {
router yes
timeout 500
rule REPLACEIPV6 {
auto
}
}/etc/dhcpcd.confinterface br0
ipv6
ipv6rs
ipv6ra_other_information启动服务
systemctl restart radvd
systemctl restart ndppd
systemctl restart dhcpcd理论上v6部分就结束了,但是试过不同设备有几率并不能分发地址,还存在争议,也可以参考这位大佬的文章开启v6共享:https://zyyme.com/msm8916-wifi.html
本篇暂时完结,不研究debian了,后续随缘更新...
]]>本章节待慢慢补充...
linux下的GPIO一般可以在/sys/kernel/debug/gpio下查询到信息,但是由于棒子的PCB没有开源,无法得知目前那些GPIO可以使用。但是通过表面可知,至少有3颗LED、2路SIM卡控制端口可用,且板载Uart串口调试点,因此,如果能对其中几个IO进行操作,通过IIC协议,即可可以控制多路外设,成为真正的硬件开发板...
从最简单的开始,控制一颗LED的亮灭。刷了Debian系统后,板子上只有红色、蓝色灯为启用状态,而绿色灯为None状态。因此,我们可以先拿没用的绿色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数据时会闪烁
使用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让其每次开机都设置为该模式。
可以将其设置为 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