|
Vcom
I initially thought the issue was caused by an incorrect VCOM value, but it turned out that **VCOM wasn't the main problem — the screen waveform was wrong**.
My original Libra 2 screen was:
`B168 V / VD1400-GOB / ED070KH3 C1-A7Y`
The replacement screen is:
`B044 V / VD1400-GOB / ED070KH3 U3-ZAY`
However, the Kobo was still loading the C1 waveform:
`400_B168_HH5601_ED070KH3C1_VD1400-GOB_TC`
I found a Libra 2 Rev E SD card image containing the correct U3 waveform:
`400_B036_HH2D01_ED070KH3U3_VD1400-GOB_TCB`
The waveform is stored directly on the microSD, starting at offset `0x700000`. In my case it was exactly `2,126,905` bytes.
I extracted it from the Rev E image and wrote only the waveform area to my existing microSD, so I didn't have to replace the bootloader, partitions, firmware, etc.
**Extract the U3 waveform from the SD image:**
```powershell
python -c "p=r'C:\path\to\Libra2-rev-E.img'; out=r'C:\path\to\waveform-U3.bin'; f=open(p,'rb'); f.seek(0x700000); d=f.read(2126905); open(out,'wb').write(d); print('written:',len(d),'bytes')"
```
**Back up the existing waveform on the Kobo:**
```sh
dd if=/dev/mmcblk0 of=/mnt/onboard/waveform-C1-original.bin \
bs=1 skip=$((0x700000)) count=2126905
sync
```
**Write the U3 waveform:**
```sh
dd if=/mnt/onboard/waveform-U3.bin of=/dev/mmcblk0 \
bs=1 seek=$((0x700000)) count=2126905 conv=notrunc
sync
```
**Verify it byte-for-byte:**
```sh
dd if=/dev/mmcblk0 bs=1 skip=$((0x700000)) count=2126905 2>/dev/null \
| cmp - /mnt/onboard/waveform-U3.bin
```
After rebooting, I confirmed the correct waveform was loaded with:
```sh
dmesg | grep -i ED070KH3
```
which now reports the `ED070KH3U3` waveform.
After fixing the waveform, I only needed a **small VCOM adjustment** and the display became perfect.
For reference, the VCOM bytes are at offset `0x80037`.
**Read the current VCOM:**
```sh
dd if=/dev/mmcblk0 bs=1 skip=$((0x80037)) count=2 2>/dev/null | od -An -tx1
```
**Example: set VCOM to `FF6A` (-1.50 V):**
```sh
printf '\xff\x6a' | dd of=/dev/mmcblk0 \
bs=1 seek=$((0x80037)) count=2 conv=notrunc
sync
```
So, in short: **if you replace a Libra 2 screen and get severe ghosting, background darkening, or strange artifacts, don't assume VCOM is the problem. Check whether the replacement panel revision (C1/U3/etc.) matches the waveform being loaded by the Kobo.** In my case, changing from the C1 waveform to the correct U3 waveform fixed the real problem, and then VCOM only needed a small final adjustment.
|