Android - Fast, easy, reliable way to transfer large files between Android devices? (aka. WiFi Direct stories from the field)
Rather than sleeping, I spent a few more hours experimenting.
I found what works best for my needs is an FTP server app.
For casual transfers, when both devices are connected to the same network, I'll just transfer through my Access Point. With the limitations that implies.
If I'm not near an AP or just want full speed, I'll deal with the hassle of setting of the Wi-Fi direct partnership and then launch the FTP server. It usually takes 3-5 tries before the devices connect, but once they do, FTP works stable and fast.
Furthermore, this solution also satisfies my secondary goal, of being able to use the same method to transfer files between Android device and PC.
Now, there are a lot of FTP server apps out there. Most are ad-supported, most are rather big as well. To my surprise, there's also quite a performance difference between them.
I thought I'd might as well shared my experience with the four FTP server apps I tested...
Required Permissions
None of the tested apps required ridiculous permissions. Just the following special permissions:
- FULL NETWORK ACCESS
- MODIFY OR DELETE THE CONTENTS OF YOUR USB STORAGE MODIFY OR DELETE THE CONTENTS OF YOUR SD CARD
- PREVENT TABLET FROM SLEEPING PREVENT PHONE FROM SLEEPING
In addition, Andreas Liebig's FTPServer also required:
- READ PHONE STATUS AND IDENTITY
Speed Test Setup
The speed test wasn't exactly scientifically performed, but devices were in the exact same spots during tests.
- FTP server app running on Nexus 7
- FileZilla FTP client running on Windows 8 laptop
- Both connected to the same 802.11n network. Windows reported the link speed as 130 Mbps (I know this is not exact)
- I downloaded the same 103,4 MiB large file two times through each app
Test Results
All stats, numbers and other facts are as of March 30th 2013.
Apps ordered by measured throughput, fastest on top.
Andreas Liebig's FTPServer
- Price: Free
- Latest version: 2.4.0 (2013-03-26)
- Size: 78 kB
- Install base: 100.000 - 500.000
- Avg. rating: 4.6
- Android OS requirement: 1.1+
- Comments: Initial configuration required, not plug-and-play. Detailed server log on main screen when service is running. No anonymous access possible?
- Throughput: 103.4 MiB downloaded in 43 seconds @2.4 MiB/sec, 103.4 MiB downloaded in 47 seconds @2.2 MiB/sec
Boby Ertanto's My FTP Server
- Price: Free (ad supported, ad-free version available)
- Latest version: 2.1 (2013-02-28)
- Size: 1.2 MB
- Install base: 50.000-100.000
- Avg. rating: 4.1
- Android OS requirement: 2.2+
- Comments: Simple interface. Very basic settings.
- Throughput: 103.4 MiB downloaded in 48 seconds @2.2 MiB/sec, 103.4 MiB downloaded in 49 seconds @2.1 MiB/sec
The Olive Tree's Ftp Server
- Price: Free (ad supported, ad-free version available)
- Latest version: 1.11 (2013-01-14)
- Size: 1.1 MB
- Install base: 100.000 - 500.000
- Avg. rating: 4.4
- Android OS requirement: 2.1+
- Comments: Based on Apache ftp server. Simple interface. Configurable port, home dir, username/password, service resillience, energy saving etc.
- Throughput: 103.4 MiB downloaded in 56 seconds @1.8 MiB/sec, 103.4 MiB downloaded in 56 seconds @1.8 MiB/sec
Berserker's FTPDroid
- Price: Free (ad supported, ad-free version available)
- Latest version: 1.3.1 (updated 2012-12-28)
- Size: 2.0 MB
- Install base: 50.000 - 100.000
- Avg. rating: 3.9
- Android OS requirement: 2.2+
- Comments: Based on Pure-FTPd. Simple interface. Configurable port, home dir, username/password, service resillience, energy saving etc.
- Troughput: 103,4 MiB downloaded in 135 seconds @0,8 MiB/sec, 103,4 MiB downloaded in 121 seconds @0,9 MiB/sec
Conclusion
Not only is Andreas Liebig's FTPServer the only completely free of the apps tested, it's incredibly light weight (78 kB!), can run on any Android phone you can find but also has the fastest throughput of the apps tested.
Once the initial configuration is done, the main window simply displays your standard FTP server log, whereas other applications pretty much displays nothing but a few buttons and maybe the IP address and port of the server.
Thank you, Andreas!
I'm Budius, the developer of the WiFi Shoot! and I must say that J4velin's explanation is really spot on and pretty sad.
I started developing it just because I saw this cool technology and no one was using it but it only proved to be a big headache.
Even during development (I was using a Transformer TF300 and a Galaxy Nexus) it took me much more time than it should had and I had lots and lots of problems simply because the technology is broken on the driver level. Example of that is that Asus removed support for WiFi Direct on their Jelly-Bean built of the transformer (and that was reason for one of my 1-star rating, it stopped work on the user transformer)
If my app was completely free I probably was going to the same approach of J4velin and simply pull the plug on it, but now I feel I can't just cancel it for the users that paid for it.
I started checking some options to allow it to operate over normal WiFi too and only use WiFi-Direct if the user specifically request for it, but it's a personal project and I simply don't have free time now.
Really hope the manufacturers get their act together, but I wouldn't put my hopes up. Anyone who always uses bluetooth everyday (a technology that was originally developed in 1994) know that sometimes you have to reboot your mobile just to have it connect to a headset.
I released an app last week that I hope will solve your problems. WiFi Direct Friends https://play.google.com/store/apps/details?id=com.cobaltstar.wififriends
Most significantly, it can transfer files in both directions once the two devices are connected, which I think seems to be your main big issue. So even though you may have to guess which device to press connect on (blame the device manufacturers), you'll know that once they're connected you can send and receive no problem. Make sure you aren't connected to any other WiFi networks, or else things will get slow and unreliable.
I also added auto restart of the WiFi when there are problems or hangups in the initial connection process, so hopefully there won't be much guesswork or troubleshooting.
You've hit the nail on the head with regards to finding problems about how WiFi Direct is implemented across these devices. We're dealing with the most trivial use case of the technology here and the internet is full of tales of woe. Direct just does not seem ready for prime time in any big feature that needs to be depended on.