doc:appunti:hardware:mini_pc_intel_pentium_j3710
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:hardware:mini_pc_intel_pentium_j3710 [2026/02/22 18:20] – [Kernel 6.1] niccolo | doc:appunti:hardware:mini_pc_intel_pentium_j3710 [2026/02/24 19:12] (current) – [DPMS (Display Power Management Signaling)] niccolo | ||
|---|---|---|---|
| Line 30: | Line 30: | ||
| </ | </ | ||
| - | Despite the HDMI monitor is connected, the status pseudfile reports that it is disconnected: | + | Despite the HDMI monitor is connected, the status pseudfile reports that it is **disconnected**: |
| < | < | ||
| Line 37: | Line 37: | ||
| </ | </ | ||
| - | Writing the **on** string to the file causes a kernel trace: | + | Writing the **on** string to the file changes the status to connected: |
| < | < | ||
| echo on > / | echo on > / | ||
| + | cat / | ||
| + | connected | ||
| </ | </ | ||
| + | |||
| + | but it causes a kernel trace: | ||
| < | < | ||
| Line 47: | Line 51: | ||
| </ | </ | ||
| + | When the **i915** kernel module is loaded, you can find five **DRM** (Direct Rendering Manager) devices managed by **card0**: | ||
| + | |||
| + | < | ||
| + | ls -1 / | ||
| + | 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 " | ||
| + | sleep 1 | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | After the //unbind// you can verify that the directory **/ | ||
| + | |||
| + | ===== 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 | ||
| + | </ | ||
| + | |||
| + | ==== DPMS (Display Power Management Signaling) ==== | ||
| + | |||
| + | DPMS (Display Power Management Signaling) is a VESA standard used to reduce monitor power consumption by controlling power states (On, Standby, Suspend, Off) generally based on user inactivity. | ||
| + | |||
| + | It is possible to control the status of the display connected to the frame buffer writing some values to the pseudo file: | ||
| + | |||
| + | < | ||
| + | echo 4 > / | ||
| + | echo 0 > / | ||
| + | </ | ||
| + | |||
| + | | 0 | FB_BLANK_UNBLANK | ||
| + | | 1 | FB_BLANK_NORMAL | ||
| + | | 2 | FB_BLANK_VSYNC_SUSPEND | ||
| + | | 3 | FB_BLANK_HSYNC_SUSPEND | ||
| + | | 4 | FB_BLANK_POWERDOWN | ||
| + | |||
| + | Writing the value 4 to the pseudodevice changes the **DPMS** property from **On=0** to **Off=3**. It is possibile to check all the **connectors properties** using **modetest** (provided by the **libdrm-tests** Debian package): | ||
| + | |||
| + | < | ||
| + | modetest -M i915 -c | ||
| + | opened device `Intel Graphics` on driver `i915` (version 1.6.0 at 20201103) | ||
| + | Connectors: | ||
| + | id encoder status | ||
| + | 95 94 connected | ||
| + | modes: | ||
| + | index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot | ||
| + | #0 1024x768 60.00 1024 1048 1184 1344 768 771 777 806 65000 flags: nhsync, nvsync; type: driver | ||
| + | #1 800x600 60.32 800 840 968 1056 600 601 605 628 40000 flags: phsync, pvsync; type: driver | ||
| + | ... | ||
| + | 2 DPMS: | ||
| + | flags: enum | ||
| + | enums: On=0 Standby=1 Suspend=2 Off=3 | ||
| + | value: 3 | ||
| + | .... | ||
| + | |||
| + | 107 | ||
| + | modes: | ||
| + | index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot | ||
| + | #0 1024x600 59.82 1024 1068 1156 1344 600 603 609 625 50250 flags: phsync, nvsync; type: preferred, driver | ||
| + | #1 1920x1080 60.00 1920 2008 2052 2200 1080 1084 1089 1125 148500 flags: phsync, pvsync; type: driver | ||
| + | ... | ||
| + | 2 DPMS: | ||
| + | flags: enum | ||
| + | enums: On=0 Standby=1 Suspend=2 Off=3 | ||
| + | value: 3 | ||
| + | .... | ||
| + | </ | ||
| + | |||
| + | |||
| + | FIXME What is this? | ||
| + | |||
| + | < | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Pygame ===== | ||
| + | |||
| + | We verified what driver uses the Pygame app: | ||
| + | |||
| + | <code python> | ||
| + | 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. | ||
| + | |||
| + | ===== HDMI Monitor supported modes ===== | ||
| + | |||
| + | < | ||
| + | cat / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | 1024x600 | ||
| + | 800x600 | ||
| + | 800x600 | ||
| + | 800x600 | ||
| + | 800x600 | ||
| + | 720x576 | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | fbset -i -fb /dev/fb0 | ||
| + | |||
| + | mode " | ||
| + | geometry 1024 600 1024 600 32 | ||
| + | timings 0 0 0 0 0 0 0 | ||
| + | rgba 8/ | ||
| + | endmode | ||
| + | |||
| + | Frame buffer device information: | ||
| + | Name : i915drmfb | ||
| + | Address | ||
| + | Size : 2457600 | ||
| + | Type : PACKED PIXELS | ||
| + | Visual | ||
| + | XPanStep | ||
| + | YPanStep | ||
| + | YWrapStep | ||
| + | LineLength | ||
| + | Accelerator : No | ||
| + | </ | ||
doc/appunti/hardware/mini_pc_intel_pentium_j3710.1771780845.txt.gz · Last modified: by niccolo
