My first strategy was to use
libdecodeqr-examples
's libdecodeqr-webcam
utility. It pretended to work, showing a view of what my laptop's camera sees, and then drawing a green box framing the QR code that it recognized. But despite my attempts to help it see better by placing a converging lens in front of the camera (or the attempt to use another camera which hates being in focus), libdecodeqr-webcam
just wasn't displaying the correct bitcoin URI. Sometimes the tool would show a string, and some of it would even look right, but invariably there'd be some corruption.So I just left it for a few days. I thought the channel between the phone's display and the laptop's webcam output was just too noisy to reliably scan a QR code. Not really what I expected from QR codes (they use an error-correcting code) but hey, who am I to argue with the decoding tool?
It turns out that the tool just isn't up to the task. Even running
libdecodeqr-simpletest
on a locally-generated image fails, and outputs only a line of control characters. Back to searching, where I found an answer on askubuntu referring to zbar-tools
. I had previously overlooked it because the short description made no mention of QR codes, only barcodes.With
zbar-tools
installed, I ran zbarcam
and it was able to read the QR code from the phone's display immediately - even without the extra lens. Problem solved!