Toolkit Programs

The Qualcomm Atheros Open Powerline Toolkit is a collection of small, command line programs. Each program deals with some aspect of powerline device management. Programs can be combined, in various ways, using shell scripts, to perform sophisticated and complex tasks. With these program, one can identify chipset and firmware version, reset devices, flash devices, identify other powerline network devices, validate *.pib and *.nvm files, sniff HomePlug® AV Ethernet frames, send generic Ethernet frames and so on.

Program source code is designed to demonstrate device hardware and firmware features and to illustrate techniques for software developers and hardware engineers. The source code may be modified and distributed without obligation to Qualcomm Atheros; however Qualcomm Atheros would appreciate feedback concerning improvements to program useability, reliability or efficiency. Keep in mind that these tools, unlike some other tools, are intended to be simple and compact.

Most programs in this toolkit start their life on Linux and are eventually ported to other environments. Consequently, not all programs are available in the Windows version of the toolkit but most of them are.

Program descriptions appear below in alphabetical order. Alternately, you may browse the latest program descriptions and source code here.

INT6400 Device Management

Programs in this group are older versions that communicate with INT6x00 chipsets. Many still work on AR7x00 chipsets. The main difference is due to the higher PHY data rates on AR7x00 chipsets. The higher data rates must be expressed using 16-bits instead of 8-bits. Consequently, some MME formats have changed.

int64host

A command line utility that waits for and services VS_HST_ACTION messages from a flash-less device INT6300™ or INT6400™ device. It is similar to program int6khost but does not use an SDRAM configuration files. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int64host man page for more information.

int6k

A command line utility to inspect and control INT6000™ and INT6300™ devices connected to the local host. It performs several of the device maintenance functions available in the Atheros Windows Device Manager but is small enough to run on an embedded system. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder .int6k. See the int6k man page for more information.

int6k2

A command line utility to inspect and control INT6000™ and int6300™ devices connected to the local host. It is similar to int6k but calls the Atheros Embedded API, described in the Atheros HomePlug® AV API User's Guide, to perform device management tasks. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6k2 man page for more information.

int6kboot

A command line utility to start and optionally flash INT6300™ and INT6400™' devices that have no NVRAM or have a blank or corrupted NVRAM. It communicates with the Atheros Bootloader to configure SDRAM, download runtime firmware and PIB and start firmware execution. Users can optionally request that the same PIB and firmware then be used to flash NVRAM. It is similar to program int6kf but does not accept an SDRAM configuration file. Instead, it uses on the memctl applet. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kboot man page for more information.

int6kf

A command line utility to start and optionally flash INT6000™ and INT6300™ devices having no NVRAM or having a blank or corrupted NVRAM. It communicates with the Atheros Bootloader to configure SDRAM, download runtime firmware and PIB and start firmwrae execution. It can also be used to force flash blank or corrupted NVRAM. It is similar to program int6kboot but requires an SDRAM parameter file. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kf man page for more information.

int6khost

A command line utility that waits for and services VS_HST_ACTION messages from a flash-less INT6000™ or INT6300™ device. It is similar to program in64host but needs an SDRAM configuration file. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6khost man page for more information.

int6kid

A command line utility that prints the DAK or NMK strings read from one or more devices. It can be used in shell scripts to dynamically obtain device keys and insert them on program command lines as arguments. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kid man page for more information.

int6klist

A command line utility that lists local devices, or remote devices associated with a specific device, on stdout in undecorated format. It can be used in shell scripts to dynamically determine, and then traverse, network topology. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6klist man page for more information.

int6kprobe

A command line utility that probes for neighboring networks. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kprobe man page for more information.

int6krule

A command line utility to format and send classification rules to a device. Classification rules are specified using symbolic names for actions, options, conditions and frame fields. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6krule man page for more information.

int6ktest

A command line utility that downloads and executes program images stored in an Atheros .nvm file. This program can be used to download and execute Atheros hardware diagnostic programs like those in the ./applets folder. It is not intended to download and start runtime firmware, although it may be used for that. The program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6ktest man page for more information.

int6kuart

A command line utility used to manage a local powerline device over a host serial line interface. Program command line options are translated to AT-style serial commands and sent to the device. THe primary benefits of using this program, in place of a terminal emulator, is the ability to download parameter blocks and upload paameter blocks and firmware images. The program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./serial. See the int6kuart man page for more information.

int6kwait

A command line utility that polls the local powerline device and waits for the bootloader or runtime firmware to either stop executing or start executing or wait for a device to associate with another device. It can be used to synchronize scripts with device or network events such as connection make or break, power on or off and firmware stop or start. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kwait man page for more information.

