技术手记

Win11 宿主机在远程链接时 WiFi 掉线的处理

在公司连的内网无线网络是通过 WPA/WPA2 加 Radius 走 LDAP 认证的,最近有一个奇怪的现象在多台 Win11 宿主机上出现,明明网络是连接状态,但从别的机器发起远程连接,接通的瞬间宿主机切到登录界面时网络就掉了

宿主机连有线没有这个问题,连 WPA2-PSK/WPA3-SAE 模式只用 WiFi 密码连接的无线网没问题

网上各种找解决办法,包括但不限于 设置网卡的电源配置以免节能模式关闭了网卡、升级补丁和驱动、导出网络配置文件并应用到所有用户 等,因为都没起作用所以也不在这里给引用链接了

最终的解决办法是「从已知网络里忘记这个接入点,重新添加一次」就好了,就是这么无厘头……

在 Win11 里忘记已知网络的设置入口在 设置网络和 InternetWLAN管理已知网络

使用 ZeroOmega 替代 SwitchyOmega

在 Chrome 系浏览器上,包括 Chrome、Edge、Arc 等,SwitchyOmega 作为开发测试和科学上网的必备工具,一直是新机优先装的插件,或等待插件自动同步赶紧配好

不过由于 SwitchyOmega 的开发者已经不再维护 [1][2],Chrome 对插件的 manifest meta 要求从 v2 到 v3,再加上原版的 SwitchyOmega 在 Arc 的弹层总有些问题,所以最近一直在找替代方案

在 SwitchyOmega 作者建议有维护能力的人去 fork 一个 v3 版本的推文后,发现了 ZeroOmega [3],看了下项目代码就是直接 fork 然后改各种兼容配置项,界面和文档里好多地方还是 SwitchyOmega,一开始还不太好用,不过这两天用下来已经可以平替了,除了插件 Logo 相比之前略有不协调,但在浏览器插件栏显示的还是之前的圆环,完美替代

安装地址:Chrome Web StoreMicrosoft Edge Addons

注:
[1] SwitchyOmega 的项目地址 https://github.com/FelisCatus/SwitchyOmega
[2] SwitchyOmega 不再维护的推文 https://x.com/_catus/status/1759413399270936672
[3] ZeroOmega 的项目地址 https://github.com/suziwen/ZeroOmega

ThinkPad X1 Carbon 2018 2K 屏会卡死的解决

收了一台 X1 Carbon 2018,配置是 i7-8650U / 16G / 512G / 2K / FPR / 4G LTE,重装系统后发现偶尔会出现屏幕卡死的情况,具体表现是屏幕上任何东西都不动,鼠标光标无法移动,但按大小写锁定等按键,键盘上的灯是在正常响应的,说明系统没卡死。做了如下排查尝试

  1. 有软件冲突。把各种第三方软件都删过,甚至输入法都删过,问题依旧
  2. 电源管理问题。把电源性能都开到最高,问题依旧
  3. 驱动问题。把各种驱动从系统默认到 ThinkPad System Update 都升了一遍,问题依旧
  4. 发现插电时会好转,但没有稳定复现或稳定消除的规律
  5. 跟 CPU 降频有关?但一直开着任务管理器也没发现有什么特别的,其他磁盘等也没有满负载被卡住

最后搜到 https://club.lenovo.com.cn/forum.php?mod=redirect&goto=findpost&ptid=5559793&pid=65060757 这个帖,在 Intel 显卡控制中心里把面板自适应刷新的开关关掉就好了,具体路径在 系统功率使用电池/使用外接电源 下的 面板自刷新

这个奇葩的问题只出现在屏幕型号为 LEN40AA 的 2K 屏的版本上,普通的 1080p 和 4K 屏都没有这个问题,难怪没搜到太普遍的解决办法。之前我的排查思路有遗漏,是因为大部分我插电的时间都连了外接显示器,在外接显示器上这个 bug 触发不出来,而有时候我又是没外接屏幕插电用,所以没有找到稳定复现的条件

改注册表以在旧 CPU 电脑上升级 Windows 11

公司有一批旧 i5-7200u 的笔记本电脑,打算装 Win11Pro 提供远程访问,做一些测试用,发现直接切换专业版序列号提示错误,准备把系统默认的系统通过 ISO 文件先升级到 Win11 23H2 的 Pro 版也提示处理器不支持

通过新增注册表项解决此问题,在 Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\MoSetup 路径下,新增一个 DWORD (32-bit) 字段,命名为 AllowUpgradesWithUnsupportedTPMOrCPU 并将值设为 1,再运行 ISO 里的 setup.exe 就不报错了

方法参考自 https://www.theverge.com/22715331/how-to-install-windows-11-unsupported-cpu-intel-amd-registry-regedit

