Skip to content

Commit bdc521c

Browse files
committed
new: x200
1 parent 9c4a5b6 commit bdc521c

File tree

1 file changed

+80
-0
lines changed
  • content/posts/upgrade_my_thinkpad_x200

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
+++
2+
date = '2025-08-30T12:33:31+08:00'
3+
draft = false
4+
title = '给老机x200刷开源BIOS--Coreboot!'
5+
lastmod = '2025-09-12T21:02:10+08:00'
6+
+++
7+
8+
这篇文本来是想写一下升级过程的,因为我在家里面翻出了这台x200,也算是我早期用得比较久的本子了(B站就是在这上面注册的)。
9+
10+
出于情怀,给它换了无线网卡,换了风扇,内存4G->8G,换了原来坏了的键盘,总共没超过200元。
11+
12+
不过暂时没带来学校,所以图片的话,以后再补充吧。
13+
14+
## 刷入Coreboot注意事项
15+
16+
这里记载了折腾过程中遇到的坑。
17+
18+
### 请不要购买CH341A!
19+
20+
为什么我会在这里得出跟libreboot一样的结论呢?
21+
22+
CH341A无法设置spispeed,而是默认2M,这就造成一个问题,如果你的连接质量不好的话,这已经是一个相当高的速率了。可能会使得你根本没法看到你的芯片读取到。这里还是推荐买正版的pico吧,这玩意用的buck-boost电路,相比国产的pico来说,发热肯定会小不少,这可能对稳定刷写有一定的帮助。
23+
24+
### 刷写
25+
26+
[libreboot的教程](https://libreboot.org/docs/install/spi.html)中,告诉你`1, 9`脚分别是WP/HOLD,据说主板自带上拉电阻,所以不用连接。
27+
28+
经过测试,发现夹子连接正确的话,这两个脚会有3.1v左右的电压,稍微低了一点但是不影响。
29+
30+
如果原始的固件你可能根本刷不进去,写入没一会就提示擦除失败,我试了连接这两个脚是无关事项,所以后来者可以不用连接。
31+
32+
请看过程:
33+
34+
```shell
35+
❯ flashprog -p serprog:dev=/dev/ttyACM0,spispeed=16M -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -w x200_bios.rom
36+
37+
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
38+
serprog: Programmer name is "pico-serprog"
39+
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on serprog.
40+
Reading old flash chip contents... done.
41+
Erasing and writing flash chip... FAILED at 0x00130000! Expected=0xff, Found=0x2f, failed byte count from 0x00130000-0x00137fff: 0x44aa
42+
ERASE FAILED!
43+
FAILED!
44+
Uh oh. Erase/write failed. Checking if anything has changed.
45+
Reading current flash chip contents... done.
46+
Apparently at least some data has changed.
47+
Your flash chip is in an unknown state.
48+
```
49+
50+
那这个问题如何解决呢?答案是**先擦除,再写入**
51+
52+
像这样:
53+
54+
```shell
55+
❯ flashprog -p serprog:dev=/dev/ttyACM0,spispeed=16M -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -E
56+
57+
...
58+
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
59+
serprog: Programmer name is "pico-serprog"
60+
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on serprog.
61+
Erasing flash chip... Erase done.
62+
```
63+
64+
然后就可以完美写入了:
65+
66+
```shell
67+
❯ flashprog -p serprog:dev=/dev/ttyACM0,spispeed=16M -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -w x200_bios.rom
68+
69+
...
70+
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
71+
serprog: Programmer name is "pico-serprog"
72+
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" (8192 kB, SPI) on serprog.
73+
Reading old flash chip contents... done.
74+
Erasing and writing flash chip... Erase/write done.
75+
Verifying flash... VERIFIED.
76+
```
77+
78+
提醒一句,尽量不要接在hub或者台式机的前面板,很可能会供电不足导致写入之后验证失败。
79+
80+
如果杜邦线的长度太长(最好10cm),夹子的质量不好,可能会导致你根本无法用16M的spispeed写入,甚至根本没法读取到芯片,经过我测试,现在我手上的这套设备已经不太行了,只能在64K的速度稳定写入,这消耗了大概50分钟进行一轮读取-擦除/写入-读取,所以当你成功刷入coreboot后,最好保守一点,直接在目标机子上面刷吧。

0 commit comments

Comments
 (0)