Finding the scanner, and taking over its settings
A teacher should press one button and get a scan. Behind that button are a search for the scanner, a list of settings nobody should have to touch, and a Windows firewall surprise.
6 min read

On a fresh Windows computer, the first time a teacher opened our scanner list, Windows Firewall put up a security prompt. We saw it in a round of virtual-machine testing. A non-technical user should never meet that screen.
What is a firewall?
A firewall is a guard built into the computer or the network. It watches what tries to come in or go out and asks, or blocks, when something looks unfamiliar. That is why a first search of the network made Windows ask the teacher a question.
For the teacher, the scanning part of Tziyun B’Rega is one idea: put the papers in the feeder and press a button. For us it was a long story with three parts: finding the scanner, talking to it, and deciding who chooses its settings. The answer to the last one was the same each time. We choose. A non-technical person should never be asked to configure their scanner.
Key points
- For the teacher it is one button. Behind it: finding the scanner, talking to it, and deciding who chooses its settings. We choose.
- Opening the scanner list set off a Windows Firewall prompt. Since 21 October 2026 it only looks at the scanners the computer already knows, and searches the network only when the teacher asks.
- On a busy computer the scanner list (the screen where the teacher picks a scanner) once reported that it found no scanners although the scanner was there. Now it keeps searching.
- We list no brands or models. The program is built to work with scanners that have an automatic paper feeder.
First, we borrowed a tool
In the Electron (opens in a new tab) days, scanning was done by NAPS2 (opens in a new tab), a separate open-source scanning program that our program ran in the background. We used its Windows version. On 24 March 2026 we packaged a portable copy of it with the app.
It worked, and it had the usual drawbacks. We had it working only on Windows; it had to be installed and managed as a separate program, and our program could only talk to it through text passed back and forth. When we moved to Go (opens in a new tab) in May 2026 we dropped it. The decision record of 15 May says NAPS2 was eliminated for exactly those reasons.
Then, our own scanner layer
We replaced it with a Go library of our own, built for this project. Its first version is dated 12 May 2026. It talks to scanners the way the operating system does:
- On Windows, through the system’s scanning service (WIA).
- Over the network, by asking the local network who is there and speaking the standard language network scanners use (a protocol called eSCL, also known as AirScan), on any system. The network search was reworked on 16 May.
- For USB scanners on Linux and on a Mac, the connections are planned but still placeholders.
Each of these has its own idea of what a scanner is, how to list one and how to read a page from it. The library hides that. It reports what is happening as a list of status messages that our screen turns into words: searching, found one, receiving a page, done, cancelled, failed.
Finding is a story on its own
Looking for a scanner on a network sounds simple, and it is where most of the surprises were.
Windows asked a question we did not expect. Opening the scanner list ran a full network search, and that search opens a door on the computer that listens for replies from the network. That is what set off the firewall prompt. On 21 October 2026 we changed the rule: opening the list only looks at the scanners the computer’s own drivers know about. The network is searched only if the teacher asks for a network search, and never if a scanner address has been configured.
What is a driver?
A driver is a small program that teaches the computer how to talk to one device, such as a printer or a scanner. It is like an interpreter between the computer and the machine, and each model usually comes with its own.
Some networks do not allow the search at all. The network search relies on a kind of call to everyone on the network (a broadcast) that some networks block. So we added a way to name a scanner by its address (27 August), and on 18 October 2026 the list began to show scanners configured by address next to the discovered ones. The same route is what let our test machine use a pretend scanner.
A scanner might simply be slow to answer. On 23 October 2026 our weak-computer test showed a failure, and we wrote it up the next day. The list searched once. When the busy computer missed the scanner’s one short answer window, it reported that it found no scanners and stopped. The scanner was there all along. Now the list keeps searching by itself while it shows nothing and no scan is running, waiting a little longer between attempts, and a scanner that was configured but did not answer gets a longer wait next time. The teacher can also press “search again” at any time.
Taking over the settings
A scanner offers many choices: which paper source, what page size, colour or grey, the quality, the file format. Each one is a way for a person to get it wrong, and the wrong choice tends to show up later as a confusing result rather than as an error at the time.
So the program decides. It asks for the document feeder, the page size we print on and the other settings it needs, and the teacher is not shown any of this. Some of what those values are is part of how the product works, and we would rather not publish it. The principle is simple: whatever the scanner would ask the user, the program already knows the answer.

Scanners do not all accept the same file format. On 23 September 2026 we found one failure that is hard to see from the outside. When a network scanner is asked for a format it does not support, it refuses the entire job with a generic “conflict” answer, which looks exactly like “the scanner is busy”. Now the program asks the scanner what it supports first and picks something it accepts. On Windows it also asks for a more direct transfer, but only when the scanner says it can do it.
What we have not claimed
We do not list scanner brands or models. Our notes name no model that we can show was tested on a real device, and a list of brands that look supported when they are not would be worse than no list. What we can say is that the program is built to work with scanners that have an automatic paper feeder.
What we learned
The easy case, one scanner plugged in by USB, is a small part of the job. The real work is every other situation: a network that blocks the search, a computer that is busy, a firewall that asks questions. Taking the settings away from the user was about making sure the person at the desk could not end up in a situation they have no way of understanding.
Nothing in this story matches your search.
Read next
Building Windows software from a Mac: a borrowed computer, a virtual machine and a photo of an errorSchools run Windows. We work on a Mac and Ubuntu. This is how Tziyun B'Rega learned to build and test for Windows, and the photo that taught us the most.
A mouse pointer that looked wrong on WindowsThe same program can look different on every operating system. One day the mouse pointer changed on Windows, so we chose our own pointer and learned to test the small things.