ThinkPad 40AC 雷电三扩展坞

从早期真正放在笔记本底部的 Dock 时代开始,就对 ThinkPad Dock 这样底座连各种线缆,笔记本电脑本体随时拔了就走的模式特别喜欢,买过用过 T60、X200、X230 的底座式扩展坞,和 40A9、40AC 两个外接式的扩展坞,本文介绍下 40AC 这个雷电三协议的扩展坞

办公室桌上这个已经用了两年多了,之前在 v2ex 上开了个帖介绍记录:买了个 ThinkPad 40AC 雷电 3 扩展坞给 2020 Intel i5 MacBook Pro 13 用,近乎完美体验一线通 ,本文为这个帖的整理更新

为什么需要一个扩展坞

因为在办公室,对 MacBook Pro 外接两个 4K 显示器,加上有线键鼠耳机等需求(蓝牙有干扰和延迟),每天笔记本过来插拔一堆线,期待能用上雷电接口连供电加显示数据等特性,一根线搞定

现在桌上还有一个铭凡类似 NUC 的小主机装着 Windows 当主力机在用,也期望能更简单把这一堆外设在小主机和笔记本之间切换

为什么选了 ThinkPad 40AC 这个扩展坞

在 2021 年那个时间点,之前能搜到给 MacBook Pro 的扩展坞,要么指向 CalDigit 这种苹果官方背书但贼贵的,要么是 HP 或 Dell 家需要装驱动且存在 macOS 升级后不可用的风险,或者输出接口没法满足(比如最核心的 2x 4K@60Hz)

ThinkPad 的扩展坞,公司之前买过一个 40A9,是比较早的 USB-C 协议扩展坞,能一根 USB-C 上行到笔记本电脑,解决 供电+单个显示器+USB+LAN+耳麦 的需求,但 macOS 接多个显示器时只能被当成同一个输出源输出同样的信号,偶发有笔记本休眠后再唤醒时显示器无法唤醒的问题,需要重新插拔一下(用在 ThinkPad 上可以多个输出也没唤醒问题),同时最大只能双 1080p@60Hz,所以没有继续选这个

当时参考 https://post.smzdm.com/p/aekzgq6k/ 这个文章,对比下来 40AC 应该是满足需求且价格最合适的,事实上在 2021 年八月,闲鱼五百多买了一套 40AC 加 135W 电源加雷电三线,用下来也是近乎完美的

在 2023 年八月这个时间点,可选的除了已经全套价格降到 300 以内的 40AC,还有 40AN 这个二代雷电三扩展坞,和 40B0 这个雷电四扩展坞等,不过后面两个价格还是略贵,所以当家里有需求时,我还是再买了个 40AC

官网在 https://support.lenovo.com/us/en/solutions/acc100356 ,各种驱动固件和技术规格都可以从这里找到

用起来怎么样

先上个图,左侧那个黑色长条形就是 ThinkPad 40AC 扩展坞本体,后面那个黑色的大块头电源是连这个扩展坞供电同时给更上行设备提供充电能力,右侧那个银白色的小方块是铭凡 NPB5 小主机

ThinkPad 40AC Thunderbolt 3 Dock

目前接上去的线包括

  1. 135W 联想方口电源输入
  2. 雷电三上行线,连接笔记本电脑或其他设备,同时可带 65W 供电(能满足 MacBook Pro 13 和 14 的需求,更大没测试)
  3. DP 到一个 4K@60Hz 显示器
  4. RJ45 接千兆 LAN 有线网
  5. USB-A 接键盘、鼠标、充电线(给自己的小米手环充电用)
  6. USB-C 形态雷电三下行 DP 模式接另一个 4K@60Hz 显示器
  7. 3.5mm 耳机孔接有线耳麦

接 MacBook Pro 13(2020 Intel i5 款)和 MacBook Pro 14 (2021 M1Pro 款)都是即插即用,不需要破解,不需要改 SIP 或系统设置,测过从 macOS Catalina (10.15)一直到 Ventura (13.x)都是可用的,在可见的未来也不应该出其他问题

接 ThinkPad X1 Carbon 2018(Intel i5-8350u)、Lenovo Miix 720 (Intel i5-7200u) 、铭凡 NPB5 (Intel i5-13500H) 这些 Windows 设备也都是完美工作

缺点和瑕疵

  1. 显示输出限制
    • 不管是 Windows 还是 macOS,想双 4K@60Hz 只能一个走雷电三下行,一个走 DP,技术规格详见 https://support.lenovo.com/us/en/solutions/pd029622
    • macOS 对扩展坞上所有除 DP 模式雷电三下行的显示接口,都当做一个输出,所以在这些接口上怎么接多个显示器,都被 macOS 当成一个且输出同样的内容,要分屏只能是雷电三下行走一个,其他接口任选一个(为了跑满 4K@60Hz,还是选 DP)
  2. macOS 下耳机输出音量不可调节
    • 这其实应该赖 macOS,在更早的音频固件下是可以调音量的,最新的固件反倒不行,详见后面固件问题部分
  3. 没有读卡器

