Device to device transfer, just a static github page.
gh repo: https://github.com/mbarlow/thinair
Creates QR codes for each device to scan for webrtc. Android to android will do an audible chirp that lets the devices know to switch from qr code mode to opening the camera to scan each others codes. Tested android to apple and working, the audio chirp doesn't get caught by apple. Just wait and eventually the qr code will dissolve to allow scanning step.
Just threw this together. I was playing with audio handshake using bird-like chirp "songs" or old school modem between smartphones. Fun putting phones together as they send audio frames and confirm to start transfer, but unreliable and slow to handshake. I would like to cleanup the flow to improve. I've started using it for sending files between iphone/android/pc without having to deal with apps, emails, accounts, etc. blah.
Also you don't even need a server atleast for now in chrome webrtc transfer can work over a file:// in firefox it doesn't. For signaling you could even use free peerjs tunnel or other when user is connected to internet and otherwise fallback to this QR or offer code sharing. This will become so useful if browsers eliminate those bottlenecks.
also even in localsend speeds are limited usually to my internet speed for some reason.
But it is not super reliable or friendly.
Both UI and CLI with complete feature parity on any device/OS, between the same user's devices and between users.
It's a pretty polished PWA you don't even need to install as it uses WebRTC P2P streaming in the local network or via TURN over internet.
So a good solution for ad-hoc file sharing without ad-hoc network.
If we would have good operating systems, perhaps this would be easier and more widely spread. Otherwise the solution has to come from the device manufacturer.
- Create an ad-hoc Wi-Fi network on one device.
- Connect the other device(s) to that Wi-Fi network.
- Now run Localsend.
The first two steps are a bit of a drag, and the fact that Airdrop handles it is what makes it so frictionless to use.
AirDrop is fantastic for sharing files with people you don't know/just met - if we have to find and agree to join the same wifi before we interact we are no longer talking about the same feature.
If Apple's AirDrop implementation had required people to join the same WiFi first, the feature would never have taken off the way it has among non-techy users. I'm still today mildly surprised I can use AirDrop as a verb in conversation and most of the time the other party knows what I mean.
With Airdrop you have trivially easy, "just works" sharing with people in proximity. It works great between iPhones and Pixel phones now they support it. It just needs support to spread to more Android devices.
Funny enough, I encounter so many problems trying to share things via AirDrop with friends, family, and even my own Apple devices that I just tell everyone to install LocalSend and I find that things work better.
I’m not sure why that is, because AirDrop used to work pretty well for me. But it’s been an exercise in frustration more often than not for me.
(Obviously, LocalSend works only as long as everyone is on the same network.)
A typical Apple feature, dreamed up by engineers that are presumably not aware of the existence of metered data plans...
Settings > General > AirDrop > turn off Use Cellular Data
That said, I don’t really see why you would disable that. It’s only a backup method for when the peer-to-peer connection fails. Unless you are sending huge files on a regular basis, I wouldn’t expect it to be worth disabling. Also, most metered plans I’ve encountered just cause your connection to be very slow after you hit the data cap.
If you are on a plan that automatically charges you excessive overage fees without warning and there is no other choice, then my condolences.
I stand corrected, and I appreciate that Apple did consider the non-Bay-Area use case :)
> Unless you are sending huge files on a regular basis
I do use AirDrop extensively for sharing photos when traveling. One sharing session could easily eat through my roaming allowance.
If we had good mobile OS I bet we would have a solution for both...
Personally I just use wifi/smb for file transfer and hate it when someone comes with their iPhone and isn't able to send a file to me.
I suppose that is "widely expected" from the usual group of anti-Apple internet griefers looking for a reason to moan in public, rather than actually doing some research or knowing things.
To quote a sibling comment:
"Apple contributed the core logic to the Wi-Fi Alliance to build Wi-Fi Aware, which they now also support."
Apple has consistently done everything it can to self-sabotage their implementations of stuff to comply with EU anti-trust legislation like the stuff with digital marketplaces, so I'm not holding my breath on this.
Iroh's protocol can figure out if the devices are on the same LAN and avoid going over the internet. It can work without a discovery server too -- i.e. completely LAN.
Been using Localsend to transfer bigger files between phone / laptops, never fails or has trouble finding a device, or stalling.
UI, CLI, Local network, over the internet, anything. P2P + E2EE.
It works on iOS and Android
It's Android App don't need LAN to share: https://play.google.com/store/apps/details?id=com.fastfileli...
https://github.com/thiswillbeyourgithub/WebSend
Note that I'm currently refactoring it heavily (the code is awful currently).
Usually, but not always.
> The workaround I've found after switching to an Android device has been to teather my connection to my friend's device, which ends up creating a LAN that Localsend can work through, but this is not as nice an experience.
"You could fix that by builing a rail track and using a train."
The whole point of these solutions is to not have to transmit data over the internet, it should work over a local dynamic connection.
Last RCE in Airdrop, could be made into worm, it was found by whitehat, luckily for Apple there are still people, which are willing report exploits for little money, so billionaires can enjoy their life on yachts.
And, of course this only solves the phone - phone, and not even all of them. Desktops & laptops have less hope.
This seems like such a basic solution that I'm surprised that it isn't required by any of the mainstream standards before WiFi Aware. I wonder if this was some sort of a patent issue or similar.
However the path towards this type of interoperability would likely go through additional standardization via IEEE 802.11* and the Wi-Fi alliance. At which point Apple will need to implement and support the new standards. There is no need to reverse engineer AWDL to meet the new European interoperability requirements. What is needed is for wifi chipset OEMs to implement such standardization. Something pretty routine of them.
It can be expected that Apple will also maintain the proprietary AWDL in order to support their legacy devices.
A research lab from TUD worked on a project investigating Apple's wireless ecosystem Link: https://owlink.org/publications/
Also something interesting that I remembered reading closely linked to AWDL?
Link: https://projectzero.google/2020/12/an-ios-zero-click-radio-p...
* https://www.wi-fi.org/wi-fi-aware-resources
* https://developer.apple.com/documentation/WiFiAware
* https://developer.android.com/develop/connectivity/wifi/wifi...
It’s a future promising tech though. A much better version of Wi-Fi Direct.
As for WiFi NAN: support for it seems rather limited outside of iOS and Android. From what I can tell the feature is barely tested on Linux and I can't find any generic Windows APIs for it either.
I've definitely used STA and AP modes concurrently on my Windows laptop with the operating system's built-in internet connection sharing function to help troubleshoot a problem in the field.
That was around a decade ago. It didn't take any extra effort on my part; I just told it to do the thing, and then it did that thing.
Maybe a network nerd can chime in - is this implementation so difficult that it's unrealistic we'll see an OSS version?
Say you've got an android phone, windows PC, and a linux box, and you want to be able to quickly drop files from each one. unless we get some kind of cooperation across all three platforms at the OS level, you'd at minimum need to install some kind of client into each system - when the nicest feature of airdrop is that it's baked into all of Apple's OSs, in my opinion. even if it worked exactly the same way, but had to be installed, I think it would see less use - and there's no real way for a single OSS project to do that across multiple OS platforms, to my knowledge
What's tricky is to specify and get everybody to implement the layers on top of it, including device discovery (frequently offloaded to Bluetooth for efficiency reasons), user identification (Apple runs a PKI for this) etc.
When Quickshare drops your Wi-Fi connection, its not Direct anymore, that's just soft AP from an error, and if that doesn't work, it fallback to Bluetooth. Bluetooth is used for provisioning as well.
The only reason why many apps don't use it is because of buggy implementation, some phones require a full restart after using Wi-Fi Direct to fix connectivity issues, even Motorola's own product line with Smart Connect use it only with certain models, despite having Wi-Fi direct due to poor implementation (can be forced). They even have a white list of supported adapter for the Windows app since direct is used as well, can be unofficially force enabled for Mediatek based adapters (rare on some laptops).
Back in 2016 things were much stable on Android phones with Wi-Fi Direct, even with old Blackberry, there were many apps including file managers that used it before it was essentially dropped, even for onboarding/provisioning apps like HP printers...
Apple's Airdrop success is about gaining traction, in the era of Wi-Fi Direct or other methods, most people were not aware of such features, as it required an app to be installed, they used email/messaging, even when Airdrop was first introduced and preinstalled, it took years for the average person to use it.
This is really nothing special as 802.11 implementations go, as it's pretty easy to do as long as you can control the physical channel for at least one side.
Many Windows, Linux, and Android devices have been supporthing this for years. It's usually called something like "simultaneous AP/STA mode".
Anyway, good to know we can use our NAN signal to send signal NaNs!