INT6400 Device Monitoring

int6klog

A command line utility that exports the runtime watchdog report in binary or XML format. Output is suitable for input to the Atheros Windows Device Manager. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6klog man page for more information.

int6krate

A command line utility that polls a device and prints the average transmit and receive PHY rates between it and each of it's network neighbors. Program output is suitable for loading into a spreadsheet or other program that can process column-oriented information. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6krate man page for more information.

This program is suitable for use with INT6x00 chipsets but not AR7x00 chipsets due to higher PHY rates. Use program amprate for AR7x00 chipsets and plcrate for mixed chipset environments.

int6kstat

A command line utility that polls a poserline device and prints various network and link statistics in a format suitable for processing by another program. It is a work in progress because we are investigating different ways to present the information. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the int6kstat man page for more information.

AR7400 Device Management

The programs in this group are essentially identical to those in the INT6x00 group but they support higher PHY data rates offered by the AR7x00 chipsets. Specifically, they handle the new VS_NW_INFO and VS_LNK_STATS message formats.

ampboot

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampboot man page for more information.

amphost

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amphost man page for more information.

ampinit

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampinit man page for more information.

amplist

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amplist man page for more information.

amptest

A command line utility that downloads and executes program images stored in an Atheros .nvm file. It can be used to download and execute special Atheros hardware diagnostic programs. It is not intended to download and start runtime firmware. The program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amptest man page for more information.

amptool

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amptool man page for more information.

ampwait

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampwait man page for more information.

AR7400 Device Monitoring

The programs in this group are essentially identical to those in the INT6x00 group but they support higher PHY data rates offered by the AR7x00 chipsets. Specifically, they handle the new VS_NW_INFO and VS_LNK_STATS message formats.

amprate

A command line utility that polls a device and prints the average transmit and receive PHY rates between it and each of it's network neighbors. Program output is suitable for loading into a spreadsheet or other program that can process column-oriented information. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amprate man page for more information.

This program is suitable for use with AR7x00 chipsets and later that have higher PHY rates and newer firmware. Use program int6krate for AR6x00 running earlier runtime firmware that may not recognize newer message formats. Use program plcrate for mixed chipset environments

ampsnif

Enables or disables the powerline sniffer mode on the local powerline device using the VS_SNIFFER message. Use program ampsnot to display and/or record sniffer output. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampsnif man page for more information.

ampsnot

Listens for sniffer output from the local powerline device and display results on the console. Use program ampsnif to enable or disable sniffer output. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampsnot man page for more information.

ampstat

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the ampstat man page for more information.

amptone

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the amptone man page for more information.

mdustats

A command line utility to collect and display various MDU traffic statistics. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./plc. See the mdustats man page for more information.

AR7420 Device Configuration

Programs in this group understand changes to .nvm file formats and to the device boot and memory flash messages and sequences.

plchost

This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the plchost man page for more information.

plctest

A command line utility that downloads and executes small program images stored in older and newer .nvm files. It can be used to download and execute small powerline diagnostic programs. It is not intended to download and start runtime firmware. The program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./plc. See the plctest man page for more information.

This program automatically detects the type of .nvm file format and adapts.

Parameter File Management

Programs in this group are used to inspect and change .pib files in various ways. The do not communicate directly with the powerline device. Use program int6k, amptool or plctool to read the PIB from a powerline device or write a PIB to the powerline device.

chkpib

A command line utility to validate .pib files based on their internal checksum, file size and other characteristics. It can also be used to produce a text catalog of .pib files. This program is slower than program chkpib2 but requires less memory to execute. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the chkpib man page for more information.

chkpib2

A command line utility to validate .pib files based on their internal checksum, file size and other characteristics. It can also be used to produce a text catalog of .pib files. This program is faster than program chkpib but requires more memory to execute. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the chkpib2 man page for more information.

getpib

A free-form means of extracting paremeters from a PIB file when the offset, length and format of the parameter is known. It is a companion to program setpib. The user specifies the filename, a starting offset and a sequence of type/data pairs. Values are echoed in order on the console in the specified format. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the getpib man page for more information.

modpib

A command line utility to change the MAC, DAK and/or NMK of an existing PIB file and recompute the checksum. It can also be used to change the manufacturer string, network name and username strings. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the modpib man page for more information.

mrgpib

A command line utility that transfers parameters from one PIB file to another. The two files needs not have the same PIB version. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the mrgpib man page for more information.

pib2xml

