{
    "archive_path": "archive/1788127631.972199",
    "base_url": "github.com/KodeMunkie/sm750hdmifb",
    "basename": "sm750hdmifb",
    "bookmarked_date": "2026-08-30 22:07",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/github.com/KodeMunkie/sm750hdmifb",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=github.com",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": "github.com/KodeMunkie/sm750hdmifb.html"
    },
    "domain": "github.com",
    "extension": "",
    "hash": "1M45VX09HCY7Z4Y5945F",
    "history": {
        "archive_org": [],
        "dom": [],
        "favicon": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.google.com/s2/favicons?domain=github.com"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-08-30T22:08:56.915468+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:08:56.461910+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--head",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://github.com/KodeMunkie/sm750hdmifb"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-08-30T22:08:57.624652+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:08:56.920800+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [],
        "media": [],
        "mercury": [
            {
                "cmd": [
                    "/app/node_modules/@postlight/parser/cli.js",
                    "https://github.com/KodeMunkie/sm750hdmifb"
                ],
                "cmd_version": "1.0.0",
                "end_ts": "2026-08-30T22:09:14.067493+00:00",
                "index_texts": null,
                "output": "mercury",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:09:09.402888+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/app/node_modules/readability-extractor/readability-extractor",
                    "/tmp/tmpquljxgcs",
                    "https://github.com/KodeMunkie/sm750hdmifb"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-08-30T22:09:09.395592+00:00",
                "index_texts": [
                    "SM750 HDMI DRM Driver\nPush this card to real 2048-wide output or a software-scaled 2560x1080\nultrawide desktop, with bandwidth-saving colour conversion and update\noptimisations for smoother performance.\nLinux display driver for the single-HDMI SE-DP750A-HDMI PCIe card.\n\nExperimental: this driver is for one specific SM750 board. Optional modes\ncan exceed published GPU or monitor clock limits and may produce no signal,\ndistortion, or an unstable display. Keep SSH or another recovery route\navailable when trying non-EDID modes.\n\nIs my card supported?\nThe tested board is sold or marked as SE-DP750A-HDMI and has all of these:\n\nSilicon Motion SM750G10-AC, revision A1\nPCI ID 126f:0750\nSilicon Image/Lattice SiI9024ACNU HDMI transmitter\n16 MiB display memory\nOne HDMI output\n\nThe PCI ID alone is not enough. Other SM750 cards may use VGA, a different\ntransmitter, or different GPIO wiring and are not currently supported.\nInstall\nUbuntu 24.04 and Linux Mint 22 users can build a DKMS package locally:\nsudo apt update\nsudo apt install build-essential dkms linux-headers-$(uname -r) libdrm-dev git\ngit clone https://github.com/KodeMunkie/sm750hdmifb.git\ncd sm750hdmifb\nmake check\n./build-package.sh\nsudo apt install ./dist/sm750hdmifb_0.5.5_all.deb\nsudo reboot\nThe reboot matters: it lets the package blacklist Linux's old sm750fb driver\nbefore it can claim the card. The package is named sm750hdmifb; the kernel\nmodule is sm750hdmidrm.ko so it cannot be confused with sm750fb.ko.\nKernel compatibility\nThe driver is intended for Linux 6.17 and newer. DKMS deliberately refuses\nolder kernels because the required DRM interfaces are not supported by this\nproject. The source has compatibility paths for Linux 6.17 through the 6.x\nseries and for Linux 7.0 onward. It currently builds and passes the full test\nsuite against 6.17 and 7.0 Ubuntu kernels; the manual CI workflow also builds\nagainst Ubuntu 24.04's 6.17 kernel headers.\nThere is no fixed upper version cap, but future kernels can change internal DRM\nAPIs. Because this is an out-of-tree driver, a new kernel version may require a\nsource update even though it falls within the intended 6.17+ range.\nPrebuilt packages, when available, are published under\nGitHub Releases.\nBuilding locally is recommended because DKMS compiles against the installed\nkernel headers.\nNormal use\nBy default the driver:\n\nUses monitor EDID modes\nUses dithered 16-bit RGB565 scanout\nUses a hardware cursor\nCoalesces updates on a worker\nUploads eight-row batches with DMA\nFalls back safely if DMA fails\n\nApplications still render in 32-bit colour. Immediately before upload, the\ndriver converts changed screen regions to RGB565 and applies KodeMunkie's\nordered dither with a 94% green-channel correction. This is the default because\nthe SM750 framebuffer is reached over a PCIe 1.1 x1 link. At the higher\nresolutions that link cannot provide responsive full-screen 32-bit updates:\nXRGB8888 sends four bytes per output pixel, while RGB565 sends two. Dithered\nRGB565 therefore halves device-bound pixel traffic while preserving much of\nthe apparent colour detail.\nCommon kernel or GRUB options are:\nThe table omits the common sm750hdmidrm. prefix to keep it readable. For\nexample, enter enable_dma=0 as sm750hdmidrm.enable_dma=0 in GRUB.\n\n\n\nOption and default\nWhen to specify it\nEffect and tradeoff\n\n\n\n\nscanout_format=rgb565-bbditherDefault: rgb565-bbdither\nNo need; this is the recommended default\nDithered 16-bit scanout with green correction\n\n\nscanout_format=xrgb8888Default: rgb565-bbdither\nOnly for 32-bit scanout\nDisables RGB565, dither and green correction; doubles upload traffic and can lag at high resolutions\n\n\nscanout_format=rgb565Default: rgb565-bbdither\nOnly for plain RGB565\nDisables the dither and green correction, reducing colour quality\n\n\ndither_green_gain=94Default: 94\nNo need; correction is on by default\nEnables the tuned green correction while dithering\n\n\ndither_green_gain=100Default: 94\nTo turn green correction off\nKeeps the dither but may produce a greener colour balance\n\n\nenable_dma=1Default: 1\nNo need; DMA is on by default\nVerified eight-row DMA uploads with automatic CPU fallback\n\n\nenable_dma=0Default: 1\nTo disable DMA\nForces CPU uploads, usually with lower update performance\n\n\ndisable_hardware_cursor=1Default: 0\nFor the software cursor fallback\nDisables the hardware cursor and may reduce cursor responsiveness\n\n\nedid_only=0Default: 1\nRequired for the driver catalogue and ultrawide modes\nDANGEROUS: STOPS EDID RESTRICTING MODES AND CLOCKS THE MONITOR MAY NOT SUPPORT\n\n\nsoftscale_wide=1Default: 0\nRequired for 2464x1080 and 2560x1080; also set edid_only=0\nDANGEROUS / EXPERIMENTAL: ENABLES WIDE COMPRESSION AND REQUIRES MONITOR STRETCHING\n\n\nsharpen=1Default: 0\nRecommended with ultrawide modes\nAdds fixed 8% contrast sharpening after compression\n\n\ndouble_shadow=1Default: 0\nRecommended to avoid redundant uploads\nAdds source and output comparison snapshots; skips unchanged pixels but uses more system memory. This is not front/back page flipping\n\n\nasync_updates=1Default: 1\nNo need; enabled by default\nKeeps only the latest pending update instead of queuing stale frames\n\n\n\nAdd options to the existing GRUB_CMDLINE_LINUX_DEFAULT value in\n/etc/default/grub, then apply them with:\nsudo update-grub\nsudo reboot\nEvery option and its default is listed in\nModule parameters.\nUltrawide scaling\nThe device is normally described as supporting up to 1920 pixels horizontally.\nWith edid_only=0, the driver also exposes these real 2048-wide hardware\nmodes:\n\n\n\nDesktop and HDMI mode\nRefresh rates\nOutput and risk\n\n\n\n\n2048x864\n59.94, 60, 70, 72, 75 Hz\nNative or monitor-scaled. EXPERIMENTAL: NOT RESTRICTED BY EDID\n\n\n2048x1024\n59.94, 60, 70, 72 Hz\nNative or monitor-scaled. EXPERIMENTAL: NOT RESTRICTED BY EDID\n\n\n2048x1080\n50, 59.94, 60, 70, 72, 75 Hz\nNative or monitor-scaled. EXPERIMENTAL: HIGH REFRESH MAY EXCEED SPECIFICATION\n\n\n2048x1152\n59.94, 60 Hz\nNative or monitor-scaled. EXPERIMENTAL: NOT RESTRICTED BY EDID\n\n\n\nsoftscale_wide=1 adds two wider logical desktops. Both require a physical\n2560x1080 ultrawide monitor with FULL WIDESCREEN STRETCH ENABLED in its\non-screen menu:\n\n\n\nLogical desktop\nPhysical monitor\nWidth ratio\nHDMI and monitor path\n\n\n\n\n2464x1080\n2560x1080\n77:6416.9% compression\n2048x1080 -> 2560x1080 stretch\n\n\n2560x1080\n2560x1080\n5:420% compression\n2048x1080 -> 2560x1080 stretch\n\n\n\n\n\n\nMode\nRefresh rates\nGuidance\n\n\n\n\n2464x1080\n50, 59.94, 60, 70, 72, 75 Hz\nRECOMMENDED: more detail and better responsiveness; enable sharpen=1\n\n\n2560x1080\n50, 59.94, 60, 70, 72, 75 Hz\nLess detail and lower performance because more width is compressed; see the reasoning\n\n\n\nFor both modes, the HDMI signal is stretched from 2048x1080 to the physical\n2560x1080 pixels of a 2K ultrawide monitor.\n2048 pixels is the highest real width this card can produce in hardware.\nThe SM750 primary graphics plane has an 11-bit right-edge field, so its physical\nscanout width cannot exceed 2048 pixels. This is a hardware constraint;\nreducing the height does not release more horizontal bits. The 2464 and 2560\nmodes create wider workspaces in software, but the card still outputs only a\n2048-pixel-wide signal.\nAn ultrawide monitor with its full-width or full-widescreen stretch option\nenabled is required for the intended result. The complete path is:\nlogical desktop -> driver compression -> 2048x1080 HDMI -> monitor stretch to 2560x1080 physical pixels\n\nThe monitor's stretch setting spatially expands the compressed 2048-pixel HDMI\nimage across all 2560 physical panel pixels. It is not recovering lost source\ndata, but it restores the intended ultrawide screen coverage and approximately\nrestores the intended aspect ratio. What looks \"correct\" is subjective because\nthe 2464 mode deliberately retains a small aspect difference.\nWhy 2464x1080 is recommended\nFor 2560x1080, the driver performs an optimized 5:4 reduction from 2560 to\n2048 pixels, a 20% horizontal compression. A 2560-wide monitor then expands the\n2048-pixel signal by 25% back across its panel. This provides a true\n2560x1080-sized workspace, but some fine horizontal detail is necessarily\ncombined during the first step and more source pixels must be rendered and\nprocessed.\nFor a physical 2560x1080 monitor, 2464x1080 is the recommended,\nhigher-performance and often sharper mode. It starts with\n3.75% fewer desktop pixels and compresses width by only 16.9% before sending the\nsame 2048x1080 signal. The monitor still expands that signal across 2560 panel\npixels, so less source detail was discarded by the driver, but the final image\nis about 3.9% wider than its logical geometry. This slight aspect distortion is\ngenerally difficult to notice and is the tradeoff for improved responsiveness\nand perceived sharpness. Enabling sm750hdmidrm.sharpen=1 is recommended.\nBoth wide modes can apply a small fixed 8% contrast sharpen after compression.\nIt restores some edge definition lost to filtering; it does not recreate\ndiscarded pixels. The dither and green correction are applied during the final\nRGB565 conversion before the 2048-wide scanout is uploaded.\nThis tested profile enables the driver mode catalogue and wide scaling:\n\nDANGER: THIS PROFILE DISABLES EDID MODE RESTRICTIONS AND EXPOSES\nEXPERIMENTAL OR ABOVE-SPECIFICATION CLOCKS. A LISTED MODE MAY BLANK OR\nDESTABILIZE THE DISPLAY OR EXCEED A GPU, TRANSMITTER OR MONITOR LIMIT.\n\nsm750hdmidrm.edid_only=0 sm750hdmidrm.softscale_wide=1 sm750hdmidrm.sharpen=1 sm750hdmidrm.scanout_format=rgb565-bbdither sm750hdmidrm.double_shadow=1 sm750hdmidrm.enable_dma=1\n\nSome catalogue refresh rates run the SM750 DVO path or the monitor outside\npublished limits. A mode being listed does not guarantee that every monitor,\ncable, KVM, or adapter will accept it. See\nModes and clock risks before experimenting.\nCustom desktop dither\nrgb565-bbdither uses an 8x8 ordered dither conceived and tuned by KodeMunkie\nspecifically for desktop use on this card. It includes an adjustable\ngreen-channel correction and anchors the pattern to screen coordinates, so\nsmall updates do not make the pattern crawl or leave mismatched patches.\nScreenshots\nThe three images below visualise the complete ultrawide conversion process.\nClick any preview to open the original image. The logical desktop and physical\nphoto are shown at 50% page width. The compressed preview is shown at 41.56%,\npreserving the 2048 / 2464 width reduction instead of stretching both digital\nstages to the same preview width.\n1. Logical desktop\n\nThe driver receives this original 2464x1080 logical desktop.\n2. Compressed HDMI scanout\n\nThe image above deliberately looks horizontally squashed. It reproduces the\n2048x1080 HDMI scanout generated by compressing the 2464x1080 logical\ndesktop to the SM750's hardware-width limit.\n3. Physical monitor result\n\nThe photographed result fills the monitor's 2560x1080 physical pixels at\n75 Hz, using the driver's 16-bit rgb565-bbdither dithered scanout.\nThe monitor's FULL WIDESCREEN STRETCH option expands that signal across its\nphysical 2560x1080 panel. The complete path is therefore:\nLogical desktop -> SM750 hardware scanout -> physical panel, stretched by the\nmonitor.\nTroubleshooting\nCheck binding and recent driver messages:\nlspci -nnk -d 126f:0750\njournalctl -k -b | grep -iE 'sm750|sii902'\nIf an experimental mode gives no signal, boot an older kernel entry or remove\nthe added sm750hdmidrm.* GRUB options from recovery access. Testing and live\nreload guidance is in Testing and recovery.\nDevelopers\n\nHardware and capability comparison\nModule parameters\nModes and clock risks\nProvenance and licensing audit\nTesting and recovery\nManual CI build\n\nThe official SM750 specification is known to be wrong for at least one\nhardware-observed partial-update boundary. Empirically verified workarounds are\ndocumented in the source and must not be removed solely because an ideal model\nor specification says they are unnecessary.\nLicence and disclosure\nThe project is GPL-2.0-only. DDK-derived files came from Linux's GPL-2.0\nstaging sm750fb driver. No proprietary Silicon Motion driver, binary object,\nfirmware blob, or closed library is included or linked. See the\nprovenance audit for details.\nThis project was created through extensive AI-assisted or \"vibe coding\". I have\nspecified and physically tested the behaviour and designed the custom dither,\nbut do not claim enough Linux DRM, KMS, DKMS, or kernel-framework expertise to\nindependently guarantee every implementation detail. The source is published\nfor review and improvement, not as a claim of upstream kernel quality. Expert\nreview is welcome.\nYOU USE THIS EXPERIMENTAL DRIVER AND EVERY NON-EDID OR ABOVE-SPECIFICATION\nMODE ENTIRELY AT YOUR OWN RISK. YOU ARE RESPONSIBLE FOR RECOVERY ACCESS,\nBACKUPS, MODE SELECTION AND HARDWARE COMPATIBILITY. THE AUTHORS AND\nCONTRIBUTORS ARE NOT RESPONSIBLE FOR LOSS OF DISPLAY, DATA, TIME, HARDWARE,\nINCOME OR ANY OTHER DIRECT OR INDIRECT LOSS.\nThe software is provided without warranty. See LICENSE."
                ],
                "output": "readability",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:09:06.476638+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://github.com/KodeMunkie/sm750hdmifb"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-08-30T22:09:06.472079+00:00",
                "index_texts": null,
                "output": "GitHub - KodeMunkie/sm750hdmifb: Experimental Linux DRM/KMS driver for the SM750G10 SE-DP750A-HDMI, with HDMI, custom RGB565 dithering, DMA and software-scaled ultrawide modes. \u00b7 GitHub",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:09:06.396824+00:00",
                "status": "succeeded"
            }
        ],
        "wget": [
            {
                "cmd": [
                    "wget",
                    "--no-verbose",
                    "--adjust-extension",
                    "--convert-links",
                    "--force-directories",
                    "--backup-converted",
                    "--span-hosts",
                    "--no-parent",
                    "-e",
                    "robots=off",
                    "--timeout=120",
                    "--restrict-file-names=windows",
                    "--warc-file=/data/archive/1788127631.972199/warc/1788127737",
                    "--page-requisites",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.21.3",
                    "--compression=auto",
                    "https://github.com/KodeMunkie/sm750hdmifb"
                ],
                "cmd_version": "GNU Wget 1.21.3",
                "end_ts": "2026-08-30T22:09:06.388796+00:00",
                "index_texts": null,
                "output": "github.com/KodeMunkie/sm750hdmifb.html",
                "pwd": "/data/archive/1788127631.972199",
                "schema": "ArchiveResult",
                "start_ts": "2026-08-30T22:08:57.633118+00:00",
                "status": "succeeded"
            }
        ]
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": null,
        "dom": null,
        "favicon": "favicon.ico",
        "git": null,
        "media": null,
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "GitHub - KodeMunkie/sm750hdmifb: Experimental Linux DRM/KMS driver for the SM750G10 SE-DP750A-HDMI, with HDMI, custom RGB565 dithering, DMA and software-scaled ultrawide modes. \u00b7 GitHub",
        "warc": null,
        "wget": "github.com/KodeMunkie/sm750hdmifb.html"
    },
    "link_dir": "/data/archive/1788127631.972199",
    "newest_archive_date": "2026-08-30T22:09:09.402888+00:00",
    "num_failures": 0,
    "num_outputs": 6,
    "oldest_archive_date": "2026-08-30T22:08:56.461910+00:00",
    "path": "/KodeMunkie/sm750hdmifb",
    "schema": "Link",
    "scheme": "https",
    "snapshot_id": "76548a93-3a0d-40e7-827c-017bbdc03527",
    "sources": [
        "/data/sources/1788127631-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1788127631.972199",
    "title": "GitHub - KodeMunkie/sm750hdmifb: Experimental Linux DRM/KMS driver for the SM750G10 SE-DP750A-HDMI, with HDMI, custom RGB565 dithering, DMA and software-scaled ultrawide modes. \u00b7 GitHub",
    "updated": "2026-08-30T22:08:56.461478+00:00",
    "updated_date": "2026-08-30 22:08",
    "url": "https://github.com/KodeMunkie/sm750hdmifb"
}