x230 mods

name:
Thinkpad x230 mods
beschreibung:

Modifizierung des allseits beliebten x230

bilder:
bilder: 08_panel-test.jpg
beteiligt:
9R
status:
läuft
kategorie:
x230, Hardware, Software

FullHD Mod

kit

FHD-panel is attached to eDisplayPort #3 pins of the docking port. PWM-Signal for backlight brightness is leached from LVDS (internal display connector).

Irreversible modification (milling) to the lid is needed to fit the new panel.

Before - After

Before After

Base

install location cut foil solder sense wire solder mod pcb

test panel

Lid

protect cables end antenna mask before milling after millling attach display cable

assebled lid

Assembly

cable routing

Lenovo Bios & a current Coreboot build will work without modification

Without a modified VBT (video bios table) or VGA-OtionROM LVDS still needs to stay active. Otherwise backlight of the FHD-panel will turn off, as soon as LVDS is turned off. This leads to a light increase in head and power consumption.

X

X will align panels next to each other by default. To align panels above each other to get rid unreachable desktop areas use this bash script on X startup:
The script creates a large enough framebuffer to attach an external FHD-display and positions LVDS-1 in the top left corner of the new FHD panel attached to PD-3

fhdfix.sh
#!/bin/bash
DISPLAY=:0  xrandr --fb 3840x1080 --output DP-3 --primary --size 1920x1080 --left-of LVDS-1 --output LVDS-1 --off && xrandr --output LVDS-1 --auto --mode 640x360

Coreboot on x230

These steps should create a bootable coreboot-image for the x230 with seabios.

⚠ This image will only work with a the FHD-mod.

⚠ LVDS-output will not be available.

If/when the fhd-mod gets accepted into coreboot, you can skip steps #2 & #3.

# 1. clone coreboot repo
git clone https://review.coreboot.org/coreboot.git
cd coreboot
 
# 2. checkout the fhd patch (c&p from download at https://review.coreboot.org/c/coreboot/+/28950 )
git fetch https://review.coreboot.org/coreboot refs/changes/50/28950/3 && git checkout FETCH_HEAD
 
# 3. apply all commits from master branch that happened after the patch was submitted
git rebase master FETCH_HEAD
 
# 4. get the submodules
git submodule update --init --checkout
 
# 5. build coreboot crosscompiler environment (may take a while)
make crossgcc-i386 CPUS=4
 
# 6. create x230 specific defconfig (remove comments in the last 5 lines if you want to add optional secondary payloads)
cat << EOF > config/defconfig
CONFIG_USE_OPTION_TABLE=y
CONFIG_TIMESTAMPS_ON_CONSOLE=y
CONFIG_USE_BLOBS=y
CONFIG_VENDOR_LENOVO=y
CONFIG_CBFS_SIZE=0x400000
CONFIG_BOARD_LENOVO_X230_FHD=y
CONFIG_DRIVERS_PS2_KEYBOARD=y
CONFIG_PCIEXP_L1_SUB_STATE=y
CONFIG_PCIEXP_CLK_PM=y
CONFIG_SEABIOS_PS2_TIMEOUT=2000
CONFIG_H8_SUPPORT_BT_ON_WIFI=y
CONFIG_MAINBOARD_USE_LIBGFXINIT=y
CONFIG_GENERIC_LINEAR_FRAMEBUFFER=y
# CONFIG_SEABIOS_MASTER=y
# CONFIG_COREINFO_SECONDARY_PAYLOAD=y
# CONFIG_MEMTEST_SECONDARY_PAYLOAD=y
# CONFIG_NVRAMCUI_SECONDARY_PAYLOAD=y
# CONFIG_TINT_SECONDARY_PAYLOAD=y
EOF
 
# 8. create new .config with the parameters from the defconfig you just created
make defconfig
 
# 9. take a look at the created configuration
make menuconfig
 
# 10. build coreboot image
make

FIXME add photo, pretty plz 🙂

Pins on both flash-chips:

Screen (furthest from you)
	     __
  MOSI  5 --|  |-- 4  GND
   CLK  6 --|  |-- 3  N/C
   N/C  7 --|  |-- 2  MISO
   VCC  8 --|__|-- 1  CS

Edge (closest to you)
4M chip is closer to display
8M chip is closer to front edge

Connect programmer to top 4M chip

#read upper 4M
sudo flashrom -p ch341a_spi -c "MX25L3206E/MX25L3208E" -r top_0.rom
sudo flashrom -p ch341a_spi -c "MX25L3206E/MX25L3208E" -r top_1.rom
md5sum top*
 
#read lower 8M
sudo flashrom -p ch341a_spi -c "MX25L6406E/MX25L6408E" -r ifdmegbe_1.rom

official docu

useful details

#prepare top 4M
dd of=top.rom bs=1M skip=8 if=coreboot.rom
 
sudo flashrom -p ch341a_spi -w top.rom -c "MX25L3206E/MX25L3208E"

write whole flash

#write lower 8M
sudo flashrom -p ch341a_spi -c "MX25L6406E/MX25L6408E" -w ifdmegbe_1.rom
 
#write upper 4M
sudo flashrom -p ch341a_spi -c "MX25L3206E/MX25L3208E" -w top.rom

Internal Flashing

To allow internal flashing, the IFD of the upper flash chip has to be unlocked. this can be archieved with

ifdtool -u ifdmegbe.rom

add “iomem=relaxed” to kernelcommandline during boot

flash command is:

sudo flashrom -p internal --layout x230-layout.txt --image bios --write coreboot.rom

content of x230-layout.txt:

x230-layout.txt
0x00000000:0x007fffff ifdmegbe
0x00800000:0x00bfffff bios
Part SKU or P/N Link Note
LCD-Cable DC02C004 W00 aliexpress from x240/x250
  • x230modding/start.txt
  • Last modified: 2021/05/20 11:15
  • by 9r