Backlit

Wireless scanning app (2015 – 2025)

You have a USB scanner? You have a NAS, a Raspberry Pi or an always-on computer? You have some free time to install SANE server on it and make your scanner available over Wi-Fi ? You have more free time to rebuild SANE from source because the Debian-packaged version is too old for your scanner?

Then you’re in luck, this app is for you! *

Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917

* offer without any commitment, does not prevent hair loss, could maybe be useless to you, for more information please ask a kiosk close to you

What’s it?

Backlit allows you to connect wirelessly to your devices through SANE, adjust your scan settings and save your document directly on your iPhone or iPad! Scanned documents can be saved to the iOS Camera Roll and shared to apps available on your device!

Lo and behold, here are some preview for iOS:

The Story behind the app

Wanna know more about how this app came to be? Read on!

Act I: Simpler times

Once upon a time, I lived in an apartment where my multi-function printer had to reside on a shelf, to free up some space on my (overcrowded) desk, far from my computer.

Everytime I wanted to scan something, I had to:

  • move my laptop to the printer
  • find the USB cable that was plugged into my NAS
  • plug it in my laptop without making the NAS fall
  • scan my document while holding my laptop in the air and holding the next page
  • unplug the cable from my laptop
  • plug it back into the NAS, trying all three possible USB orientations until I find the right one, while probably unplugging the broken RJ45 cable or the power plug.

While this setup trained me to do circus-level acrobatics in the dark, for which I shall eternally be grateful, it also awakened something in me.

A spark. A light. A hope.

A hope that technology could fix everything. Even bad technology. After all, I already could print remotely, how dare you tell me I couldn’t scan remotely as well?!

Act II: What if..?

Brief pieces of memory flashed in my brain as I remembered my dad in the 2000s trying to achieve the same, having heard of SANE through a friend, before giving up some months later, lying on the floor wrapped in a blanket, a single tear running down his face.

Was I really going to try as well? Could I really succeed where he had failed? Was it a good idea or just hubris? No. It had to work. I had to try. It wouldn’t be the same. It couldn’t. I was ready. It was now my time to pick up the baton.

This is how, on a beautiful day of May 2015, I decided to make an iOS app that could connect to a SANE server, access its devices, and digital thoughts in exchange for cute pixels.

It took about half a year to be able to cross compile SANE for iOS, walking down dark paths of compiler stuffs, then to create a build script that would automatically download the latest archive, adjust a couple headers, set up environment variables to the proper incantations, sing the required chants under the full moon and spit out a compiled library file. With some more work I was able to run a simple scan and hear my scanner hum (while the app crashed, probably for black magic computer reasons).

Such fun!

Act III: Rule 1 of pet projects

I was able to make it into a functional(-ish) app that I used everyday. It looked ugly, but it worked™.

Maybe it was just a dream, but I’m pretty sure I achieved compiling SANE with USB driver support, using libusb and the forbidden iOS IOKit headers, running it on my jailbroken iPhone as root, while my device was plugged into the 30-pin connector of my iPhone 4S, and have it work. Damn. Those were the days.

But as is the curse of any pet project, adding features took time, my soul broke everytime I had to make a change in the code, a new iOS version would change my precious private API calls, leading me to abandon the project, before picking it back up and going full feature freak during endless sleepless nights, and abandoning it again.

It took until 2022 to resume working on it. My plan was simple:

  • convert my whole code to Swift 5
  • remove unnecessary dependencies and use more native elements, now that iOS had proper menus, alerts and stuffs
  • publish it!
  • make screenshots
  • publish it!
  • make a catalyst version!
  • add a file extension!
  • support arcane image formats!
  • redo the icon
  • redo all my apps’ icons to match, duh
  • choose a name
  • choose a name
  • publish it!
  • redo all screenshots and automate preview video recording
  • publish it!
  • redo my portfolio to include a product page
  • publish it! *

* almost, I have to finish writing this first

Act IV: Theeere we go!

Here we are, step 3 (no) of my plan, publishing!

Without any further ado, I now present to you Backlit!

After years of work, it is now available on the AppStore. I also decided to keep the code open for now, so go ahead and check it out on Github!

And since I took a tangent for 3 months tryout it Marzipan Catalyst, the app is also available for macOS!

Act V: What next?

Well, I’m glad you asked!

Obviously I have a lot of promising new features, who do you think I am!, some of them miiiight take a wee bit of time to go through though. Here is a sneak peek:

  • support very large scans, by working on image data on the disk, and not all in memory
  • support handheld scanners, because honestly? why the hell not!
  • something like scanning presets, that could also turn into remembering last scan parameters for each device
  • Siri shortcuts, live activites, bla bla bla
  • support for Wi-Fi enabled devices, without an intermediary SANE server, making the app usable for more people than… well, me.

That last one is the most complicated and would involve porting AirScan to macOS and iOS. So of course I’m already on it. Already cried a couple times and stopped, so judging by my usual ADHD-powered schedule I should be done in 6 months to 10 years. Wish me luck!