Skip to content

nkscan scanner backend - #697

Draft
activexray wants to merge 1 commit into
marcinz606:mainfrom
activexray:main
Draft

nkscan scanner backend#697
activexray wants to merge 1 commit into
marcinz606:mainfrom
activexray:main

Conversation

@activexray

@activexray activexray commented Jul 30, 2026

Copy link
Copy Markdown

This is my first go at adding nkscan support to NegPy. nkscan is a rust-based cross-platform driver for Coolscan scanners with support for the LS-9000 (medium format) and LS-50 (Coolscan V) scanners. There technically is LS-5000 support, but that's just based on reverse-engineering work and has not been tested (someone should simply give me a 5000 😅 ). The Coolscan 9000 should work on linux and windows and has been tested on both. USB support should work on everything.

nkscan itself is a PyO3-based extension module to the rust library with only numpy as an additional python dependency, which should help with dependency bloat.

As nkscan exposes quite a few more device-specific controls than SANE, we had to adjust some UI elements to expose them.

I don't know how this compares to coolscanpy other than expanded support to other nikon scanners. I've intentionally been careful and deliberate about the abstractions (backends/capabilities/etc) so it will be easy in the future to add additional scanner support.

This is a draft until I can test this on a scanner in ~ a day.

AI disclosure: This was all written by Claude Sonnet 5 as I'm not very familiar with Python.

@marcinz606

Copy link
Copy Markdown
Owner

thanks, I'll be checking it out tomorrow

@marcinz606

Copy link
Copy Markdown
Owner

I had quick look, I think we need to expose more things from nkscan first to make some features on LS-50 work with sane-parity (with current implementation strip preview won't work on ls-50) I make PR there

@marcinz606

Copy link
Copy Markdown
Owner

activexray/nkscan#5

@marcinz606

Copy link
Copy Markdown
Owner

With those changes and some adjustments to your NegPy branch I got the scanning to work on LS-50 in ui as intended.

@marcinz606

Copy link
Copy Markdown
Owner
20260731_10h18m32s_grim

@marcinz606

Copy link
Copy Markdown
Owner

main...feat/nkscan-strip-frames
branch with changes on top of your PR to get the LS-50 running (requires nkscan built with changes from my PR there)

@activexray

Copy link
Copy Markdown
Author

Wow great! I realized I missed a few things to get the 9000 to work as well in my testing, so I'll check out your MR and then fixup the stuff for the 9000, publish a v0.2 and come back to this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants