Lexsion 发布的文章

BL-RM7620N折腾笔记

事情起因是这样的。公司搬家捡垃圾,捡到了一路由器,看网口四根针,确认是百兆的垃圾路由器。本想丢掉,但后面标签写的制造商不太常见,所以捡回来拆了看什么方案。拆开看了眼板号是BL-RM7620N,布线一眼就知MT7620N,但串口上焊了一枚CC2530模组,看起来与Zigbee有关。那我必须登上管理页面看看。

OpenWrt 安全模式

通过自动获取IP,获得了路由器管理页面地址,登上去看到是运行的OpenWrt 14(Barrier Breaker)。尝试使用常见的弱口令登录,发现都登不上。接下来能做的就是清除掉密码啦。

与常见的消费级路由器相比,OpenWrt不能通过长按Rest恢复默认设置(这种自定义固件恢复默认设置后,它的密码可能我也不知道)。经过一番搜索,了解到OpenWrt内置了安全模式(failsafe mode)用于在忘记密码或配置错误后进行恢复,如果编译时不取消掉,默认该模式是提供的。

进入安全模式的方式有两种:在系统的启动过程中按下物理按键不松手、通过串口在系统提示按 f 和 Enter 进入 failsafe mode时输入按键。一旦进入安全模式,OpenWrt会绕过几乎所有的配置,使用192.168.1.1作为IP地址启动必要的服务。然后手动设置计算机IP为192.168.1.2,即可无需密码使用 telnet 连接并修复某些错误。

第一种方式通过按键进入。这很难把握时机,按键过早会进入Bootloader,按键晚了进不去安全模式。笔者试了几次没成功就放弃啦。

第二种方式通过串口进入。把上面的ZigBee模组拆除,暴露串口。通过USB2TTL线连接到计算机,注意只连接GND、TXD、RXD就好,TXD与RXD要交叉连接呦。波特率57600,打开串口,路由器插电开机,没一会儿,串口开始打印SPI Flash分区布局等启动信息,然后就看到了期望的failsafe mode提示信息:

Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level

此时,通过键盘输入 f ,然后按 Enter 键,就会看到 - failsafe - 的提示信息,然后显示BusyBox shell界面,成功进入安全模式。

进入安全模式后,我们需要通过 mount_root 命令重新挂载分区才可以写入配置文件,否则就会提示要修改的文件是Read-only file system。

root@(none):/# mount_root
jffs2 is ready

然后输入 passwd 根据提示两次输入同一密码即可更改密码。

root@(none):/# passwd
Changing password for root
New password:
Retype password:
Password for root changed by root

然后通过 reboot -f 命令重启OpenWrt,即可使用新设置的密码登录。

注:通过 uci get network.lan.ipaddr命令可以获取路由器IP地址配置,通过 mtd -r erase rootfs_data命令可以恢复默认配置。

刷机

登录管理页面后大失所望,Luci的界面干净的很,没有什么好康的。考虑这玩意儿不知道里面有啥东西,打算刷个机丢公司让他继续发热。就用SNR CPE-W4N rev. M的固件,他们PCB、Flash容量一毛一样。

通过密码登录Luci后,直接固件升级新的OpenWrt sysupgrade文件就可以。或者按住RESET键上电在Bootloader里面升级也可以。

# Stable Release 版本下载地址:
https://downloads.openwrt.org/releases/
# Development Snapshot 版本下载地址:
https://downloads.openwrt.org/snapshots/targets/

SSH登录

刷完机发现打不开管理页面了,不慌,SSH上去看看。然后我丢,SSH怎么也上不去,仔细一看,是本地计算机发现对端的验证信息改变了:

C:\Users\Lexsion>ssh root@192.168.1.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

那我们就使用 ssh-keygen -R XXX.XXX.XXX.XXX 把之前缓存的验证信息删除,XXX.XXX.XXX.XXX是对端的IP地址。

C:\Users\Lexsion>ssh-keygen -R 192.168.1.1
# Host 192.168.1.1 found: line 5
C:\Users\Lexsion/.ssh/known_hosts updated.
Original contents retained as C:\Users\Lexsion/.ssh/known_hosts.old

然后我们就成功使用 ssh USERNAME@HOST_IP命令连接路由器的shell。

C:\Users\Lexsion>ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.1' (ED25519) to the list of known hosts.