固件问题

最新的固件版本是 1.0.0.25,如果没有特殊需求,建议刷到这个最新的版本,下载页面在 https://pcsupport.lenovo.com/us/en/downloads/DS506176 ,单独的固件下载链接是 https://download.lenovo.com/pccbbs/mobiles/ar_tbtdockfw10.exe

这个版本的固件在 macOS 下无法调节耳机音量,不过有一个神奇的办法是把其中音频部分的固件单独降级到 1.0.0.12 版本固件里带的 04-0E-80_Rev_0080 就好了

根据其他版本的下载链接推测出来可用的固件下载链接在 https://download.lenovo.com/pccbbs/mobiles/thinkpad_tbt3_dock_web_fw_v1.0.0.12.exe

下载后运行,固件内容会被默认解压到 C:\DRIVERS\ThinkPad_TBT3_Dock_WEB_FW\ 这个目录下,不要在图形界面里刷新,进入 Windows 的命令行,然后用下面这个命令,强制只刷新音频部分的固件

C:\DRIVERS\ThinkPad_TBT3_Dock_WEB_FW\ThinkPad_TBT3_Dock_TVSU_FW.exe /audio /f

最后用 v1.0.0.25 版本固件更新程序的 check 功能看,其他几个模块是最新,音频部分提示目前是 0080 需要升级到 0087 就好了

不过 04-0E-80_Rev_0080 这个音频固件在 Windows 下,会导致扩展坞上的耳机插孔明明插了设备,但 Windows 不认导致无法输出,所以不是接苹果设备的话,还是建议整体都用最新固件

搜狗输入法(Windows版)修改方括号输入直角引号

本文参考整理自 https://www.cnblogs.com/xiaohi/p/17399462.html

习惯了使用「」直角引号来在中文输入中表示引用,macOS 下的搜狗输入法有很简单的方式可以打开自定义符号,Windows 版的搜狗输入法在某个版本前也是可以自定义符号的,当前(2023.8)的最新版,还有自定义符号的入口,但只能从下拉框里选择,不能自定义,默认的是【】这两个符号

搜了下解决办法,有说到可以在旧版里自己输入自定义符号,再更新到新版配置还在的,说明这个应该还有通过非设置界面直接修改配置文件的办法,见最上面的链接,此处简化整理

  1. 打开 %USERPROFILE%\AppData\LocalLow\SogouPY.users\00000001\punctures.ini 文件,若不存在此路径或此文件,参考 C:\Program Files (x86)\SogouInput\13.2.0.6899 这样的路径去找到 punctures.ini 这个文件

  2. 找到 [flaafl][fnaafn] 两处设定,从命名看,分别是左右方括号在中文半角和中文全角下的字符输出,修改为

        [flaafl]
        Name=flaaaaaafl
        ChHalf=amdaaaaadm
        ChFull=badaaaaaca
    
        [fnaafn]
        Name=fnaaaaaafn
        ChHalf=andaaaaadn
        ChFull=bbdaaaaacb
        

  3. 保存,并设定此文件只读(此处作用不详,且发现设过只读也会在搜狗输入法设置里被修改掉)

  4. 注销当前用户并重新登录或关机重启生效

不要更新 macOS 14 beta4

在我的 MacBook Pro 13 (2020, Intel i5) 上带来了 SMC 固件问题,导致插电或拔电就会死机,自行修复失败,去苹果店天才吧本地刷固件解决,且按天才吧工作人员描述,问题出现概率不低,不管是 Intel 芯片还是 M 芯片都有

记录下我的处理过程

2023.7.26 前

一切正常,主系统为 13.4.1(c),通过划分磁盘分区的方式另外装了一个 14.0 beta

2023.7.26

主系统升级 13.5

在第二分区上尝试升级 14.0 beta4,多次在重启后提示升级失败

2023.7.27

第二分区 14.0 beta4 在某次重启后升级成功,问题开始出现,如果是在非插电模式下使用,只要插电立马死机,三五秒后自动关机

2023.7.28

尝试关机,长按电源键 10 秒后再开机,故障依旧

切换启动磁盘到主系统 13.5,故障依旧

https://support.apple.com/zh-cn/HT204063 重置 NVRAM 和按 https://support.apple.com/zh-cn/HT201295 重置 SMC,不管是 13.5 还是 14.0 beta4,故障依旧

2023.7.29

新尝试,在非插电模式下正常关机后,插电,系统自动开机,可正常使用,在开机状态下拔掉电源,立马死机,三五秒后自动关机,故障现象同不插电开机后再插电的表现

