https://codeberg.org/blast/blastqr

Hello! I’ve been working on blastQR for a couple of years now and I thought this community might find it useful. Feel free to try it and ask me anything!

blastQR is a fully open-source file transfer app and protocol that works completely offline. You can even use it in airplane mode. Data is transferred through sequences of QR codes displayed on a sender device and scanned by a receiver device’s camera. It uses RaptorQ codes so the receiver can recover the file from any sufficiently large subset of frames.

Note that although I have made use of AI as a coding assistant I do not consider this to be a vibe-coded app and I do plan to continue improving it and supporting it in the future.

See video of blastQR in action: https://github.com/user-attachments/assets/038a2567-70c8-47c8-b165-dea858d1aef3

Here are some of the key features:

  • Works fully offline: No internet, Wi-Fi, Bluetooth or servers. Your data stays offline.
  • One-to-many distribution: Share the same file with multiple devices simultaneously using a single blastQR broadcast.
  • Cross-platform: Android, iOS, macOS, Linux and Windows, plus a command-line tool that can send from a terminal, even over SSH.
  • Password encryption: You can optionally encrypt files with an auto-generated password or a custom one.
  • Media compression: The app supports lossy image compression and video transcoding for quicker transfers.
  • Multiple codes on screen: Shows multiple QR codes at once for higher speed. With 8 codes at 60 fps, transfers peak at around 1.4 MB/s.
  • Send multiple files in one go: They’re zipped into one transfer and unpacked into separate files on the receiver.
  • Sound feedback: The receiver plays a short tone when it has the whole file, and the sender stops automatically when it hears it.
  • Start scanning at any point: No need to catch every code, just keep the camera on the screen until it’s done. Blurry or missed codes don’t matter.
  • Regular QR scanner: You can also scan normal QR codes and save them.
  • Open protocol that other apps can implement
  • Built-in file manager

I’m trying to build a small community around the project so it can be improved and maintained and so it can reach more people in the future.