BusyBox v1.36.1 (2023-12-15 10:44:38 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r24661-a14240d384
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~#

安装LUCI与中文语言包

通过执行 opkg list-installed命令查看已经安装的软件包,发现果然没有Luci,那二话不说,给它WAN口插网线,装一个Luci。

root@OpenWrt:~# opkg update
Downloading https://downloads.openwrt.org/snapshots/targets/ramips/mt7620/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading https://downloads.openwrt.org/snapshots/targets/ramips/mt7620/packages/Packages.sig
Signature check passed.
······
Downloading https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/telephony/Packages.sig
Signature check passed.
root@OpenWrt:~# opkg install luci
Installing luci (git-23.051.66410-a505bb1) to root...
Downloading https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci_git-23.051.66410-a505bb1_all.ipk
······
Configuring ······
······
Configuring luci.

然后网页就有了,登录后发现系统的语言只有英语,那就去system-->Software下搜索zh-cn,下载中文语言包就变成中文啦。

普源MSO5000系列示波器破解选件

前言

几年前,笔者有幸听闻民族品牌 日狗(RIGOL-普源)有一个系列高低配版本通过软件限制,硬件完全一样,国外有大神购买低配版本,对其系统进行破解。因去年双十一京东折扣较大,今年早早便开始关注该机器的价格变化。果不其然,在今年双十一期间MSO5074价格美丽。你买了么?

首先介绍一下该系列的命名规则。型号中的MSO5表示其属于MSO5000系列,07表示带宽为70MHz,4表示四个通道。该系列型号命名MSO表示它属于混合信号示波器(Mixed Signal Oscilloscope),它将数字存储示波器(DSO)与逻辑分析仪(LA)的部分测量功能整合在一台仪器中,以能够在同一显示屏幕上看到多个时间对齐的模拟和数字波形。

尽管混合信号示波器的优势在于混合信号的分析,但MSO5000系列的LA探头(PLA2216)并非标配,而是以选件形式存在,价格当然是非常昂贵。而国外有大神自行设计了较低成本的探头方案,本文暂不讨论,有需要的朋友可以自行搜索。

本文是对EEVblog社区的Hacking the Rigol MSO5000 series oscilloscopes帖子中最新固件的破解内容整理。

备份

一份成熟的固件破解方案少不了备份,通过大佬tv84提供的备份脚本可以快速对MSO5000进行备份。

首先下载解压第一个文件中的DS5000Update.GEL文件到一个FAT32 U盘(空间>1GB)中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 ->本地升级,点击确定以开始运行并等待脚本执行结束。结束后关闭电压拔下U盘,在电脑上检查备份文件并将其转移至安全的位置存储,最后删除文件。

然后下载解压第二个文件中的DS5000Update.GEL文件,重复上一步骤的操作。

破解步骤

大佬qali.pro提供了本破解。

  1. 升级系统

笔者到手的固件版本是v00.01.03.00.03,发布时间是2021/10/18,这是目前的最新版本。查看固件版本请按 Utility 键,然后在弹出的辅助菜单中选择 系统 -> 帮助 -> 关于此示波器。如果您的系统不是该版本,使用本破解需要先升级到该版本。如果您的系统是该版本,请跳过这一步。

访问RIGOL官方固件下载链接获取固件。解压DS5000Update.GEL文件到一个FAT32 U盘中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 本地升级,点击确定以开始运行升级。等待完成升级。

  1. 破解固件

下载Patch.zip文件并将其中的三个文件解压到一个FAT32 U盘中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 本地升级。点击确定开始破解流程。

等待示波器进入白屏命令行界面,然后在屏幕显示 Press any key on the scope to continue...时按屏幕右侧任意按键,整个过程中该提示会出现两次。之后示波器会黑屏几十秒,等其自动重启即可完成破解,不需要按电源键。

此时按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 选件列表,即可看到选件的License全部显示Forever,这表示您已破解了所有选件。

  1. 自校正

最后,按大佬的说法,需要重新运行示波器的自校正。在自校正前需要保证示波器已经热机,即开机运行了半个小时以上。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 自校正,然后点击开始键进行自校正,整个过程可能需要几十分钟。

如果您需要去除破解状态,您可以使用官方升级文件运行本地升级流程。

参考

Hacking the Rigol MSO5000 series oscilloscopes-EEVblog

H3C WA4320H-SI-FIT USB 连接串口按键无效踩坑记

前言:

今天与新华三的技术支持一起研究给H3C的一个墙面AP刷固件,AP型号是WA4320H-SI-FIT,瘦AP。我们要做的是通过串口命令刷固件,这个机型的串口是通过Micro USB接口连接到电脑识别的。通过数据线连接电脑后,电脑顺利的出现了一个COM口,使用MobaXterm顺利连接串口,也看到了串口打印的日志。但在提示 Press ENTER to get started 时,按ENTER键却没有任何反应,我们尝试重启后在前面的 Press Ctrl-B to ...时按Ctrl+B,也没有任何反应。新华三技术支持表示遇到过数据线不良导致此问题的,但我这换了几根线后依然如此,可以排除线的问题。

故障原因:

在一切陷入僵局后,向公司的大佬求助。大佬插到他的笔记本上,Ctrl+B一按下去,启动过程就被终止了。本来我想的是机器原始固件有限制,不识别按键输入,大佬上肯定也补星。大佬成功后我当即傻眼,随后脑子里放电影似的回忆大佬操作过程和我哪里不一样,发觉在大佬笔记本的设备管理器里,串口设备名称貌似和我不一样,这说明串口驱动不一样! 如此说来,会不会是驱动不兼容导致的呢?事实证明,确实如此!

故障处理:

于是,我求大佬让我再看了一眼他的设备管理器,记下了大佬的串口名称是 XR21V1410后马不停蹄跑回自己电脑旁 ,看我的电脑则是什么Microsoft USB Serial Port。至于XR21V1410 是什么,我是从未听说过,于是我去搜索了一番,发现这是MaxLinear公司的一款USB转串口芯片。

立刻从官方产品页下载了最新的Windows驱动程序,然后解压。在串口上右击,更新驱动,定位到刚解压的驱动,进行更新,完事儿就能正常使用了!

其他原因:

此处列出其他可能的原因:

  1. 数据线不良导致传输数据不稳定。

    更换更好的数据线。

  2. 串口配置信息错误。

    波特率9600,数据位8,停止位1,无奇偶校验与流控。某些Shell默认打开流控,需要取消掉。

B560M Pro4 主板安装ESXi与黑群晖踩坑笔记

为了改善家中文件存储的安全性,降低功耗,笔者打算替换掉家中运行黑群晖的那台十几年前的工控机。新的机器使用专业的6盘位NAS机箱,配置采用B560M Pro4主板搭配Intel CORE i5 11500 CPU、16G DDR4 3000 * 2 。有望提升性能、降低功耗、扩充功能、提高数据安全,并且降低房间噪音。

读懂并实践本文,你可能需要预先在技能树中点亮以下技能:
1:基本的Windows系统与Linux Shell操作;
2:基本的网络知识;
3:域名、证书申请相关;

ESXi踩坑

ESXi 6.7 更换证书实现正常HTTPS访问

ESXi装完后默认就是HTTPS访问,但证书确实自签名的。浏览器会报不安全,使用体验很差。于是我们要更换证书,在这之前,要拥有自己的域名,并且配好外网访问或将域名解析到内网地址。
外网访问技术方面,内网穿透或是端口转发;证书的获取,很多云服务商提供了免费的额度,大概阿里云就有吧,申请后会得到一个证书和一个私钥;以上此处不做赘述。

证书两个文件,xxx.crt改为rui.crt,xxx.key改为rui.key 。

启动ESXi后,网页登录,在 主机 页面点击 操作->服务->启用安全Shell(SSH) ,打开SSH访问。

连接SSH后进入 /etc/vmware/ssl 目录,把原有的证书和私钥文件改名或直接删除,然后将刚才改名的文件上传。

重启ESXi,或使用以下命令重启相关服务后新的证书便被应用了。

/etc/init.d/hostd restart
/etc/init.d/vpxa restart

ESXi 6.7 修改配置文件强制设置SATA直通

装完ESXi6.7,发现主板自带的SATA控制器无法像别人那样可以直接设置直通,对应的控制器是灰色的。这时,我们就需要修改配置文件了。

首先,需要确认VT-D已经打开了,这个在BIOS中设置,每款主板设置不一样,相信能玩ESXi的朋友,这个应该都会打开,不知道怎么设置可以使用搜索引擎搜索。

启动ESXi后,网页登录,在 主机 页面点击 操作->服务->启用安全Shell(SSH) ,打开SSH访问。

点击主机->管理->硬件->PCI设备,找到描述内容中含有 SATA、AHCI 字样的设备,记录其 设备 ID供应商 ID注意,若要直通SATA控制器,务必保证安装ESXi的存储器不在直通的SATA控制器下,否则直通后ESXi将无法启动!

使用类似Putty、MobaXterm、xShell等终端工具连接ESXi,账号使用root,密码与网页登录相同。

然后使用 vi 修改ESXi的配置文件 /etc/vmware/passthru.map ,在文件末尾加入AHCI控制器的硬件ID后保存重启,如下所示。vi的使用此处不再赘述。

# Intel Corporation SATA
8086   43d2    d3d0    default

重启后即可在主机->管理->硬件->PCI设备页面下看到SATA设备已经不是灰色了,后面该怎么做直通就不罗嗦了。

ESXi 6.7 直通核显

ESXi在开机时会获取核显的控制权限,用于显示自检信息与DCUI界面,其他并不能作为硬件性能提供给虚拟机用,这样让人感觉有点浪费了核显。我们可以考虑将它直通给某个虚拟机使用。

启动ESXi后,网页登录,在 主机 页面点击 操作->服务->启用安全Shell(SSH) ,打开SSH访问。

点击主机->管理->硬件->PCI设备,找到描述内容中包含Intel字样的条目,自行判断哪个是显卡。选中后点击 切换直通 将其切换为直通,按提示重新引导ESXi。

编辑需要核显的虚拟机,点击添加其他设备->PCI 设备,在下拉菜单中选中需要添加的核显,点击 预留所有内存 ,然后保存。

在ESXi Shell下执行以下命令,让ESXi启动时不去获取显卡控制权,然后重启ESXi。

esxcli system settings kernel set -s vga -v FALSE

Tips:如上设置后,DCUI界面便不能直接访问了。需要访问DCUI界面可在Shell中使用dcui命令进入DCUI,退出按Ctrl+C。

Tips:不再使用核显直通时记得改回去,上面的命令中 FALSE 换成 TRUE 执行一下即可。

ESXi 6.7 直通网口老是提示“已启用/需要重新引导”

为了局域网传输速度,斥资购买了2.5G PCIE网卡,安装后正常识别。切换直通,重新引导后依然提示“已启用/需要重新引导”。

通过搜索发现:

这个是ESXi 对PCIE 设备的 ACScheck 带来的问题。在主机>管理>系统>高级设置里面,找到VMkernel.Boot.disableACSCheck,关掉就好了。


黑群晖踩坑

群晖网口改桥接电脑插群晖上网

因为我财力有限,路由器没有2.5G网口,目前只有我的电脑和群晖有2.5G网口。于是我需要将群晖的两个2.5G网口桥接,然后电脑通过网线直插群晖上网。这样,我的电脑访问群晖的网络速率就是2.5G了。经过搜索找到了办法。

打开群晖的Open vSwitch交换机

登录群晖管理页面,打开 控制面板->网络->网络界面 ,点击 管理->Open vSwitch设置 ,勾选 启用Open vSwitch 然后点击确定。若之前已经启用了群晖的虚拟机功能,你会发现Open vSwitch已是启用状态且无法关闭,则此步骤忽略。

打开群晖的SSH并连接Shell

登录群晖管理页面,打开 控制面板->终端机和 SNMP->终端机,勾选 启用SSH,点击 应用 保存设置。

使用类似Putty、MobaXterm、xShell等终端工具连接群晖。用户名和密码与网页登录相同,要使用有管理员权限的账号。

通过命令配置Open vSwitch

登陆后执行 sudo -i 提升到root权限。通过 ifconfig 命令可以看到ovs_eth0ovs_eth1两个网桥,通过详细的信息判断哪个网桥是连接路由器的,哪个网桥暂未使用给电脑。保留连接路由器的网桥,删除暂未使用的网桥,然后将释放的接口绑定到第一个网桥。

这里,我的 ovs_eth0ovs_eth1 分别对应 eth0eth1 ,大多数双网口群晖应该都是如此。于是我要删除ovs_eth1,将释放的eth1接口绑定到ovs_eth0。命令如下:

ovs-vsctl del-br ovs_eth1
ovs-vsctl add-port ovs_eth0 eth1

执行后将电脑连接通过网线连接到群晖的第二个网口,若配置正确,此时电脑应该可以正常获取IP,正常上网了。若网络不正常,可重启群晖,Open vSwitch的配置将还原。

通过任务计划让群晖开机时自动配置Open vSwitch

若上一步的网络配置可以正常工作,则将这两句命令添加到任务计划开机执行,这样就不用每次重启群晖都手动再配一遍了。

登录群晖管理页面,打开 控制面板->任务计划,点击 新增->触发的任务->用户定义的脚本 。在弹出的添加窗口中,常规选项卡下,任务名称自己编,用户选择 root 、事件选择开机;任务设置选项卡下,在运行命令下的文本框中填入有效的命令,然后点击确定保存即可。

Tips:使用此方法后可能出现自动获取IP异常的问题,建议在设置前先为网络1分配静态IP地址试用,笔者遇到此问题后将IP设为了静态,会关注一段时间。

USB-C与PD学习笔记——在新的USB应用中换用Type-C接口

USB 发展概览

USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,目前由USB-IF维护。自1994年问世,大致经历了以下时期:USB1.0(1.5Mb/s ,Low-Speed, 1996.01)、USB1.1(12Mb/s ,Full-Speed, 1998.09)、USB2.0(480Mb/s ,High-Speed, 2000.04)、USB3.0(5.0Gb/s ,Super-Speed, 2008.11,又称USB3.1 Gen1、USB3.2 Gen1)、USB3.1 Gen2(10Gb/s ,Super-Speed+, 2013.12,又称USB3.2 Gen2)、USB3.2 Gen2x2(20Gb/s,Super-Speed++, 2017.09,仅支持Type-C接口)、USB4(包含 USB4® 20Gbps与USB4® 40Gbps并向下兼容前述规范,2019.09)。需要注意的是,雷电接口不属于USB规范,它是英特尔维护的一个接口规范,切莫混淆。

版本 速度 发布年份(参考)
USB1.0 1.5Mb/s ,Low-Speed,低速 1996.01
USB1.1 12Mb/s ,Full-Speed,全速 1998.09
USB2.0 480Mb/s ,High-Speed,高速 2000.04
USB3.0 5.0Gb/s ,Super-Speed 2008.11
USB3.1 Gen2 10Gb/s ,Super-Speed+ 2013.12
USB3.2 Gen2x2 20Gb/s,Super-Speed++ 2017.09
USB4® 20Gbps 20Gbps 2019.09
USB4® 40Gbps 40Gbps 2019.09

USB3时代命名混乱,最初的USB3.0速率为5.0Gb/s,后来USB3.1和3.2发布后,速度使用Gen1、Gen2、Gen2x2来表示。USB4时代USB-IF已经意识到了这个问题,简化USB版本命名。

USB-IF除维护上述的USB数据协议标准之外,他也定义了USB协议所使用的各种接口和电气规范。在USB3.1以及之前,接口与电器规范包含在USB规范中;从USB3.2开始,USB 3.2规范已经不再包含接口和电气规范,转为单独提供。

USB-IF定义了USB的电源规范。从最初的BC1.0(Battery Charging1.0)到提供5V1.5A电流支持的BC1.2。又从PD1.0开始,到广泛使用的PD2.0&3.0,支持最高20V5A的100W供电能力。最新的PD3.1快充标准由USB-IF 于2021年5月发布。由此,基于USB Type-C的电源支持添加了28V、36V、48V档,其分别能够提供140W、180W、240W三档功率;可调电压模式提供了15V到电源适配器最大电压的可调范围,分辨率100mV。在PD协议中,电源的供给方向与USB接口的功能角色通过单独的导线通信进行配置,实现了大量的功能。

笔者最初开始学习USB-PD的目的是为USB2.0设备更换Type-C接口。本学习笔记最初的目标是为电子工程师提供参考,以便快速将Type-C接口应用于电路设计中;后期若有机会深入,可以研究一下快充协议触发。当然笔者才疏学浅,这个目标目前还很遥远。目前我为探索通过Type-C充电时各IO的信号,画了一张板子做测试用,文件已上传GitHub

本文相关的参考文档,如往常一样,我会在文末附加链接。

USB Type-C 接口定义

USB Type-C 母座定义(前视图):

USB Type-C 公头定义(前视图):

如何从C口获得电力

这个标题可能看起来有些无聊,但很多初学者对此并不了解。从传统的几款USB接口中获取电力非常简单,你只需要连接VBUS和GND,即可轻松获得电力。但Type-C 接口并非如此。这时有人会说,我画了张板子,Type-C口只是用来供电,我只连接了VBUS和GND,手机充电器插上,板子就工作了。哪有你说的那么悬?

传统5V取电:

目前市面常见的Android手机已经普遍采用Type-C 接口,但充电线与电源适配器间的连接仍大量使用USB A型接口,而这类充电器并不能代表全部。有一类电源适配器的输出口也是C口,它们应当支持PD快充协议。按PD规范,C口应该支持双向充电,这是两者协商决定的,提供电力的设备被称为Source,而受电的设备被称为Sink。Source端应上拉CC,Sink端应下拉CC,以此完成识别。复杂的快充协商要求两边是IC来执行,而普通的5V设备想做到被其他设备识别,只需要几颗电阻就可以。

所以,如上图所示。如果我们要从C口获取电力,我们需要的便是在受电即Sink端Type-C母口的CC1和CC2分别连接一个下拉电阻即可,一般取值5.1K。为什么要分别连接一颗下拉电阻,而不能直接短接CC1和CC2共用一颗电阻?因为在双头Type-C连接线缆中,CC实际只有一条,另一条将作为VCON,给线缆中的EMark芯片供电。注意,这里的EMark芯片是选配的,USB-IF规定了载流能力超过3A的线缆必须带有EMark芯片。而EMark 芯片会将CC线短接的情况识别为耳机附件模式,最终导致在Source端不能正确识别Sink设备。

按照上面介绍的逻辑,如果我们设计的是Type-C公头取电,比如是一条5V电源转接线。这种情况下我们只需要在CC上设计一个5.1K下拉电阻,VCON悬空即可。毕竟在公头Type-C上,只有一个CC线。另外,如果我们设计的是一个连接到Sink端的Type-C公头,此时我们应该为CC添加上拉电阻,以保证Sink正确识别到插入的是电源。具体的电阻大小与电源供电能力有关,此处不在赘述。

如何实现快充:

目前市面上有大量的快充协议,最广泛的可能要属USB PD 和高通的 QC。前者是在CC线上使用PD协议进行通信,后者是在D+和D-上加载不同电压来协商。学习这些信号的时序、协议需要耗费大量的时间。业界有公司专门为此设计了专用的接口芯片,他们往往提供了多种与单片机通信的方式,使用时无需关注PD协议信号的处理,通过简单的配置即可使用。此类产品如:沁恒CH224。

参考

Edge浏览器菜单透明效果异常导致无法看清的处理方案

前言:

笔者最近新换的电脑出厂预装Windows11,这个系统稳定性真不行,会出很多莫名其妙的问题。于是笔者装了个Windows11 的虚拟机,在虚拟机中安装Windows10还是有点小问题的,这里不展开。完活后发现的第一个问题就是Edge浏览器菜单透明样式异常,完全看不清选项。如下图所示:

Edge

处理思路:

  1. 这个问题一看就感觉与显示渲染有关,很有可能是虚拟机图形显示驱动兼容性问题。首先考虑换个黑主题碰碰运气,试了一下果然不行。

  2. 然后就打开搜索引擎开摆。最开始用关键词 Edge 菜单透明 搜索未果,考虑 Edge 和 Chrome 都采用的 Chromium 内核,会不会有Chrome用户遇到这个问题呢?

  3. 然后换关键词 Chrome 菜单透明 ,找到有用的信息了。

    有知乎用户于19年发文表示Chrome遇到此问题,前辈在文中表示他几乎把能试的都试了,都无效。最后突然想到显示相关office相关软件有个设置叫 硬件加速 前辈找了一下果然Chrome也有 硬件加速 ,然后关掉就好了。

    文末还有不愿透露ID的大佬评论,通过实验项目改一下图形后端渲染模式也可以解决。

详细操作:

于是我们有了两个办法二选一:

  1. 修改ANGLE graphics backend

    该项设置属于实验型设置,在Chrome中是在 chrome://flags 位置,那么在Edge中就应该是在地址栏中输入 edge://flags 回车打开实验项目设置。

    搜索 Choose ANGLE graphics backend 设置项,笔者测试只有 D3D11on12 选项是能恢复正常工作的。如果你不是虚拟机遇到此问题,可以试试换其他选项。如果所有选项都不行,那只好试试下面的办法了。

  2. 关闭硬件加速

    打开Edge浏览器的设置,如果看不清不好选择,可直接在地址栏输入 edge://settings 回车进入。然后在左侧选择 系统和性能 (有些环境中是:系统),然后在右侧的设置条目中找到使用硬件加速,将其关闭

    其实VMware虚拟机的话,还有一个办法:那就是在虚拟机设置中取消 加速3D图形 ,该设置在虚拟机设置的 显示器 部分。这个设置关闭虚拟机才能改哦!(非常糟糕的方案)

总结:为不影响性能,尽量用第一个办法解决。

参考:

Chrome部分框架窗口都变半透明了——WireWolf