Are you looking for a way to quickly copy files from your iPhone or Android mobile device to your Linux computer or from your Linux computer to your devices? I recently discovered an open source application that's easy to install and makes transferring files as simple as a QR code.
The qrcp
project provides a command that generates a QR code in your terminal that allows you to send or receive files to your computer over the network.
Install qrcp on Linux, Windows, or Mac
The developer, Claudio d'Angelis, has released the qrcp
application with an MIT license on GitHub. I found it easy to install and easy to use. It's available for Linux, Windows, and macOS, and can be downloaded as an RPM, DEB, or tarball. There are builds for nearly every platform, including the Raspberry Pi.
If you want to install it on Linux, download either the RPM or DEB and use your package manager to perform a local install. For example, on Fedora, CentOS, or Mageia, or similar:
$ sudo dnf install ./qrcp*rpm
If you just want to try it, you can download the tar.gz archive and run it locally:
$ tar --extract --file qrcp*tar.gz
$ ./qrcp version
qrcp 0.x.y
Set up qrcp
You can view all of the available qrcp
options by using the --help
option:
$ qrcp --help
$ ./qrcp --help
Usage:
qrcp [flags]
qrcp [command]
Available Commands:
completion Generate completion script
config Configure qrcp
help Help about any command
receive Receive one or more files
send Send a file(s) or directories from this host
version Print version number and build information.
[...]
You can configure the application by editing the default configuration file located at ~/.config/qrcp/config.json
using your favorite editor or invoking the configuration wizard from the command line:
$ qrcp config
The first step is to create a configuration file. The qrcp config
command takes you through this process, but there are a few tricky questions.
The first question asks you for a fully-qualified domain name. If you're using qrcp
on a local network that doesn't use fully-qualified domain names (or if you don't know one way or the other), then leave this blank. The qrcp
command will use your local IP address instead.
The next question prompts you for a port. Most firewalls block non-standard ports, but it's not uncommon to recognize port 8080 as Internet traffic. If your firewall blocks port 8080, then you'll still have to add an exception. Assuming your system uses firewalld
, you can allow traffic on port 8080 with this command:
$ sudo firewall-cmd --add-port 8080/tcp --permanent
Decline the option to keep the network connection alive after the transfer is complete and let qrcp
generate a random path.
Assuming you're on a trusted network, use an HTTP (not HTTPS) connection, so you don't have to configure TLS.
The configuration is stored in ~/.config/qrcp/config.json
and is editable after the fact, so if you change your mind about any setting, it's easy to update.
The updated configuration looks like this:
{
"fqdn": "",
"interface": "wlp0s20f3",
"port": 8080,
"keepAlive": false,
"path": "",
"secure": false,
"tls-key": "",
"tls-cert": "",
"output": "/home/don"
Transfer files with qrcp
Now you're ready to send a file from your Linux computer to your mobile device. In this example, I used my iPhone, which infamously offers no support Linux at all. The process is exactly the same on an Android device.
Here's how I do it. First, I create an example file on my computer:
$ echo "Hello world"> ~/example.txt
Next, I use the send
subcommand to send the file from my Linux computer to my mobile:
Linux~$ qrcp send example.txt
I open my camera application (on Android, I use a privacy-friendly dedicated QR scanner) and the iPhone scans the QR code and launches Safari on my phone. Finally, I click on the Download button.
Receiving files with qrcp
Receiving files is just as easy, except the command is slightly different:
$ qrcp receive
I scan the QR code, and it once again launches the Safari browser on my phone, but this time it appears a bit different because I'm sending files from my iPhone to the Linux computer.
I click on Choose Files, which allows me to choose the file I want to send.
After sending the file, it's found in the default location specified in my configuration.
Try qrcp
The project documentation is brief but adequate, and it's supported by a community of developers in addition to Claudio d'Angelis, who originally came up with the idea. The community welcomes you to join them, and the application will change the way you look at file transfers to and from your mobile devices. Try it out!
8 Comments