FlyingCarpet

spiegltGPL-3.0活跃维护

跨平台 AirDrop 替代方案,通过设备间自建 WiFi 直连在 Android、iOS、Linux、macOS 和 Windows 之间传文件,无需路由器或网络基础设施。

Cross-platform AirDrop. File transfer between Android, iOS, Linux, macOS, and Windows over ad hoc WiFi. No network infrastructure required, just two devices with WiFi chips (and optionally Bluetooth) in close range.

v10.0.6发布于 2026-10-24 03:48 UTC5,377star +1 / 7 天258fork同步于 2026-11-10 11:36 UTC

怎么上手

由 README 提炼,执行前请确认
winget install spieglt.FlyingCarpet
brew install flying-carpet
硬件要求按 README 说明

需要两台带 WiFi 或以太网芯片的设备,热点模式下需在近距离;蓝牙为可选。README 未提及显存或 GPU 要求,这是文件传输工具,不依赖 GPU。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

跨平台 AirDrop 替代品,两台设备直连 WiFi 就能互传文件,无需网络基础设施

跨平台 AirDrop 替代方案,通过设备间自建 WiFi 直连在 Android、iOS、Linux、macOS 和 Windows 之间传文件,无需路由器或网络基础设施。

核心能力

  • 支持 Android、iOS、Linux、macOS、Windows 互传
  • 热点模式由一台设备开热点,另一台加入
  • 共享网络模式复用已有 WiFi 或有线网络
  • 用 Noise NNpsk0 握手加密传输内容与文件名
  • 蓝牙可选,用于自动交换热点凭据

容易踩的坑

