← На главную

Yes We Scan запускает старые USB-сканеры в браузере без драйверов

18.05.2026 10:08 · hackernews

Джордж МакКеррон запустил веб-приложение Yes We Scan — оно позволяет подключать старые USB-сканеры прямо в браузере, без драйверов и виртуальных машин. Идея выросла из другого проекта, printervention.app, который он делал для старого принтера Canon. Когда автор вспомнил про пылившийся на полке сканер Canon, то решил, что технология подойдёт и для него.

В основе лежит эмулятор v86 — он запускает полноценную виртуальную машину с эмуляцией x86 в браузере и компилирует машинный код в WebAssembly на лету. Внутри этой машины крутится Alpine Linux с SANE (Scanner Access Now Easy). Между браузером и SANE работает небольшая программа на C, которую помог написать Claude. Она подключается к сканеру, собирает JSON со всеми настройками и передаёт данные сканирования через консоль гипервизора (hvc0) в v86.

В браузере картинка либо сразу рисуется на canvas (режим предпросмотра), либо отправляется в Web Worker, где wasm-mozjpeg или fflate сжимают её в JPEG или PNG на лету.

Самое хитрое — проброс USB через эмулятор. На Alpine Linux крутится USB/IP, который упаковывает USB-пакеты в TCP. TCP/IP восстанавливает из Ethernet-фреймов модуль tcpip.js — он компилирует библиотеку lwIP в WebAssembly, так как браузер не умеет превращать L2-трафик обратно в TCP/IP. Готовые USB/IP-пакеты передаются на физический USB компьютера через WebUSB API — эту часть тоже написал Claude.

Пока приложение проверено только на сканере CanoScan LiDE 100, но автор заявляет, что оно должно работать с сотнями моделей от Agfa, Canon, Epson, HP, Lexmark, Microtek, Mustek, Ricoh, Samsung, Trust, Xerox и других. Код он пока не открыл и извиняется за это.

Читать оригинал →