Downloads for all platforms can be found here: https://codeberg.org/blast/blastqr/releases/latest

  • freijon@lemmy.zip
    link
    fedilink
    arrow-up
    1
    ·
    3 hours ago

    This is a great idea! I’ll be using this to transfer files between my work computer and my phone, which today is very cumbersome due to the enterprise firewall. What I do today is upload a file to an email draft and open the draft on the phone. Maybe instead of pure files there could be a clipboard mode as well? I’ll create a Gentoo package for the CLI.

  • alessandro@lemmy.ca
    link
    fedilink
    arrow-up
    10
    ·
    14 hours ago

    I wonder if this can be arranged with two bidirectional telescopes (or maybe two telescope and 2 projectors on walls:how many qr-codes you can stuff on a square meter to be seen in long distance?) for some sort of wifi; not for a good ping but some sort of cheap/quick wireless connectivity

    • milk@discuss.tchncs.de
      link
      fedilink
      arrow-up
      3
      ·
      5 hours ago

      Visible light communication over free air is something that has been studied for decades but usually it’s 1D (i.e. tranmit a single signal instead of a 2D QR code) because cameras are slow. You can theoretically get absurdly high data rates, potentially TbPS. I actually did that for my engineering capstone project🙂

    • blast@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      4
      ·
      13 hours ago

      that sounds like a really fun experiment! the protocol would need some tweaking to be able to continuously stream data. other than that it would probably work fine if the image is clear enough!

  • SethW@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    13 hours ago

    This seems like re-inventing the IR Blasters we had on our laptops and phones in 2005 (think some game handhelds also)

  • Silic0n_Alph4@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    13 hours ago

    That’s a very clever idea - good job! I am aware of Luby Transform and Raptor codes but not RaptorQ codes - that’ll make for some interesting reading later.

    I particularly like the idea of visual filesharing with no network transmission that could be intercepted - although a determined nation-state actor would just compromise hardware & OSes instead. For ultra-private comms there’s also Van Eck phreaking to consider, but we’re going a bit too deep down the rabbit hole here!

    Very cool project. If you’re going to patent it or publish a paper on the subject, don’t wait too long.

    • Zerush@lemmy.ml
      link
      fedilink
      arrow-up
      3
      ·
      10 hours ago

      Since century done with Silbo in the Spanish La Gomera Island as ancient communication method out of the view up to 5 km in mountainous terrain. Nowadays still learned there in school, used in cities by young people to find and communicate with other in a crowd. In the UNESCO List of the Intangible Cultural Heritage of Humanity.

      https://www.youtube.com/watch?v=Irahmx1V9fo

    • blast@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      8 hours ago

      yes! someone mentioned a project that does that https://lemmy.dbzer0.com/comment/29299746

      and in the case of blastQR you can optionally use sound to tell the sender that a transfer has been completed. It’s something I’m looking to extend in the future so that the receiver can do more things like tell the sender what are the best settings for the transfer.

  • Julrob@feddit.org
    link
    fedilink
    arrow-up
    4
    ·
    17 hours ago

    Whats the advantage over bluetooth, local ftp serverr/hotspot and other wifi sharing methods?

  • Fmstrat@lemmy.world
    link
    fedilink
    arrow-up
    32
    ·
    1 day ago

    So a fun use case you may not have considered is back country GPX sharing. A plugin for Osmand (a very popular FOSS mapping app for back country use) would be neat. Sharing when airplane mode between devices is always needed.

    • blast@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      21
      arrow-down
      2
      ·
      1 day ago

      That is a fenomenal idea! I hadn’t thought about it and these are the exact kind of situations it could solve well. I’ll definitely add it to the roadmap. Thank you

  • phtheven@lemmy.world
    link
    fedilink
    arrow-up
    13
    ·
    1 day ago

    Does this mean an IP cam pointing to a monitor can compromise an air gap? I guess it always could, just at 1.4mbps now

    • captcha@lemmy.frozeninferno.xyz
      link
      fedilink
      English
      arrow-up
      5
      ·
      16 hours ago

      I believe IP cameras usually can’t reach fidelity and frame rate needed for 1.4 mb/s

      And yes, programs like this existed, so it always could

  • taco_shale032@lemmy.ml
    link
    fedilink
    arrow-up
    50
    arrow-down
    2
    ·
    2 days ago

    Note that although I have made use of AI as a coding assistant this is not a vibe-coded app

    Can you elaborate more on how AI was used?

    • blast@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      109
      arrow-down
      1
      ·
      2 days ago

      For context, I’m a software developer with around 15 years of experience. Most of it writing Android and iOS apps in Java, Kotlin, Swift and lately Dart (Flutter) + Rust which is what this project is written in.

      Although I did start the project from scratch I have lately been using Claude Code as a coding assistant. I write code myself but I also let it write or refactor parts of it. The CLI tool is the part that Claude has mostly written from scratch because it’s not something I had experience in writing before. That being said I also review all the code that Claude writes.

      Thanks for asking! there’s also some disclosure about this in the readme file

      • taco_shale032@lemmy.ml
        link
        fedilink
        arrow-up
        30
        arrow-down
        3
        ·
        2 days ago

        The CLI tool is the part that Claude has mostly written from scratch because it’s not something I had experience in writing before.

        This seems like the perfect opportunity to learn something new in my opinion, CLIs aren’t difficult to make. And you may want to consider moving to GitHub because of Codeberg’s ToS.

        • blast@lemmy.dbzer0.comOP
          link
          fedilink
          arrow-up
          35
          ·
          1 day ago

          I totally agree and I’m very open to welcome anyone who wants to rewrite that part or I might go for it myself in the future. The reason I went for it is that I really wanted to be able to use the CLI tool right away and the AI produced a good result so I left it in the project for now.

          About Codeberg I did read their blog post and I didn’t think my project falls into any of the cases they mention:

          spoiler

          Projects that are created by LLM “agents” in autonomous ways Projects written and maintained with heavy use of LLMs Projects where the amount of resources (e.g. storage, CI/CD) is significantly larger than what the involved amount of people could have created by hand Projects heavily tied to the LLM ecosystem, e.g. LLM-written tools to ease LLM usage Users sending LLM contributions in violation of project’s custom policies

          If they ever consider it infringing their ToS I could move it to GitHub where there’s already a mirror of the repo.

  • SabinStargem@lemmy.today
    link
    fedilink
    English
    arrow-up
    1
    ·
    18 hours ago

    I am thinking that maybe adding color would allow you to condense a lot more information into a QR code. It would be good if we can have entire programs and media reconstructed just from scanning QRs.

    • blast@lemmy.dbzer0.comOP
      link
      fedilink
      arrow-up
      19
      ·
      edit-2
      17 hours ago

      For those asking about RGB, there are a few reasons why QR codes work better for now:

      • Black and white still reads fine in bad lighting or on cheap cameras. Phones are very optimized for scanning QRs so it’s more reliable and less error prone.
      • Video compression, colors shifting with white balance, screen type, all of those make it harder to tell colors apart so you need more aggressive error correction. The real gain ends up smaller than it sounds.

      You can already transfer entire (small) programs and media with blastQR btw! Feel free to try and report back. The limit is around 4 GB files but that would take ages.

      That said, there is a project called libcimbar that is improving and does work with colors: https://github.com/sz3/libcimbar