wireless-tools

Wireless tools for Node.js

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
wireless-tools
170140.19.07 years ago9 years agoMinified + gzip package size for wireless-tools in KB

Readme

Wireless tools for Node.js
npm version release version build status code climate test coverage github issues dependencies dev dependencies downloads

Table of Contents

  • hostapd - configure an access point
- hostapd.enable(options, callback) - host an access point - hostapd.disable(interface, callback) - stop hosting an access point - ifconfig.status(callback) - status of all network interfaces - ifconfig.status(interface, callback) - status of a network interface - ifconfig.down(interface, callback) - take down a network interface - ifconfig.up(options, callback) - bring up a network interface
  • iwconfig - configure wireless network interfaces
- iwconfig.status(callback) - status of all wireless network interfaces - iwconfig.status(interface, callback) - status of a wireless network interface
  • iwlist - query wireless network interfaces
- iwlist.scan(options, callback) - scan for wireless networks
  • udhcpc - configure a dhcp client
- udhcpc.enable(options, callback) - start a dhcp client - udhcpc.disable(interface, callback) - stop a dhcp client
  • udhcpd - configure a dhcp server
- udhcpd.enable(options, callback) - start a dhcp server - udhcpd.disable(interface, callback) - stop a dhcp server
  • wpacli - send commands to wpasupplicant using wpacli
- wpacli.status(interface, callback) - get status of wpa - wpacli.bssid(interface, ap, ssid, callback) - set preferred bssid for ssid - wpacli.reassociate(interface, callback) - tell wpasupplicant to reassociate to an access points - wpacli.set(interface, variable, value, callback) - set variable to value - wpacli.addnetwork(interface, callback) - add network - wpacli.setnetwork(interface, id, variable, value, callback) - set network variables - wpacli.enablenetwork(interface, id, callback) - enable network - wpacli.disablenetwork(interface, id, callback) - disable network - wpacli.removenetwork(interface, id, callback) - remove network - wpacli.selectnetwork(interface, id, callback) - select network - wpacli.scan(interface, callback) - new BSS scan - wpacli.scanresults(interface, callback) - results of latest BSS scan - wpacli.saveconfig(interface, callback) - saves the current configuration - wpasupplicant.enable(options, callback) - connect to a wireless network - wpasupplicant.disable(interface, callback) - disconnect from a wireless network - wpasupplicant.manual(options, callback) - start wpasupplicant in a way it can receive commands from wpacli
  • iw - get and set parameters using iw, the interface for nl80211 interfaces
- iw.scan(options, callback) - scan for wireless networks
hostapd
The hostapd command is used to configure wireless access points.

hostapd.enable(options, callback)

The hostapd enable command is used to host an access point on a specific wireless interface.
var hostapd = require('wireless-tools/hostapd');

var options = {
  channel: 6,
  driver: 'rtl871xdrv',
  hw_mode: 'g',
  interface: 'wlan0',
  ssid: 'RaspberryPi',
  wpa: 2,
  wpa_passphrase: 'raspberry'
};

hostapd.enable(options, function(err) {
  // the access point was created
});

hostapd.disable(interface, callback)

The hostapd disable command is used to stop hosting an access point on a specific wireless interface.
var hostapd = require('wireless-tools/hostapd');

hostapd.disable('wlan0', function(err) {
  // no longer hosting the access point
});
ifconfig
The ifconfig command is used to configure network interfaces.

ifconfig.status(callback)

The ifconfig status command is used to query the status of all configured interfaces.
var ifconfig = require('wireless-tools/ifconfig');

ifconfig.status(function(err, status) {
  console.log(status);
});

// =>
[
  {
    interface: 'eth0',
    link: 'ethernet',
    address: 'b8:27:eb:da:52:ad',
    ipv4_address: '192.168.1.2',
    ipv4_broadcast: '192.168.1.255',
    ipv4_subnet_mask: '255.255.255.0',
    up: true,
    broadcast: true,
    running: true,
    multicast: true
  },
  {
    interface: 'lo',
    link: 'local',
    ipv4_address: '127.0.0.1',
    ipv4_subnet_mask: '255.0.0.0',
    up: true,
    running: true,
    loopback: true
  },
  {
    interface: 'wlan0',
    link: 'ethernet',
    address: '00:0b:81:95:12:21',
    ipv4_address: '192.168.10.1',
    ipv4_broadcast: '192.168.10.255',
    ipv4_subnet_mask: '255.255.255.0',
    up: true,
    broadcast: true,
    multicast: true
  }
]

ifconfig.status(interface, callback)

The ifconfig interface status command is used to query the status of a specific interface.
var ifconfig = require('wireless-tools/ifconfig');

ifconfig.status('eth0', function(err, status) {
  console.log(status);
});

