Repository navigation
Releases: neerajjayesh/printy
Release list
Release 4 - v0.2.1
Release 4 addresses printing that stalls when the phone's screen times out.
What changes
- Screen stays on automatically while Printy is open and a print is active. Normal timeout returns when sending finishes, fails or is canceled. This also covers queued jobs and the final connection-finishing wait.
- Allow background printing opens Android's approval screen so Printy can keep using the network when the phone is locked. Configure it before starting a print. If your phone still interrupts printing, open app settings and allow Unrestricted battery/background use.
- Job diagnostics now include screen, device-idle and battery-optimization state.
Printy already uses a foreground service for direct jobs and a CPU wake lock during transmission. Moving the same work into another background task would not bypass Android's power restrictions. This update adds the screen safeguard and a user-controlled battery allowance.
Install and use
Install printy-0.2.1-debug.apk over the previous release; saved printers are retained. It is signed with the same certificate and uses version code 4.
For the most dependable workaround, start your print and leave Printy visible. You no longer need to tap the screen to prevent timeout. Manually locking the phone or switching apps still permits the screen to turn off. For that use, tap Allow background printing before printing and approve Android's request. Manufacturer restrictions can still vary.
This uses standard Android APIs, not a OnePlus-only workaround. Physical locked-screen testing on the reported OnePlus 13s is still pending. The screen is kept on until transmission and connection finishing end; the router cannot confirm physical paper completion.
The APK remains a debug-signed development build for Android 8.0+. Earlier releases remain available. See verification notes for test results.
Verified: 33 JVM tests and 9 Android API 35 instrumentation tests passed, including activity recreation, cancellation, background failure and multiple queued jobs. APK signing certificate matches earlier releases. Successful CI run.
Release 3 - v0.2.0
Printy now lets you choose exactly which pages to print and fit more pages on each sheet.
New in Release 3
- Pages: all pages, a list such as
1, 3–5, odd pages or even pages. - Layouts: one page, two pages side by side, or four pages in a grid.
- Preview: see the actual assembled sheet, original page numbers and any blank spaces before printing.
- Reverse order: start with the last selected page; copies remain collated.
- Sheet counts: the print button and job progress count physical sheets.
Open Print a file → choose your PDF → Layout → 2 pages side by side. Landscape is selected automatically. The controls apply in Printy's own preview; Android's native dialog continues to use its own page choices.
The owner reports successful printing with Release 2 on the Epson L130 / Airtel ZTE ZXHN F670L setup. Release 3 keeps its transport and encoder. The new layouts still need a physical print check; other model profiles remain experimental. These are single-sided layouts, not folded booklets or automatic duplex.
Install
Download printy-0.2.0-debug.apk. It uses the same application ID and signing certificate as Releases 1 and 2, with version code 3, so you can install it over the previous version and retain saved printers. The .sha256 asset identifies the APK.
This is a debug-signed development build for Android 8.0+. Free and open source under GPL-2.0-or-later, with no ads, analytics, subscriptions or watermarks.
Verified: 33 JVM tests and 6 Android API 35 rendering tests passed, lint reports no errors, and the APK signature matches the earlier releases. Successful CI run.
See the repository's verification notes for software checks and remaining hardware testing.
Release 2 - v0.1.1
Release 2 — v0.1.1
An experimental update targeting incomplete prints and missing page ejection reported on an Epson L130 connected through an Airtel ZTE ZXHN F670L.
Changes
- Correct the model-80 ESC/P2 footer: restore NVRAM (
LD) before job end (JE). - Read server replies during sending; half-close output and wait up to 90 seconds for the server before fully closing the connection.
- Increase the blocked-write deadline to 120 seconds; cancellation remains available while finishing.
- Stop automatic port probes after a print attempt for the rest of the app process.
- Add Copy job details with byte counts, elapsed time and connection-ending state.
- Add a BOTTOM OF TEST PAGE marker to separate raster completion from sheet ejection.
Install and test
Install printy-0.1.1-debug.apk over Release 1 to retain saved printers. Both original APKs use the same signing certificate and application ID; version code increases to 2.
Clear any stalled job at the printer, then send one A4 test page. Check the bottom marker and complete paper ejection. Allow up to 90 seconds during “Finishing the connection.” If it stalls, copy the job details before sending another job, review any local endpoint information and include the details in a bug report.
The physical fix on the L130/F670L has not yet been confirmed. L120/L210 remain untested. “Sent” does not confirm physical printing or paper ejection.
Validation
- 22 JVM tests passed: 13 encoder and 9 app/transport tests.
- Android debug APK and instrumentation APK built successfully.
- Android lint: 0 errors, 8 dependency-update suggestions.
- APK Signature Scheme v2 verified; signer matches Release 1.
- Instrumentation tests compiled locally; local device execution was not performed. GitHub Actions results are recorded separately.
- SHA-256:
5cb2251b71ccf24f2dd497e7303f9ec00dccc585e9459f1179d8a05357e5762f.
This is the original debug-signed local build, not a production-signed store release. GPL-2.0-or-later; source and Gutenprint attribution are included in the repository. Borderless printing, mDNS and LPR remain future work.
Release 1 - v0.1.0
Release 1 — v0.1.0
The initial experimental Printy build: free, open-source Android printing for Epson inkjets connected through a router's USB print server.
Included
- Android 8.0+, Kotlin, Jetpack Compose and Material 3.
- Native Android Print Service, onboarding and saved printer profiles.
- PDF/photo import, preview, copies, color/gray, orientation and A4/Letter/4 × 6 paper.
- Standalone ESC/P2 raster encoder targeting Epson L130, L120 and L210 profiles.
- Raw TCP transport, progress, notifications and cancellation.
- Gallery/document share-sheet support.
Known printing issue
An L130 using an Airtel ZTE ZXHN F670L printed all the initial test-page text but left the sheet inside. Longer documents repeatedly stopped around 25%. This release is kept for historical reference; try Release 2 for the candidate fixes. No printer profile is hardware-certified.
Download and validation
- Installable file:
printy-0.1.0-debug.apk. - Android application ID
org.printy.app; version code 1. - Original debug-signed APK, preserved without re-signing.
- SHA-256:
7f88fe58539944d6951075ff6bd49597809cdd32774f46649083433691fda9b5. - 16 JVM tests passed at initial verification (12 encoder, 4 app); Android lint had no errors.
The v0.1.0 tag contains the original application's source reconstructed from local edit history before publication. It has a separate snapshot from v0.1.1. The original release APK is not replaced with the reconstruction build. Documentation includes issues reported after the initial build.
GPL-2.0-or-later, with Gutenprint attribution and license notices included in the repository and APK. The source archives accompanying this release include the build scripts and standalone encoder.