An offset-driven XML dump utility for the PIB. It requires an offset description file to be useful. The user specifies an offset description file and a PIB file. The program output an XML description of PIB fields. An example file, piboffset.txt, is included as a basic example. The example offset description file is intentionally incomplete. Complete files are reserved for use by Atheros Field Application Engineers. This program is an alternative to program pibdump. The main source code is located in folder ./tools. See the pib2xml man page for more information.

pibcomp

An offset-driven binary file compare utility for the PIB. It requires an offset description file to be useful. The user specifies an offset description file and two binary files. The files are compared, field by field, and differences are printed on stdout, field by field. An example file, piboffset.txt, is included as a basic example. The example offset description file is intentionally incomplete. Complete files are reserved for use by Atheros Field Application Engineers. This program is an alternative to program pib2xml and a companion to program pibdump. The main source code is located in folder ./tools. See the pibcomp man page for more information.

pibdump

An offset-driven dump utility for the PIB. It requires an offset description file to be useful. An example file, piboffset.txt, is included as a basic example. The example offset description file is intentionally incomplete. Complete files are reserved for use by Atheros Field Application Engineers. This program is a companion to program pibcomp. The main source code is located in folder ./tools. See the pibdump man page for more information.

pibruin

A command line utility that inserts classifier rules, read from a file, into a PIB file. It is an alternative to program int6krule and companion to program pibrump. The main source code is located in folder ./pib. See the pibruin man page for more information.

This program supports INT6300, INT6400 and AR7400 PIBs only and is deprecated.

pibrump

A command line utility that reads classifier rules from a PIB file and prints them on stdout in a format suitable for input to program pibruin. The main source code is located in folder ./pib. See the pibrump man page for more information.

psin

A command line utility to insert an amplitude map into an existing PIB file. The map is read from stdin in text format allowing the output of program psout to be piped directly into this program. The main source code is located in folder ./pib. See the psin man page for more information.

psout

A command line utility to that exports an amplitude map stored in an existing PIB file. The map is written directly to stdin in text format allowing the output of this program to be piped into the input of program psin. The main source code is located in folder ./pib. See the psout man page for more information.

pxe

A generic 'Remote PIB Management' tool. One or more XML files define decimal, hexadecimal and string edits to be applied to a PIB file. The PIB is read, edits are applied, a new checksum is computed and the PIB is saved. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the pxe man page for more information.

setpib

A simple means of setting PIB parameters when the parameter offset, length and format are known. It is an alternative to program pxe and a companion to program getpib. The user specifies the filename, a starting offset and a sequence of type/data pairs. Edits are applied in order and a new checksum is computed. A full or partial dump of the PIB displays the result. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./pib. See the setpib man page for more information.

Firmware File Management

chknvm

A command line utility to validate .nvm files based on their internal checksum, file size and other characteristics. This program is slower than program chknvm2 but requires less memory to execute. Optionally, it can be used to display the image headers inside the file. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./nvm. See the chknvm man page for more information.

chknvm2

A command line utility to validate .nvm files based on their internal checksum, file size and other characteristics. Optionally, it can be used to display the image headers inside the file. This program is faster than program chknvm but requires more memory to execute. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./nvm. See the chknvm2 man page for more information.

config2cfg

A command line utility to convert an SDRAM configruation file used by the Atheros Windows Device Manager to the configuration file format used by the Open Powerline Toolkit applications. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./sdram. See the config2cfg man page for more information.

nvmmerge

A command line utility to combine multiple Atheros image files into one. It is reserved for use by Atheros Field Application Engineers. Use of this probram could void some contractual obligations made by Atheros. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./nvm. See the nvmmerge man page for more information.

nvmsplit

A command line utility to extract all constituent images from an Atheros image file. It is reserved for use by Atheros Field Application Engineers. Use of this probram could void some contractual obligations made by Atheros. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./nvm. See the nvmsplit man page for more information.

Ethernet Traffic

edru

A command line program that reads one or more Ethernet II (IEEE 802.2) frames and write frame data to stdout as a continuous stream. This program can be used to capture serial data sent from a remote UART-enabled powerline device. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./ether. See the edru man page for more information.

edsu

A command line program sends one or more files over the network using Ethernet II (IEEE 802.2) Frames. This program can be used to test remote UART-enabled powerline devices. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./ether. See the edsu man page for more information.

efsu

A freeform Ethernet frame send utility used to define and send Ethernet packets. Packets are defined in text files containing hexadecimal byte codes plus optional comments and whitespace. Input files are stripped of comments and whitespace then transmitted as Ethernet frames. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./ether. See the efsu man page for more information.

hpav

A basic HomePlug® AV packet sniffer that displays only HomePlug® AV protocol frames on the console as they are sent or arrive on a given interface. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./mme. See the hpav man page for more information.

