边界条件之场
66 subscribers
680 photos
4 videos
10 files
1.03K links
Do you hear the sirens sing?

main: @cvf_cha
group: @cvf_gro
forwards: @cvf_for
Download Telegram
昨天看到这条推文 (P1),帮助我解答了几个月前买开发板遇到的奇怪问题。

当时需要树莓派 (RPi) Pico,但官方版本用的还是古老的 Micro-B 接口,实在不想买。
在淤泥般的电商搜索结果中翻找后,最终买了 创乐博 (LOBOROBOT) 生产的开发板 (P2)。从 pcb 布局来看,它完全就是 RPi Pico 的一比一复刻,仅仅把 Micro-B 换成了 USB-C。

问题:使用 C-to-C 线缆连接 usb host,host 跟 device 两边都没任何反应。给 pico 提前刷写了 blink 固件,连灯都不亮说明开发板完全没有从 usb 得到供电。
使用 C-to-A 线缆连接 host 的 A 口或者加上 A-to-C 转接头连接 host C 口则正常工作。

阅读 USB-C 的 wiki 得知,面向上游(host 方向)的 C 口需要在 CC1CC2 上有 5.1 kOhm 的下拉电阻,否则 host 不会通过 VBUS 供电。
However, to connect a USB 2.0/1.1 device to a USB-C host, use of Rd on the CC pins is required, as the source (host) will not supply VBUS until a connection is detected through the CC pins.

Upstream facing port (UFP)’s Rd value is fixed at 5.1 kΩ.

所以 创乐博 的 usb-c pico 要么根本没下拉电阻,要么如推文所说是先短接再下拉。我想去进一步确认,就发现 创乐博 这品牌实在是灵车,官网破破烂烂,没有任何关于它们 usb-c pico 的信息,更别说图纸了;我没有万用表也无法直接测量实际情况。


后来买的两种小型化 RP2040 板子没有这个问题,可以正常使用 C-to-C 线缆连接 host。查看他们的 schematics 也确实有在 CC1CC2 正确使用下拉电阻。
P3: Waveshare
P4: Seeed
他说从微软商店安装 potplayer 「比较省心」,然后又说第一次启动软件需要跑一下软件自带更新检测。估计是为了应对粪坑的付费下载免费软件现象。从可信(?)源微软商店安装一个也许不是最新的 potplayer,然后再让这个可信版本自己下载可信最新版。
https://www.youtube.com/watch?v=RRAiJkJC2VE

于是我用百度搜了一下 potplayer ,大受震撼但又符合预期(
#trash #china #baidu
🤡1
国行小米硬件将来不能刷国际版系统了?
https://x.com/kacskrz/status/1809956388182905108

不知道会不会应用到老机型上,哪天我升级个 EEA 然后不能进系统就很爆笑了 🤡 #trash #xiaomi #phone
🤯1
原来如此……(随 rust 1.78 新加的 clippy lint,之前没见过)

之前如果我开了 nursery 这种大类 lint,再单独 allow 某个此大类下的特定 lint 是没有效果的,只能在 rust 代码里 #[allow(...)] ,非常烦。
应该用 priority 属性(吃了不读文档的亏
边界条件之场
我自己写的 wake on lan 小工具,在 windows 持续运行几天后就会失效,怎么都叫不醒网络上的另一台机器。这时只要重启 windows 就又能正常发送 wol 了……🤔
之前:
udp socket bind to 0.0.0.0:0
send magic packet to 255.255.255.255:0
在 waker 机的 windows 持续运行一段时间后就会失效

现在把 bind 地址明确设为 waker 的物理网卡 interface 地址(运行 route print 查看)就又能正常叫醒 wakee 了。
感觉是什么东西在开机一段时间后改了 windows 的路由,导致 magic packet 广播到了错误的网域。懒得排查,反正 it works now 😴
边界条件之场
之前: udp socket bind to 0.0.0.0:0 send magic packet to 255.255.255.255:0 在 waker 机的 windows 持续运行一段时间后就会失效 现在把 bind 地址明确设为 waker 的物理网卡 interface 地址(运行 route print 查看)就又能正常叫醒 wakee 了。 感觉是什么东西在开机一段时间后改了 windows 的路由,导致 magic packet 广播到了错误的网域。懒得排查,反正 it works now…
一个非常简单的命令行 wake on lan 小工具,为了解决 windows 下现成 wol 工具全是 gui 软件的问题。(虽然是为了在 windows 下使用写的,但没有平台特定代码,应该全平台可用)
https://github.com/toymil/wake_on_lan/releases/latest

$ wol --help
Usage: wol.exe [OPTIONS] <MAC_ADDR>...

Arguments:
<MAC_ADDR>...

Options:
--bind-ip <BIND_IP> [default: 0.0.0.0]
--bind-port <BIND_PORT> [default: 0]
--ip <IP> [default: 255.255.255.255]
--port <PORT> [default: 0]
-h, --help Print help
-V, --version Print version
麻了,usb spec 通篇只说用 unicode,不说到底是 utf-8, 16, 还是 32,也不说 byte order 😇
根据样例里面每 ascii 字符 2 byte 来看猜测是 utf-16。再根据 usb 规范里面其它 multi-byte 数据的惯例,猜测是 little endian。
网上搜了搜好像都说是 UTF-16LE ,但就是没看到来自 usb.org 的官方说法 😇
今天被笔记本狂转的风扇吵醒,马上就猜到是 vmmem 100% cpu 占用、wsl2 卡死,因为我昨天不小心在 wsl2 仍在运行的状态下让 windows 休眠了。起来一看果然没错。

这 bug 能非常稳定地复现,而且已经好几年了。微软在 issue 里反复几次说它们修了,不知道是不是仅在 ad os 11 (TM) 修复 🙄
#trash #microsoft #windows
边界条件之场
现在回头看,这台 7000 CNY 的华为笔记本是我做过第二傻逼的计算机消费(第一傻逼是微软 surface pro 4) #trash #huawei #laptop - 固件维护周期仅为 1 年。2021 年的机器,华为官网固件下载页面最后 bios 更新是 2022 年(不考虑通过华为电脑管家更新驱动/固件。如果华为在 2022 年后实际有持续维护,但仅从电脑管家分发新版固件,不更新官网支持页面,那我只能说:垃圾华为) - usb 电路设计傻逼,两个 usb-c 接口间会互相影响。使用一个充电的同时另一个会抽搐…
刚才发现,这台华为笔记本,在 合盖 + 外接显示器 的情况下重启, 内屏最终会处于点亮状态 🤯
所以这台笔记本如果作为固定机位用机,每次开机[1]或重启之后都必须手动开盖再合盖,让这傻逼硬件重新识别屏轴状态来关内屏。
另:键盘背光每次开机都会重置为点亮状态,又因为背光不理会屏轴状态,每次开机还要记得关键盘背光。

真的是不断刷新我对华为软硬件质量的认知。 #trash #huawei #laptop
[1]: 使用 wake on lan 等不开盖方式开机。
昨天刚在实体机装 openSUSE Tumbleweed ,今天 opensuse.org 就宕机了 🫥
wiki、manpage、软件仓库全都无法访问。他要是昨天宕,那我连 ssh 都连不上,因为从来没用过 firewalld 不知道怎么开端口