// =>
{
  interface: 'eth0',
  link: 'ethernet',
  address: 'b8:27:eb:da:52:ad',
  ipv4_address: '192.168.1.2',
  ipv4_broadcast: '192.168.1.255',
  ipv4_subnet_mask: '255.255.255.0',
  up: true,
  broadcast: true,
  running: true,
  multicast: true
}

ifconfig.down(interface, callback)

The ifconfig down command is used to take down an interface that is up.
var ifconfig = require('wireless-tools/ifconfig');

ifconfig.down('wlan0', function(err) {
  // the interface is down
});

ifconfig.up(options, callback)

The ifconfig up command is used to bring up an interface with the specified configuration.
var ifconfig = require('wireless-tools/ifconfig');

var options = {
  interface: 'wlan0',
  ipv4_address: '192.168.10.1',
  ipv4_broadcast: '192.168.10.255',
  ipv4_subnet_mask: '255.255.255.0'
};

ifconfig.up(options, function(err) {
  // the interface is up
});
iwconfig
The iwconfig command is used to configure wireless network interfaces.

iwconfig.status(callback)

The iwconfig status command is used to query the status of all configured wireless interfaces.
var iwconfig = require('wireless-tools/iwconfig');

iwconfig.status(function(err, status) {
  console.log(status);
});

// =>
[
  {
    interface: 'wlan0',
    access_point: '00:0b:81:95:12:21',
    frequency: 2.437,
    ieee: '802.11bg',
    mode: 'master',
    noise: 0,
    quality: 77,
    sensitivity: 0,
    signal: 50,
    ssid: 'RaspberryPi'
  },
  {
    interface: 'wlan1',
    frequency: 2.412,
    mode: 'auto',
    noise: 0,
    quality: 0,
    sensitivity: 0,
    signal: 0,
    unassociated: true
  }
]

iwconfig.status(interface, callback)

The iwconfig interface status command is used to query the status of a specific wireless interface.
var iwconfig = require('wireless-tools/iwconfig');

iwconfig.status('wlan0', function(err, status) {
  console.log(status);
});

// =>
{
  interface: 'wlan0',
  access_point: '00:0b:81:95:12:21',
  frequency: 2.437,
  ieee: '802.11bg',
  mode: 'master',
  noise: 0,
  quality: 77,
  sensitivity: 0,
  signal: 50,
  ssid: 'RaspberryPi'
}
iwlist
The iwlist command is used to get detailed information from a wireless interface.

iwlist.scan(interface, callback)

The iwlist scan command is used to scan for wireless networks visible to a wireless interface. For convenience, the networks are sorted by signal strength.
var iwlist = require('wireless-tools/iwlist');

iwlist.scan('wlan0', function(err, networks) {
  console.log(networks);
});

iwlist.scan({ iface : 'wlan0', show_hidden : true }, function(err, networks) {
  console.log(networks);
});

// =>
[
  {
    address: '00:0b:81:ab:14:22',
    ssid: 'BlueberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wpa',
    quality: 48,
    signal: 87
  },
  {
    address: '00:0b:81:95:12:21',
    ssid: 'RaspberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wpa2',
    quality: 58,
    signal: 83
  },
  {
    address: '00:0b:81:cd:f2:04',
    ssid: 'BlackberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wep',
    quality: 48,
    signal: 80
  },
  {
    address: '00:0b:81:fd:42:14',
    ssid: 'CranberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'open',
    quality: 32,
    signal: 71
  }
]

[
  {
    address: '00:0b:81:ab:14:22',
    ssid: 'BlueberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wpa',
    quality: 48,
    signal: 87
  },
  {
    address: '00:0b:81:95:12:21',
    ssid: 'RaspberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wpa2',
    quality: 58,
    signal: 83
  },
  {
    address: '00:0b:81:cd:f2:04',
    ssid: 'BlackberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'wep',
    quality: 48,
    signal: 80
  },
  {
    address: '00:0b:81:fd:42:14',
    ssid: 'CranberryPi',
    mode: 'master',
    frequency: 2.437,
    channel: 6,
    security: 'open',
    quality: 32,
    signal: 71
  },
  {
    address: '2c:c5:d3:02:ae:4c',
    channel: 100,
    frequency: 5.5,
    mode: 'master',
    quality: 66,
    signal: -44,
    security: 'wpa2'
  }
]
udhcpc
The udhcpc command is used to configure a dhcp client for a network interface.

udhcpc.enable(options, callback)

The udhcpc enable command is used to start a dhcp client on a specific network interface.
var udhcpc = require('wireless-tools/udhcpc');

var options = {
  interface: 'wlan0'
};

udhcpc.enable(options, function(err) {
  // the dhcp client was started
});

udhcpc.disable(interface, callback)

