====== Mini PC Intel Pentium J3710 ======
===== Video card problem with kernel 6.12 =====
Using **Debian 13 Trixie** with **kernel 6.12.69**, the screen goes blank (no HDMI signal) as soon as it switches to frame buffer. With **dmesg** you can read the following errors:
[ 6.587061] i915 0000:00:02.0: [drm] timed out waiting for [ENCODER:98:HDMI B] port ready: got 0xf, expected 0x0
[ 16.775053] i915 0000:00:02.0: [drm] *ERROR* [CRTC:53:pipe A] flip_done timed out
[ 27.015096] i915 0000:00:02.0: [drm] *ERROR* flip_done timed out
[ 27.015122] i915 0000:00:02.0: [drm] *ERROR* [CRTC:53:pipe A] commit wait timed out
[ 37.255074] i915 0000:00:02.0: [drm] *ERROR* flip_done timed out
[ 37.255097] i915 0000:00:02.0: [drm] *ERROR* [CONNECTOR:99:HDMI-A-1] commit wait timed out
[ 47.495072] i915 0000:00:02.0: [drm] *ERROR* flip_done timed out
[ 47.495095] i915 0000:00:02.0: [drm] *ERROR* [PLANE:32:primary A] commit wait timed out
[ 57.735072] i915 0000:00:02.0: [drm] *ERROR* [CRTC:53:pipe A] flip_done timed out
[ 57.932964] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
The only way to boot Debian 13 with kernel 6.12 is to pass the **nomodeset** kernel parameter.
===== Kernel 6.1 =====
It is possible to install **kernel 6.1.0** from **Debian 12 Bookworm**, so that frame buffer works:
[ 5.399065] fbcon: i915drmfb (fb0) is primary device
[ 5.438998] Console: switching to colour frame buffer device 128x37
[ 5.458533] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Despite the HDMI monitor is connected, the status pseudfile reports that it is **disconnected**:
cat /sys/class/drm/card0-HDMI-A-1/status
disconnected
Writing the **on** string to the file changes the status to connected:
echo on > /sys/class/drm/card0-HDMI-A-1/status
cat /sys/class/drm/card0-HDMI-A-1/status
connected
but it causes a kernel trace:
[ 69.315446] i915 0000:00:02.0: timed out waiting for [ENCODER:94:HDMI B] port ready: got 0xf, expected 0x0
When the **i915** kernel module is loaded, you can find five **DRM** (Direct Rendering Manager) devices managed by **card0**:
ls -1 /sys/class/drm/
card0
card0-DP-1
card0-DP-2
card0-HDMI-A-1
card0-HDMI-A-2
card0-HDMI-A-3
renderD128
version
It is possibile to do a **complete hardware reset** of the cards using the following command:
echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind
sleep 1
echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/bind
After the //unbind// you can verify that the directory **/sys/class/drm/** is empty, it will be populated again after the //bind//.
===== Blanking the Virtual Terminal =====
When the host is started in frame buffer text console, the **setterm** command can be used to force the screen to go blank:
setterm --blank force
setterm --powerdown 0
The monitor turns off due no signal and remains blank even keys are pressed on the keyboard.
To revive the screen:
setterm --blank poke
setterm --powerdown 0
If the screen is blanked the following command returns **1**:
setterm --blank
1
===== Pygame =====
We verified what driver uses the Pygame app:
import pygame
pygame.init()
print(pygame.display.get_driver())
It says **KMSDRM**.
Using that driver the SDL **Simple DirectMedia Layer** library owns the DRM master, external tools (modetest, sysfs) do not work for blanking the screen. The correct solution is to control this from inside SDL.