pcapdevs

A utility to enumerate LibPcap or WinPcap devices available on the host. It is compiled but only works if one of these two packages is installed on the host. At present, it is only needed with the Windows version of the Toolkit which is compiled against the WinPcap library. The main source code is located in folder ./ether. See the pcapdevs man page for more information.

Passwords and Keys

hpavkey

A HomePlug® AV key generator. Pass phrase arguments are hashed to form the corresponding Device Access Key (DAK), Network Membership Key (NMK) or Network Identifier (NID). This program is installed in folder /usr/local/bin with 4555 permissions. The main source code is located in folder ./crypt. See the hpavkey man page for more information.

hpavkeys

A HomePlug® AV key generator. Pass phrases are read from a file and hashed to form the corresponding Device Access Key (DAK), Network Membership Key (NMK) or Network Identifier (NID). This program is installed in folder /usr/local/bin with 4555 permissions. The main source code is located in folder ./crypt. See the hpavkeys man page for more information.

mac2pw

A device password generator that prints a range of MAC address and passwords on stdout. It is an alternative to the Atheros Production Test System (PTS) DBBuilder Utility and toolkit program mac2pwd. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./crypt. See the mac2pw man page for more information.

mac2pwd

A device password generator that reads files containing MAC addresses and prints address/password pairs. It is an alternative to the Atheros Production Test System (PTS) DBBuilder Utility and toolkit program mac2pw. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./crypt. See the mac2pwd man page for more information.

rkey

A command line utility to dynamically generate distinct HomePlug AV compliant keys from a user created keyfile. It can be used in shell scripts to dynamically insert random and distinct keys on program command lines as arguments. For example, a Linux bash script can reference "$(rkey -i eth0 -D secret.key)" inline. This program is installed in folder /usr/local/bin with 4555 file permissions. See the discussion on security for more information about file permissions. The main source code is located in folder ./crypt. See the rkey man page for more information.

MDIO Programming

int6kmdio

A command line utility that uses VS_MDIO_COMMAND messages to read and write MDIO registers on a switch chip connected to the local powerline device. MDIO instructions are specified and send as Clause 22 instructions. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./mdio. See the mdioblock man page for more information.

int6kmdio2

A command line utility that uses VS_MDIO_COMMAND messages to read and write MDIO registers on a switch chip connected to the local powerline device. Instructions are read as Clause 45 instructions but send as Clause 22 instructions. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./mdio. See the mdioblock man page for more information.

mdioblock

A command line utility to assemble an Atheros MDIO instruction block from hexadecimal register instructions. MDIO instruction blocks are written to Atheros powerline devices as modules using the VS_MOD_OP message type. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./mdio. See the mdioblock man page for more information.

mdioblock2

A command line utility to assemble an Atheros MDIO instruction block from hexadecimal register instructions. MDIO instruction blocks are written to Atheros powerline devices as modules using the VS_MOD_OP message type. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./mdio. See the mdioblock2 man page for more information.

mdiodump

A command line utility to read and display Atheros MDIO custom modules in human readable format. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./mdio. See the mdiodump man page for more information.

mdiogen

A rudimentary command line utility that write a custom MDIO block to a fixed file. The user must edit a data statements, in the main program, to define MDIO command fields. A series of macros then mask, shift and merge the fields to create complete Clause 22 or Clause 45 MDIO commands on output. The program has no dependencies on other toolkit modules and so it will compile anywhere. This program must be manually compiled and it is not automatically installed. The main source code is located in folder ./mdio and file mdio.h is required for compilation. There are no help files available at this time. If you do not understand how to use it then you may not need it.

Serial Programming

ptsctl

A command line program used to control a bank of three Weeder programmable attenuators. It may be used to construct a Production Test System (PTS) for Qualcomm Atheros SmartLink™ devices. See program weeder to control a bank of two Weeder programmable attenuators. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./serial. See the ptsctl man page for more information.

ttycat

A command line program that copies one or more host files to a specific serial port. It can be used to stream serial data to the local UART-enabled powerline device for transmission over powerline. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./serial. See the ttycat man page for more information.

weeder

A command line program used to control a bank of two Weeder programmable attenuators. It may be used to construct a Production Test System (PTS) for Qualcomm Atheros powerline devices. See program ptsctl to control a bank of three Weeder programmable attenuators. This program is installed in folder /usr/local/bin with 0555 file permissions. The main source code is located in folder ./serial. See the weeder man page for more information.

Atheros Communications reserves the right to add, remove or rename utility programs or modify their command line options or their functionality in future software releases without any obligation to notify or compensate users of this software.