ESP32-based device that estimates passenger flow by counting nearby Wi-Fi and Bluetooth mobile devices, with LoRaWAN, MQTT and SD-card data output.
ngxson/esp32-usb-to-airprint
Turns a USB-only Canon PIXMA printer into a wireless AirPrint and AirScan device using a cheap ESP32-S3 board.
- Stars
- 284
- Forks
- 36
- Open issues
- 6
- Last commit
- 3 days ago
What is it?
This project adds wireless printing and scanning to USB-only Canon PIXMA printers. An ESP32-S3 board plugs into the printer's USB port and joins your WiFi network, then presents the printer to iPhone, iPad, Mac, Android (via Mopria) and Linux clients without drivers or apps.
Beyond printing, the board serves a web app where you can print PDFs and images, scan from a browser, keep scanned files, and combine pages into a PDF with rotate, crop and ID-card copy options. A button on the board triggers scans, and an optional SSD1315 OLED screen can be added.
The firmware detects the connected printer and selects a matching driver from components/printers. Many MG, E, MP, MX, iP and TS series models are listed as expected to work, with only a few validated on real hardware. A host emulator lets developers work on the web app and firmware without a board.
Key features
- 01Wireless printing for iPhone, iPad, Mac, Android and Linux with no drivers
- 02AirScan scanning from browsers, Image Capture and Preview
- 03Built-in web app for printing PDFs and images and scanning
- 04PDF assembly with rotate, crop and ID-card copy options
- 05Hardware button to start scans, print a test page or cancel
- 06Optional SSD1315 OLED screen and extra buttons
Use cases
- Giving an old USB-only Canon printer wireless AirPrint access for a home network
- Scanning documents from a Mac or browser without a printer driver
- Adding a shared wireless print and scan point to a small office or household
Quick start
- 1
Plug the ESP32-S3 into your computer via the COM port (not the port labelled USB)
- 2
Build once to create the .env file, then edit it with your WiFi and printer settings
pio run - 3
Connect the board's COM port and flash the firmware
pio run -t upload
Things to know
- Only the MG2500 is validated on real hardware; other listed printers are untested.
- Requires a separate ESP32-S3 dev board and some soldering for the optional USB-OTG bridge.
- Printer support is limited to the listed Canon PIXMA and related models.
In collections
Topics
FAQ
- What is esp32-usb-to-airprint?
- Turns a USB-only Canon PIXMA printer into a wireless AirPrint and AirScan device using a cheap ESP32-S3 board. This project adds wireless printing and scanning to USB-only Canon PIXMA printers. An ESP32-S3 board plugs into the printer's USB port and joins your WiFi network, then presents the printer to iPhone, iPad, Mac, Android (via Mopria) and Linux clients without drivers or apps.
- Is esp32-usb-to-airprint free to use? What license does it have?
- esp32-usb-to-airprint is open source under the MIT license. Check the license terms before using it in commercial products.
- Is esp32-usb-to-airprint still maintained?
- Actively maintained. The last commit to esp32-usb-to-airprint was on Nov 3, 2026.
- What can I use esp32-usb-to-airprint for?
- Giving an old USB-only Canon printer wireless AirPrint access for a home network Scanning documents from a Mac or browser without a printer driver Adding a shared wireless print and scan point to a small office or household
- How do I install esp32-usb-to-airprint?
- Plug the ESP32-S3 into your computer via the COM port (not the port labelled USB) Build once to create the .env file, then edit it with your WiFi and printer settings: pio run Connect the board's COM port and flash the firmware: pio run -t upload
- Where can I get esp32-usb-to-airprint?
- The source code and installation instructions are on GitHub: https://github.com/ngxson/esp32-usb-to-airprint
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
ESP32 Arduino firmware for the OMOTE open universal remote, with IR, BLE and MQTT control and an LVGL GUI.
Open-source ESP32 firmware for controlling addressable RGB LED strips, 2D matrices and HUB75 panels over WiFi.
A configuration-driven system that turns ESP32, ESP8266, BK72xx and RP2040 microcontrollers into smart devices controlled from Home Assistant and other home automation systems.
Turns an ESP32 into a private, local Wi-Fi motion sensor that detects movement from changes in Wi-Fi signals, with no camera or microphone.
Official firmware for Meshtastic, open-source LoRa mesh radios for off-grid text messaging, location sharing and telemetry.