The udhcpc disable command is used to stop a dhcp client on a specific network interface.
var udhcpc = require('wireless-tools/udhcpc');

udhcpc.disable('wlan0', function(err) {
  // the dhcp client was stopped
});
udhcpd
The udhcpd command is used to configure a dhcp server for a network interface.

udhcpd.enable(options, callback)

The udhcpd enable command is used to start a dhcp server on a specific network interface.
var udhcpd = require('wireless-tools/udhcpd');

var options = {
  interface: 'wlan0',
  start: '192.168.10.100',
  end: '192.168.10.200',
  option: {
    router: '192.168.10.1',
    subnet: '255.255.255.0',
    dns: [ '4.4.4.4', '8.8.8.8' ]
  }
};

udhcpd.enable(options, function(err) {
  // the dhcp server was started
});

udhcpd.disable(interface, callback)

The udhcpd disable command is used to stop a dhcp server on a specific network interface.
var udhcpd = require('wireless-tools/udhcpd');

udhcpd.disable('wlan0', function(err) {
  // the dhcp server was stopped
});
wpacli
The wpacli command is used to setup what wpasupplicant must do to connect to a wireless network connection for a network interface.
Most of wpa
cli commands return either 'OK' or 'FAIL' (and the exit status is always 0). Because of this, all 'FAIL' responses will return and callback with an error.
Responses containing an 'OK' result only means than wpasupplicant had received the command. You must poll wpasupplicant (or other commands like iwconfig) to be sure that the command was actually applied by wpasupplicant.

wpacli.status(interface, callback)

The wpacli status command is used to get the current status of wpasupplicant on a specific network interface.
var wpa_cli = require('wireless-tools/wpa_cli');

wpa_cli.status('wlan0', function(err, status) {
    console.dir(status);
});

// =>
{
    bssid: '2c:f5:d3:02:ea:d9',
    frequency: 2412,
    mode: 'station',
    key_mgmt: 'wpa2-psk',
    ssid: 'Fake-Wifi',
    pairwise_cipher: 'CCMP',
    group_cipher: 'CCMP',
    p2p_device_address: 'e4:28:9c:a8:53:72',
    wpa_state: 'COMPLETED',
    ip: '10.34.141.168',
    mac: 'e4:28:9c:a8:53:72',
    uuid: 'e1cda789-8c88-53e8-ffff-31c304580c1e',
    id: 0
}

wpacli.bssid(interface, ap, ssid, callback)

The wpacli bssid command is used to set the preferred access points for an specific ssid on a specific network interface.
var wpa_cli = require('wireless-tools/wpa_cli');

wpa_cli.bssid('wlan0', '2c:f5:d3:02:ea:dd', 'Fake-Wifi', function(err, data){
    // this is correct usage
    console.dir(data);
});

wpacli.reassociate(interface, callback)

The
wpa
cli reassociate
command is used to instruct wpa
supplicant to reassociate to access points for an SSID on a specific network interface.
var wpa_cli = require('wireless-tools/wpa_cli');

wpa_cli.bssid('wlan0', 'Fake-Wifi', '2c:f5:d3:02:ea:dd', function(err, data){
      // our usage is wrong so an error is triggered
      if (err) {
        console.dir(err);
        // attempt to reassociate
        wpa_cli.reassociate('wlan0', function(err, data) {
          console.dir(data);
        });
      }
});

wpacli.set(interface, variable, value, callback)

The
wpa
cli set
command is used to set wpa
supplicant parameters to a value on a specific network interface.

wpacli.addnetwork(interface, callback)

The
wpa
cli addnetwork command is used to create a new network entry on a specific network interface. It will return on success the id of the new network

wpacli.setnetwork(interface, id, variable, value, callback)

The
wpa
cli setnetwork command is used to set variables for a network on a specific network interface.

wpacli.enablenetwork(interface, id, callback)

The
wpa
cli enablenetwork command is used to enable a network on a specific network interface.

wpacli.disablenetwork(interface, id, callback)

The
wpa
cli disablenetwork command is used to disable a network on a specific network interface.

wpacli.removenetwork(interface, id, callback)

The
wpa
cli removenetwork command is used to remove a network on a specific network interface.

wpacli.selectnetwork(interface, id, callback)

The
wpa
cli selectnetwork command is used to select a specific network on a specific network interface and disable all others.
var wpa_cli = require('wireless-tools/wpa_cli');

wpa_cli.select_network('wlan0', 0, function(err, data){
    if (err) {
        // most likely the set values for the specified id are wrong
        console.dir(err);
    } else {
        // successfully connected to the new network
        console.dir(data);
    }
});

wpacli.scan(interface, callback)

The
wpa
cli scan
is used to request a new BSS scan on a specific network interface.

wpacli.scanresults(interface, callback)

