Day1~3 - 基本调查
- 调查谁负责键盘
- XPS系列键盘控制方式:键盘 → 排线 → 键盘小板ECE1117 → EC MEC510X
- 已知信息
- XPS 9310可以在BIOS中设置fn key工作方式
- 各板号基本情况:
- XPS 9310:LA-J143P(主要)、LA-J144P
- 无原理图、无点位图
- 有料板,100元
- EC:MEC5107-LJ
- XPS 9300:LA-H811P
- 无原理图、有点位图
- 有料板,90元
- EC:MEC5105
- XPS 9500:LA-J191P
- 有原理图、无点位图
- 有料板,130元
- EC:MEC5107-LJ
- EC相关资料
- Datasheet:MEC5XXX完全找不到datasheet,目前仅有MEC1322的datasheet
- MEC1322 DataSheet:http://ww1.microchip.com/downloads/en/devicedoc/00001719d.pdf
- MEC17xx的部分开发资料:
Day3 - 深入了解Dell BIOS
- XPS13 Dell BIOS更新后逆向结果:
- 无单独选项,直接就新增了EC的Secondary key
- Dell bios的配置是通过PEI module来搞得

- 和戴尔前员工Mario通讯
- 他无法联系到正确的人,建议我联系 Dell-Client-Driver@dell.com
- 无回复
- Dell的EC是加密并且签名的
- BIOS与EC之间使用Mailbox通讯
Day4~5 - 基本焊接工具
- 热风枪:@贺天 友情赞助
- 锡球:自购,直径小于0.3
- 植球台:思考要不要自购
- BGA测试座:
- MEC5107 封装规格:Microchip WFBFA176,大小10mm x 10mm
- MEC5105 封装规格:Microchip WFBGA169,大小11mm x 11mm
- XPS9500板子上实际量出来是10mm大小,应该是WFBGA176
- JTAG排线座
- ACES50521-01040
- 排线间距0.5mm
Day6 - 了解EC的FLASH到底在哪里
- Dell的图纸实际上有大量的信息,包括对各种芯片的配置
- 图纸术语
- PCH - 核心逻辑处理器
- 在戴尔内部EC有signed和不signed两种
- 似乎是通过芯片内部编程不同来区分的
- eSPI技术接管了原来基本上所有的低速总线
- SPI FLASH现在归由eSPI管理
- 如果FLASH挂在CPU下面,就叫MAFS,挂在EC下则叫SAFS
- XPS9300使用的是MAFS
- 一个FLASH通过eSPI走PCH共享给TPM、EC
- FLASH引脚名为SPI_CLK_ROM
- 使用的是GigiDevice的FLASH




Day7 2021/12/05 - 焊接失败
我们订到了ACES50521-01040,多次焊接之后成功,随后我们用编程器读取了flash,但是可能由于焊接问题,主板大面积短路。交了2700返厂维修。
Day8 2021/12/24 - 刷写BIOS失败
由于没有把芯片焊下来,刷写flash的时候会产生大量干扰,很多个字节中出现1bit错误的现象
同时,由于配置错误,32M大小的flash我只读取出来了256K,所以整个BIOS flash报废了
Day9 2021/12/29~30 - 尝试硬件修改键盘
键盘patch - 思路
键盘实际上就是扫描线,如果我们修改扫描线,让他在触发某两个键的时候触发第三个键,岂不美哉?
经过试验,Fn+XXX的快捷键按下时,其他没有fn定义的按键不受影响。所以我们只要在按下Fn+Left的时候触发F11即可成功触发Fn-F11,进而触发Home键

如图,我们只需要在F11键所在的Row1Col5上并联Row4Col1和Row3Col5的串联,这样如果Row4Col1和Row3Col5同时导通,那么说明Fn和Left键都按下去了, 会导致Row1Col5也被导通,从而使F11键被按下而导通
键盘patch - 修改思路

- 获取键盘信息
- 排线座:30pin,0.8mm间距
- 键盘的排线有一个卡口
- 键盘排线可以掰成直的,变成这样
- 思考如何放入一块小板
- 键盘本身是这样的,通过弯折的FPC链接键盘小板
- 我们把FPC拉直,然后把电路变成这样

在键盘和主板之间正好有一层地方可以让我们塞入一块板子

键盘patch - 尺寸&材料信息
- 排线宽度大概是25mm,从排线座到风扇有45到50mm


- 排线最短只能买到同向的5cm排线
键盘patch - 数据信息
- 键盘由ECE1117负责扫描,查询数据手册得知KSO为扫描输出引脚,KSI为扫描输入引脚,看图上意思是KSO输出电压,KSI输入电平

- ECE1117引脚定义如下

- 键盘排线与芯片引脚对应关系
- 引脚从右往左数,对应关系如下

unk - 0 KSI7 - 1 KSI6 - 2 KSI4 - 3 KSI2 - 4 KSI5 - 5 KSI1 - 6 KSI3 - 7 KSI0 - 8 KSO05 - 9 KSO04 - 10 KSO11 - 11 KSO06 - 12 KSO12 - 13 KSO03 - 14 KSO01 - 15 KSO20 - 16 KSO00 - 17 KSO16 - 18 KSO20 - 19 KSO19 - 20 KSO17 - 21 KSO18 - 22 KSO13 - 23 KSO15 - 24 KSO14 - 25 unk - 26 unk - 27 unk - 28 GND 29
- 几个相关键对应关系
Fn:3 9 - KSO05 KSI4 F12:5 11 - KSO11 KSI5 F11:5 18 - KSO16 KSI5 Left:2 23 - KSO13 KSI6 Right:1 25 - KSO14 KSO11 KSI7
键盘patch - 板子设计
- 本来的目标是这样的
- 我们买不到3cm以内的FPC
- Socket In处FPC是反的,所以我们整个板子是倒扣着放上去的,如果要保证板子是平的,Socket Out也得是反的。但是KBC上面的排线座是正的
- 需要重新设计

- 法子1,让FPC从板子上面传过去之后对折插入Socket Out
- 这个方法由于FPC在最后1cm处不好弯曲,可能无法实现
- 可以改进成L形的板子来降低对FPC长度的要求(PCB加工难度高,但可靠。第二首选方案)


- 法子2,90度折一下FPC(目前最优方案)
- 弯折处宽度与排线宽度相等,为25mm,排线长度为50mm,因此在排线中途弯折,可在两端剩余各1cm的宽度
