Blog

  • LCDTest Guide: Test Your Monitor in Minutes

    LCDTest Guide: Test Your Monitor in MinutesA clear, reliable display is essential for work, gaming, photo editing, and everyday computing. LCDTest is a simple, fast way to check your monitor for problems such as dead or stuck pixels, uneven backlight, color accuracy issues, and input/response problems. This guide walks you through what LCDTest is, how to use it step-by-step, what each test reveals, and how to interpret results and fix common issues.


    What is LCDTest?

    LCDTest is a set of visual tests and patterns used to evaluate the health and performance of an LCD (or other flat-panel) display. Tests typically include solid-color screens, grayscale gradients, pixel-level patterns, grid alignment, and motion/response tests. These tests can be run via web pages, standalone utilities, or embedded diagnostics.

    Why use LCDTest?

    • Quickly identify dead pixels (completely black) or stuck pixels (single red/green/blue).
    • Detect color uniformity and tint shifts across the screen.
    • Reveal backlight bleeding or clouding at edges/corners.
    • Check for banding, gradient smoothness, and contrast.
    • Evaluate response time and ghosting with motion patterns.

    Before you begin

    • Make sure your monitor and GPU drivers are up to date.
    • Warm up the monitor for at least 20–30 minutes before serious color/white-balance assessment — displays change slightly as they reach stable temperature.
    • Set your operating system to the monitor’s native resolution and refresh rate for accurate pixel-level checks.
    • Disable any dynamic contrast, motion-smoothing, or color-enhancement features in the monitor’s on-screen menu; these can mask defects.
    • Use a dark, dimly lit room for tests that check black levels, backlight bleed, or contrast. For color accuracy, neutral ambient lighting (D65 ~6500K) is preferable.

    Step-by-step LCDTest routine (takes about 5–10 minutes)

    1. Open an LCDTest tool or page (many are web-based and require no download).
    2. Set full-screen mode in your browser or application so no UI elements obscure edges.
    3. Run the following sequence of checks:
    • Solid colors (Red, Green, Blue, Black, White)

      • Purpose: Find dead/stuck pixels and check backlight uniformity.
      • How: Display each solid color full-screen for 10–20 seconds. Move close to the screen and scan methodically in rows/columns.
      • What to look for: Bright single-color pixels (stuck), dark pixels (dead), patches brighter/darker than surrounding areas (backlight bleed or clouding).
    • Grayscale steps (0% → 100% in increments)

      • Purpose: Reveal banding, gradient smoothness, and contrast steps.
      • How: View a series of gray steps or a continuous gradient.
      • What to look for: Distinct banding between adjacent gray steps indicates limited bit-depth rendering or poor gradient processing. Missing middle shades may suggest contrast or gamma issues.
    • Checkerboard / Grid patterns

      • Purpose: Test pixel alignment, subpixel rendering, and reveal stuck pixels not obvious on solid colors.
      • How: Display alternating black/white checkerboard and thin-grid lines.
      • What to look for: Lines should be sharp and uniform. Blurriness or color fringing suggests scaling or subpixel issues.
    • Color bars / Saturation ramp

      • Purpose: Check color accuracy and saturation clipping.
      • How: Display primary/secondary color bars and ramps from 0–100% saturation.
      • What to look for: Smooth transitions and no visible clipping or desaturation in banding areas.
    • Uniformity / Backlight test (solid white and dark images)

      • Purpose: Detect backlight bleed, clouding, or non-uniform luminance.
      • How: Inspect a full white screen and near-black full-screen image.
      • What to look for: Edge/corner brightening (bleed) or patches in the dark image (clouding).
    • Motion / Response test (moving bars or test patterns)

      • Purpose: Expose ghosting, smearing, and response-time problems.
      • How: Run a moving test pattern at your monitor’s refresh rate.
      • What to look for: Trailing images or smeared edges behind moving objects; worse at fast refresh rates or specific gray-to-gray transitions.
    • Input lag and refresh verification

      • Purpose: Verify claimed refresh rate and check for input latency issues.
      • How: Use tools that show refresh rate or a high-speed camera, or compare to a reference input device if needed.
      • What to look for: Stutters, missed frames, or refresh-rate mismatches in settings.

    Interpreting results

    • Single dead pixels (black) vs. stuck pixels (colored):

      • Dead pixels are rarely recoverable; they often indicate a faulty subpixel circuitry.
      • Stuck pixels sometimes respond to pixel-fixing methods (color cycling/jiggling).
    • Backlight bleed and clouding:

      • Minor edge bleed is common, especially on IPS panels. Large irregular patches or severe bleed near the center are defects worth returning under warranty.
    • Banding and gradient issues:

      • Caused by limited bit depth, poor panel processing, or incorrect color/gamma settings. True banding across multiple inputs often indicates hardware limitation; if present only on a specific input or GPU, try updating drivers or changing HDMI/DP cable.
    • Color tint/uniformity:

      • Slight tint is normal; strong, consistent tint across the screen may mean calibration is needed.
    • Ghosting / slow response:

      • If motion blur or trailing is excessive, enable overdrive in the monitor menu (if available) and test again. Too much overdrive can cause overshoot (inverse ghosting).

    Quick fixes and next steps

    • Stuck pixel fix methods:
      • Rapidly cycle colors over the pixel with a pixel-fixer utility for 5–30 minutes. Gentle pressure with a soft cloth (while screen is off) applied briefly can sometimes help, but be cautious — pressure can damage the screen.
    • Update drivers and try a different cable/port:
      • Swap HDMI/DisplayPort cables and try another GPU output to rule out transmission issues.
    • Calibrate:
      • Use a hardware colorimeter and calibration software (e.g., DisplayCAL, i1Profiler) for accurate color and gamma if you need color-critical performance.
    • Warranty and returns:
      • If you find significant defects (multiple dead pixels, excessive backlight bleed, severe uniformity issues), document them with photos and contact the retailer or manufacturer. Check their dead-pixel policy (some have thresholds).

    When to repair vs. replace

    • Repair is rarely practical for individual pixels; manufacturers usually replace the panel or unit under warranty if issues meet their defect policy.
    • Replace if multiple defects appear, or if the monitor is older and repair/warranty coverage is expired; consider a newer panel with better uniformity, higher color depth, or higher refresh rate depending on your needs.

    Tips for buying a replacement monitor (if needed)

    • Look for at least 8-bit (or 10-bit with dithering) color depth for smoother gradients.
    • For minimal backlight bleed and wider viewing angles choose IPS with good reviews on uniformity, or VA for deeper blacks but watch for uniformity trade-offs.
    • Check manufacturer dead-pixel policy before purchase.
    • Read real-user reviews (especially regarding uniformity and color accuracy) and consider buying from retailers with generous return windows.

    Troubleshooting checklist (concise)

    • Update GPU drivers.
    • Set native resolution and correct refresh rate.
    • Test with different cable/port and a second device.
    • Disable dynamic monitor features.
    • Run pixel-fixer for stuck pixels.
    • Calibrate with a colorimeter if color-critical.
    • Contact warranty support if defects persist.

    This LCDTest routine helps you detect most visible display problems in minutes and take the right next steps—fix, recalibrate, or return.

  • Step-by-Step Guide to Setting Up a Wan IP Logger


    What is a WAN IP logger?

    A WAN IP logger records the public (WAN) IP addresses of devices that connect to a service, website, or network. For administrators, it helps track remote access sessions, identify malicious activity, and troubleshoot connectivity issues. A WAN IP logger captures IP addresses and usually stores a timestamp, user agent, and other connection metadata.


    Common legitimate use cases

    • Remote access monitoring for servers and remote employees
    • Security auditing and intrusion detection
    • Logging visitors for a self-hosted service (with consent)
    • Troubleshooting NAT, ISP, or routing problems

    Before you begin, ensure you have:

    • Administrative access to the server or device where the logger will run.
    • Written permission from any third parties whose IPs you will collect (if applicable).
    • Knowledge of local privacy laws and organizational policies regarding logging and retention.
    • A secure storage plan for logs (encryption, access controls).
    • A retention policy and a plan for secure deletion of old logs.

    Overview of the setup approach

    This article shows a common, simple approach:

    1. Set up a small web service that records incoming requests.
    2. Capture and store the requester’s WAN IP and metadata.
    3. Secure the service and logs.
    4. Optionally analyze and visualize the data.

    We’ll provide a practical example using:

    • A Linux VPS (Ubuntu/Debian) accessible via the public Internet
    • Nginx as a reverse proxy
    • A small backend written in Python (Flask) to record requests
    • SQLite for lightweight storage (optional: PostgreSQL for production)
    • Basic log rotation and retention

    Step 1 — Provision a server

    1. Choose a VPS provider (or use an existing physical server).
    2. Create a minimal Ubuntu/Debian instance. Recommended specs for testing: 1 vCPU, 1–2 GB RAM, 10 GB disk.
    3. Ensure the server has a public IP and SSH access.
    4. Configure firewall to allow ports 22 (SSH) and ⁄443 (HTTP/HTTPS). On Ubuntu:
      
      sudo apt update sudo apt install -y ufw sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable 

    Step 2 — Install required packages

    Install Python, pip, virtualenv, Nginx and SQLite:

    sudo apt update sudo apt install -y python3 python3-venv python3-pip nginx sqlite3 

    Step 3 — Create a minimal Flask app to record requests

    Create a new directory and virtual environment:

    mkdir ~/wan-ip-logger cd ~/wan-ip-logger python3 -m venv venv source venv/bin/activate pip install wheel flask gunicorn 

    Create app file app.py:

    from flask import Flask, request, g import sqlite3 from datetime import datetime DB = 'ips.db' app = Flask(__name__) def get_db():     db = getattr(g, '_database', None)     if db is None:         db = g._database = sqlite3.connect(DB)     return db @app.teardown_appcontext def close_connection(exception):     db = getattr(g, '_database', None)     if db is not None:         db.close() def init_db():     conn = sqlite3.connect(DB)     c = conn.cursor()     c.execute('''CREATE TABLE IF NOT EXISTS ips                  (id INTEGER PRIMARY KEY AUTOINCREMENT,                   ip TEXT,                   user_agent TEXT,                   path TEXT,                   method TEXT,                   ts TEXT)''')     conn.commit()     conn.close() @app.before_first_request def startup():     init_db() @app.route('/', defaults={'path': ''}) @app.route('/<path:path>', methods=['GET','POST']) def log_request(path):     ip = request.headers.get('X-Forwarded-For', request.remote_addr)     ua = request.headers.get('User-Agent', '')     method = request.method     ts = datetime.utcnow().isoformat()     conn = get_db()     c = conn.cursor()     c.execute("INSERT INTO ips (ip, user_agent, path, method, ts) VALUES (?, ?, ?, ?, ?)",               (ip, ua, path, method, ts))     conn.commit()     # Minimal response     return 'OK', 200 

    Note: retrieving the client IP uses the X-Forwarded-For header because we’ll place Nginx in front. In other deployment scenarios, adapt accordingly.


    Step 4 — Run the app with Gunicorn and configure systemd

    Install Gunicorn:

    pip install gunicorn 

    Create systemd service /etc/systemd/system/wan-ip-logger.service:

    [Unit] Description=WAN IP Logger After=network.target [Service] User=YOUR_USERNAME Group=www-data WorkingDirectory=/home/YOUR_USERNAME/wan-ip-logger Environment="PATH=/home/YOUR_USERNAME/wan-ip-logger/venv/bin" ExecStart=/home/YOUR_USERNAME/wan-ip-logger/venv/bin/gunicorn --workers 3 --bind unix:/tmp/wan-ip-logger.sock app:app [Install] WantedBy=multi-user.target 

    Replace YOUR_USERNAME with your user. Then:

    sudo systemctl daemon-reload sudo systemctl start wan-ip-logger sudo systemctl enable wan-ip-logger 

    Step 5 — Configure Nginx as reverse proxy

    Create /etc/nginx/sites-available/wan-ip-logger:

    server {     listen 80;     server_name your.server.domain; # or _ for default     location / {         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_pass http://unix:/tmp/wan-ip-logger.sock;     } } 

    Enable and reload Nginx:

    sudo ln -s /etc/nginx/sites-available/wan-ip-logger /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx 

    Step 6 — Secure the service and logs

    • Use HTTPS: obtain a certificate with Certbot (Let’s Encrypt).

      
      sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d your.server.domain 

    • Restrict access: if only internal systems should call it, bind to a private network or restrict via firewall or Nginx allow/deny.

    • Protect stored logs: ensure file permissions restrict access to the app user and consider encrypting the disk or database file.

    • Implement retention: add a cron job to delete records older than your retention window:

      # daily cleanup script /usr/local/bin/clean_ips.sh #!/bin/bash sqlite3 /home/YOUR_USERNAME/wan-ip-logger/ips.db "DELETE FROM ips WHERE ts < datetime('now','-30 days');" 

      Make it executable and add to cron:

      sudo chmod +x /usr/local/bin/clean_ips.sh sudo crontab -e # add: 0 3 * * * /usr/local/bin/clean_ips.sh 

    Step 7 — Viewing and analyzing logs

    Quick query via sqlite3:

    sqlite3 ips.db "SELECT ip, COUNT(*) as hits FROM ips GROUP BY ip ORDER BY hits DESC LIMIT 50;" 

    For more advanced analysis:

    • Export to CSV and open in a spreadsheet.
    • Import into a SIEM (Splunk, Elastic) for alerting and dashboards.
    • Build a small web UI endpoint that queries the DB and returns JSON (ensure auth).

    Security considerations and best practices

    • Only collect necessary data; minimize retention.
    • Mask or hash IPs if full addresses aren’t needed for long-term analytics. Example: store a salted HMAC of the IP instead of the raw IP.
    • Monitor for abuse (e.g., someone triggering many requests). Rate-limit and add authentication if required.
    • Regularly update dependencies and apply OS security patches.
    • Back up logs securely if required for audits, and test restoration.

    Alternatives and scaling

    • For lightweight use, store logs in plain files with logrotate.
    • For higher scale, use PostgreSQL or a time-series DB (InfluxDB) and run the app in containers behind a load balancer.
    • Consider using existing access logs from Nginx/HAProxy which already record remote IPs and user agents; parse those with tools like goaccess.

    Example: quick Nginx-only approach (no custom app)

    If you only need to capture IPs that visit a specific URL, Nginx can log them directly. Example server block:

    server {     listen 80;     server_name your.server.domain;     location /logme {         return 204;     }     access_log /var/log/nginx/wan_ips.log combined; } 

    Then parse /var/log/nginx/wan_ips.log for IPs hitting /logme.


    Troubleshooting

    • If logs show 127.0.0.1 or reverse proxy IPs, ensure Nginx sets X-Forwarded-For and your app reads it.
    • Permission errors with systemd: ensure Service User and file ownership align.
    • Gunicorn not binding socket: check paths and that the socket file is created with proper permissions.

    This guide gives a practical, auditable approach to setting up a WAN IP logger for legitimate administrative and diagnostic purposes. Remember to follow legal and ethical requirements when collecting and storing IP addresses.

  • Hello world!

    Welcome to WordPress. This is your first post. Edit or delete it, then start writing!