The wpacli scanresults is used to return the results of the latest BSS scan that was run on a specific network interface.
var wpa_cli = require('wireless-tools/wpa_cli');
 
wpa_cli.scan('wlan0', function(err, data){
    wpa_cli.scan_results('wlan0', function(err, data) {
       // returns the results of the BSS scan once it completes
       console.dir(data);
    }
});

=>
[
 {
    bssid: '2c:f5:d3:02:ea:d9',
    frequency: 2472,
    signalLevel: -31,
    flags: '[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]',
    ssid: 'FakeWifi'
 },
 {
    bssid: '2c:f5:d3:02:ea:d9',
    frequency: 2472,
    signalLevel: -31,
    flags: '[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]',
    ssid: 'FakeWifi2'
 }
]

wpacli.saveconfig(interface, callback)

The wpacli saveconfig command is used to save the current wpacli configuration for the specific network interface.
var wpa_cli = require('wireless-tools/wpa_cli');
 
wpa_cli.save_config('wlan0', function(err, data){
    // current wpa_cli configuration is saved
});
wpasupplicant
The wpasupplicant command is used to configure a wireless network connection for a network interface.

wpasupplicant.enable(options, callback)

The
wpa
supplicant enable
command is used to join a wireless network on a specific network interface.
var wpa_supplicant = require('wireless-tools/wpa_supplicant');

var options = {
  interface: 'wlan0',
  ssid: 'RaspberryPi',
  passphrase: 'raspberry',
  driver: 'wext'
};

wpa_supplicant.enable(options, function(err) {
  // connected to the wireless network
});

wpasupplicant.disable(interface, callback)

The wpasupplicant disable command is used to disconnect from a wireless network on a specific network interface.
var wpa_supplicant = require('wireless-tools/wpa_supplicant');

wpa_supplicant.disable('wlan0', function(err) {
  // disconnected from wireless network
});

wpasupplicant.manual(options, callback)

The
wpa
supplicant manual
command is used to launch wpa
supplicant on a specific network interface.
var wpa_supplicant = require('wireless-tools/wpa_supplicant');

var options = {
  interface: 'wlan0',
  drivers: [ 'nl80211', 'wext' ]
};

wpa_supplicant.manual(options, function(err) {
  // wpa_supplicant launched on wlan0 interface (can be setup using wpa_cli)
});
iw
The iw command is used to get and set detailed information from an nl80211 wireless interface.

iw.scan(interface, callback)

The iw scan command is used to scan for wireless networks visible to a wireless interface. For convenience, the networks are sorted by signal strength.
var iw = require('wireless-tools/iw');

iw.scan('wlan0', function(err, networks) {
  console.log(networks);
});

iw.scan({ iface : 'wlan0', show_hidden : true }, function(err, networks) {
  console.log(networks);
});

// =>
[
  {
    address: '00:0b:81:ab:14:22',
    frequency: 2422,
    signal: -80,
    lastSeenMs: 0,
    ssid: 'BlueberryPi',
    channel: 3,
    security: 'wpa'
  },
  {
    address: '00:0b:81:95:12:21',
    frequency: 5825,
    signal: -83,
    lastSeenMs: 2031,
    ssid: 'RaspberryPi',
    channel: 165,
    security: 'wpa2'
  },
  {
    address: '00:0b:81:cd:f2:04',
    frequency: 2437,
    signal: -88,
    lastSeenMs: 0,
    ssid: 'BlackberryPi',
    channel: 6,
    security: 'wep'
  },
  {
    address: '00:0b:81:fd:42:14',
    frequency: 2412,
    signal: -92,
    lastSeenMs: 0,
    ssid: 'CranberryPi',
    channel: 1,
    security: 'open'
  }
]

[
  {
    address: '00:0b:81:ab:14:22',
    frequency: 2422,
    signal: -80,
    lastSeenMs: 0,
    ssid: 'BlueberryPi',
    channel: 3,
    security: 'wpa'
  },
  {
    address: '00:0b:81:95:12:21',
    frequency: 5825,
    signal: -83,
    lastSeenMs: 2031,
    ssid: 'RaspberryPi',
    channel: 165,
    security: 'wpa2'
  },
  {
    address: '00:0b:81:cd:f2:04',
    frequency: 2437,
    signal: -88,
    lastSeenMs: 0,
    ssid: 'BlackberryPi',
    channel: 6,
    security: 'wep'
  },
  {
    address: '00:0b:81:fd:42:14',
    frequency: 2412,
    signal: -92,
    lastSeenMs: 0,
    ssid: 'CranberryPi',
    channel: 1,
    security: 'open'
  },
  {
    address: '00:0b:81:fd:42:01',
    frequency: 2412,
    signal: -94,
    lastSeenMs: 1069,
    channel: 1,
    security: 'open'
  }
]