v10 与 v9 及更早版本不兼容,所有设备都要升级到 v10;热点模式会断开无线网络连接,且两端需关闭 VPN;Apple 设备无法以编程方式开热点,Apple 之间只能用共享网络模式;Windows 首次运行会弹 UAC 添加 3290 端口防火墙规则;Android 需 10/API 29 以上,部分小米、MIUI、HarmonyOS 设备不可用。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v10.0.6
  1. v10.0.6Flying Carpet 10.0.6最新正式版2026-10-24 · 2026-10-24 03:48 UTC

    Linux only.

    Building on GHA on Ubuntu 22.04 to fix github.com/AppImage/appimage.github.io/pull/5720.

  2. v10.0.5Flying Carpet 10.0.52026-09-18 · 2026-09-18 04:19 UTC
    查看更新说明

    Linux only

    Built with a newer version of tauri-cli to fix https://github.com/spieglt/FlyingCarpet/issues/145.

  3. v10.0.4Flying Carpet 10.0.42026-08-12 · 2026-08-12 04:23 UTC
    查看更新说明

    iOS and macOS only.

    Fixes memory use growing with the size of the transfer on the receiving device, which crashed iOS partway through large transfers. Also fixes the password dialog being cut off on iPad.

  4. v10.0.3Flying Carpet 10.0.32026-08-06 · 2026-08-06 02:50 UTC
    查看更新说明

    Android only.

    Fixes shared network transfers failing to connect when a VPN is running. Also fixes a crash when Bluetooth is turned off during a transfer.

  5. v10.0.2Flying Carpet 10.0.22026-07-28 · 2026-07-28 04:12 UTC
    查看更新说明

    Android only.

    Fixes a missing local network access permission check that is newly required in Android 17 (SDK 37). This was causing transfers that would connect, but stall before sending files. https://github.com/spieglt/FlyingCarpet/issues/137

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Version 10 adds a Shared Network mode, for when you want to use a preexisting WiFi or wired network rather than create a hotspot.

    Version 10 is a breaking change: devices running version 10 cannot transfer with version 9 or earlier — you'll get a version-mismatch message instead. Update Flying Carpet on every device you transfer between.

    Download for Android:

      

    Or if you prefer to sideload, the APK is available on the releases page.

    Download for iOS:

    Or search the App Store for "Flying Carpet File Transfer".

    Linux, macOS, and Windows versions are available on the releases page. Installers and standalone executable versions available.

    On Windows, you can also run winget install spieglt.FlyingCarpet in PowerShell.

    Flying Carpet

    Send and receive files between Android, iOS, Linux, macOS, and Windows: either over ad hoc WiFi with one device acting as hotspot, or over a network shared by both devices. No internet or cell connection required, just two devices with WiFi or ethernet (and optionally Bluetooth) chips (in close range if using hotspot mode).

    Don't have a flash drive? Don't have access to a wireless network? Need to move a file larger than 2GB between different filesystems but don't want to set up a network share? Try it out!

    Demo video (predates version 10 — it shows hotspot mode only)

    Screenshots:

    Use:

    Linux: Download the .AppImage file from the releases page for a standalone version, or if you're on a Debian-based distribution, download the .deb file and install it with dpkg. On Fedora or another RPM-based distribution, use the .rpm. All three need Ubuntu 22.04 or newer, or another distribution with glibc 2.35 or later.

    macOS: Download the .zip file from the releases page. Double-click to unzip it and drag the .app bundle inside to your Applications folder. Or if you use Homebrew, run brew install flying-carpet.

    Windows: Download the .msi installer from the releases page, or FlyingCarpet.exe for a standalone version.

    Shared Network mode: join both devices to the same network (WiFi or wired — a phone on WiFi can transfer with a desktop on ethernet), pick Shared Network mode and a direction on each device, and select what to send. The receiving device generates a one-time password and displays it with a QR code; type it on the sending device or scan it with a phone, and the devices find each other on the network and start the transfer. No Bluetooth is used and you don't need to know the other device's operating system.

    Hotspot mode: one device creates an ad hoc WiFi hotspot for the other to join. If both devices can use Bluetooth, they exchange the hotspot credentials automatically after you confirm a pairing code; otherwise the hosting device displays the password (and a QR code) to enter on the joining device.

    Compilation Instructions:

    • Install Rust.

    • Run cargo install tauri-cli to install Tauri.

    • For Linux, install dependencies. Ubuntu 22.04 or newer (Tauri v2 needs webkit2gtk-4.1, which Ubuntu 20.04 doesn't have):

    sudo apt install build-essential curl wget file pkg-config libwebkit2gtk-4.1-dev libdbus-1-dev librsvg2-dev
    
    • Run cargo tauri dev to run a development version or cargo tauri build to create release artifacts.

    • The released Linux .AppImage, .deb and .rpm are built by the manually triggered Linux Release GitHub Actions workflow, in an Ubuntu 22.04 container. They use the system's glibc, so a build made on a newer distribution won't start on older ones.

    That builds the Windows and Linux desktop app. The Android and Apple apps are separate builds from the same repo:

    • Android: from Android/FlyingCarpet/, run ./gradlew assembleDebug, or open the directory in Android Studio.

    • iOS and macOS: requires a Mac with Xcode. Open Apple/iOS/FlyingCarpet.xcodeproj or Apple/macOS/FlyingCarpet.xcodeproj. DEVELOPMENT_TEAM is intentionally left blank, so the first build fails with "Signing for 'FlyingCarpet' requires a development team" — pick your own team under the target's Signing & Capabilities tab, or pass DEVELOPMENT_TEAM=YOURTEAMID to xcodebuild. The Swift code is an independent port of the protocol and shares no code with the Rust core, so cargo build does not touch it.

    Restrictions:

    • Apple devices cannot programmatically run hotspots, so Apple-to-Apple transfers require a shared network: join both devices to the same WiFi network and use shared network mode. That network can itself be a Personal Hotspot made manually on one iPhone or MacBook and joined from another before running the Flying Carpet transfer in Shared Network mode. (Or just use AirDrop.)

    • Disables your wireless internet connection while in use. (Does not apply in shared network mode, or to Windows or Android when hosting the hotspot.)

    • VPN should be disabled on both devices.

    • macOS sometimes switches back to a wireless network with internet connectivity during particularly long transfers.

    • The Android version requires at least Android 10/API level 29. The Android version does not work on some Xiaomi, MIUI, or HarmonyOS devices, and possibly other Android-like OSes. I don't own these devices and so can't test, but it seems like this is due to lack of support for the LocalOnlyHotspot API. It has been confirmed to work on at least one Xiaomi phone.

    • Android requires location permission to host WiFi hotspots and scan for Bluetooth devices. Camera access is required to scan QR codes. No location or camera data is collected.

    • On iOS, Flying Carpet asks for camera access to scan QR codes, Bluetooth to exchange WiFi details in hotspot mode, and local network access.

    • Requires Windows 10 or later. The first run adds inbound Windows Firewall rules for TCP and UDP port 3290, which requires a UAC prompt.

    • The Linux version was developed and tested on Linux Mint. I mainly intend for it to run on Debian-based distributions. I will try to help troubleshoot others if I can, but I may not be able to as I don't have access to spare machines. There has been at least one issue running on Fedora, possibly related to SELinux but I don't really know.

    • Sometimes when the Cancel button is hit on the desktop platforms, it can take time for the OS to finish trying to join or create a hotspot. Please only click the Cancel button once and wait a few seconds. This sounds like it should be easy to fix, but last time I tried it was not.

    Planned Features

    • Add Flying Carpet shortcut to iOS Share menu.

    Questions That Could Be Asked at Some Point:

    • Wasn't this a Go repo? Yes, carcinization has come for the gopher. There were several issues I didn't know how to solve in the Go/Qt paradigm, especially with Windows: not being able to make a single-file executable, needing to Run as Administrator, and having to write the WiFi Direct DLL to a temp folder and link to it at runtime because Go doesn't work with MSVC. Plus it was fun to use tokio/async and windows-rs, with which the Windows networking portions are written. The GUI framework is now Tauri which gives a native experience on all platforms with a very small footprint. The Android version is written in Kotlin and the code is in this repository. The iOS and macOS versions are written in Swift, and as of v10 that code is in this repository too, under Apple/ — it was previously kept in a separate, private repo.

    • How are transfers encrypted? Each transfer is wrapped in a Noise protocol NNpsk0 handshake (X25519, ChaCha20-Poly1305, SHA-256): both devices derive a pre-shared key from the transfer password with PBKDF2-HMAC-SHA256 at 600,000 iterations, then run an ephemeral Diffie-Hellman handshake mixed with that key. Everything after the short plaintext preamble — file names, sizes, hashes, and contents — is encrypted, and the preamble itself is bound into the handshake as the Noise prologue, so tampering with it aborts the transfer. Each transfer gets fresh keys (forward secrecy): even an attacker who someday brute-forces the password from recorded traffic — at 600,000 PBKDF2 iterations per guess, years of GPU time against a password that lives for minutes and is never reused — can't decrypt any transfer that already happened. This holds even on shared networks you don't control; in hotspot mode, the devices' WPA2 network adds another layer underneath. (PBKDF2 rather than a memory-hard KDF because iOS/macOS use only Apple's CryptoKit, which offers no Scrypt or Argon2. Peer discovery announcements are authenticated with a key derived from the same PBKDF2-stretched secret, so they don't leak a fast password-cracking oracle either; SHA-256 of the password survives only to derive the hotspot SSID, not to encrypt or authenticate anything.) See docs/shared-network-crypto.md for the full design.

    Complaints at Apple

    • The documentation for scanForNetworks(withSSID:) does not mention that it requires location permissions.

    • There should be a way to programmatically start hotspots, or at least read the current hotspot configuration with the user's permission.

    • CBPeripheralManager advertisements on macOS always use the public Bluetooth address and always declare BR/EDR support, with no API to set the "BR/EDR Not Supported" flag or use a random address. This is what made Linux connect to Macs over classic Bluetooth instead of BLE (see the comments in core/src/linux/central.rs for the full story).

    If you've used Flying Carpet, please send feedback to [email protected]. Thanks for your interest! Please also check out https://github.com/spieglt/cloaker, https://cloaker.mobi, and https://github.com/spieglt/whatfiles.