新XPS键盘patch

大类
Env
技术标签
电路相关
逆向-嵌入式
信息收集
优先级
High
开始日期
Nov 7, 2021
状态
Abandon
Public
Public
最后更新
Dec 31, 2021

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

Day3 - 深入了解Dell BIOS

  • XPS13 Dell BIOS更新后逆向结果:
    • 无单独选项,直接就新增了EC的Secondary key
    • Dell bios的配置是通过PEI module来搞得
      • notion image
  • 和戴尔前员工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
      • notion image
      • 一个FLASH通过eSPI走PCH共享给TPM、EC
        • notion image
      • FLASH引脚名为SPI_CLK_ROM
        • notion image
      • 使用的是GigiDevice的FLASH
        • notion image
 

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键
notion image
如图,我们只需要在F11键所在的Row1Col5上并联Row4Col1和Row3Col5的串联,这样如果Row4Col1和Row3Col5同时导通,那么说明Fn和Left键都按下去了, 会导致Row1Col5也被导通,从而使F11键被按下而导通

键盘patch - 修改思路

notion image
  1. 获取键盘信息
      • 排线座:30pin,0.8mm间距
      • 键盘的排线有一个卡口
      • 键盘排线可以掰成直的,变成这样
  1. 思考如何放入一块小板
      • 键盘本身是这样的,通过弯折的FPC链接键盘小板
        • notion image
      • 我们把FPC拉直,然后把电路变成这样
        • 在键盘和主板之间正好有一层地方可以让我们塞入一块板子
          notion image

键盘patch - 尺寸&材料信息

  • 排线宽度大概是25mm,从排线座到风扇有45到50mm
notion image
notion image
  • 排线最短只能买到同向的5cm排线

键盘patch - 数据信息

  • 键盘由ECE1117负责扫描,查询数据手册得知KSO为扫描输出引脚,KSI为扫描输入引脚,看图上意思是KSO输出电压,KSI输入电平
    • notion image
  • ECE1117引脚定义如下
    • notion image
 
  • 键盘排线与芯片引脚对应关系
    • 引脚从右往左数,对应关系如下
      • notion image
      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上面的排线座是正的
    • 需要重新设计
    • notion image
  • 法子1,让FPC从板子上面传过去之后对折插入Socket Out
    • 这个方法由于FPC在最后1cm处不好弯曲,可能无法实现
    • notion image
    • 可以改进成L形的板子来降低对FPC长度的要求(PCB加工难度高,但可靠。第二首选方案)
      • notion image
  • 法子2,90度折一下FPC(目前最优方案)
    • 弯折处宽度与排线宽度相等,为25mm,排线长度为50mm,因此在排线中途弯折,可在两端剩余各1cm的宽度
    • notion image