nkscan scanner backend - #697
Conversation
|
thanks, I'll be checking it out tomorrow |
|
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 |
|
With those changes and some adjustments to your NegPy branch I got the scanning to work on LS-50 in ui as intended. |
|
main...feat/nkscan-strip-frames |
|
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 |
|
@marcinz606 I was just given this archive of the official Nikon SDKs, which clears up so many gaps around my understanding and holes in my RE work, so forgive me for delaying this for a bit longer as I work through this. I want my code to follow the spec as close as possible so i don't break anyone's scanner 😅. Big shout out to @kosma for sending this to me. |
|
nice, If you manage to dig up anything LS-50 related that might need testing just ping me :) |
Would it work for whole roll scanning on the 5000? I believe it is up to 40 frames. |
|
Side note: I have a modified firmware that allows full roll scanning on an LS-40/LS-50. Requires cutting a hole in the back, though :) |
That's the plan! |

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.