Repository navigation
Releases: raph559/winawdl
Release list
winawdl 0.3.0
AirDrop on Windows through the PC's own Realtek RTL8852CE, now with a setup program, requests you can answer from a card on screen, and devices you can always accept.
It is marked as a pre-release because it is research code. Everything in it has run on one PC, with one card, against one iPhone.
Before you install
Read Before you run it first. In short:
- It works with one Wi-Fi card only, the Realtek RTL8852CE (
PCI\VEN_10EC&DEV_C852). Setup stops, having changed nothing, on a PC without it. - Installing gives that card to winawdl's driver. Wi-Fi is down from then until you uninstall, so the PC needs another way onto the network.
- The driver is signed on your PC, with a certificate setup makes there and adds to the PC's trusted roots and trusted publishers. It then deletes that certificate's private key.
Install
- Download
winawdl-0.3.0-setup.exebelow and start it. It is not signed by a publisher Windows knows, so Windows may first show "Windows protected your PC": More info, then Run anyway. - Read the page that says what installing changes, and go on.
- Leave "Start winawdl" ticked on the last page, and turn the app's Radio switch on.
Setup needs the .NET Desktop Runtime 10, Python 3.10 or newer and the Visual C++ runtime on the PC, and offers to fetch what is missing with winget. To take winawdl off again, use Uninstall on it in the Start Menu or under "Installed apps" in Settings.
The same files also come as winawdl-0.3.0-windows-x64.zip, for whoever would sooner read what runs: unpack it and double-click install.cmd.
On an iPhone, iPad or Mac, set AirDrop to "Everyone for 10 Minutes".
| File | SHA-256 |
|---|---|
winawdl-0.3.0-setup.exe |
D8506BA4AD03B128C7A0DCA3A4E1E6CD6510C675B5A7BD79C5C120A3E956615C |
winawdl-0.3.0-windows-x64.zip |
FEF10E3878A59593AB1ED8F5B29B392D673FC03DB49F7C74E9F00B3025DFC734 |
Both were built from commit 6f91199, one commit before this tag; the commit between them changes only the notes.
What changed since 0.2.0
- A setup program. A wizard around the same steps as the zip's installer: it says what installing changes, gives the card back if a step fails, and leaves a normal uninstaller.
- A request on screen. While the app's window is not the one in front, a device that wants to send shows as a card in the corner of the screen, with Accept and Decline. A setting turns it off.
- What arrived, on a card too. Pressing it opens the file, or shows several in their folder. It leaves by itself after 10 seconds.
- Always accept from a device. A request offers to accept everything from its device from then on, and the settings list those devices. A device is known by the name and model it gives, which another device could give too.
- The icon in the notification area says what is moving under the pointer, and how far along.
- The uninstaller works. Its first real run stopped half way, with the card given back and the firewall rules, the shortcut and the files left. Two more faults of the same kind were found by trying each real step, and all three are fixed.
- An answer that reached the engine the instant it asked was lost, and the sender left waiting.
- The AWDL daemon logs what each device nearby announced whenever it changes the one it keeps time with.
What has been tried
- Setup ran twice on the PC it was made on: once on a clean PC and once over its own install. Installed that way, the app received a Live Photo.
- The zip's installer and its uninstaller each ran in full on the same PC.
- The cards, always accepting and the icon's line were tried with an iPhone.
- Without a radio: 84 tests of the AirDrop layer over loopback, and 87 and 69 checks of the app, the second set on its real window kept off screen. The first two run on GitHub on every push.
What has not
- Setup's own uninstaller, a step failing during setup, and fetching a missing prerequisite with winget.
- Any other PC.
- Large transfers through the app, and what an iPhone shows when its request is declined.
Known
- An accepted transfer once waited 22 s before it started, with several Apple devices in range: the AWDL daemon was keeping time with a different device than the iPhone was. The cause is not yet known.
- After many days without a reboot the radio can fail to find the memory it needs. Trying again a minute later sometimes works; a reboot always has.
- The card on screen is not shown while a full-screen app or a presentation has the screen, but it does not know about Do not disturb.
Not in it: Contacts Only in either direction, and any card but the RTL8852CE.
winawdl 0.2.0
The first winawdl you can install without building it: AirDrop on Windows through the PC's own Realtek RTL8852CE, receiving and sending, with an app over both.
It is marked as a pre-release because it is research code. Everything in it has run on one PC, with one card, against one iPhone.
Before you install
Read Before you run it first. In short:
- It works with one Wi-Fi card only, the Realtek RTL8852CE (
PCI\VEN_10EC&DEV_C852). The installer stops, having changed nothing, on a PC without it. - Installing gives that card to winawdl's driver. Wi-Fi is down from then until you uninstall, so the PC needs another way onto the network.
- The driver is signed on your PC, with a certificate the installer makes there and adds to the PC's trusted roots and trusted publishers. It then deletes that certificate's private key.
Install
- Download
winawdl-0.2.0-windows-x64.zipbelow and unpack it anywhere. - Double-click
install.cmd. Windows asks for administrator rights, then the installer lists what it will change and waits for your answer. - Start winawdl from the Start Menu and turn its Radio switch on. Windows asks for administrator rights again, for the radio.
The installer needs the .NET Desktop Runtime 10, Python 3.10 or newer and the Visual C++ runtime, and offers to fetch what is missing with winget. install.ps1 -DryRun says what would be done and changes nothing. To take it off again, use "Installed apps" in Settings or uninstall.cmd in C:\Program Files\winawdl.
On an iPhone, iPad or Mac, set AirDrop to "Everyone for 10 Minutes".
SHA-256 of the zip: DA650182AE9BCBB90A716FACDB5440623867A0B912628B99A01B6902AC4CD7DF
What changed since 0.1.0
- An installer, described above.
- The app runs from an installed folder. It finds the daemons beside itself, keeps their logs in
C:\ProgramData\winawdl\logs, and makes the certificate the receiver and sender present, so OpenSSL is no longer needed. - A device is listed once. An iPhone that announced itself under a second name was shown twice for up to 20 s, or for as long as a transfer to it ran.
- A Live Photo is one photo among what was received, and can play its video. It is still stored as two files, a still and a video.
- A device that will not answer this PC is said to be there, with what to change on it.
- An icon.
- Nothing built says who built it: the account's name is kept out of the programs.
What has been tried
- The installer ran in full on the PC it was made on. The installed app then received a Live Photo from an iPhone and sent it a file.
- The two fixes above were tried over the air the same day: a 6.4 MB Live Photo in and a 0.7 MB file out.
- Without a radio: 83 tests of the AirDrop layer over loopback, and 51 and 59 checks of the app, the second set on its real window kept off screen. The first two run on GitHub on every push.
What has not
- the installer never ran on any other PC.
- Fetching a missing prerequisite with winget.
- Very large transfers through the app.
- After many days without a reboot the radio can fail to find the memory it needs. Trying again a minute later worked once; a reboot always has.
Not in it: Contacts Only in either direction, and any card but the RTL8852CE.
winawdl 0.1.0
The first tagged state of winawdl: Apple's AWDL radio protocol and AirDrop, receiving and sending, running natively on Windows on the built-in Realtek RTL8852CE, with a Windows app over both.
It is marked as a pre-release because it is research code that has run on one machine, with one card, against one iPhone.
There is nothing to download and run
The driver has to be built and signed on the machine that uses it: a certificate you make is trusted only where you install it, and no other signature is available to this project. So this release is the source at this commit. Get it with git, because the archives below leave the submodules out:
git clone --branch v0.1.0 https://github.com/raph559/winawdl.git
cd winawdl
git submodule update --init
git -C upstream/owl submodule update --init radiotapThen follow Install in the README, after reading Before you run it: installing the driver takes the Wi-Fi card away from Windows until it is uninstalled, and adds a certificate made on your machine to its trusted stores.
What it holds
- Driver. A user-mode (UMDF 2) driver that takes the card from the vendor driver and relays register accesses.
- Radio. devourer drives the chip from an ordinary program over a new Windows PCIe backend: firmware boot, monitor-mode receive and transmit, hardware acknowledgement, block ack in both directions, 80 MHz.
- AWDL. OWL's protocol core with a Windows I/O layer and a Wintun adapter,
awdl0, that carries IPv6 to and from nearby Apple devices. - Receiving AirDrop. Photos, videos and Live Photos from an iPhone, at about 16 MB/s.
- Sending AirDrop. Files into an iPhone's Photos at 9 to 14 MB/s, with the Bluetooth advertisement that wakes the receiver.
- The app. One window over both, which also starts and stops the two daemons.
What has been tried
- Over the air, from the terminal: the measurements above, recorded with how they were taken in DESIGN-NOTES.md.
- Over the air, through the app: starting and stopping the radio, one 0.2 MB file sent to an iPhone and one 71 kB picture received from it. Large transfers through it have not been tried.
- Without a radio: 79 tests of the AirDrop layer over loopback, and 45 and 58 checks of the app, the second set on its real window kept off screen. The first two run on GitHub on every push.
Not in it
Contacts Only in either direction, any card but the RTL8852CE, and a driver signed for machines other than the one that built it.