Socket
Socket
Sign inDemoInstall

awdl

Package Overview
Dependencies
10
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    awdl

Send data via Apple Wireless Direct Link (AWDL) using JavaScript.


Version published
Weekly downloads
4
Maintainers
1
Install size
226 kB
Created
Weekly downloads
 

Readme

Source

awdl

Send data via Apple Wireless Direct Link (AWDL) using JavaScript.

npm version ISC-licensed minimum Node.js version chat with me on Gitter support me on Patreon

From the Open Wireless Link, an awesome project that seeks to reverse-engineer AWDL:

According to US patent 20180083858A1, AWDL was designed as a successor to the unsuccessful Wi-Fi IBSS a.k.a. ad hoc mode:

The limitations of IBSS mode (and its Wi-Fi infrastructure predecessors) led the Wi-Fi Alliance to define Wi-Fi Direct. Further, due to concerns regarding Wi-Fi Direct, Apple Wireless Direct Link (AWDL) was developed by Apple and eventually adopted by the Wi-Fi Alliance as the basis for Neighbor Awareness Networking (NAN).

Which services use AWDL?

We compiled a non-exhaustive list with applications which use [...] AWDL [...].

  • AirDrop
  • AirPlay
  • Auto Unlock
  • Universal Clipboard

How does AWDL work?

In technical terms, we found that AWDL works essentially works as follow:

In short, each AWDL node announces a sequence of Availability Windows (AWs) indicating its readiness to communicate with other AWDL nodes. An elected master node synchronizes these sequences. Outside the AWs, nodes can tune their Wi-Fi radio to a different channel to communicate with an access point, or could turn it off to save energy.

Installation

npm install awdl

Usage

This is a very low-level example, a more practical one will be added soon!

const {isSupported, listenOnAWDL} = require('awdl')
const {decode} = require('dns-packet')

if (isSupported()) {
	// mDNS + DNS-SD over AWDL a.k.a. "iPhone magically find Mac with AirDrop"
	const awdl = listenOnAWDL(5353, {udp: true, recvAnyif: true})

	awdl.on('error', (err) => {
		console.error(err)
		process.exit(1)
	})

	awdl.on('data', (msg) => {
		const {type, questions, answers} = decode(msg)
		console.log(type, questions, answers)
	})
}

API

listenOnAWDL(port, opt = {})

Returns a duplex stream.

opt may have the following fields:

Contributing

If you have a question or need support using awdl, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, use the issues page.

Keywords

FAQs

Last updated on 25 Feb 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc