Recommended Free Tools
Ghosting on an ESP32 e-paper display is usually caused by refresh policy or panel configuration, not by the ESP32 drawing the wrong pixels. Partial and differential updates trade flicker and speed for a higher chance of residual images. The reliable fix is panel-specific: select the driver for the exact panel revision, initialize it with the full sequence it requires, use partial refresh only where documented, and schedule the maker’s recommended full refreshes.
There is no universal refresh count or API call that works for every e-paper module. Controller chips can be shared by several panels while their waveforms, color encoding, initialization order and supported refresh modes differ.
As an Amazon Associate I earn from qualifying purchases.
What ghosting is and why it appears
An e-paper pixel does not change like an LCD pixel. Its particles are moved by a waveform supplied by the panel controller. A full waveform deliberately drives the display through several transitions, which causes the visible flashing associated with a clean refresh. A partial or differential waveform uses a shorter sequence for a smaller region or a modest change. It is faster and less distracting, but it leaves more of the previous state behind.
After repeated partial or fast operations, those small residual errors accumulate as pale text, outlines or blocks from older frames. A supported full refresh normally removes the accumulation. The important qualification is “supported”: the waveform and timing must match the exact panel.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
- Partial refresh: updates a defined area with little or no visible flicker. It is useful for clocks, counters and other small changes, but residual images can build up.
- Differential refresh: calculates or applies a change between image states. The method depends on the library and panel and has the same accumulated-ghosting trade-off.
- Fast full refresh: refreshes the whole screen more quickly, often with a single visible flash, but may not clear a long sequence of partial updates as completely as the standard full waveform.
- Standard full refresh: flashes several times and is intended to restore a clean image when afterimages have accumulated.
Some panels provide only full-screen refresh, while color panels and other specialized modules impose different limits. Never enable a mode merely because another module uses the same controller IC.
Start with the exact panel and revision
Before changing refresh code, identify the complete display part number, board revision and panel size from the module label and its documentation. Record the controller board as well as the glass panel. A library driver is selected for the panel’s electrical and waveform requirements, not simply for a familiar controller name.
| Check | Why it matters | What to do |
|---|---|---|
| Panel part number and revision | Two revisions can use different waveforms or color encoding. | Photograph the label and match the complete number in the maker’s panel list. |
| Library driver class | An incorrect class can produce ghosting, grey output, mirroring or corrupted geometry even when SPI communication works. | Choose the class named for the exact panel, not the closest-looking size. |
| Partial-refresh support | Some displays do not support differential or partial operation at all. | Confirm the supported modes in the panel and library documentation before writing partial-refresh code. |
| Software versions | Examples and minimum versions change as board support evolves. | Check the current board and library requirements. A Waveshare ESP32 example was verified with arduino-esp32 3.3.10 and GxEPD2 1.6.9; those version details are example-specific and may change. |
The GxEPD2 project lists panels with no differential refresh and panels that support only full refresh. If your model is in one of those categories, repeated partial-refresh experiments will not make it behave like a different model.
Choose the refresh mode deliberately
Decide first whether the application values low latency, low flicker or the cleanest image. The following comparison is a decision aid, not a promise that every panel implements all four modes.
| Mode | Visible behavior | Best use | Main risk |
|---|---|---|---|
| Standard full | Several flashes; slowest of the common modes | Startup, recovery from ghosting and occasional screen-wide changes | Flicker and longer update time |
| Fast full | Usually one flash; faster than standard full on supported hardware | Whole-screen changes when the panel’s fast waveform is documented as adequate | May leave traces after many partial updates |
| Partial | Little or no visible flicker; updates a region | Small, frequent changes such as a value or status field | Residual images accumulate; may be unsupported |
| Differential | Changes are based on image differences or a prior buffer | Fast changes on panels with a documented differential waveform | Ghosting and rendering trade-offs, including problems with some large text or complex transitions |
Also compare the panel’s supported update area, color capability, operating-temperature range and supplied waveform. A mode that looks attractive in a library example is unsuitable if the panel maker does not specify it for your model.
Initialize the display with the required full sequence
On a cold boot, reset or wake from a deep-sleep cycle, perform the complete initialization prescribed for the panel. For panels that use differential refresh, GxEPD2 notes that the first refresh should be a full update because the screen may not match the library’s previous-image buffer. Starting with a partial update can leave the first frame contaminated by an unknown prior state.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
- Reset and initialize the display using the exact driver selected for the panel.
- Send the library’s required first full update before attempting a partial or differential update.
- Only after that clean baseline is established, use the panel’s documented fast or partial mode.
Keep the initialization step separate from ordinary drawing logic. A program that redraws graphics correctly but skips the panel-specific startup sequence can still show persistent traces.
Free tools Windows power users keep installed
One-click scans. No signup required.
Use the panel’s standard waveform when cleaning the screen
If a fast full update does not remove an afterimage, determine whether the library is still using a fast-full waveform. In the cited Waveshare ESP32-S3-ePaper-3.97 example, the standard mode is selected after initialization with:
display.init();
display.epd2.selectFastFullUpdate(false);
This call belongs to that driver and example; it is not a universal GxEPD2 command for every panel. On a driver that exposes the option, setting it to false selects the standard full waveform. The resulting multi-flash operation is slower but is intended to clear accumulated traces more thoroughly.
If your driver does not expose that method, use the full-refresh procedure documented for your panel rather than copying an API call from another model. A “full” operation in one library can mean a fast full waveform, while another driver may provide only the standard waveform.
Schedule full refreshes instead of guessing a universal count
Maintain a counter for fast and partial operations, or another policy that guarantees a full refresh at the interval specified for your panel. The interval is a panel specification, not an ESP32 rule.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →For example, the Waveshare 2.13-inch e-Paper V4 specification recommends a full-screen refresh after five consecutive fast or partial operations. That number applies to the cited V4 panel and should not be transferred to a different size, revision or color model.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
A generic policy looks like this:
initialize_with_required_full_update();
if (partial_or_fast_count >= panel_documented_limit) {
perform_standard_full_refresh();
partial_or_fast_count = 0;
} else {
perform_documented_partial_or_fast_refresh();
++partial_or_fast_count;
}
Replace panel_documented_limit and both refresh routines with the names and limits supplied by your driver. If a panel’s documentation gives no partial-refresh support, remove the partial branch rather than inventing a cadence.
Count consecutive operations according to the maker’s wording. If the specification says “five consecutive fast or partial operations,” a standard full refresh resets the sequence; a fast full may or may not reset it depending on the documentation. Do not assume that every whole-screen update is equivalent to a cleaning waveform.
Understand the timing trade-off with a real example
Waveshare’s ESP32-S3-ePaper-3.97 guide measured these waveform times in one example setup:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Operation | Measured waveform time | Qualification |
|---|---|---|
| Partial refresh | 370 ms | Measurement for that example panel and software setup |
| Fast full refresh | 1.70 s | Measurement for that example panel and software setup |
| Standard full refresh | 2.10 s | Measurement for that example panel and software setup |
The same guide’s end-to-end examples also include image transfer and driver power-up. Consequently, these figures are not general ESP32 e-paper performance targets. Measure your own transfer, BUSY wait and waveform time if latency matters.
The Waveshare 2.13-inch V4 specification describes the user-visible compromise directly: a standard full refresh flashes several times and is intended to remove afterimages; a fast refresh flashes once; a partial refresh does not visibly flicker but can accumulate residual images.
A practical implementation sequence
1. Establish a known-good baseline
Run the manufacturer’s example for the exact panel and revision before adding application graphics. Confirm that the panel clears correctly after power-up and that text is upright, correctly colored and positioned. This separates hardware and driver problems from application logic.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
2. Perform a clean startup refresh
After reset or wake, run the documented initialization and first full update. Do not begin with a clock tick, sensor value or partial window until that baseline is complete.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problems3. Use partial refresh only for genuinely small changes
Limit partial updates to the regions and content types the panel documentation supports. A full-screen redraw disguised as a partial operation defeats the purpose of the waveform and increases the chance of residual structure.
4. Track the documented cadence
Increment a counter after each fast or partial operation and invoke the required full refresh at the maker’s interval. Keep the counter in application state so a loop, screen change or sleep cycle cannot silently bypass the policy.
5. Prefer standard full for recovery
When an operator requests a clean screen, or when your counter reaches the documented limit, use the panel’s standard full waveform if available. Treat fast full as a speed option, not as a guaranteed ghost-removal operation.
6. Reinitialize after unusual power states
If the panel loses power, is reset independently or resumes from deep sleep, follow the wake-up sequence in its documentation. The library’s previous-image buffer and the physical screen can then be out of sync, which is precisely the condition that makes an initial full update important.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Troubleshoot by symptom
Residual images appear after several partial updates
- Run the documented standard full refresh.
- Check your operation counter against the panel’s specified interval.
- Verify that the panel actually supports partial refresh.
- Reduce the partial region and frequency if the application can tolerate it.
For the 2.13-inch V4 example, five consecutive fast or partial operations is the manufacturer’s stated point for adding a full-screen refresh. Do not apply that number to another panel without its own documentation.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
The old frame remains after a “full” refresh
- Check whether “full” currently selects a fast-full waveform.
- On drivers that support it, switch to the standard waveform, as in the cited example’s
selectFastFullUpdate(false)setting. - Confirm that the driver class matches the exact panel revision.
- Repeat the test from a correctly initialized state rather than after an unknown sleep or reset sequence.
The image is grey, mirrored, shifted or incorrectly colored
Re-check the panel driver and initialization before changing SPI settings. An incorrect driver class is associated in the Waveshare guidance with abnormal display content. Only after the driver is confirmed should you investigate wiring, BUSY handling, SPI clock, reset timing or supply quality using the model’s hardware documentation.
The first image after boot is dirty
Perform the required initial full update. On relevant differential-refresh panels, the library’s previous buffer may not describe what is physically on the glass, so the first differential operation cannot be trusted to establish a clean image.
Partial refresh never behaves consistently
Confirm that the display is not a full-refresh-only model, and check whether the supplied waveform supports the requested mode. Color panels often have different refresh constraints. If the mode is unsupported, use full refreshes and redesign the UI around the available latency.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Test a refresh policy instead of judging one frame
Ghosting is cumulative, so a single successful update is not a meaningful test. Use a repeatable sequence on the actual hardware:
- Cold-boot the module and record the result of the required initial full refresh.
- Display a high-contrast screen containing small text, large text, fine lines and filled areas.
- Change only a small region repeatedly using the documented partial or differential operation.
- At the panel’s specified interval, run a standard full refresh and inspect the old region, edges and large characters.
- Repeat the sequence with fast full enabled, then with the standard waveform, if the driver offers both.
- Record elapsed time separately for image transfer, BUSY wait and the visible waveform.
GxEPD2 documentation cautions that differential refresh involves trade-offs that can show up as ghosting or poor rendering of large fonts. Include the typography and transitions your product actually uses rather than testing only a blank rectangle.
How to choose a policy for common applications
| Application pattern | Preferred approach | Reasoning |
|---|---|---|
| Infrequent dashboard changes | Standard full refresh for each major screen change | Clean output matters more than saving a few seconds. |
| Clock or counter updated often | Documented partial updates for the changing field, with scheduled full refreshes | Reduces flicker while bounding accumulated ghosting. |
| Large screen-wide image changes | Fast full only if the panel documents it; otherwise standard full | Whole-screen content may exceed the safe use of a partial waveform. |
| Color display | Follow that model’s color and waveform instructions, often favoring full refresh | Color particles and waveforms impose different constraints. |
| Battery device waking periodically | Perform the required wake initialization and full baseline, then use only supported partial operations | Sleep and power loss can invalidate the prior-image state. |
Do not judge performance outside the supplied controller and waveform
The 2.13-inch V4 specification states that its listed electrical and optical characteristics are guaranteed only with the provided controller and waveform. A custom controller, altered waveform or different library mode can therefore change contrast, timing and ghosting. When comparing products or diagnosing a replacement panel, use the maker’s specified controller and waveform first; otherwise you are measuring a different system.
This qualification also explains why two modules with similar dimensions or the same controller IC can produce different results. The panel glass, revision, waveform tables and initialization sequence are part of the display system.
Checklist before shipping firmware
- Exact panel part number and revision are recorded.
- The selected library driver is explicitly listed for that panel.
- Startup and wake paths perform the required full initialization.
- Partial or differential refresh is enabled only when documented for the model.
- A counter or equivalent policy schedules full refreshes at the maker’s interval.
- Standard full refresh is available as a recovery path when fast full leaves traces.
- Tests include repeated updates, large fonts, fine lines and all supported colors.
- Measured timings are labeled as hardware- and software-specific rather than universal ESP32 figures.
- Abnormal output is diagnosed through driver, initialization and BUSY handling before arbitrary SPI changes.
Bottom line
Reduce ghosting by treating the panel, driver and waveform as one matched system. Start with the exact module’s documented initialization and a clean full update. Use partial or differential refresh only for supported content, count those operations, and insert the model-specific full refreshes the manufacturer requires. If a fast full update leaves an old frame, switch to the panel’s standard full waveform when available. The right cadence is the one specified for your exact panel—not a universal ESP32 setting.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