联系苹果电话技术支持,建议进诊断模式看自检结果,以及尝试降级到机器出厂系统版本,案例代码 1**3

使用诊断模式(按 https://support.apple.com/zh-cn/HT202731 开机按 D),诊断结果为 ADP000 没有发现问题(按 https://support.apple.com/zh-cn/HT203747

使用在线恢复模式安装出厂版本系统(按 https://support.apple.com/zh-cn/HT204904 开机按 Shift-Opt-Cmd-R),删除所有原宗卷,新建宗卷后不插电安装 macOS Catalina 10.15.7,故障依旧

2023.7.31

到苹果西湖店,联系预约的 Genius Bar 工作人员,表示的确是 macOS 14.0 beta4 引入的问题,需要刷个固件,他们机器连线刷完就好了

修复 WordPress 插件 Collapsing Archives 在 PHP8 下不能使用的问题

使用 Collapsing Archives 这个 WordPress 插件很多年了,就是本文右边能看到的历年存档,可以很漂亮折叠起来,而不是官方默认插件只能按年聚合,不能展开看有哪些文章

但是在 WordPress 升级到某个版本,及容器升级到 PHP8 后,只要开启这个插件,必然整个 WP 站都挂的,开 WordPress Debugging 看报错信息也没有头绪,没有可以联系作者的渠道,在 WordPress 论坛反馈也没反应

其中一个普遍的报错是

[error] 1088#1088: *266661 FastCGI sent in stderr: “PHP message: PHP Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, class collapsArch does not have a method “enqueue_scripts” in /home/foo/www/blog/wp-includes/class-wp-hook.php:307

这个问题参考 https://wordpress.org/support/topic/an-error-occurred-11/#post-15472977 获得了解决,具体办法是到 ~/wp-content/plugins/collapsing-archives/ 目录下修改 collapsArch.php 的 42 行,从

if (!is_admin()) {
    wp_enqueue_script('jquery');
    add_action( 'wp_enqueue_scripts', array( 'collapsArch', 'enqueue_scripts' ) );
} else {

改为

if (!is_admin()) {
    wp_enqueue_script('jquery');
    add_action( 'wp_head', array( 'collapsArch', 'get_head' ) );
} else {

但是问题依然没有解决,还有一处拼写错误需要修改,参考 https://wordpress.org/support/topic/great-until-php-8/#post-16349890 的办法,在 ~/wp-content/plugins/collapsing-archives/ 目录下修改 defaults.php 的 27 行,从

  'post_type' => 'post',
  'taxoncmy' => 'category',
  'postTitleLength' => '');

改为

  'post_type' => 'post',
  'taxonomy' => 'category',
  'postTitleLength' => '');

至此,重新启用插件恢复正常

macOS 还是需要 Karabiner 来解决 CapsLock 和 Shift 延迟的问题

在前阵子的 macOS 实用小工具记录 2 里提到,因为有原生锁屏快捷键后不用装 Karabiner 了,但最近在 macOS 下打字,按 CapsLock 切换大小写或临时按 Shift 时总有延迟的感觉,搜到这个现象很普遍,但怎么解决不知道

今天看到 v2ex 这个帖 https://www.v2ex.com/t/851971 ,以及里面提到的几个其他讨论帖,还是把 Karabiner 装了回来,因为

How to disable caps lock delay
Karabiner-Elements disables the caps lock delay without any action since v13.3.0.

官网在 https://karabiner-elements.pqrs.org/

如果用 brew 则用 brew install karabiner-elements 安装

macOS 实用小工具记录 2

本文用于更新和补充 macOS 实用小工具记录 里提到的工具 v2022.03.16

更新部分

Hidden Bar

  • 最终发现不用也能接受,只要吧 Stats 显示的监控变少一点就好了,不用放那么多图标在菜单栏里

Karabiner

  • 如原文所说,之前是为了映射 Power 键方便锁屏,现在用原生 Ctrl+Cmd+Q 已经可以解决了,自己没有别的键映射就没再装了

Scroll Reverser

  • 这个工具的作者说未来会改为收费工具,虽然一直没有落地,但不想白嫖
  • 另外是这个工具在 macOS Monterey 下(macOS 12.x)偶尔会失效,找到了另一个工具来替代

补充部分

Cleaner

Keka

  • https://www.keka.io
  • 压缩解压工具,命令行版的 p7zip 对非专业用户还是不够友好

MOS

  • https://mos.caldis.me/
  • 替代 Scroll Reverser 的小工具,将鼠标的滚轮方向单独调整成跟 Windows 下方向一样,保留触摸板是原生方向
  • 在 GitHub 上有免费开源,也可以 brew 安装,界面看起来更现代化一些