GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - clevcode/smid: Linux userspace driver for Silicon Motion USB display adapters

BranchesTags
Open more actions menu

Latest commit

 

History

2 Commits
2 Commits

Folders and files

NameName
Last commit message
Last commit date
.gitignore
.gitignore
 
 
99-smid.rules
99-smid.rules
 
 
LICENSE
LICENSE
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
cnm.c
cnm.c
 
 
cnm.h
cnm.h
 
 
common.h
common.h
 
 
encoder.c
encoder.c
 
 
encoder.h
encoder.h
 
 
evdi_source.c
evdi_source.c
 
 
evdi_source.h
evdi_source.h
 
 
frame_packet.c
frame_packet.c
 
 
frame_packet.h
frame_packet.h
 
 
heartbeat.c
heartbeat.c
 
 
heartbeat.h
heartbeat.h
 
 
install-udev-rules.sh
install-udev-rules.sh
 
 
log.c
log.c
 
 
log.h
log.h
 
 
main.c
main.c
 
 
protocol.c
protocol.c
 
 
protocol.h
protocol.h
 
 
time.c
time.c
 
 
time.h
time.h
 
 
transport.c
transport.c
 
 
transport.h
transport.h
 
 
usb.c
usb.c
 
 
usb.h
usb.h
 
 

Repository files navigation

smid

smid is a Linux userspace driver for the Silicon Motion USB display path used by portable triple-monitor adapters such as the Triple Aero Pro Max by Aura Displays. One panel is usually driven by normal USB-C DisplayPort Alt Mode; smid drives the two USB-attached panels exposed by the adapter's 090c:0760 USB device.

The driver creates EVDI virtual displays, captures their framebuffers, encodes the required JPEG bands, and sends the adapter protocol over USB. The default runtime path uses VA-API for hardware accelerated JPEG encoding, adaptive JPEG quality, cursor commands, USB recovery, and per-frame dirty detection.

Requirements

  • Linux with the EVDI kernel module and libevdi development files
  • libusb-1.0, libva, and libva-drm development files
  • pkg-config, git, cmake, ninja, a C compiler, and nasm or yasm
  • A VA-API JPEG-capable driver for the fast path

The CPU encoder remains available as a fallback, but it uses noticeably more CPU than the VA-API path.

Build

make -j"$(nproc)"

The first build fetches a pinned libjpeg-turbo revision into vendor/libjpeg-turbo and builds a static libturbojpeg.a with SIMD enabled. That vendor checkout is a build artifact, not part of the release source.

Useful cleanup targets:

make clean
make distclean

Permissions

Install local udev rules once:

sudo ./install-udev-rules.sh

The rule grants access to the 090c:0760 USB device and EVDI DRM devices for an active local seat. Log out and back in if the installer adds your user to a new group.

If you have already installed the vendor userspace helper, disable or uninstall that before running smid; both drivers cannot own the same USB device at the same time.

Run

./smid

By default this starts two EVDI streams, enables cursor events, uses direct VA-API JPEG encoding when available, and adapts quality around a 36 MiB/s target.

Common options:

--encoder cpu|direct-vaapi
--jpeg-target-mib-s N
--jpeg-quality N
--jpeg-fixed-quality
--evdi-streams 1|2
--seconds N

Dirty detection uses the tested hash-bands path. The top and bottom bands are hashed independently, and unchanged bands can be represented by a small companion update when the adapter's retained-frame basis is known.

Notes

  • The adapter expects each USB display frame as two JPEG bands.
  • Cursor updates are sent through native cursor commands instead of repainting the framebuffer.
  • USB endpoint recovery keeps the EVDI displays open, so window placement should survive transient adapter reconnects.
  • Sequence wrap is handled by reconnecting the USB session and forcing a full refresh.
  • Reverse-engineering tools, packet experiments, and capture-analysis helpers have been intentionally excluded from this release tree.

License

MIT License. See LICENSE.

About

Linux userspace driver for Silicon Motion USB display adapters

Resources

Readme
MIT license
Activity

Stars

7 stars

Watchers

0 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.