The iPhone to Linux AirDrop Alternative You Need

Yes, all twelve of you

Imran Remtulla
Mar 31 · 5 min read
A match made in hell. Photo by the author.

One of the best features of being in the Apple ecosystem is the effortless file transfer between devices via AirDrop; anyone who uses it understands how easy it is to take for granted. Sadly, it of course only works between Apple devices. While there are comparable solutions for the Android + Windows combo, anyone who chooses — for whatever reason — to pair an iPhone with a Linux PC are out of luck — understandably, Apple prefers to pretend the penguin doesn’t exist. Fortunately there are a range of third party alternatives and in this guide, I’ll show you a few of the best ones.

Here’s the list of options we’ll look at, in order of increasing complexity:

  • Snapdrop
  • USB Cable
  • SSH
  • Bonus: OpenDrop

Note that while the goal is to find the most friction-less file transfer method, none of these options are perfect AirDrop replacements; each has its pros and cons so the ‘best’ one to pick depends on your needs.

Snapdrop

This is at the top of my list because it’s a simple, convenient option that will work well for most people. All you need to do is open the Snapdrop app in a browser to get instant bidirectional file transfer between devices on the same network. It’s fast, Open-Source, and the files never leave your network; so chances are that this is as far down the list as you’ll need to go.

There are, of course, caveats. For one, Snapdrop may not be able to connect to your devices if you use a VPN. This was a deal-breaker for me but your mileage may vary. The Snapdrop UI can also glitch out, sometimes freezing up or showing duplicate devices. Also, newer iPhones save pictures in the HEIC file format, but these automatically get converted to JPEG when sharing with Snapdrop; that’s probably a good thing for most people but there doesn’t seem to be an option to disable it even if you wanted to.

The biggest downside, by far, is that the app gets disconnected if the browser is not in the foreground on iOS. This means not being able to use your phone while waiting on large transfers, and having to tap the screen every so often to keep it on.

If you can’t use SnapDrop but still prefer a wireless, Web-based file transfer option, you may want to check out send.vis.ee or file.pizza. These aren’t quite the same as SnapDrop on a technical level, but they serve a similar purpose.

USB Cable

While this isn’t exactly convenient, it is the most straightforward, low-tech option. Just plug in a USB cable and use your phone like an external hard drive. Its so simple with Android, surely Apple can’t mess this up? They can.

On older distros, you only get access to the phone’s camera roll via USB. Even then, the experience is inconsistent as recently captured media can take a while to actually show up in your file browser. Note that — as with the previous option — HEIC images are silently converted to JPEG, but here you can actually disable that in the phone’s settings.

On newer distros — I tested this with Ubuntu 20.10 — you do get additional access to some files that are accessible from the iOS files app. In any case, the access is read-only so one way file transfer is all you have.

SSH

Warning: This method — and the next — are very do-it-yourself and will require some technical knowledge, and use of the command line. If you’re on Linux that probably isn’t an issue though, right? 😉

The Apple App Store has no shortage of SFTP client apps; the idea is that if you can turn your PC into an SSH server, you should be able to transfer files to it. Note that this option will allow you to read or write files from your phone to PC but not the other way around.

First, we need to set up SSH. The commands required may vary per distro, but on Ubuntu, run sudo apt update -y && sudo apt install openssh-server -y && sudo systemctl enable --now sshd.service.

Next, run sudo nano /etc/ssh/sshd_config to edit the SSH server configuration (for a basic nano tutorial, see here). Since you probably only want your PC to be accessible on the local network, we need to add rules for that.

First, look for PasswordAuthentication and PubkeyAuthentication and make sure they are both followed by no and don’t start with a #.

Then, paste the following at the bottom of the file:

# Allow from devices on most common WiFi ranges
Match Address 192.168.1.*
PasswordAuthentication yes
PubkeyAuthentication yes
Match Address 192.168.0.*
PasswordAuthentication yes
PubkeyAuthentication yes
# Allow from devices on iOS hotspot range
Match Address 172.20.10.*
PasswordAuthentication yes
PubkeyAuthentication yes

I recommend using a private key instead of password authentication. The details are outside the scope of this guide but if you decide to go with that, make sure to set all instances of PasswordAuthentication above to no.

Save the file (on the keyboard, press Ctrl+X, then Y and Enter), then run sudo systemctl restart sshd.service.

Now all you need to do is find a decent SFTP client on the App store. I recommend FTPManager or SecureShellFish. Once installed, follow the app’s instructions to add your PC as a server. When asked for the PC’s IP address, run the ifconfig command on your PC to find it’s local IP.

The output of that command can be confusing so you may use this instead:

ifconfig | grep -E "inet (192.168.[0-9].[0-9]+|172.20.10.[0-9]+) " | tail -1 | awk '{print $2}'

That’s it! You should now be able to browse, upload, and download files from your PC over WiFi. Note that your WiFi may be a speed bottleneck, so for larger file transfers it may help to connect over your phone’s WiFi hotpot instead.

Bonus: OpenDrop

OpenDrop is an Open-Source AirDrop implementation made by a very talented group of volunteers. In theory, this is the best option on the list as it literally uses a reverse-engineered version of the AirDrop protocol, making it feel like a native experience on iOS. Sadly, it only works with specific WiFi cards. If you, like me, don’t have the right hardware, there is no workaround.

Run the following command: iw phy phy0 info | grep active. If there is any output, then you’re in luck! Head over to the OpenDrop GitHub page for installation instructions, and have fun.

Conclusion

I hope you found this guide useful; thank you so much for reading!

Geek Culture

Proud to geek out.

Thanks to The Startup

Sign up for Geek Culture Hits

By Geek Culture

Subscribe to receive top 10 most read stories of Geek Culture — delivered straight into your inbox, once a week. Take a look.

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Imran Remtulla

Written by

Ryerson CS. Night Owl.

Geek Culture

A new tech publication by Start it up (https://medium.com/swlh).

Imran Remtulla

Written by

Ryerson CS. Night Owl.

Geek Culture

A new tech publication by Start it up (https://medium.com/swlh).

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store